Data.Vector を使用しており、現在、暗号化ハッシュ (Sha1) の計算に使用するベクトルの内容を計算する必要があります。以下のコードを作成しました。
dynamic :: a -> Int -> (Int -> Vector a -> a) -> Vector a
dynamic e n f =
let
start = Data.Vector.replicate n e
in step start 0
where
step vector i = if i==n then vector
else step (vector // [(i,f i vector)]) (i+1)
これを作成したのは、ベクトルを埋める関数 f が途中で部分的な結果にアクセスできるようにするためです。確かに、このようなものが Data.Vector に既に存在しているはずですよね?
問題文は次のとおりです。完成した結果が配列になる動的計画法の問題を解こうとしています。配列サイズのサイズを知っており、それを埋めるための再帰関数があります。