2010-04-24 21 views
15

Conocer el argot de un campo me ayuda mucho, especialmente porque me permite conversar inteligentemente con aquellos que saben mucho más que yo, así que me gustaría encontrar un buen léxico de términos de Programación Funcional.Buscando el Léxico de Programación Funcional

Por ejemplo, encuentro repetidamente estos: Functor, Arrow, Categoría, Kleisli, Monad, Monoid, un verdadero zoológico de morfismos, etc. También noto que muchos de ellos aparecen con prefijos como "covariante", "co" , "endo-", etc.

De estos, puedo decir que realmente entiendo Monoid y Covariant y de alguna manera obtengo Monad, pero el resto todavía son un galimatías para mí. (Tenga en cuenta que no me refiero a esta lista como exhaustiva y no estoy buscando que se definan o describan aquí, estoy buscando recursos de aprendizaje.)

¿Alguien puede indicarme un léxico FP? No necesita estar en línea, siempre que sea posible encontrarlo (y no es un volumen raro por el que tendría que pagar muchas decenas de dólares).

+1

Wikipedia siempre funciona: "Una mónada o triple es un (endo-) functor, junto con dos transformaciones naturales asociadas. Las mónadas son importantes en la teoría de pares de funtores adjuntos, y generalizan los operadores de cierre en conjuntos parcialmente ordenados a arbitrarios La noción de "álgebra para una mónada" generaliza las nociones clásicas del álgebra universal, y en este sentido, las mónadas pueden considerarse "teorías". .................. De acuerdo, tal vez no sea siempre el mejor recurso. –

+2

Gracioso. Aunque me gusta buscar palabras en inglés a través del diccionario, estas no ofrecen la misma diversión. –

+0

Para ser justos con Wikipedia, tiene un artículo separado sobre las mónadas como lo usa FP, y es un poco menos matemático. –

Respuesta

9

Como han señalado otras respuestas, para comprender realmente esos términos, debe estudiar la teoría de categorías. Sin embargo, la Teoría de categorías es muy abstracta y puede que no te ayude a construir tu intuición inmediatamente. Para ver los conceptos abstractos en acción, recomiendo mucho la Typeclassopedia (PDF) (blog announcement).

+1

Typeclassopedia se ve genial, gracias! –

+0

En segundo lugar la recomendación. –

5

Muchos de los términos que utilizó como ejemplo son de la teoría de categorías, y el mejor recurso que conozco en las circunstancias es "la teoría de categorías básico para los informáticos" de Benjamin Pierce

+0

Ni siquiera es tan caro: $ 21 en los EE. UU. http://www.amazon.com/exec/obidos/ASIN/0262660717?redirect=true –

+0

Un colega sugirió que este texto no se alinea muy bien con el uso actual de FP.Señaló que no se trata en absoluto de Mónadas, probablemente la mayor obsesión del mundo de la FP (o al menos eso parece). Y la plétora de morfismos de los que escucho no aparecen tampoco. En resumen, parece ser una cartilla de teoría de categoría para programadores más que un compendio de técnicas de PF. –

7

Estos no son términos de programación funcionales; son términos de la Teoría de la Categoría. Es cierto que un puñado de programadores funcionales de élite parece usar la teoría de categorías para obtener información sobre la programación funcional (Conal Elliott, Ralf Hinze, Chung-Chieh Shan, telefonear a su oficina), pero estas personas son una minoría. En cuanto a estos términos, luché con el libro de Pierce pero no conozco una fuente mejor — aunque Dan Piponi tiene mucho material relacionado en su blog; Te animo a que mires allí. (2012 actualización: Harold Simmons tiene un nuevo libro sobre teoría de categorías que se ve bastante bien, y fue muy bien revisado por Computing Reviews [detrás de un paywall]. La única queja es que los ejemplos son todos de matemáticas y no desde computación.)

Algunas palabras que puede escuchar de los programadores funcionales: "función de mapa", "función de plegado", "función de orden superior", "programación sin puntos", "tipo de suma", "tipo de producto" , "catamorfismo", "codificación de la Iglesia", "programas de cálculo", "programación dirigida por tipo", "llamada correcta", "parámetro de acumulación". No sé de un buen léxico reunido en un solo lugar. El libro de Graham Hutton Programación en Haskell podría ser un lugar para comenzar, o el libro anterior de Richard Bird y Phil Wadler.

+0

"... un puñado de programadores funcionales de élite parecen usar la teoría de categorías para obtener información sobre la programación funcional ..." Creo que he caído en una mala multitud ... –

+0

@Randall: No, eres un hombre con suerte. Ojalá pudiera hacerlo. Voy a intentarlo de nuevo este verano ... –

+3

Norman, no tienes idea de cuánto mejores me has hecho sentir acerca de todos los trabajos de Haskell que he leído en los últimos meses. Recientemente escuché a alguien bromear que la comprensión de Haskell requiere * dos * doctores. Si estás luchando, hay esperanza para el resto de nosotros ... – rtperson

Cuestiones relacionadas