2009-10-01 2 views
5

Tengo una idea para un servicio web, pero soy muy nuevo en la programación web. Django se ve genial y me gusta algo que pueda retomar rápidamente. Tengo mucha experiencia en Haskell (y muy poco en python) y me gustaría poder comenzar a escribir algunas de las cosas de fondo que no están relacionadas con la web en mi idioma favorito. Pero, por supuesto, no quiero hacer eso si el código haskell no se puede usar si voy con django.¿Puedo escribir componentes en Haskell para usar en un sitio de Django?

He estado viendo varios frameworks web de haskell: hApps parece demasiado complicado e indocumentado, turbinado parece accesible pero no está documentado, etc. Y creo que usar un framework ampliamente utilizado como django, y tener acceso a un montón de código que puedo conectarme me ayudará mucho. Pero estoy muy abierto a escuchar sobre otras ideas sobre frameworks para usar, u otras opciones que tengo para usar Haskell de alguna manera.

Respuesta

4

Depende de lo que quiere decir con "servicio web".

Si se refiere a una aplicación web/sitio web típico, necesitará una interfaz sencilla para una base de datos, generación de HTML, fácil manejo de HTTP, sesiones y manejo de formularios. Realmente necesitas un marco web decente para eso.

No hay 'buenos' frameworks web para Haskell. (Al hacer ese juicio, incluyo factores como la documentación, la comunidad, la probabilidad de que no se abandone en un año por un enfoque más brillante, etc.).

Si quiere decir algo mucho menos "webby", p. un servicio que devuelve datos de mapas, y no necesita la mayoría de esas características, podría salirse con la suya con algo como Hack o incluso Network.CGI para proporcionarle la interfaz HTTP básica, sobre la cual construiría su servicio, ejecutándose con CGI/FastCGI. Si también necesita un sitio web dinámico, podría usar algo como Django solo por ese bit.

También puede escribir archivos ejecutables independientes Haskell que se invocan desde el código Django. Pero es poco probable que Python < -> Haskell interoperabilidad sea posible/práctico.

+2

"Python <-> No es probable que la interoperabilidad de Haskell sea posible/práctica". - ciertamente es posible y práctico llamar a Python desde Haskell - y es útil si necesita una biblioteca. Ver el enlace de hpaste2 a los pigmentos. –

+0

Puede encontrar esto sorprendente, pero no todas las aplicaciones web son "llene un formulario (y muestre los mensajes de error de validación) y coloque el resultado en una base de datos SQL". – jrockway

+0

@dons: Creo que el póster original hablaba de llamar a Haskell desde Python. Pero no estaba al tanto de ninguna interoperabilidad de Python <-> Haskell, me corrigen :-) @ ĵrockway: de acuerdo, es por eso que dije una aplicación/sitio web "típico". – spookylukey

1

Aprende Python, encontrarás que tiene muchas características funcionales. Es fácil de recoger y muy divertido.

Buena elección con Django.

+1

¿Cuáles son las funciones no funcionales de python? Además de la antigravedad (http://xkcd.com/353) por supuesto. –

+1

@Dominic: la capacidad de mutar objetos. La capacidad de volver a vincular variables. Soporte limitado para funciones lambda (este es uno grande). Falta de soporte para componer y aplicar funciones parcialmente. – Chuck

3

Si solo está creando un servicio web, puede escribir programas cgi o fastcgi en Haskell para gestionar las llamadas al servicio web.

+0

¿Es ese un método que funcionará con django, o una alternativa? Comprendo CGI fuera de django, pero todavía no tengo claro cómo trabajan juntos django/CGI. – jberryman

+0

@jberryman: No sé cómo funciona Django con CGI, pero si solo estás escribiendo un servicio web, no estoy seguro de que Django sea la herramienta adecuada para el trabajo. Como dice spookylukey, si te refieres a una aplicación web estándar, entonces es algo diferente de lo que estoy hablando. Si solo desea proporcionar URL que devuelvan datos, entonces creo que no debe usar Django en absoluto. – Amok

1

Ve a F # y echa un vistazo a NDjango, que es un puerto de Django escrito en F #. Descripción completa: NDjango es mi proyecto www.ndjango.com

+0

Esa es una propuesta interesante, pero mucha gente no está tan entusiasmada con los idiomas MS. – Chuck

0

Si quiere que Haskell hable directamente con la base de datos, deberá modificar el script de migración de la base de datos Django para que también emita el código del modelo Haskell utilizando una biblioteca como Yesod's Persistent.

Cuestiones relacionadas