gpt4 book ai didi

scheme - Racket中的identity函数有什么用?

转载 作者:行者123 更新时间:2023-12-01 09:18:16 25 4
gpt4 key购买 nike

身份函数有什么用?它只是返回相同的值。因此,而不是把 (identity x) ,为什么不简单地放 x ?有人可以举一些在 Racket/Scheme 中使用身份函数的例子吗?这些文档页面上没有示例:https://docs.racket-lang.org/htdp-langs/beginner.html#%28def.htdp-beginner.%28%28lib._lang%2Fhtdp-beginner..rkt%29.identity%29%29https://docs.racket-lang.org/reference/procedures.html?q=identity#%28def. %28%28lib._racket%2Ffunction..rkt%29._identity%29%29

最佳答案

identity当一个函数执行由其参数自定义的某种映射,并且您希望通过不变的值传递该值时,函数最用作某些高阶函数(将函数作为参数的函数)的参数。†

Scheme/Racket 中一个非常常见的习语是使用 (filter identity ...)删除所有 #f列表中的值:

> (filter identity '(1 2 #f 4))
'(1 2 4)

这是有效的,因为 filter将提供的函数应用于列表的每个元素,然后丢弃导致 #f 的值.通过使用 identity ,检查值本身。在这个意义上, identity是功能性的“无操作”。

您有时可能会看到这个成语拼写为 (filter values ...)而不是 (filter identity ...)因为 values当提供一个参数时恰好是恒等函数,它来自 racket/base而不是 racket/function .我更喜欢使用 identity 的版本不过,明确地说,因为我认为发生的事情更清楚一点。

† 这个恒等函数的描述来自 this nice answer对于 Haskell 等效问题。

关于scheme - Racket中的identity函数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39051186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com