我想用以下方式编写函数:
compose :: (a->b->c) -> (d->a) -> (d->b) -> d -> c
compose f g h x = f (g x) (h x)
Run Code Online (Sandbox Code Playgroud)
这样我们就可以通过以下方式使用它:
compose (==) (myReverse . myReverse) id [1..100]
Run Code Online (Sandbox Code Playgroud)
我认为它可以用'fmap'之类的东西简化,所以它根本不需要定义'compose'.但我没弄明白该怎么做.
我的意思是写这样一个函数:
mapCons x [] = [[x]]
mapCons x ys = map (x:) ys
Run Code Online (Sandbox Code Playgroud)
以便:
*> mapCons 'a' []
["a"]
*> mapCons 'a' ["cat", "dog"]
["acat","adog"]
Run Code Online (Sandbox Code Playgroud)
我们是否为mapCons提供了快捷方式或预定义函数?我试过Hoogle a - > [[a]] - > [[a]],但找不到理想的.
非常感谢.
haskell ×2