red*_*dot 3 haskell functional-programming pointfree
在Haskell语言函数中id定义为组合单位:
id :: a -> a
id x = x
Run Code Online (Sandbox Code Playgroud)
有没有办法id使用无点表示法定义haskell' 函数?我的意思是不要像以下那样直接引用它:
same :: a -> a
same = id
Run Code Online (Sandbox Code Playgroud)
chi*_*chi 16
无点版本id是......好吧,id.id通常被视为无点构造中的基本运算符,这是一种构造更多组合符的原语.
如果你真的想要,你可以id从其他更复杂的运算符重建,例如利用Monad ((->) a)实例:
id = join const
Run Code Online (Sandbox Code Playgroud)
或者Applicative ((->) a)实例
id = const <*> const
Run Code Online (Sandbox Code Playgroud)
(在组合的逻辑,这是I = S K K因为<*>IS S和const是K)
但是,没有比这更简单的了id.
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |