根据haskell程序测试每个数字

根据haskell程序测试每个数字,haskell,Haskell,所以我正试图写一个程序,从技术上测试1-无穷大。基本上我想用take告诉程序给我一个take要求的金额列表。为了澄清我是否输入了take 5,我想返回[1,2,3,4,5] -他说:“为了进一步澄清,我试图理解如何反复调用一个程序,每次调用所需的时间。”。我正在尝试编写一个程序,该程序将给我一个从1开始的下一个x偶数的列表,其中x=表示的数字。首先 让我们先说你应该读一读。你已经试过什么了?为什么它现在起作用了?您是否有任何代码可以在任何地方使用?由于您似乎是一个完全的初学者,请看 然而,这是一

所以我正试图写一个程序,从技术上测试1-无穷大。基本上我想用take告诉程序给我一个take要求的金额列表。为了澄清我是否输入了take 5,我想返回[1,2,3,4,5]

-他说:“为了进一步澄清,我试图理解如何反复调用一个程序,每次调用所需的时间。”。我正在尝试编写一个程序,该程序将给我一个从1开始的下一个x偶数的列表,其中x=表示的数字。

首先 让我们先说你应该读一读。你已经试过什么了?为什么它现在起作用了?您是否有任何代码可以在任何地方使用?由于您似乎是一个完全的初学者,请看

然而,这是一个非常简单的问题,所以我只给你答案

分析问题 这很简单,您需要一个函数
evens::Int->[Int]

最基本的解决方案 Haskell有一个列表构造函数,它以最基本的形式为您提供连续数字的列表:
[1..10]
将为您提供从1到10的所有数字。因为Haskell是一种懒惰的语言,所以不需要给它一个上限。也就是说,
[1..]
只会返回一个包含所有数字的列表

您也可以按一定的间隔运行它,例如偶数为2:
[2,4..10]
将为您提供从2到10的偶数。因此,您需要的功能确实是:

firstEvens :: Int -> [Int]
firstEvens n = [2,4..2*n]
这也相当于

firstEvens' :: Int -> [Int]
firstEvens' n = take n [2,4..]
递归 可以递归地运行函数。每一步只需乘以2

firstEvens'' :: Int -> [Int]
firstEvens'' 0 = []
firstEvens'' n = 2*n : firstEvens' (n-1)

你的意思是
拿5[1,2..]