2014-02-01から1ヶ月間の記事一覧

F# でCPS版List.foldを作ってみよう

F#

自分用メモ。 まず fold を作る よく知られる List.fold の定義は、わかりやすいものであれば以下の様な形。 let rec fold' f acc = function | [] -> acc | x::xs -> fold' f (f acc x) xs これをCPS(継続渡しスタイル)に書き換えると // ('a -> 'b) -> (('…

継続渡しスタイルを使ってListコンピュテーション式を実装する

F#

引き続き、コンピュテーション式を継続渡しスタイルで実装する編です。 今回は、 コンピュテーション式におけるreturnとyield - ぐるぐる~ で定義されているListコンピュテーション式を、継続渡しスタイルで実装してみましょう。 なお、Using や Whileなど…

継続を使ってOptionコンピュテーション式を実装する

前提 下記記事を読んでいることが前提となります。 コンピュテーション式の実装にStateを用いる - pocketberserkerの爆走 注意事項 継続に関する解説はしません この記事のコードが理解できなくてもコンピュテーション式は使うことができます 継続、しません…

Listコンピュテーション式にyield breakもどきを作れないかあがいてみた

F#

コンピュテーション式におけるreturnとyieldにも書かれている通り、カスタムオペレーターで yield break を実装することはできません。では、型の力をつかってどうにかできないか、とあがいてみました。 Builder の定義 前述の記事で掲載されている ListBuil…