18

「Löb と möb: Haskell の奇妙なループ」を理解しようとしていますが、今のところその意味は私から離れています。なぜそれが役立つのかわかりません。Just to Recall 関数loebは次のように定義されます。

loeb :: Functor f => f (f a -> a) -> f a
loeb x = go where go = fmap ($ go) x

または同等:

loeb x = go 
  where go = fmap (\z -> z go) x

この記事には、[]ファンクターとスプレッドシートの実装の例がありますが、スプレッドシート自体と同じように、私にとっては少し異質です(使用したことはありません)。

私はそのスプレッドシートのことを理解していますが、リストに関係なく、私や他の人にとってより多くの例があると非常に役立つと思います. loebforMaybeまたは他のファンクターのアプリケーションはありますか?

4

3 に答える 3

1

これが使用されている実際の例を次に示します。 Map String Float

http://tryplayg.herokuapp.com/try/spreadsheet.hs/edit

ループ検出とループ解決。

このプログラムは速度、時間、空間を計算します。それぞれが他の 2 つに依存します。各セルには、現在入力されている値と、他のセル値/式の関数としての式の 2 つの値があります。循環性が許可されます。

Cell の再計算コードは、2006 年の Dan Piponi による有名なローブ式を使用しています。これまで、私の知る限り、実際に機能するスプレッドシートでこの式が具体化されたことはありません。これはそれに近いです。循環式を使用すると loeb が無限ループに入るため、プログラムはループをカウントし、式がループしなくなるまで数式をセル値で徐々に置換することによって複雑さを軽減します。

このプログラムは、セルの変更時に即座に再計算するように構成されていますが、ボタンを使用してトリガーすることにより、再計算の前に複数のセルを変更できるように調整できます。

これはブログの投稿です:

http://haskell-web.blogspot.com.es/2014/09/spreadsheet-like-program-in-browser.html

于 2014-09-13T22:15:20.850 に答える