我正在关注函子,应用函子……我不确定如何到达我想要的地方,但我觉得遵循这些类型应该让我更接近。
有没有一种简单的方法来制作map
仅适用于 2 元组的第一个元素的 -alike?从first
和Control.Arrow
使用Arrow (->)
,这很好地解决了问题:
map . first :: (b -> c) -> [(b, d)] -> [(c, d)]
我唯一担心的是我还没有对箭有真正的直觉,所以如果我继续这样做,我可能迟早会发现自己陷入困境。另外,这似乎是一个相当方便的案例,不能一概而论。
我可以通过使用仿函数、单子或其他任何东西来获得相同的功能,同时达到我想要的核心吗?我在玩弄
\f -> map (f `on` fst)
- 类似的想法,但无法完全实现。