我正在关注算子,应用函子...我不知道如何到达我想要的地方,但我觉得遵循这些类型应该让我更接近.
是否有一种简单的方法可以制作map
仅适用于2元组的第一个元素的-alike?以first
从Control.Arrow
和使用Arrow (->)
,该做的伎俩很好:
map . first :: (b -> c) -> [(b, d)] -> [(c, d)]
Run Code Online (Sandbox Code Playgroud)
我唯一担心的是我还没有获得真正的箭头直觉,所以如果我坚持下去的话,我迟早会发现自己处于深水中.此外,这似乎是一个相当方便的案例,不能一概而论.
我可以通过使用仿函数,monad或其他任何东西来获得相同的功能,同时了解我想要的内容吗?我一直在玩弄
\f -> map (f `on` fst)
Run Code Online (Sandbox Code Playgroud)
类似的想法,但不能完全到达那里.
箭头有很好的组合器可以在元组上运行.您几乎可以将它们视为缺少的元组函数!
所以,例如
> :t \f -> map (f *** id)
:: (b -> c) -> [(b, c')] -> [(c, c')]
Run Code Online (Sandbox Code Playgroud)
是映射第一个组件的有用方法.
归档时间: |
|
查看次数: |
1401 次 |
最近记录: |