2018-07-07

Haskell を書いてるわけではないんだけど Haskellメモ化したい関数ってどうするんだろう

OOP言語で書いてて

 

 

という条件なので、キャッシュを取って、キャッシュになければ計算して返すクラスを作った

純粋関数型でこれをやろうとするとモナドになったりして面倒臭そう

 

しかしながら

 

  1. メモ化は単なる最適化なので無限計算リソースがあれば不要。IOと違い、副作用自体を扱いたいわけではない。最適化の結果として副作用になるだけ。
  2. コンパイラに任せて低レイヤー隠蔽できるならその方がよい。上層レイヤー関数を書く人間が直接扱うようなものではない。
  3. メモ化できるのは参照透過性ゆえなのでむしろ関数純粋性が保証されてる Haskell とかの方が標準の言語機能として当然のごとく提供できるのでは。

 

と思ったのですがどうなんでしょう。

  • そんな難しい話を増田でするな

  • Haskell メモ化 https://wiki.haskell.org/Memoization#Memoization_with_recursion fib nがあるとき momoized_fib n = map fib [0 ..] !! n haskellのリストは遅延評価なので無限リストが許される→メモ化に使える

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん