2014-02-01から1ヶ月間の記事一覧
自分用メモ。 まず fold を作る よく知られる List.fold の定義は、わかりやすいものであれば以下の様な形。 let rec fold' f acc = function | [] -> acc | x::xs -> fold' f (f acc x) xs これをCPS(継続渡しスタイル)に書き換えると // ('a -> 'b) -> (('…
引き続き、コンピュテーション式を継続渡しスタイルで実装する編です。 今回は、 コンピュテーション式におけるreturnとyield - ぐるぐる~ で定義されているListコンピュテーション式を、継続渡しスタイルで実装してみましょう。 なお、Using や Whileなど…
前提 下記記事を読んでいることが前提となります。 コンピュテーション式の実装にStateを用いる - pocketberserkerの爆走 注意事項 継続に関する解説はしません この記事のコードが理解できなくてもコンピュテーション式は使うことができます 継続、しません…
コンピュテーション式におけるreturnとyieldにも書かれている通り、カスタムオペレーターで yield break を実装することはできません。では、型の力をつかってどうにかできないか、とあがいてみました。 Builder の定義 前述の記事で掲載されている ListBuil…