如何将参数提供给haskell中其他函数内部使用的函数

时间:2016-09-25 13:05:31

标签: haskell

基本上我有:

-ea

并且它正在工作(即使我在第二行中将2更改为不同的数字)但我需要最后一个函数有两个这样的参数:

numList = [0,1..]
numList' = take 2 numList
listsList = [] : [new : old | old <- listsList, new <- numList'] -- list of all possible binary numbers (infinite)
listsList' = take 10000 listsList -- just to not stuck because of infinite list

finalList n = [ x | x <- listsList', length x == n] -- taking n-sized lists

其中k应该给numList'类似

finalList n k

我也做不了

numList' = take k numList

因为函数listsList不起作用。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

numList'不是函数;它只是调用take产生的列表。因此,你不能传递一个不同的参数;该函数已被调用。最简单的方法是定义一个函数digits,它将k作为参数并返回所需的整数子集。

digits k = [0..k-1]
listsList k = [] : [new : old | old <- listsList k, new <- digits k] -- list of all possible binary numbers (infinite)
listsList' k = take 10000 $ listsList k -- just to not stuck because of infinite list

finalList n k = [ x | x <- listsList' k, length x == n] -- taking n-sized lists