Necesito un conjunto de pares clave-valor para la configuración leída desde un archivo. Intenté usar show en un Data.Map y no se parece en nada a lo que quiero. Parece que esto es algo que muchos otros ya habrían hecho, así que me pregunto si existe una forma estándar de hacerlo y qué biblioteca usar.¿Existe una biblioteca o formato de archivo de configuración o propiedad típico en Haskell?
Respuesta
- Ve a hackage.
- Haga clic en "packages"
- Buscar "config".
- Aviso ConfigFile (TH), EEConfig y tconfig.
- Lea la documentación de Haddock
- Seleccione un par e implemente su tarea.
- Blog sobre sus hallazgos para que el resto de nosotros pueda aprender de su nueva experiencia (¡gracias!).
EDIT: Recientemente he usado configurator - que era bastante fácil. ¡Te sugiero que pruebes ese!
(Sí, sí. Si tomé mi propio consejo habría hecho un blog para todos ustedes)
"Leer los documentos" - Encuentro eso muy difícil al aprender haskell. –
Se vuelve más fácil. –
El configfile package se parece a lo que desea.
También me sugieren usar sólo Text.JSON
o una de las bibliotecas disponibles YAML (yo prefiero JSON a mí mismo, pero...).
La categoría de configuración en Hackage debe enumerar todas las bibliotecas relevantes: http://hackage.haskell.org/packages/#cat:Configuration
he investigado el tema a mí mismo, y mi conclusión es:
- configurator es muy bueno, pero es en la actualidad sólo para configuraciones editadas por el usuario. La aplicación solo lee la configuración y no puede modificarla. Por lo tanto, es más para aplicaciones del lado del servidor.
- tconfig ha aa API sencilla y parecía que era lo que quería, quizás un poco cruda, hasta que me di cuenta de que es unmaintained y que algunos commits que son realmente importantes para utilizar la aplicación se aplican en github pero el paquete hackage no se ha actualizado
Otras soluciones no parecían funcionar para mí, no me gustaba la API, pero todas las aplicaciones (y gustos) son diferentes.
Creo que usar JSON, por ejemplo, no es una buena solución porque, al menos con Aeson cuando agrega nuevas configuraciones en una nueva versión, el JSON antiguo sin el nuevo miembro de la versión anterior no se cargará. Además, encuentro esa solución un poco prolija.
La conclusión de mi investigación es que escribí mi propia biblioteca, app-settings, que tiene como objetivo ser clave-valor, lectura-escritura, con una API tan segura como segura posible. Y lo encontrarás también en los enlaces de hackage para la categoría de configuraciones que di.
En resumen, creo que configurator es el estándar para las configuraciones de solo lectura (y es muy potente también, puede dividir el archivo de configuración con las importaciones, por ejemplo). Para lectura y escritura, hay muchas bibliotecas pequeñas, algunas sin mantenimiento, y no hay un estándar real, creo.
- 1. ¿Valores de configuración en DB o archivo?
- 2. Formato de archivo de configuración
- 3. ¿Existe una biblioteca de formato de SQL gratuita para .NET?
- 4. Configuración en un archivo o una base de datos?
- 5. Análisis de fechas difusas en Haskell (o C)
- 6. API de diccionario o biblioteca
- 7. Python.h: No existe ningún archivo o directorio
- 8. Archivo de configuración en Android. ¿Eso existe?
- 9. Config.h - No existe ningún archivo o directorio
- 10. Propiedad o método WriteOnly?
- 11. ¿Existe una biblioteca o marco para configurar las preferencias desde dentro de una aplicación de iPhone?
- 12. ¿Existe una biblioteca C++ o Qt disponible para medir el uso de funciones de una aplicación?
- 13. Python: formato de archivo de configuración decente
- 14. Biblioteca Scala o Java para reparar URIs con formato incorrecto
- 15. ¿Cómo uso una función de biblioteca Haskell?
- 16. 'propiedad: 0' o 'propiedad: 0px' en CSS?
- 17. Compruebe si existe una inclusión (o requiere)
- 18. Determinar si un archivo ejecutable (o biblioteca) es de 32 o 64 bits (en Windows)
- 19. Biblioteca ePub para java o android
- 20. Haskell: Número de formato con comas
- 21. ¿Existe una biblioteca de código abierto de OCR o sdk (gratuita) para Android y iOS?
- 22. ¿Existe una biblioteca de métodos de extensión para C#? o compartir su propia
- 23. "sys/mman.h: No existe ningún archivo o directorio"
- 24. Error de segmentación: "... no existe ese archivo o directorio"
- 25. formato de cadenas en Haskell
- 26. ¿existe una función o unidades como TIniFiles que no se guardarán en el archivo?
- 27. ¿Qué significa un tope o punto o punto (.) En Haskell?
- 28. ¿Puede NuGet editar un archivo de configuración o solo agregarlo?
- 29. ¿Se está estableciendo O_NONBLOCK como una propiedad del descriptor de archivo o del archivo subyacente?
- 30. ¿Cómo puede mi programa Haskell o biblioteca encontrar su número de versión?
taotree: No estoy seguro de que usted, el asker, esté informado sobre las ediciones, así que ... "Recientemente utilicé el configurador, lo que fue bastante fácil. ¡Le sugiero que pruebe con eso!" Es realmente simple y con todas las funciones. –