使用 haskell 生成从 1 到 10 的简单列表

Generating Simple List from 1 to 10 with haskell

我是 Haskell 的新手,大家可以帮我如何生成从 1 到 10 的列表吗?

我试过这样做:

seqList :: Integer -> [Integer]
seqList 1 = [1]
seqList n = n : seqList(n-1)

结果是 10 比 1,不是 1 比 10

第二个问题 我们可以将函数作为值吗?

numList :: [Integer]
numList =  [1,2..10]
totJum :: Int
totJum = length numList

takeNum :: Int->[Integer]
takeNum totJum
  | totJum >= 10 = take 5 numList
  | totJum == 10  = numList

使用这段代码,如果 numlist 的长度符合条件,我想调用输出。

对于第一个,您可以使用 累加器:一个用于产生值的变量,并在递归调用中每次递增,因此:

seqList :: Integer -> [Integer]
seqList n = go 1
    where go i
              | i <= … = …
              | otherwise = …

我将填写 部分作为练习。

with this code, I want to call output if the length from numlist matches the condition.

你不应该使用 totJum 作为参数,而只是在函数体中使用它,所以:

takeNum :: [Integer]
takeNum
  | totJum >= 10 = take 5 numList
  | totJum == 10  = numList

但是请注意,这里您没有涵盖 totJum 小于或等于 10 的情况。在这种情况下,函数将因此出错。因此,您可能想要添加一个 otherwise 子句。