2011-01-01から1年間の記事一覧
js_of_ocaml が熱い。 Google の Dart とか、そんな場合じゃない!! OCaml で書かれたプログラムがなぜか JavaScript に変換され、それがブラウザで動く。 JS で型がついていないオブジェクトでも何となく型をつけて OCamlで型安全に呼び出せる! 既存の JS ラ…
OCaml のソースコードのインデント整形には Emacs なら ocaml-mode, tuareg-mode, Vim なら ocaml.vim(?) や omlet.vim があります。便利です。でもどうも細かい部分が自分のスタイルと違ったり、特殊な改行をするとボロボロッとおかしなインデントをしてき…
型情報から求めている関数を探すというのはそもそものアイデアは http://www.dicosmo.org/ResearchThemes/ISOS/ISOShomepage.html この辺を参照してほしいんですけど、型付き関数型言語でのプログラム開発の超強力なツールになっていて、OCamlBrowser, Hoogl…
CUFP のチュートリアルプログラムがいつの間にか発表されていますね: http://cufp.org/conference/sessions/2011はじめ噂で聞いてた人がいなかったりしますが、選考はほとんど関わっていないので、何か事情があったりするんでしょう。一つ25分のトークと違っ…
これは私用の覚え書きを適当に整形したもの(というか Sphinx で hatena 記法にしただけだけど)。だから他の人が読んで判るように全く書いていない。OCaml や ML のモジュールシステム、 value polymorphism、さらには relaxed value polymorphism、そして日…
私の環境 (OCaml 3.12.0, ubuntu, findlib) で自動ビルドに成功しました $ export PATH=$HOME/.odb/bin:$PATH $ export OCAMLPATH=$HOME/.odb/lib $ ocaml odb.ml --repo unstable oasis急速に進化しつつあるようです!他の環境でビルドできるかどうか知りま…
この文書は新情報が入り次第、適時更新します。 今日も OCaml ライブラリのソースをダウンロードするところから始めている皆さん、こんにちは。 はっきり言って、面倒ですよね。一度ダウンロード、コンパイルに成功したら、それのソースツリーを置いておけば…
Planck: A Small Parser Combinator Library for OCaml I have released Planck, a small monadic parser combinators for OCaml. It includes a proof of implementation: OCaml syntax lexer and a parser which create 100% identical AST as the origina…
はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/…
コードがあった: match (modeA opts, modeB opts, modeC opts ..., modeG opts) with | (true, _, _, _, _, _, _) -> Opt.setMode A | (_, true, _, _, _, _, _) -> Opt.setMode B | (_, _, true, _, _, _, _) -> Opt.setMode C | (_, _, _, true, _, _, _) …
3年前ボストンに行ったときに、港のショッピングモールの建物に在ったマークです。レンガ作りとはいえ、こんな窓のいっぱいある建物で死の灰が降ってきて助かるものでもないと思います。冷戦時の遺物。鼻で笑ってしまいそうになります。ただ、彼らは実際には…
大阪でおまけ言うたらコレ!サンプルソースは http://camlspotter@bitbucket.org/camlspotter/omake-depend-on-dir にあるよ。 OMake って大阪のオバチャンに言わせるところの「便利やけど使いにくいわぁ」「どっちやねん!」なツールですよね! OMakeは素晴ら…
C.U.F.P. (Companhia União Fabril Portuense)関数型言語の国際会議 ICFP の今年の開催地は東京です。ICFP のアジアでの開催は初めてですね。F# も正式にリリースされましたし Haskell も Haskell Platform が立て続けに出てます。Coq や Agda などの依存型…
非 し! -── ‐- 、 , -─-、 -‐─_ノ O 小 末 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) C え 学 尾 L_ / / ヽ a | 生 再 / ' ' i m マ ま 帰 / / く l ジ で 許 l ,ィ/! / /l/!,l /厶, で だ さ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ よ れ l | |_|_|_|/| / /__!__ …
この記事は LLVM-2.8 とその OCaml binding を使った LLVM プログラミングの始め方について、良く判らないという声を聞いたので、理屈はともかく、どうやって始めるかを主眼に書いた物です。OCaml や Makefile を全く書いた事が無いし知りたくも無い、でも L…
OMake のお話。% ワイルドカードの付いているルールは .SCANNER ルールも含め、global scope では無い! つまり、関数内で % を使ったルールを書いた場合、それは関数内でしか有効にならない! これを知らなかったので、% ワイルドカードのついた .SCANNER ル…
OCaml もモナドをつかったプログラミングでは、私は別に bind operator (>>=) を使うのは全く苦じゃないんです。例えば、今私が遊んでいる LLVM のコードは builder をモナドにしてこんな感じになっています: let run clos lty_ret = B.cast clos lty_generi…
module Z where import Data.Char data Foo = Alpha | Beta | Gamma | Delta | Eta | ... | Omega deriving (Show,Eq,Enum,Bounded) parse internals x = head $ (if all isLower $ take 1 x then [External i | i <- [minBound..maxBound], map toLower (sh…