2009-01-13 21 views
5

Estoy interesado en mejorar mis habilidades de Programación Funcional y creo que la mejor manera de hacerlo es trabajando en un proyecto de tamaño mediano. En el pasado, he trabajado con Scheme y me gustaría seguir haciéndolo. ¿Puede alguien sugerir algunas ideas de proyecto de esquema de mediano tamaño? (Nota: estoy bien versado en C (ANSI C89/ISO C90), por lo que hacer uso de la interfaz de función extranjera de Scheme para (por ejemplo) interactuar con una biblioteca como ncurses no solo es posible, sino también preferido)Scheme Project Ideas

Respuesta

4

Usted puede obtener algunas ideas de la rosca reciente proyectos PLT" en espera de los contribuyentes en la lista de PLT Scheme correo

En particular miren el post de Flatt:?.

http://list.cs.brown.edu/pipermail/plt-scheme/2009-January/029585.html 

podríamos utilizar algunas bibliotecas de archivo de imagen:

  • rea archivos ding GIF (que ya tienen una biblioteca para escribir)

  • lectura y escritura de archivos BMP

  • de lectura y escritura XPM & archivos XBM

Todos estos formatos son actualmente construidos en MrEd usando el código C, pero el código es feo y nos gustaría deshacernos de él. Además, estos formatos de imagen son bastante simples.


4

Course 6.001 en MIT se enseña en LISP, pruebe algunos de los lab assignments.

+0

6.001 se enseña en Scheme, no en LISP. –

+0

@JasonS Scheme es LISP –

+0

Es un dialecto de LISP. El dialecto "predeterminado" de LISP es LISP común, por lo que es importante indicarlo. El esquema también tiene diferencias significativas con LISP, especialmente el alcance léxico vs.alcance dinámico, por lo que si dices que Scheme es LISP, es como decir "Afrikaans es holandés, lo mismo". –

1

¿Qué tal un servidor web de continuación. Smalltalk ya tiene uno (Seaside) y PLT Scheme tiene uno en su distribución, pero creo que sería un buen proyecto completo, ya que abarca redes, subprocesos múltiples, E/S, extensibilidad del usuario, etc.

Hay un interesante artículo here que podría ayudarlo a comenzar.

¡¡Buena suerte !!!

+0

Realmente creo que le gustaría separar el servidor web del marco web de nivel superior. – jrockway

+0

Sí, como weblocks y hunchentoot en Common Lisp – Svante

1

Si tiene Esquema sólido bajo su cinturón, y se quiere entender lo que ocurre cuando un compilador hace la generación de código, siga this tutorial. Hay recursos asociados en el author's homepage.

Cuidado: el documento, el tutorial y los casos de prueba no se alinean del todo. Tienes que mantener tu ingenio sobre ti y resolver las cosas un poco para ti. En particular, siga el tutorial hasta lambdas, luego siga el artículo para labels/code/labelcall, luego regrese al tutorial para la asignación del montón, luego regrese al documento para continuar y continuar con los siguientes pasos. (Perdón por complicarlo, pero esa es la ruta que funcionó para mí.)