繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM