[Python-es] Es coconut solamente azucar sintactico?

Francesc Alted faltet en gmail.com
Vie Abr 26 12:02:03 EDT 2019


Yo también me alegro que los lenguajes funcionales se empiecen a tomar en
serio en ámbitos cada vez más amplios.  No acabo de estar totalmente con
Chema cuando dice en su blog que las construcciones funcionales estan
siendo arrinconcadas en Python; personalmente, uso mucho los
iteradores/generadores, que estan considerados como constructos
funcionales, y que creo que estan en la base de muchas librerias Python.

De todas maneras habrá que seguir con mucho interés a Chema en lo que se
prevé como una prometedora serie de artículos sobre coconut en su blog:
https://blog.ch3m4.org/2019/04/16/que-es-un-coconut/ (aunque esperemos que
las apariciones de Enrique y Ana no se prodiguen demasiado ;-)

Saludos!

Missatge de Chema Cortes <pych3m4 en gmail.com> del dia dv., 26 d’abr. 2019 a
les 11:54:

>
> 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/>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>


-- 
Francesc Alted
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20190426/4945e6bb/attachment.html>


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