2016-04-13 14 views
0

自分自身を何度も呼び出すはずの関数を実装する際に問題があります。それが更新されるたびに、その精度が向上します。プロセスでは、他の関数を呼び出し、私はそれがまで」アップ作品を知っている:関数呼び出しのHaskell、再帰呼び出し、多くの引数

Type = [Double] 
*All lists; including type: Same, but not predetermined length. 


f0 :: Double -> [[Double]] -> [Double] -> Type -> Type 

典型的な例:私は何をしたいか

f0 1.0 [[1.0, 0.5, 1.0], [1.0, -1.0, 1.0]] [1.0, 0.0] (initTypeLength 2) 

f1 :: Int -> Double -> [[Double]] -> [Double] -> Type -> Type 

... "Int"(i)はf0を繰り返し使用して反復回数を呼び出し、更新される型を除いてすべてのパラメータを同じに保ちます。

わからないf0が関連しているが、場合場合:どこで、どのように引数を明記すべきである

f0 a (x:xs) (y:ys) type = f_other a xs ys 
         $ f_yet_another a x y type 

私を混乱させる何があります。

合計すると、ここではすべてが静的ですが、1つのリストは除きます。 「タイプ」は、繰り返しごとに更新されます。これをどう呼びますか?私はそれが明らかだと感じていますが、私はhaskellが理解する方法でそれを理解することはできません。

答えて

2

私が何をしたいことは、このだと思う:

f1 k a b c t = (iterate (f0 a b c) t) !! k 

しかし、型はHaskellではキーワードであるので、変数名として使用するには注意してください。

はまた、あなたがどのようにiterate作品のように興味がある場合には、ここに実装したものです:

iterate :: (a -> a) -> a -> [a] 
iterate f x = x : iterate f (f x) 
関連する問題