Haskell如何处理文档?

aXq*_*Xqd 13 documentation haskell

如何在Haskell中获取在线文档?

有没有像Python下面那样优雅/方便的东西?

>>> help([].count)
Help on built-in function count:

count(...)
    L.count(value) -> integer -- return number of occurrences of value
Run Code Online (Sandbox Code Playgroud)

sas*_*nin 20

GHCi的互动帮助

标准的Haskell REPL是GHCi.虽然无法从GHCi中访问完整的文档,但可以获得大量有用的信息.

打印类型.在90%的情况下,这足以了解函数的功能以及如何使用它.

ghci> :t zipWith
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Run Code Online (Sandbox Code Playgroud)

:t是的缩写:type.

打印有关符号的信息.这对于查找符号所属的模块很有用.对于数据类型,它允许查看其定义和类实例.对于类型类,它允许查看其接口和作为其实例的类型列表.

ghci> :i Bool 
data Bool = False | True    -- Defined in GHC.Bool
instance Bounded Bool -- Defined in GHC.Enum
instance Enum Bool -- Defined in GHC.Enum
instance Eq Bool -- Defined in GHC.Base
instance Ord Bool -- Defined in GHC.Base
instance Read Bool -- Defined in GHC.Read
instance Show Bool -- Defined in GHC.Show

ghci> :i Eq
class Eq a where
  (==) :: a -> a -> Bool
  (/=) :: a -> a -> Bool
    -- Defined in GHC.Classes
instance (Eq a) => Eq (Maybe a) -- Defined in Data.Maybe
instance (Eq a, Eq b) => Eq (Either a b) -- Defined in Data.Either
(many more instances follow)

ghci> :i zipWith
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
    -- Defined in GHC.List
Run Code Online (Sandbox Code Playgroud)

:i是的缩写:info.

打印种类.用于:k类型构造函数.

ghci> :k Maybe
Maybe :: * -> *
ghci> :k Int
Int :: *
Run Code Online (Sandbox Code Playgroud)

:k是的缩写:kind.

浏览模块的内容.这样可以查看导入模块提供的符号.

ghci> :browse Data.List
(\\) :: (Eq a) => [a] -> [a] -> [a]
delete :: (Eq a) => a -> [a] -> [a]
deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
...
(many lines follow)
Run Code Online (Sandbox Code Playgroud)

:t,:k:i工作只在范围符号(你需要导入模块与:m + Module.Name第一).:browse适用于所有可用模块.

在线文档

Haddock记录了大多数Haskell库.您可以打开文档的HTML版本并阅读详细信息.

如果使用--enable-documentationflag in ,可以在本地安装它cabal install.

否则,浏览所有文档的一个好处Hackage上的包列表.它还允许查看任何软件包早期版本的文档.有时它非常有用.


Shi*_*oir 12

目前,没有办法在ghci中查看Haddock文档,但是有一张票.

但是,您可以使用该:info命令获取一小部分信息,例如

ghci> :i nub
nub :: (Eq a) => [a] -> [a]     -- Defined in Data.List  
Run Code Online (Sandbox Code Playgroud)

这样你至少知道在哪里寻找特定功能的文档.


via*_*tic 8

您可以使用Hoogle按功能名称或其类型签名(可能是近似类型签名)搜索文档.还有一个这个工具的命令行离线版本,你可以从hackage获得.