2013-01-01から1年間の記事一覧

OutsideIn(X) と OCaml

Haskell の実装 GHC の新しめのバージョンでは 多相let の型付けが今までの HM (Hindley Milner) 方式から新しい OutsideIn(X) に変わっています。(言語拡張でどうたらあるらしいがシラネ) 詳しい動機はまあいろいろあるみたいですが GADT とか Type family …

金融と OCaml

関数型言語というと金融で流行っている、特に OCaml と言えば金融御用達関数型言語として語られることも多い。金融業界に関数型言語を持ち込み成功した最初の二社 LexiFi とJane Street Capital は共に OCaml を採用し、そして二社とも今日成功しているから…

Risk of Rain

Risk of Rain というミニドットな 2D プラットフォームシューターをちびちびとやっています。面白い。 各面の形は毎回少しづつ変化がある(大きいレイアウトは決まっているので迷わない) Rogue 系要素。敵はランダムスポーン。時間がたつと強い敵がだんだん…

OCaml がおかしくなったとき

違うバージョンのコンパイラを違うバージョンのライブラリセットに対し間違って使ってしまった コンパイラが変われば元のコンパイラで作成したオブジェクトやライブラリは新コンパイラではまず使えない clean せよ which ocaml / which ocamlc / which ocaml…

言語の実装は関数型言語で、は本当か

表題の様なことがちょっと気になったので、型無λ計算の big step semantics (戦略は正格評価)を実装しました。まあ要するにしょぼいインタプリタですね。 FP でλ計算を実装する まず、普通に関数型言語(OCaml)で実装してみました。 λ式の型は t (term) λ式に…

星のキャミバ様 Adventure Calendar 第603~605夜: ペナンに行ってきた

これは 2013年7月の旅行記です。(面倒なんで東南アジア方面用語は解説しません。ググッておくれー)うちの息子の毎度曜日のスイミングが先生の夏休みで二週間なしになりました。で、急に旅行してみようということになりました。アンコールワットとか見に行こ…

静的型と OO というものははじめから…

OO の方面から、「静的型とか別に役に立つとは思えない、静的型の人は頭おかしい」とか関数型の方面から、「静的型が役に立たないなんてはずない OO の人は頭おかしい」とか良く聞こえてくるんですが、ダックタイピング心理学 とかいう真に頭おかしい意見を…

星のキャミバ様 Adventure Calendar 第727夜: 借家の更新

先日、借家(コンド)の更新しました。二年前というか 2012年01月01日 から二年契約で借りたものです。シンガポールでは契約単位は数年(二年がほぼ普通)でその期限内に店子は追い出されることはないのですが、契約が切れると更新時には貸しては自由に家賃…

Launch CamlP4 with some help of OCamlFind

I do not know why but there is no ocamlfind camlp4o. Here is a tip for this: #!/bin/sh # \ mark is actually a backslash. camlp4o \ `ocamlfind query -r -i-format $*` \ `ocamlfind query -r -a-format -predicates syntax,preprocessor $*`I named…

すぐできるキモイ OCaml 改造メモ

糖衣構文で可能 (P4 マター) 関数にする (.[1]) (.[]) (.(1)) (.()) (.field) (#meth) (,,,) どんどん関数にする (.[] もっともっと関数にする {.. with x = e} など (.. が無いとさすがに怖い) 糖衣構文ではできない (コンパイラ改造コース) open M の名前…

OCaml 4.01.0 変更点

スペルチェック 識別子のミスタイプがあった場合訂正を提案します: # List.lentgh ;; Characters 0-11: List.lentgh ^^^^^^^^^^^ Error: Unbound value List.lentgh Did you mean length? 個人的には、はあだから?と言った感じかと思っていたのですが、今の…

オブジェクトファイルのリンク順

OCaml のオブジェクトファイル(.cmo, .cmx)を並べる順番には意味がある。 順番を間違えると: Reference to undefined global Hogehoge などと言われるので注意。 a.ml: let x = 1 b.ml: let y = A.x c.ml: let z = B.y というソースがあったとする。 a.ml, b…

List の ; と tuple の ,

List, Array, Record などの要素区切りの ; はとても奇妙に見えるかもしれない。 OCaml を使っている人でもあまり意識していないのだが、実は一貫性がある。 A ; B は B ; A と書いても型は変わらない A , B は B , A と書くと型が変わる場合がある 例: prin…

例外の効率: OCaml の例外は早い、は本当か

例外による再帰関数からの大域脱出は OCaml ではランタイムのペナルティはほとんどない、 という事になっている。 try with を書いてそれでもコードが読みやすければ使って構わない。 が、実際のところ、どうか。 -g を付けてコンパイルした場合、遅くなる。…

National Day Parade の国旗牽引チヌークヘリコプターを東海岸で見るには

ここが良いです。大きな地図で見るマリーナベイからずっとやってくるのが見えます。真横を飛んでいくので中々良いですよ。戦闘機がスモーク炊くのも遠くから見れます。Marine Parade民にはお勧めです。ただし、花火は木に隠れて見えません。夜風に当たりなが…

シンガポールブログと身バレ

いつも楽しく拝読させていただいている「シンガポールで団地妻」さんのブログでこんなことが http://arihara1010.blogspot.sg/2013/08/seo.htmlシンガポール狭いしシンガポールにいる日本人多いといっても日本の大都会とは比べ物にならないし、こういうの難…

星のキャミバ様 Adventure Calendar 第606夜: Racial Harmony Day

息子の幼稚園では今日は Racial Harmony Day ということで、ジンベイサンを着て幼稚園に行きました。Racial Harmony Day では学校の生徒が出身民族の衣装のコスプレで登校します。写真は無し。俺が会社行くときはまだパン一だったので。会社にも凄くきれいな…

CamlP4 が何やっているか知りたいときどうするか

一番よいのは CamlP4 が何を出力しているか見ることです。例として OCamltter の Twitter API の JSON 表現と OCaml の型との間を取り持つ api11.ml がどうなっているか見てみましょう。 type 'a t = { previous_cursor : Json.t; next_cursor : Json.t; nex…

GODI 終了宣言事件に関して

A rough summary in English which might sound too more direct than the original Japanese version. Sorry if you feel attacked: pro came in and did great jobs, while a volunteer felt burnt out. Probably this kind of things happens in the worl…

管理者権限のない Windows 7 でキーボードの Caps lock を Control に remap する

管理者権限のない Windows 7 でのキーボードの Caps lock を Control に remap するにはどうするか。 [:original]そもそもなぜそんなことが必要かというと銀行というとテンプラアイスが煩いからしょうがない。 XP では管理者権限を渡してもらわないと何もで…

Real World OCaml が出ました

一昨年から少しずつ書かれていた OCaml プログラミングの本、 Real World OCaml (以下 RWO)がついに public beta になり公開されました。 ( https://realworldocaml.org/beta1/en/html/ ) 版元の O'Reilly ではこのベータ版の状態の e-book が 今なら安く手…

全然記事書いてないが生きている

reST とか markdown が楽なので はてな で何か書くのが億劫になった。 はてなブログ?うんあの URL に思い切り blog て書いてあるとブロックされたりする環境なんで面倒なんよ。 息子三歳になった。英語で喋りかけると一応英語で答える バリ島(ウブド)行った…

OCurl or ocaml-curl 0.5.3 has a bug around set_postfields

A personal memo. Probably useful for the others met the same problem.Symptom: POST data set by set_postfields are often sent with garbages at the end.Cause: a typical bug of forgetting copying \0 in C codeWorkaround: In 0.5.3, set_postfiel…

関数型言語を独学で勉強している学生です への答

http://oshiete.goo.ne.jp/qa/7896221.html にこういうのがあった: 情報系の大学3年生です。 僕は関数型言語に興味がありhaskellやlispを勉強しています。 ...昨今のIT企業は新卒採用の際、学生時代に作ったプログラムを評価し採用の是非を決めると思います…