我正在尝试找到一种方法来做这样的事情:
(head, last) `someFunction` [1, 2, 3]
生成元组(1, 3)
作为输出。
它在理论上似乎类似于应用函子,但有点倒退。我猜有一个类似的功能可以做到这一点(或某种方法),但我似乎无法找到它/弄明白。
我尝试定义这样的函数:
fmap' :: ((a -> b), (a -> b)) -> [a] -> (b, b)
fmap' (f1, f2) xs = (f1 xs, f2 xs)
但 GHC 实际上不会编译这个。
任何帮助都会很棒;谢谢!
编辑(一年后!):
我fmap'
不会编译,因为类型签名是错误的。显然有更好的方法来做我正在做的事情,但我的类型fmap'
应该是:
fmap' :: ((a -> b), (a -> b)) -> a -> (b, b)
在这种情况下,它编译并运行得很好。