Buenos proyectos para aprender OCaml y F# [cerrado]


Después de aprender la sintaxis básica, leer un código no trivial es una forma rápida de aprender un idioma. También podemos aprender a diseñar una biblioteca / software durante la lectura de código de otros.

Tengo las siguientes listas.

  1. Un Programa de Ajedrez en OCaml por Tomek Czajka .

  2. Hal Daumé ha escrito varias bibliotecas de aprendizaje automático en Ocaml. Incluyendo árboles de decisión, regresión logística y SVM. Todos ellos son código de calidad cercana a la producción.

  3. Un Chess Game Analysis programa en F# en Microsoft Research.

Los tres anteriores son mis favoritos. ¿Puede sugerir otras fuentes? El software de código abierto de propósito general es bueno, el código abierto especializado como los tres que enumero aquí son aún más bienvenidos.

 26
Author: Yin Zhu, 2010-01-07

7 answers

La página de Jean-Christophe Filliâtre tiene numerosos programas y bibliotecas en OCaml.

 17
Author: Pascal Cuoq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-07 10:44:56

Uno de los aspectos menos cubiertos de OCaml es el sistema de módulos de orden superior. La biblioteca ocamlgraph es un excelente ejemplo de cómo beneficiarse de esta característica del lenguaje.

También le gustaría leer el código fuente de OCaml en mi proyecto HLVM. El código fuente de mi libro OCaml for Scientists (2005) está disponible gratuitamente aquí pero no de código abierto. Sin embargo, no se ha actualizado durante varios años y probablemente pueda hacerlo mucho mejor ¡hoy!

MLDonkey fue uno de los primeros clientes de intercambio de archivos que una vez tuvo cientos de miles de usuarios. Esta es una aplicación de código abierto muy concurrente escrita enteramente en OCaml, con un peso de alrededor de 171.000 líneas de código.

El Unison file synchronizer es otra aplicación de utilidad de código abierto escrita completamente en OCaml, con un peso de 24.000 líneas de código. Esta fue también la primera aplicación popular escrita en un derivado de ML que ha utilizado asíncrono IO. Así que todo el código F# haciendo async hoy en día se deriva esencialmente de él.

FFTW es un generador de código para transformadas rápidas de Fourier (FFT), esencialmente una forma muy especializada de compilador de optimización, que ha sido ampliamente adoptado y licenciado para uso comercial, por ejemplo, en el núcleo de MATLAB. Escrito principalmente en OCaml con bastante C y con un peso de 14.000 líneas de código OCaml.

También Te puede interesar leer el código fuente a Hevea y ANT como estos son dominios de aplicación bastante clásicos para OCaml, pero también aplicaciones de calidad de producción con miles de usuarios.

No se me ocurre ningún código F# de código abierto para recomendar. Hay muy poco por ahí y generalmente es de muy mala calidad. La mayoría se lee como Haskell. ;-)

 12
Author: Jon Harrop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-26 12:58:01

Janes Street ha lanzado varias bibliotecas aquí. En realidad están usando OCaml en un entorno industrial. En todo caso, revisaría esto.

 5
Author: wheaties,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-07 15:46:13

Echa un vistazo a esta serie de entradas de blog sobre Bookworm problem, que son alegres y muestran F#'s multiparadigm-ness muy bien. El último parece más " funcional."

 3
Author: Chang Chung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-25 16:30:32

Bueno, Unison me ha recomendado echar un vistazo, así como resolver varios problemas de Proyecto Euler, pero personalmente hago más escribiendo mis propios prácticos programas, así que probablemente adaptaré uno de esos a OCaml, para ver cómo va.

 2
Author: Noon Silk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-07 10:27:07

Tiene la fuente de la biblioteca estándar ocaml que está en o'caml.

Supongo que ya lo has mirado, pero la joroba de caml también es una buena fuente: Aquí

 1
Author: LB40,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-07 15:37:17

Para el código Ocaml basado en web Opa tiene código abierto todo lo que hay código también.

 0
Author: cameron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-22 17:58:36