我想要一個功能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
感謝您的幫助。