タグ

ブックマーク / nobuhisa.hatenablog.jp (4)

  • Sleeping barber problem - Nobuhisa's diary

    id:sumimさんが投稿された、 居眠り床屋問題 http://ja.doukaku.org/285/ 丁度F#の並列計算を(ちまちまですが、)勉強していたところだったので、標準クラスのMailboxProcessorを使って解いてみました。ここでこれを使うべきじゃないかもしれませんが、まあ男とはそういう生き物です。 MailboxProcessorとは、Erlangのプロセス間通信(メッセージ・パッシング)みたいなもので、スレッド間でメッセージをやり取りするための仕組み(を提供してくれるクラス)です。ライブラリレベルでの提供なので、Erlangほどしっかりしたものではないようです。(Erlangは良く分かってません) 名前から分かるように、相手のメールボックスにPostしておいて、それを好きなタイミングでReceiveするというのが基的な流れです。ベイジアンフィルタは実装されていませ

    Sleeping barber problem - Nobuhisa's diary
    okagawa
    okagawa 2010/04/11
  • Quotation で Meta-Programming ! - Nobuhisa's diary

    F#は自分の中に眠る力を引き出すべく、Lisp長老に会いに行ったのだった。 Lisp like meta-programming ・・・! いくつか例をあげてみよう。 (実行にはPowerPackが必要です) 階乗 open System open Microsoft.FSharp.Quotations open Microsoft.FSharp.Quotations.Patterns open Microsoft.FSharp.Linq.QuotationEvaluation open System.Runtime.Serialization.Formatters.Binary // Expr の保存とロードを担当 type ExprManager() = static let formatter = new BinaryFormatter () static member Save<'

    Quotation で Meta-Programming ! - Nobuhisa's diary
    okagawa
    okagawa 2010/04/11
  • C# => F# - GUI Converter - Nobuhisa's diary

    Visual Studio 2010では残念ながらF#のフォームデザイナが提供されません。 F#でWindowsフォームを扱う場合にはゼロからコードを書かなくてはなりません。 ということで、せめてフォームデザイナが自動生成するC#のコードをF#に変換するツールを作りました。 最初はASP.NETで提供する予定だったのですが色々あって、クライアントアプリのみの提供となります。。 VS2008/2010のデザイナが生成するコードなら多分対応できるはず。(テストがバッチリとは言い難い) How to use 上のほうのテキストボックスに直接ソースをペーストするか、ファイル(*.Designer.cs)をロードします。 あとはRunボタンを押すだけ。すると下のテキストボックスにF#の濃厚なソースが出てきます。 このコードを.fsファイルなどにコピペしていただければそのまま使えます。 注意点がひとつ

    C# => F# - GUI Converter - Nobuhisa's diary
    okagawa
    okagawa 2010/04/11
  • combinator - Nobuhisa's diary

    コンビネータとは自由変数を含まないλ項のことをいいますが、Yコンビネータ以外あまり取り上げられていない気がするのですが、これも100年に1度の金融危機の影響かとか、WBC楽しみですねだとか、そういえば今年雪祭り行けなかったんですよとか、最近携帯変えましたとか色々あるのですが、自分の練習もかねて、そんなコンビネータ達と戯れたいと思います。 沢山ある! Y以外にも広く知られている(?)コンビネータはいっぱいあるようですが、その中からいくつか。 I ≡ λx.x K ≡ (λx.(λy.x)) //以下、簡単に λx y.x と書きます F ≡ λx y.y M ≡ λx.xx S ≡ λx y z.xz(yz) B ≡ λx y z.x(yz) C ≡ λx y z.xzy L ≡ λx y.x(yy) Y ≡ (λx.xx)(λx.xx) (SLL) (当てるアルファベットが違うのはたまに見

    combinator - Nobuhisa's diary
  • 1