OCaml

caml_{enter,leave}_blocking_section

What are caml_{enter,leave}_blocking_section? They are not documented in the OCaml reference manual, but are very important if you tweak C code in multi-thread OCaml environment:Jacque Garrigue wrote: With posix threads (or windows threads…

OCaml koan

OCaml koan ってなんやろ、オー、キャラメルコーン?違います。 駱駝公案 そう、両手で手をたたくと音がする。では手と手のしわを併せると何になるか?とか、そういう奴。Caml-list でも let rec の rec なんかいらんやん、という質問が。Ashish Agarwal さ…

もなどを、真似したい。

もなど(くらす)を真似したいと、願うのです。 return :: Monad m => a -> m a bind :: Monad m => m a -> (a -> m b) -> m b みたいに type constructor が abstract されているのを OCaml の枠内で出来るだけ簡単に表現したいのです。やりたいのは type cla…

OCamlSpotter 1.1rc2

I have updated OCamlSpotter, a compiler enhancement for source code browsing, to version 1.1rc2, which is aimed for OCaml 3.11.2 and some enhancements since its first release.OCamlSpotter is a tool which finds definition places of various …

ocamldoc -dot で OCaml のモジュール依存グラフを表示する

ocamldoc なんかトンと使っておりませんでしたので、さっき知ったのですが、 ocamldoc -dot *.ml *.mli -o dep.dot でモジュール依存関係をグラフにしてくれるそうですよ、奥様。ちゃんと使うにはインクルードとか設定しないと駄目です。(じゃあ ocamldep の…

単相比較による高速化テクニック、そして、そのあまり知られていない落とし穴

今日は一転、真面目な話ですある程度 OCaml プログラミング経験がある皆様は、 int, string 等の基本型の比較には多相比較ではなく、単相比較を使うべし。最適化された比較関数が使われ、早くなる という教をご存知かと思います。正しいです。でも、そこに実…

使うと「通常の3倍」の速度で OCaml のソースコードを理解できる OCamlSpotter

(その変態的シンタックスに慣れれば) 結構早くプログラムが理解できるとうわさの OCaml ですが、他人の書いた OCaml ライブラリを読んだり、自分が書いた物でも、コード規模が大きくなってきたりすると、 どこかにあるハズの定義が見つからねぇ ってことが多…

OCaml 3.11.2 リリース

今回はバグフィックスリリースです。色々恐ろしいものはこの次の 3.12 で入りますよ。なので、あまり大きく取り上げるものもないですが、、、目立つところでは、 例外をプリントする機構が良くなった Scanf がだいぶ良くなった。でも俺は信用してない Arm 関…

OPA は「綺麗な OCaml」 なのか?

"OPA : my personal Holy Grail of OCaml ?"ホットな内に書いて公開しようと思ったので全然推敲していない文章です。まあ興奮度が伝わればいいかなと思って。OCaml も好いんですけど、やっぱり「ジャイアン」なんです。「綺麗なジャイアン」が欲しいと思うこ…

OCaml の toplevel で日本語文字列 (EUC/UTF-8) がエスケープされていてそれが嫌だという人は

そもそもプログラミング言語システムの挙動が locale とかに引きずられるのは、おかしいと思うんだ。実装側からするとただメンドイだけでバグも入り易いし。まあいいや。 一番簡単なのは、 # let printer ppf = Format.fprintf ppf "\"%s\"";; val printer :…

超簡単にオモチャ LWT を実装してみた

OCaml は現時点でマルチコア対応じゃないので、マルチスレッドにしてもマルチコアの恩恵を享受することができません。ですので、OCaml で thread を使う旨みというのは、関数を並行に走らせる事ができるってことだけです。でも並行に走らせる事が出来ればい…

XML をなんとなく OCaml のデータに落とすお手軽な方法をお手軽に解説する

うん、何かちょうどこういうやっつけ仕事をしていたらセックスがピー (http://twitter.com/chunjp/statuses/6523318056) とかいうのが多方面から聞こえてきたんよ。それで。若い人はなかなかそういうの恥ずかしくて話せないでしょ、だからアラフォーのおっち…

Practical OCaml : 絶対買うな

Practical OCaml を手に入れた。ただで。買おうとしたらやるから買うなと言われて一年。持ってこいといっても誰も持ってこなかったので、取りに行った。こりゃ内容のわりに重いから誰も持ってこないワケだ。この本について書くこと自体全く持って時間の無駄…

OCaml 標準ライブラリ探訪 #3.0: Printf: 便利だけどいろいろ謎のある奴

関連リンク: OCaml 標準ライブラリ探訪 第0回 その他の回は第0回のトラックバックよりご覧ください。 printf って OCaml でも便利ですよね。C から連綿と続いている半ば常識の % インターフェースに加え、ちょっと不思議な型推論のおかげで型安全性も保証さ…

OCaml 標準ライブラリ探訪 #2 Printf を書こうと思ったら、

Printf のバグを見つけちゃった、ちょっと待てー。 # Printf.sprintf "%3.F" 12345.6789;; - : string = "1234." これはやばいですよ。結果が1/10になる恐ろしや。もしこれ踏んでたらウチの会社は今存在してないかもしれない、くらいやばい。パッチはここに…

OCaml 標準ライブラリ探訪 #2 List に関するおわびとおことわり

関連リンク: OCaml 標準ライブラリ探訪 第0回 その他の回は第0回のトラックバックよりご覧ください。 「さようなら」周り等で、ご批判を頂きました。ありがとうございます。元来の毒舌な者ですから、ご勘弁ください。教科書や論文を書いてるわけでも無し、こ…

OCaml 標準ライブラリ探訪 #2 List : スタックと計算量に注意

関連リンク: OCaml 標準ライブラリ探訪 第0回 その他の回は第0回のトラックバックよりご覧ください。 やあこんにちは。ちょっとショッキングなことがあってブルーな筆者です。他にも 3kg は一瞬で減量できたんですがね、そこから先がなんともです。まーみな…

OCaml 標準ライブラリ探訪 #1.2 Pervasives 補遺

関連リンク: OCaml 標準ライブラリ探訪 #0 その他は上の記事のトラックバックから。 他の方同士の会話からでも勝手に抜き取ります。すいません。 [...] failwithf "hoge: %s" "hii" ();;でも普通に動きます。でもなんで()付きで [...] chunjpさん これは、ご…

OCaml 標準ライブラリ探訪 #1.1 Pervasives 補遺

関連リンク: OCaml 標準ライブラリ探訪 #0 OCaml 標準ライブラリ探訪 #1: Pervasives 御好評のようでいくつか twitter でつぶやきを頂いております。私がフォローもしくはキーワード OCaml で監視して見つけたモノのみしか追えませんが、、、まあつぶやいた…

OCaml 標準ライブラリ探訪 #1: Pervasives: 最も使われてるのに最も名前が知られていない奴

関連リンク: OCaml 標準ライブラリ探訪 #0 標準ライブラリ探訪第一回は Pervasives です。OCaml ソースファイルを持っている場合には ${srcdir}/stdlib/pervasives{.ml,.mli}、ライブラリディレクトリを見ている場合には ${libdir}/pervasives{.ml,.mli} *1 …

let が再帰でない理由というかメリット

そうすると本当に rec の存在意義を疑うしかなくなる。もし何らかの理由で付いてると嬉しいのだとしても、現代的な言語だったらプログラマが怠けられるようにそういうのは排除するべきじゃないでしょうか。納得できそうな理由があったら教えてください。 OCa…

OCaml 標準ライブラリ探訪 #0

OCaml 標準ライブラリへようこそ OCaml 標準ライブラリは、機能が足りない、なんで dev team はライブラリを放っているんだ、とかコケにされた上に、もう我慢できないから自分で次世代標準ライブラリを作っちゃうよ、といった運動も起こっている(extlib / ba…

O'Rakuda で Perlish O'Caml プログラミング

Perl っぽい便利な記法ができる CamlP4 文法拡張とライブラリ集 O'Rakuda のレポジトリを OCamlCore の forge に作りました。 http://forge.ocamlcore.org/scm/?group_id=118CamlP4 にパッチが必要ですが、パッチを当てると、 $/regexp/ で正規表現 $/regexp…

CamlP4 をちょっと改造してこんなものを作ったよ

CamlP4 をほんの少し改造して、pa_*.cmo モジュールから OCaml の lexer を取り替えられるようにしました。 http://jun.furuse.info/hacks/camlp4-lexer-plugin-patch このパッチを当てた CamlP4 を使うと、Gram.set_from_lexbuf という関数で lexer の from…

OC4MC : OCaml for Multicore architectures

http://www.algo-prog.info/ocmc/web/ “OCaml4Multicore” is an OCaml modification to allow the use of parallel POSIX Threads with OCaml. わー、よーやく出ました。これでマルチコア云々でさびしい思いをしなくて済みますね。 皆さん使ってください!私…

そろそろ Jane Street Core について語ろう、かな #0: Core とは

Core とは Jane Street が開発、使用、オープンソースとして公開している OCaml 基本ライブラリ。この Core についてちょっと書こうかな。ちなみに、ここに書いてあるのは一ユーザとしての意見。間違っても会社の見解ではありません。念のため。 発端 まず、…

大駱駝プロジェクト

というのを始めることにした。 Upper compatible with the original OCaml but with parsing/typing extensions SML 97 style simple user definable overloading PCRE support by default with perlish syntax i.e. $/hello *world/ Japanese support Bette…

大駱駝解軆變造概説補遺

OCaml Meeting 2009 in Tokyo で私が発表した、「大駱駝解軆變造概説」という OCaml コンパイラを改造するお話の補遺です。スライド: http://ocaml.jp/?plugin=attach&refer=Users%20Meeting&openfile=camlmod.pdfトーク動画: http://www.ustream.tv/recorde…

OCaml Meeting 2009 in Tokyo

OCaml Meeting 2009 in Tokyo は主催側の予想を上回る盛況の内に終了しました。 ご参加くださった皆さんどうもありがとうございました!OCaml Meeting での発表資料の公開やフォローアップは ocaml.jp の Meeting ページ内で行っていきます。これからもよろ…

OCaml Meeting : OCaml Golf Competition 問題発表さる!!

OCaml Meeting での Golf Competition 問題が発表されました!! http://golf.shinh.org/p.rb?Sum+of+Divisors+for+OCaml+Golf+Competition===== 問題 (Problem) =====標準入力の各行に与えられる自然数に対し,その約数の和を計算して, 標準出力に「元の自然…