![](/img/trans.png)
[英]Can I use a list of functions, as input, for a different function in Haskell?
[英]Haskell function that alternatively applies input unary functions
我正在尝试编写一个具有两个一元函数(f和g)和一个数字列表(ns)的Haskell函数,或者将那些输入函数f和g应用于输入列表的元素。
例如:
func double square [2, 3, 4, 5, 6]
会回来
[4, 9, 8, 25, 12]
我正在为我的编译器使用WinGHCi。 在编写此功能的任何帮助将不胜感激,谢谢。
如果您不想使用任何库函数,可以通过使用递归来做到这一点:
func _ _ [] = []
func f g (x:xs) = f x : func g f xs
扩展@luqui的评论:
func f1 f2 l = zipWith ($) (cycle [f1, f2]) l
如果您不想使用库函数,只需查找它们的实现即可,它们非常简单。
只是一个简单的解决方案...
fun :: (a -> b) -> (a -> b) -> [a] -> [b]
fun f g = reverse . snd . foldl step (0,[])
where
step (c,ac) x = (c + 1, (if even c then f x else g x) : ac)
由于您不想使用库函数,因此无需使用foldl
即可重现相同的结果。 这个想法很容易使用计数器来知道哪个位置是偶数。
编辑:我对我的蓄能器有些困惑。 现在,这是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.