在Clojure中,我们有identity函数。It 如下所示
user=> (filter identity [1 2 3 nil 4 false true 1234])
(1 2 3 4 true 1234)
user=> (partition-by identity (sort "abcdaabccc"))
((\a \a \a) (\b \b) (\c \c \c \c) (\d))从我在Haskell - id 在使用镜片时使用和is 用于其他高阶函数中可以看到。
我的问题是(除了明显的类型系统差异),identity id 函数在中是否与Haskell?中的函数具有相同的用法和用途?
我问的原因是,当我看到下面的示例 of a 隐形眼镜 -我们看到Id被定义为functor
(defprotocol Functor
(fmap [functor f] "fmap :: f a -> (a -> b) -> f b"))
;; data Id a = Id { runId :: a }
(defrecord Id [runId]
Functor
(fmap [functor f]
(Id. (f (:runId functor)))))所以我觉得我错过了什么。
https://stackoverflow.com/questions/26084475
复制相似问题