mac - Descripción general de las bibliotecas Haskell y su calidad
haskell website (1)
Quiero usar Haskell en producción. Tiene muchas libraties pero no todas son estables, listas para usar y bien desarrolladas. Algunas bibliotecas con concepciones interesantes tienen estado experimental. Muchas bibliotecas todavía están en versiones menores (0.0.1 por ejemplo). Algunos de ellos acaban de abandonar. Hackage demasiado grande para monitorearlos, por lo que necesito un breve fragmento del estado de las bibliotecas actuales, sus perspectivas y su idoneidad para su uso.
Entiendo que la pregunta es muy amplia, pero esta información será útil para cualquier persona de cualquier manera. Aquí podemos recopilar información poco a poco y luego usarla para un documento informativo.
Entonces, ¿qué bibliotecas puedo usar para:
- Matrices rápidas capaces de manejar millones de elementos
- Mapas rápidos y potentes (¿probablemente, Data.Map?)
- Árboles rápidos, genéricos y convenientes
- Colas, hashtables
- Expresiones regulares
- Máquinas de estado finito
- Redes neuronales, algoritmos genéticos
- Calculos matematicos
- Física (que se puede usar en el desarrollo de juegos)
- GUI
- Procesamiento de imagen (actualmente tenemos varios formatos de imagen)
- Trabajar con bases de datos (quizás ORM o algunas DSL para generar SQL)
- Programación reactiva funcional
- Enlaces OpenGL (sí, HOpenGL es bueno), enlaces OpenAL y OpenCL
- Análisis (Parsec es genial, creo)
- Programación multiproceso y paralelo
- Red
- Motores de juegos multipropósito
- ¿Algo más?
También es interesante tener las herramientas para:
- Prueba (QuickCheck)
- Logging (Tal vez hslogger)
- Perfilado
- Depuración
Aquí los enlaces a los temas similares:
- ¿Cuáles son las mejores bibliotecas de Haskell para operacionalizar un programa?
- Bibliotecas Regex y Cuerdas en Haskell
- Bibliotecas para estructuras de datos estrictas en Haskell
- Cadenas de memoria eficiente en Haskell
- ¿Qué biblioteca de Haskell para la geometría de gráficos por computadora?
- ¿Qué biblioteca Haskell XML usar?
Otros enlaces
- Aplicaciones y bibliotecas (lista y breve descripción)
- Expresiones regulares
- Bibliotecas Haskell que debes usar
- Hay muchísimas bibliotecas de Haskell ahora. ¿Qué vamos a hacer al respecto?
- Paquetes populares de Haskell: informe del segundo trimestre de 2010
Gracias.
Dejaré esto como una wiki de la comunidad; otras personas pueden agregar elementos o comentarios de una manera razonablemente concisa.
- Matrices rápidas capaces de manejar millones de elementos: Repa , Vector .
- Mapas rápidos y potentes: containers y containers unordered-containers .
- Árboles rápidos, genéricos y convenientes:
- Colas, tablas hash: consulte el paquete de hashtables para lo último y lo mejor.
- Expresiones regulares: regex-pcre , regex-tdfa
- Máquinas de estados finitos: fsmActions - pero tiene la versión 0.4.3 alpha; fst , pero no exactamente un FSM. En algunos casos, FRP será útil en lugar de FSM verdadero.
- Redes neuronales, algoritmos genéticos: HNN está bien establecido. En cuanto a GA, realmente tenemos un marco ( GA ) y algo que parece más completo ( hgalib ), pero no lo he inspeccionado de cerca.
- Cálculos matemáticos: hmatrix
- Física: dimensional .
- GUI: GTK funciona bien. Me da la sensación de que wxhaskell genera más preguntas per-capita, pero eso es una impresión informal.
- Procesamiento de imágenes: ¿análisis? Juicy-Pixels y JuicyPixels-Repa.
- No, ¡procesamiento de imágenes! El CV , Friday , yarr
- Trabajar con bases de datos: considere usar
persistent-*
envoltorios, pero también vea HDBC. PostgreSQL es estable. Para Cassandra hay varios, pero considere cql . - Programación reactiva funcional: Reactive-banana , netwire
- Enlaces OpenGL: OpenGL , GL .
- Análisis: Parsec , attoparsec , polyparse , frisby .
- Programación multiproceso y paralelo: consulte el paquete parallel y Control.Concurrency . monad-par es relativamente nuevo, pero a menudo más fácil de razonar que la biblioteca paralela básica. Ver también async para IO concurrente.
- Red - Depende. Network con blaze-builder , cereal o binary . Considere también network- {conduit, enumerator, pipes}. También hay varios contenedores cliente / servidor.
- Motores de juegos multipropósito: ¿para aprender? gloss . De lo contrario, es probable que necesites rodar el tuyo propio, pero utiliza OpenGL, GLUT, GTK, FRP, enlaces ogre, SDL y quizás FunGEn si está de nuevo en marcha.
- Gestión de configurator : configurator , config-ini .
- Proceso XML: HaXml , HXT , xml-conduit - bibliotecas buenas, estables y potentes.
Herramientas:
- Pruebas - QuickCheck , LazySmallCheck , Test-Framework , hspec , HUnit
- Registro - Sí, hslogger o dlist con la mónada del escritor si eso es todo lo que necesita.
- hpc perfiles: hpc , ámbito de subprocesos , criterion , utilidades de perfil de tiempo y space GHC .
- Depuración: depuración de GHCi, depuración insegura (de rastreo) y mejores pruebas de propiedades.
Preguntas relacionadas: