ブックマーク / camlspotter.hatenablog.com (8)

  • ウェブブラウザで関数型プログラミング! js_of_ocaml - camlspotter’s blog

    js_of_ocaml が熱い。 GoogleDart とか、そんな場合じゃない!! OCaml で書かれたプログラムがなぜか JavaScript に変換され、それがブラウザで動く。 JS で型がついていないオブジェクトでも何となく型をつけて OCamlで型安全に呼び出せる! 既存の JS ライブラリ資産が、ほとんど手間をかけずに、そのまま関数型言語パラダイムで使える! え?よくわからない? http://ocsigen.org/js_of_ocaml/manual/ の demo を試してご覧なさい。これが全部 OCaml で書かれている…! そんなわけで、 js_of_ocaml 体験記。だいたい実際に行っていった Hack を(行き止まりになった失敗枝は刈り去って)なぞっている。あ、ちなみに当方 JavaScript に関してはほとんど知識が無い。JS に関しては用語とか間違

    ウェブブラウザで関数型プログラミング! js_of_ocaml - camlspotter’s blog
    osiire
    osiire 2011/10/15
    Webクライアントも静的型付きでやろうず。F#でjs_of_ocamlと似たようなことができるWebSharperもよろしくね♪ http://www.websharper.com/
  • Monad にしちゃう functor を通して今時の OCaml モジュールプログラミングを俯瞰 - camlspotter’s blog

    これは私用の覚え書きを適当に整形したもの(というか Sphinx で hatena 記法にしただけだけど)。だから他の人が読んで判るように全く書いていない。OCaml や ML のモジュールシステム、 value polymorphism、さらには relaxed value polymorphism、そして日語を知っている人に、ならば何か役に立つかもしれない。多分地球上で数十人もいない。まあいいや。これ見てウヘェ、と思うなら例えば F# みたいな ML モジュールシステムを放棄して class 階層を採用した言語とか、 Haskell みたいな type class でモジュールを実現したのとかを使うか、それとももっと超カッコいいナントナクヒューリスティックで便利キワマルな型推論補助のついたモジュールシステムを考えて OCaml に足して公開すればいい。正直私もここまで来ると ML モ

    Monad にしちゃう functor を通して今時の OCaml モジュールプログラミングを俯瞰 - camlspotter’s blog
    osiire
    osiire 2011/07/14
    functorによるmonad強化。そしてmodule type Tは任意のモナドを受け取ってなにかしたい時のfunctorの引数に。任意のモナドを受け取りたい時なんてないか・・・。
  • OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog

    はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。 前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/camlspotter/20101212/1292165692 のような易しい文章ではないのでわからない人はとことん判らないだろう。まあ勘弁して欲しい。 あと、面倒だろうが、読む人は全部常体を敬体にして最後に「と思います」をつけて読んでくれ。ください、と思います。 Shadowing は便利であると思っている OCaml の let は非再帰なので以前定義された名前に別の値の束縛をオーバーライドできる。OCaml の人はこれが便利だと思っており皆普通に使っている。詳しくは http://d.hat

    OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog
    osiire
    osiire 2011/05/09
    すごい。
  • 超簡単にオモチャ LWT を実装してみた - camlspotter’s blog

    OCaml は現時点でマルチコア対応じゃないので、マルチスレッドにしてもマルチコアの恩恵を享受することができません。ですので、OCaml で thread を使う旨みというのは、関数を並行に走らせる事ができるってことだけです。でも並行に走らせる事が出来ればいろいろ便利ですよね。 でもマルチスレッドプログラミングで一番困るのが排他制御。これを上手くやってやらないと、OCaml で type safe なはずなのに、 segfault という事になります。もちろん OCaml プログラマは普段から type safety に慣れきっているので、 type system で保障されない排他制御を完璧に書けるはずがないのです。心が折れます。 そこで、light weight thread。こいつは実は thread じゃありません。要は同一スレッド内でタスク関数をとっかえひっかえ asynchro

    超簡単にオモチャ LWT を実装してみた - camlspotter’s blog
    osiire
    osiire 2009/12/29
    LWTの実装解説。OCamlでもモナドの便利さがよく分かる。ちょっとした非同期が欲しいだけならこの実装で十分実用的な気がする。pa_monadも併せてお薦め。
  • OCaml 標準ライブラリ探訪 #1: Pervasives: 最も使われてるのに最も名前が知られていない奴 - camlspotter’s blog

    関連リンク: OCaml 標準ライブラリ探訪 #0 標準ライブラリ探訪第一回は Pervasives です。 OCaml ソースファイルを持っている場合には ${srcdir}/stdlib/pervasives{.ml,.mli}、ライブラリディレクトリを見ている場合には ${libdir}/pervasives{.ml,.mli} *1 を見てください。 ところで、Pervasives って単語、知ってましたか?私はいまだに OCaml 以外でこの単語を見たことがありません。"pervert" じゃないですよ、"pervasives" です: Pervasives : [adj] 行き渡る、普及する、広がる傾向にある、(全面的に)広がる、拡散的な、広範囲な、まん延する 英辞郎 なんだかよくわかりませんね。でも、 Pervasives モジュールは OCaml で最もよく使われるモジュー

    OCaml 標準ライブラリ探訪 #1: Pervasives: 最も使われてるのに最も名前が知られていない奴 - camlspotter’s blog
    osiire
    osiire 2009/10/21
    とりあえずここを読めと言える記事。すばらしい。
  • 大駱駝解軆變造概説補遺 - camlspotter’s blog

    OCaml Meeting 2009 in Tokyo で私が発表した、「大駱駝解軆變造概説」という OCaml コンパイラを改造するお話の補遺です。 スライド: http://ocaml.jp/?plugin=attach&refer=Users%20Meeting&openfile=camlmod.pdf トーク動画: http://www.ustream.tv/recorded/2073121 そして、このお話のために準備した改造パッチ: http://ocaml.jp/?plugin=attach&refer=Users%20Meeting&openfile=OCM-patch2.txt このパッチを使用して (+) と (+.) を SML 97 風に (+) 一つにオーバーロードするのですが、パッチの実際の使用法と、長いわりに判りにくいですが、パッチの解説をしておきたいと思いま

    大駱駝解軆變造概説補遺 - camlspotter’s blog
  • 昔の仕事を引っ張り出してみる。 - camlspotter’s blog

    id:ytqwerty さんが GCaml での type level programming の可能性にチャレンジされていた。正直六年前の事なので覚えていない事が多いし、そもそも type level programming をするつもりの拡張じゃないのでいろいろアレだが勘弁してほしい。全ソースは最後にまとめてあります。 型で計算する場合、その型に対応する値をいちいち作らなきゃいけないのが面倒だよね。assert false や Obj.magic は型 '_a だが、実行すると問題が生ずる。型レでコメントしたように、型τ をそのまま扱うのではなくて、'a t のパラメータにτを入れてあげる (τ t) という形にすると少し見通しがよろしい。'a t は 'a option でも 'a list でもでもよいけど、どうせ 'a t の値自体は使わないんだから、'a t を phantom

    昔の仕事を引っ張り出してみる。 - camlspotter’s blog
    osiire
    osiire 2009/04/20
    後々分かるようになりたい。
  • Buzzword としての関数型言語 - camlspotter’s blog

    確かに、関数型言語で求人を掛ければ、(今現在は)応募者のレベルが高くなるとは思いますが、、、 http://ameblo.jp/dfs-hr/entry-10137999720.html 「おすすめポイント」がなんだかあまりに唐突で、かえって不自然なのは私の気のせいでしょうか。ほんとうに関数型言語で業務ができればよいですね。お給金レベルは人生経験が乏しいので、特殊技能を持っている人にとって、適正なものか、どうか、私にはわかりません。

    Buzzword としての関数型言語 - camlspotter’s blog
    osiire
    osiire 2008/09/12
    "言語スキル:CまたはC++必須。さらにPython Java HTMLを知っていると尚良い。"という事らしい。OCamlもHaskellもないじゃんw
  • 1