我有两个函数(count和listOfNths),它们都带有参数并产生一个列表。 我想压缩这两个函数产生的列表。 我将如何去做? 我尝试编写zip listOfNths count但是没有用。

count n = [ x | x <- [0..n-1]]

everyf n [] = []
everyf n as  = head as : everyf n (drop n as)
listOfNths :: Int -> [a] -> [[a]]
listOfNths n xs = map (\x -> everyf n (drop x xs)) [0..n-1] 

只是一个旁注:函数listOfNths使用了另一个函数(everyf),但这并不重要。

#1楼 票数:3 已采纳

如果我对您的理解正确,则可以使用简单的map

fn n xs = map (\x -> (everyf n $ drop x xs, x)) [0..n-1]

如果坚持使用zip,则必须在压缩之前评估功能:

fn n xs = zip (listOfNths n xs) (count n)

  ask by Chalupa translate from so

未解决问题?本站智能推荐:

1回复

如何在Haskell中产生两个列表

如何在haskell中获取列表并生成两个列表作为输出? 例如,我正在处理的一个问题要求创建一个程序,该程序接受一个谓词和一个列表,并返回一个包含两个列表的列表,第一个是输入列表中传递谓词的元素,第二个不包含谓词的元素,订单,例如 => [[10,12,13],[1,2,3]]
1回复

两个列表的Haskell映射函数

我需要将一个函数应用于两个列表。 map 函数是map :: (a->b) -> [a] -> [b] ,但是我需要更像map2 :: (a->b->c) -> [a] -> [b] -> [c] 。 有没有类似于map的 prelude 函数可以做
3回复

如何返回由Haskell编程中的两个函数列表交替组合产生的函数?

在我的 Haskell 课程作业中,我想应对一个挑战,它本质上是了解如何处理函数列表。 输入由两个这样的列表组成,假设第一个列表为 [A0..AN],第二个列表为 [B0..BN]。 我需要返回一个由应用它们的函数组成的单个函数,以便函数在输出函数内交替作为嵌套函数参数。 事实上,它的意思是这样的输
2回复

Haskell混合两个列表

我即将编写我的第一个haskell程序,所以我需要您的帮助。 我想链接两个列表。 例如; 结果列表必须交替包含列表a和b的元素。 如果一个列表较长,则应在将较短列表与较长列表的元素混在一起之后,将较长列表的元素添加到结果列表中。 我想您在上面的示例中看到了这一点。 现在我该如何在
1回复

将接受两个参数的过滤器函数应用到在Haskell中接受一个参数的函数产生的列表

在Haskell中,我定义了一个带两个参数并返回Bool的过滤器函数,即 我定义了一个函数,该函数接受一个参数并返回一个列表,即 myFunction接受的参数与myFilter接受的第一个参数相同,并且myFunction输出的列表项与myFilter的第二个参数具有相同的类型,即
4回复

如何递归定义自己的haskell函数以追加两个列表?

我如何定义一个接受两个列表并输出1个列表的追加函数。 因此plusplus [1,2,3] [4,5,6]应该返回[1,2,3,4,5,6] 。 到目前为止,我有以下内容: 我想定义自己的++函数,但是要递归。 当我实际上用两个列表执行它时,上面的代码给出了一个错误。 这是我使
1回复

Haskell函数添加列表的前两个数字

我正在尝试编写一个函数,以便它可以找到列表的前两个元素,添加它们,然后将它们放在列表的开头。 但是,当我尝试这样做时,遇到了意外错误。 单个元素列表的第一个功能工作正常,但是实际操作应该发生的第二个功能却不能。 我认为将x从列表中删除,然后使用head(xs)删除以下元素,因此列表中的前
2回复

如何将函数应用于列表的两个元素-Haskell

如何将函数应用于列表的两个元素。 例如: 给定列表[red,star,blue,oval,orange,hexagon]我想将该函数应用于每一对functionName(red,star) functionName(blue,oval) functionName(orange,hexagon) 我猜