【发布时间】:2014-10-15 15:12:43
【问题描述】:
在 Haskell 中编程时,:type 命令很有帮助。
通过了解函数的数量和签名,我们可以快速理解某些构造的目的。
例如:
Prelude Control.Monad.Reader> :type (lift .)
(lift .) :: (Monad m, MonadTrans t) => (a -> m a1) -> a -> t m a1
在 clojure 中是否有等价物可以知道函数的数量(类型在 clojure 中不相关)?
例如,在我意识到 (-) 和 (*) 具有可变参数之前,我乍一看并不容易理解波纹管的组成:
(comp - *)
【问题讨论】:
-
注意。
comp返回的函数调用传递给comp的所有函数,除了最后一个带有一个参数的函数,它调用最后一个带有传递给它的参数的函数。因此*的可变参数重载与理解(comp - *)相关,但-的可变参数重载则不是。实际实现见(source comp)。 -
@MichałMarczyk 是的,感谢您的精确度,我已经使用 repl 意识到了这一点。但是为什么
source、doc和find-doc总是用 lighttable 返回 nil -
我愿意接受的唯一类型系统是具有相同特性的haskell one(不需要类型注释)。 :)