2011-01-06 9 views
14

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?

+0

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. –

Respuesta

14
  1. Ve a hackage.
  2. Haga clic en "packages"
  3. Buscar "config".
  4. Aviso ConfigFile (TH), EEConfig y tconfig.
  5. Lea la documentación de Haddock
  6. Seleccione un par e implemente su tarea.
  7. 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)

+2

"Leer los documentos" - Encuentro eso muy difícil al aprender haskell. –

+5

Se vuelve más fácil. –

3

También me sugieren usar sólo Text.JSON o una de las bibliotecas disponibles YAML (yo prefiero JSON a mí mismo, pero...).

4

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.

Cuestiones relacionadas