首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure中的标识函数是否与Haskell中的id函数具有相同的用法和用途?

Clojure中的标识函数是否与Haskell中的id函数具有相同的用法和用途?
EN

Stack Overflow用户
提问于 2014-09-28 11:37:22
回答 1查看 1.6K关注 0票数 8

在Clojure中,我们有identity函数。It 如下所示

代码语言:javascript
复制
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

代码语言:javascript
复制
(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)))))

所以我觉得我错过了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-28 11:58:03

Haskell中的id函数是lambda微积分的组合子。这是一种琐碎的功能:

代码语言:javascript
复制
-- | Identity function.
id :: a -> a
id x = x

有用是0或空列表有用的方式。

Clojure中的identity函数是等价的,因为它不受修改地返回它的参数。

代码语言:javascript
复制
(defn identity
  "Returns its argument."
  {:added "1.0"
   :static true}
  [x] x)

例如,单簧管等的其他概念并不直接连接到id函数。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26084475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档