実行時にファイルから読み取られ、次のようなタプルで表されるデータのリストがあります。
[(1,0.1),(2,0.2),(3,0.3)...etc...]
そして、リストと 2 つの整数をパラメーターとして取り、double を返す関数を作成しました。
f :: [(Int,Double)] -> Int -> Int -> Double
f mylist i j
| j < n = (do some stuff)
| otherwise = max (f mylist (i-1) j) (some other stuff with m_i and p_i)
where m_i = fst $ mylist !! (i-1)
p_i = snd $ mylist !! (i-1)
さて、私は Haskell と純粋な関数の概念に慣れていませんが、リストは静的であるため (変更されません)、リストを関数に渡す必要があるかどうか疑問に思っています。
大量の再帰層を介して大きなリストを渡すのは悪い習慣ですか?
実行時にリストを読んだ場合、2 つの関数を「設定」m
しp
て、このように使用できますか?
f :: Int -> Int -> Double
f i j
| j < n = (do some stuff)
| otherwise = max (f (i-1) j) (some other stuff with m_i and p_i)
where m_i = m (i-1)
p_i = p (i-1)
もしそうなら、実行時にファイルから読み取った値を基本的に返すように関数m
と関数(純粋ですよね?)を設定するにはどうすればよいですか(私が正しく理解していれば、これは純粋ではありません)。p
助けてくれてありがとう!