使用 Haskell 的 API 搜索工具 Hoogle(https://hoogle.haskell.org/),我们可以根据我们所需的功能来搜索类型签名。 例如,如果我们需要将一个 Int 转换为 Float,则可以在 Hoogle 中搜索 Int -> Float(搜索结果:https://hoogle.haskell.org/? hoogle=Int+-%3E+Float),这会为我们指向有着合理命名的 int2Float 函数。 Haskell 还允许我们使用以小写的类型名称表示的多个类型变量来创建多态类型签名。 因此,我们可以在 Hoogle 中搜索 a -> [a] -> Bool(搜索结果:https://hoogle.haskell.org/? hoogle=a%20-%3E%20%5Ba%5D%20-%3E%20Bool),这将为我们指向 elem 函数。参数类型是 Haskell 中一个非常强大的特性,它让我们得以编写可重用的代码。
搞 Hell-DBMS 请先看下大技术: Hoogle File System Hoogle Bigtable Hoogle MapReduce 对了,《开源海量数据库技术在阴间生死管理系统中的研究与实践
这种“可能性范围的缩小”(narrowing of possibility)允许我们利用类似 Hoogle 这样的类型签名搜索引擎去搜索我们想要的函数。类型签名所能包含的信息量真的非常大。
Number.hs └── Vector.hs 包名要求首字母大写(Math),子模块文件名要与子模块名保持一致,大小写敏感性与环境有关(比如OSX不敏感) 三.标准库模块 标准库内置了很多强大的函数,可以通过Hoogle
替换为类型变量T, 得到T<F> => F<T>.我们将伪代码T<F> => F<T>转换成Haskell 的类型签名, 即可得到:t (f a) -> f (t a)将此类型输入到Hoogle