1

在 haskell 中编程时,该:type命令很有帮助。通过了解函数的数量和签名,我们可以快速理解某些构造的目的。例如:

Prelude Control.Monad.Reader> :type (lift .)
(lift .) :: (Monad m, MonadTrans t) => (a -> m a1) -> a -> t m a1

clojure 中是否有等价物可以知道函数的元数(类型在 clojure 中不相关)?

例如,在我意识到 (-) 和 (*) 具有可变参数之前,我乍一看并不容易理解下面的组合:

(comp - *)
4

2 回答 2

2

就个人而言,我使用 REPL。特别是(doc), (source), (find-doc)公用事业。

例如:

user=> (doc map)
clojure.core/map
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])
返回一个惰性序列,包含将 f 应用于每个 coll 的第一个项目集,然后将 f 应用于每个 coll 中的第二个项目集,直到任何一个 coll 被用尽。
其他 colls 中的任何剩余项目都将被忽略。函数 f 应该接受 number-of-colls 参数。

如您所见,很容易找到元数。

我同意 Haskell 在这个领域是首屈一指的。

于 2014-10-15T15:41:25.317 回答
1

函数的参数列表存储在函数元数据中,您可以使用meta

(:arglists (meta #'*))
于 2014-10-15T15:42:25.637 回答