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 <pych...@gmail.com> del dia dv., 26 d’abr. 2019 a les 11:54: > > El vie., 26 abr. 2019 a las 4:39, AGTUGO (<agt...@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@python.org > https://mail.python.org/mailman/listinfo/python-es > -- Francesc Alted
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es