OCaml

OASIS が odb でビルドできるようになりました

私の環境 (OCaml 3.12.0, ubuntu, findlib) で自動ビルドに成功しました $ export PATH=$HOME/.odb/bin:$PATH $ export OCAMLPATH=$HOME/.odb/lib $ ocaml odb.ml --repo unstable oasis急速に進化しつつあるようです!他の環境でビルドできるかどうか知りま…

Planck という monadic parser combinator を公開しました

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…

OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた

はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/…

今時 OCaml で非末尾再帰呼び出し使うなんて

非 し! -── ‐- 、 , -─-、 -‐─_ノ O 小 末 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) C え 学 尾 L_ / / ヽ a | 生 再 / ' ' i m マ ま 帰 / / く l ジ で 許 l ,ィ/! / /l/!,l /厶, で だ さ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ よ れ l | |_|_|_|/| / /__!__ …

OCaml で LLVM -- 事始め

この記事は LLVM-2.8 とその OCaml binding を使った LLVM プログラミングの始め方について、良く判らないという声を聞いたので、理屈はともかく、どうやって始めるかを主眼に書いた物です。OCaml や Makefile を全く書いた事が無いし知りたくも無い、でも L…

pa_monad の "unit binder" を少し拡張

OCaml もモナドをつかったプログラミングでは、私は別に bind operator (>>=) を使うのは全く苦じゃないんです。例えば、今私が遊んでいる LLVM のコードは builder をモナドにしてこんな感じになっています: let run clos lty_ret = B.cast clos lty_generi…

キャミバ様が id:ymotongpoo を木人形にされるようです

事の次第 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; …

昔誰かが書いたけど誰も読まなかった「若いλ彦」

半年ほど前に、誰かがベロベロに酔っ払ってただ勢いで書いたゴミをさっき見つけました。すいません。今日はこれで許してください。今月はしょうもないことでも出きるだけ毎日出して行きたいと思います。 「若いλ彦」 http://anond.hatelabo.jp/2010061123231…

モジュールを「拡張」する― 3.12.0 の機能を使って…(みるけどうまくいかない)

OCaml のモジュールが大好き!! 3.12.0 インストールしてるよ!という人だけ、読んで下さい。それ以外の人は、あんまりわかんないと思う。 前回のまとめ 綺麗にドキュメント(.mli)を書きつつ、既存OCamlモジュールを「拡張」する方法を紹介しました (* xmystdl…

モジュールを「拡張」するテクニック

すとっどりぶ ご存知のように OCaml の stdlib は「標準ライブラリ」ではありません。「すとっどりぶ」です。大事な事などでもう二度言いますってやつです。これは OCaml コンパイラがコンパイルできる様にするための最小限のライブラリ+ INRIA の人たちの…

Fall back to 3.11.2

自分の使っている OCaml のバージョンを 3.12.0 から 3.11.2 に戻しました。OCaml 3.12.0 には First class module や type scheme annotation など非常にあると便利な機能が新しく入っているので、できれば使いたいのですが、問題は付属ツールである CamlP4…

tuareg-mode 2.0.x の case -> に関するインデント修正

tuareg-mode については、 http://d.hatena.ne.jp/camlspotter/20100605/1275695973 でも書いたとおり、最新版の 2.0.x はまだちょっと手を出すのは早いのかなあと思っていましたが、そうも言っておれず…2.0.x では match, try, function の case 文での -> …

( ゚∀゚)o彡°O'PyCaml

( ゚∀゚)o彡°O'PyCaml リリースして無いけど公開してるよ ( ゚∀゚)o彡°O'PyCaml は OCaml から Python/C API を使って Python ライブラリを呼び出すインターフェースです。大体出来ました。使いながらチューンしていきます。 Bitbucket で公開してます: http://b…

ocamlspot.vim

OCamlSpotter に付属している ocamlspot.vim は、branch 3.12.0 に入ってます。$ hg clone http://hg.ocamlcore.org/cgi-bin/hgwebdir.cgi ocamlspotter/ocamlspotter/ -r 3.12.0 $ ls ocamlspotter/ocamlspot/ocamlspot.vim ocamlspotter/ocamlspot/ocamlsp…

補足その2 OCaml Meeting 2010 in Nagoya で話しました

Find Your White Caml というタイトルで一席噺させていただきました。スライドは http://www.slideshare.net/camlspotter/um2010 にあります。見てやってください。テーマは「OCaml で書かれた大規模なコードベースを如何に早く理解し、チームの重要な一員に…

補足その一

Eric Stokes の CmiGrep 1.5 は OCaml 3.12.0 ではコンパイルできません。ちょっとした手直しが必要です。GPL なので、直したものを置いておきました。ご活用ください。 ( http://jun.furuse.info/hacks/cmigrep-1.5-ocaml-3.12.0.tbz?attredirects=0&d=1 )

T-shirt 完売ありがとうございました

OCaml T-shirt は、在庫15枚を刷りましたが、OCaml Meeting 中に全て売り切れました。どうもありがとうございました!!とりあえず、ご連絡まで。

OCaml T-shirt が届きました

TL でご一報いたしましたが、OCaml Meeting 2010 in Nagoya T-shirt が家に届きました!なかなか品質良いです! 全部で57枚です。重い。ちょっと忙しくて、数量は今から確認します。価格は初めにお約束いたしましたとおり、1500円とさせていただきます。ミーテ…

OCaml Meeting T-Shirt ご注文ありがとうございます

すごく慌しい受注体制にもかかわらず、たくさんの皆さんからご注文いただきました。私+予備を除いて 38枚です。皆さんどうもありがとうございます!! 発注メールは午後に送りましたが返事がありません。不安です。ちょっと待つことにします。続報は #ocamlts…

OCaml Meeting T-shirt lightning order 締切り繰上げ (8/5正午) のお知らせ (すいませんすいません)

http://d.hatena.ne.jp/camlspotter/20100803/1280866293 に書いたとおり、締切りを20時間繰上げます。どうも申し訳ありません。 RSS に引っかかるようにこのエントリも書きました。

OCaml Meeting 2010 in Nagoya T-shirt. Lightning Order 開始! 受付は48時間!! => 締め切り繰上げ (すいませんすいませんすいません)

すいませんすいません OCaml Meeting 当日の頒布をより確実にするためLightning order 締め切りを明日8/5正午に繰り上げさせてください。すいません。完全に私の準備不足です、どうぞご了承ください、よろしくお願いします。 仕様とお値段 こんなんで発注か…

そろそろ OCaml Meeting 2010 in Nagoya !!

八月です。OCaml Meeting 2010 in Nagoya の月です。今回は名古屋です。もちろん私も参加します。お知らせはhttp://ocaml.jp/um2010で発表されるでしょう。プログラムもほぼ固まってきたのではないか、と思います。皆さんのご参加をお待ちしています。交通費…

3.12.0 の作業

暑いですね。暑い上に駱太郎が密着しないと不満らしいのでさらに暑い。駱太郎は密着していて暑くても汗でベタベタになっても一向に構わないそうです。そんなこんなで日記が埋まりません。 3.12.0 への作業 この数週間は、 OCaml 3.12.0+rc1 に乗り換える作業…

予約語で文を作ってみる

OCaml の予約語を適当に並べたら何か標語が出来ないかなと思って。 try new fun of function with type new もあるし何となく OCaml っぽくていいかな?それだけです。 # try new fun of function with type;; Characters 8-11: try new fun of function wit…

高階関数パズルの解説

前回の日記でこのような問題を出しました: 問題 次の twice 関数は、第一引数である関数 f を第二引数 x に二回適用する高階関数です。 let twice f x = f (f x) この時、次の各式の結果は以下のようになります: 式 ==> 結果 twice ((+) 1) 0 ==> 2 twice tw…

OCaml's ;; is NOT SO bizarre.

;; has existed for long. Actually it is since the very birth of the ML functional language family: Edinburgh LCF ML by Robin Milner in the late 1970s has it already: http://books.google.com/books?id=Vm08AAAAIAAJ&lpg=PA163&dq=lcf%20manual%2…

Phantom type ではちゃんと実装を隠蔽しましょう

コメント欄が無いのでトラックバックしておきます http://d.hatena.ne.jp/tatta/20100623/ # isz (isz (lit 0)) - : bool term = IsZ (IsZ (Lit 3)) !!! isz : int term -> bool termなので型エラーになってほしいのに... OCaml のバグじゃないかと疑って…

Tuareg 2.0.1 が出ましたが、まだ時期尚早かな。

もう干からびていたとうわさの OCaml のための emacs mode、Tuareg が新しくなりました。オリジナルは 1.45.x 以降、1.46.2 あたりまで出たものの、何かエンバグして 1.46 系は取りやめ、そして作者が興味を失った?のか、そのままでしばらーく乾燥状態だっ…

OCaml では Y が書けないのはデマではありません。

OCaml はイカレタ言語なので the Y combinator が書けません: $ ocaml Objective Caml version 3.11.2+ocamlspotter # let y = fun f -> (fun x -> f (x x)) (fun x -> f (x x));; Characters 32-33: let y = fun f -> (fun x -> f (x x)) (fun x -> f (x x)…

My tuareg mode conf

(add-hook 'tuareg-mode-hook '(lambda () ;; indentation rules (setq tuareg-lazy-= t) (setq tuareg-lazy-paren t) (setq tuareg-in-indent 0) (setq tuareg-electric-indent nil) (setq tuareg-leading-star-in-doc t) (setq tuareg-with-indent 0) (set…