mac - Documentación de Haskell en la Terminal
haskell full (4)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo trata Haskell con la documentación? 3 respuestas
¿Es posible obtener documentación de Haskell desde Terminal o desde ghci?
En Ruby yo suelo hacer
ri thefunc
En Perl yo suelo hacer
perldoc -f thefunc
O puedo obtener help
interactiva en Python.
¿Cómo hacer este tipo de cosas en Haskell? Por ejemplo, si quiero obtener documentación sobre []
o :
en la Terminal?
Actualizar
Encontré este hilo relacionado , pero no estoy seguro si :i
es la respuesta: - ¿o no?
*Main> :i []
data [] a = [] | a : [a] -- Defined in GHC.Types
instance (Eq a) => Eq [a] -- Defined in GHC.Base
instance Monad [] -- Defined in GHC.Base
instance Functor [] -- Defined in GHC.Base
instance (Ord a) => Ord [a] -- Defined in GHC.Base
instance (Read a) => Read [a] -- Defined in GHC.Read
instance (Show a) => Show [a] -- Defined in GHC.Show
Como dice esta respuesta , no hay forma de obtener documentación de ghci. Sin embargo, en Haskell, los tipos le brindan más información que Java (o, obviamente, lenguajes de tipo dinámico como Ruby y Python); pueden ser una sugerencia sobre cómo funciona la función y decirle cómo puede componerlas.
En ghci, puede probar :browse
para ver los tipos de todas las funciones de nivel superior, o con un nombre de paquete como argumento, por ejemplo :browse Control.Monad
. Esto puede ser muy útil si ya conoce una función, pero no está seguro de cómo usarla (de lo contrario, use Hoogle o Hayoo como sugieren otros). También puede usar :t
para obtener el tipo de expresión, o :i
para obtener información sobre una clase de tipos.
EDITAR - Sé que esto es un poco de opinión, pero creo que la presencia de cosas como los tipos paramétricos, etc., y las funciones "básicas" decentes hacen que sea un poco más fácil no leer la documentación, al menos en comparación con Java o C (Tal vez no tanto Python o Ruby).
Hay una extensión de GHCi llamada "GHCi on Acid (GOA)":
http://www.haskell.org/haskellwiki/GHC/GHCi#GHCi_on_Acid
No es exactamente ri
, pero es una forma conveniente de usar Hoogle y otras sutilezas de su REPL.
Lo que quieras se llama Hoogle . En realidad es bastante mejor que la mayoría de las herramientas de documentos de línea de comandos, ya que puede buscar funciones por nombre o por tipo, y es bastante inteligente a la hora de elaborar tipos que sean compatibles pero no exactamente lo que usted especificó (por ejemplo, puede buscar a -> [a]
y descubrirá que es posible que desee una función con el tipo (Monad m) => a -> ma
, el tipo que buscó es el mismo con la clase de tipos completada).