En una gran cantidad de documentación del módulo generado por el eglefino (por ejemplo Prelude
), una pequeña caja en la parte superior derecha se puede ver, que contiene la portabilidad, la estabilidad y el mantenedor de información:¿Cómo se usan los módulos del módulo de Haddock Portabilidad, Estabilidad y Mantenedor?
De mirar el código fuente a este tipo de módulos y experimentación, he confirmado que esta información se genera a partir de líneas como las siguientes en la descripción del módulo:
-- Maintainer : [email protected]
-- Stability : stable
-- Portability : portable
Hay varias cosas extrañas sobre este
:Los campos única parecen funcionar en este orden - cualquier campo ponen fuera de servicio son simplemente tratar como parte de la descripción del módulo en sí. Esto a pesar del hecho de que el orden en el archivo de origen es el opuesto al del orden en la documentación generada.
No he podido encontrar ninguna documentación oficial de estos campos. Hay un Cabal package property llamado
stability
, cuyos valores de ejemplo coinciden con los valores que he visto en los campos de eglefino equivalentes, pero más allá de eso, no he encontrado nada.
Así: Cómo son estos campos destinados a ser utilizados, y se documentaron en cualquier lugar?
En particular, me gustaría saber:
La lista completa de los valores de uso común para
Portability
yStability
. This HaskellWiki page tiene una lista, pero me gustaría saber de dónde se originó esta lista.Criterios para decidir si un módulo es portátil o no portátil. En particular, el paquete que me gustaría recibir las respuestas a estas preguntas, acme-strfry, es un enlace FFI a
strfry
, una función solo disponible en glibc. ¿El paquete no es portátil, porque solo funciona en sistemas glibc, o portátil, porque no usa extensiones de lenguaje Haskell? El uso común parece implicar lo último.Por qué se requiere un orden específico de campos en el archivo fuente y por qué es el opuesto al orden en la documentación generada.
De hecho, actualmente estoy usando "no portátil (glibc solamente)", pero quería información sobre si este sería o no un uso correcto de el campo. – ehird
Si bien los campos son de forma libre, el hecho de que la documentación de Cabal, la página de HaskellWiki y los valores que he visto aparezcan de un pequeño conjunto de valores (incluidos valores que no esperaría que nadie pensaran de forma independiente) , por ejemplo, "provisional") me hace pensar que los valores utilizados en la práctica provienen de un conjunto pequeño, incluso si ese conjunto no está escrito "oficialmente" en ninguna parte; sería bueno saber el origen del conjunto, por lo menos. Para el asunto del pedido, probablemente verifique la fuente o pregunte en la lista de correo pronto. – ehird
P.S. Hacer 'strfry' puro sería bastante difícil, dada la dependencia en el estado RNG global :) – ehird