f::[type]->[type]
次のように大まかに定義された再帰的な関数が必要です。
要素が 1 つのリストから始まりますx
。次に、3 つの「ジェネレーター関数」を適用して、 、 、および 、すべての関数を呼び出し
generatorA
、generatorB
何らかのgenerator C
条件を受け入れる場合にそれらをリスト::type->type
に追加します。受け入れられた生成された数値ごとに、条件テストが false になるまで、 generator 、andおよび test 条件の適用を繰り返します。したがって、リストに受け入れられた要素ごとに、3 つの新しい要素が生成され、リストのテストが行われます。A
B
C
例は次のとおりです。
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
ご協力いただきありがとうございます。