我想要一个功能f::[type]->[type]
是递归的一个粗略的定义是这样的:写作与条件的递归函数在Haskell:
它开始用1元x
列表。然后它应用3个“发电机功能”让我们叫他们 generatorA
,generatorB
和generator C
,所有功能::type->type
,并将那些添加到列表如果他们接受一些条件。对于每个接受的生成数,则重复施加发生器A
,B
和C
和试验条件,直至条件测试为假。因此,对于列表中接受的每个元素,将生成3个新元素并测试列表。
一个例子是:
f::[int]->[Int]
generatorA x = x+1
generatorB x = 2x+1
generatorC x = 3x+1
条件:必须是合数(不是素数)。
计算f [10]
它应该开始generatorA 10 = 11
,丢弃。
generatorB 10 = 21
接受,然后:
generatorA 21 = 22
接受,然后:-
generatorA 22 = 23
黄金丢弃。
generatorB 21 = 43
丢弃generatorC 21 = 64
接受和等等,等等等等
的问题是:我如何编写功能f
?我不知道如何开始。我最好的猜测是
f (x:xs)
|condition==True = (something something)
|otherwise = xs
where
a=generatorA x
b=generatorB x
c=generatorC x
感谢您的帮助。