使用 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
子句。
我是 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
子句。