[Python-es] Es coconut solamente azucar sintactico?

Chema Cortes pych3m4 en gmail.com
Vie Abr 26 05:53:29 EDT 2019


El vie., 26 abr. 2019 a las 4:39, AGTUGO (<agtugo en gmail.com>) escribió:

> Perdon la traduccion de syntatic sugar pero es lo que se me ocurri'o. Lo
> que mas esperaba de coconut es verificaci'on de tipos en funciones, no hay.
> El objetivo es escribir mas claro el programa con estilo funcional? Aveces
> uso decoradores para revisar los tipos, solamente cuando es necesario
> pensaba que coconut podria ahorrarme la molestia.
>
>
Yo no lo consideraría como *syntatic sugar*. Aunque opcional, puedes
activar el modo estricto y las comprobaciones de tipos con mypy. Lo único a
tener en cuenta es que la versión de python objetivo (*target*) debe tener
soporte para notación de tipos para que mypy lo procese. O sea, debes usar
un target superior a 3 en lugar del target universal que usa por defecto:

    https://coconut.readthedocs.io/en/latest/DOCS.html#allowable-targets

Aunque no necesitas coconut. Para chequear tipos puedes usar algún linter
con mypy en el IDE que uses (por ejemplo, visual code con pylama).


Por seguir con coconut, tiene comprobación de patrones, tanto en asignación
como en definición de función. Por ejemplo, se puede definir la función
factorial como:

def factorial(0) = 1
@addpattern(factorial)def factorial(n is int if n > 0) =
    range(1, n+1) |> reduce$(*)

No tienen *returns*, casi podría decirse que son funciones lambdas. Pero
implícitamente saldrá un error si el argumento no es cero o un entero
positivo, por lo que hace bastante más que una simple función lambda.

Por otro lado, el reduce se está aplicando parcialmente con el operador
multiplicación. Se podría hacer igual con reduce, partial y mul que puedes
"rescatar" de algunos módulos donde han sido exiliados en python. Pero en
coconut son entidades de primer orden que, además, puedes combinar con
otras inexistentes en python como la evaluación perezosa de listas (lazy
lists) o el procesamiento paralelo (útil en monads).


Saludos.


-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
https://blog.ch3m4.org
Buscador Python Hispano: http://busca.ch3m4.org
<https://blog.ch3m4.org/pages/busqueda-python-es/>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20190426/0abd2c23/attachment.html>


Más información sobre la lista de distribución Python-es