Funciones en Profundidad
Las funciones en Clean Language tienen tipado estricto — el compilador sabe exactamente qué acepta y devuelve cada función. Esto hace que la composición sea segura: cuando pasas la salida de una función como entrada de otra, el compilador verifica que los tipos coincidan.
Las funciones llaman a otras funciones libremente — construye comportamiento complejo a partir de piezas simples:
functions:\n integer clamp(integer value, integer min_val, integer max_val)\n if value < min_val\n return min_val\n if value > max_val\n return max_val\n return value\n\n string progress_bar(integer percent)\n integer clamped = clamp(percent, 0, 100)\n integer bars = clamped / 10\n string filled = ""\n iterate i in 0 to bars - 1\n filled = filled + "#"\n string empty = ""\n iterate i in 0 to (10 - bars) - 1\n empty = empty + "-"\n return "[" + filled + empty + "] " + clamped.toString() + "%"\n\nstart:\n print(progress_bar(30))\n print(progress_bar(75))\n print(progress_bar(110))[###-------] 30%\n[#######---] 75%\n[##########] 100%progress_bar llama a clamp para aplicar límites seguros, luego construye el string de la barra. Los parámetros tipados significan que llamar a clamp con un argumento string es un error de compilación. Múltiples returns en diferentes ramas están bien — la rama que se ejecuta devuelve el resultado de la función.
Las funciones que devuelven boolean responden una pregunta de sí/no — perfectas para condiciones if:
functions:\n boolean is_valid_email(string email)\n if email.length() < 5\n return false\n if email.contains("@") == false\n return false\n if email.contains(".") == false\n return false\n return true\n\n string check_email(string email)\n if is_valid_email(email)\n return email + " looks valid"\n return email + " is not a valid email"\n\nstart:\n print(check_email("alice@example.com"))\n print(check_email("notanemail"))\n print(check_email("short@x"))alice@example.com looks valid\nnotanemail is not a valid email\nshort@x is not a valid emailis_valid_email devuelve boolean, así que check_email puede usarla directamente como condición if. Este es el idioma de Clean Language para la validación: extrae la comprobación en una función boolean y llámala donde sea necesario. El tipo de retorno hace que la intención de la función sea obvia.
Resumen rápido
- Las funciones llaman a otras funciones libremente — compone comportamiento a partir de piezas simples y testeables
- Múltiples sentencias return en diferentes ramas están permitidas
- Las funciones boolean responden preguntas de sí/no y funcionan directamente como condiciones if
- Los parámetros tipados se aplican en tiempo de compilación — los tipos de argumento incorrectos se detectan temprano