2012-07-17 10 views
18

Actualmente estoy leyendo http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Sethackage.haskell.org convención de la documentación que significa

Lo que sí transmite siguiente detalle (para un principiante absoluto Haskell)?

Portabilidad: Portable (¿Qué otros son la portabilidad valor?)
Estabilidad: (¿qué otro valor son la estabilidad) provisional
Mantenedor: [email protected]
Segura Haskell: Seguro (¿Hay algo inseguro?)

Respuesta

18

Los campos provienen del archivo .cabal del paquete, que enumera algunos metadatos para el paquete. Muchos campos pueden tener valores de forma libre, de modo que el desarrollador decida por sí mismo qué escribir en ese campo, y no hay "reglas" fijas para lo que cada campo no debe contener.

Portabilidad: Describe qué tan portátil es el paquete entre los compiladores Haskell, y algunas veces también entre los sistemas operativos. Los únicos valores que he visto son "portátiles" e "impracticables". Un paquete no portátil es un paquete que tal vez dependa de una extensión de lenguaje Haskell que solo existe en el compilador GHC, y no funciona en ningún otro compilador de Haskell como UHC, o que tal vez dependa de alguna biblioteca del sistema que solo exista en UNIX y doesn no funciona en Windows.

Estabilidad: Especifica cómo estable una biblioteca es, que incluye su fiabilidad (por ejemplo, la frecuencia con la que se bloquea), pero lo más importante la frecuencia con sus cambios en la API. He visto los valores "experimental", "provisional" y "estable", pero podría haber una lista con más en alguna parte (las cosas en la documentación de Cabal son a veces imposibles de encontrar). Cuando un paquete es experimental, significa que su interfaz probablemente cambie entre cada versión, porque el desarrollador aún no ha decidido cómo implementarla, o porque el desarrollador acaba de implementar alguna funcionalidad teórica de un documento en alguna parte, y no lo hace. intención de mantener el paquete; s/él solo quería implementar la funcionalidad para ver si era posible y está publicando el paquete como una demostración. Cuando un paquete es provisional, significa que la API general es estable, por lo que puede haber actualizaciones para el paquete que solo corrige errores internos y no agrega ni elimina ninguna función. Sin embargo, dado que es provisional, podría cambiar en el futuro cuando los desarrolladores decidan agregar nuevas características o reestructurar la biblioteca. Con una biblioteca estable, esto básicamente nunca sucede; la API probablemente nunca cambie, y la implementación es "sólida como una roca" o una implementación de referencia de una API o algo así.

El mantenedor para un paquete es la persona o grupo de personas que son responsables del paquete. El correo electrónico especifica cómo se puede llegar a estos mantenedores.

El campo "Safe Haskell" hace referencia a una extensión de GHC que puede leer más acerca de here. Un módulo que es inseguro utiliza funciones como unsafePerformIO que rompe algunas de las "reglas" fundamentales de Haskell como transparencia referencial. Un módulo inseguro también podría usar extensiones de lenguaje inseguras. Un módulo seguro es un módulo que no utiliza funciones inseguras, etc., y tampoco importa ningún otro módulo inseguro.Un confianza módulo utiliza funciones no seguras (Directamente confiable, indirectamente de confianza), pero el autor ha asegurado de que la API pública del módulo oculta este hecho de manera segura, por lo que desde fuera parece que el módulo es segura para todos los efectos. Esas son las opciones para el campo "Safe Haskell".

Cuestiones relacionadas