OCaml
OCatraをいろいろ直したり、ベンチマークとってみたり - komamitsu.log で作っていたOCamlのおもちゃ的Webサーバー OCatraをLwtを使うように修正してみた。 1st 2nd 3rd 4th Ave. OCatra (byte) 4238 4424 4299 4285 4311 OCatra (opt) 11806 12384 12381 12…
OPAMいいですね。http://d.hatena.ne.jp/wistery_k/20120909/1347164530 の記事を見て使い始めましたが、道具としてのOCamlが何かの壁を乗り越えそうな感じがしてます。で、使っていて、たまにocamlfind -listの中にopamでインストールしたパッケージが出て…
komamitsu/OCatra · GitHub のkeepaliveまわりのバグとかを直したり、モジュール名を変更したりしました。Eventモジュールを使ってすっきり書いた方が良さげだなぁとか思っているのですが、現状そんなにややこしい制御をしていないので、まぁいいかと。あと…
SinatraっぽいOCatraを書いてみた - komamitsu.log で作ったOCatraですが、もうちょっとすっきり書けるように修正。 open Ocatra open HttpCommon open HttpCommon.HttpContent let _ = get "/" (fun r -> say (TextPlain "Hello, World (GET)") ()); post "…
先日、やっつけのWebサーバーを書く際にRubyのSinatraで書いてみたのですが、「簡単に書けて良いな〜」と思ったので、OCamlでもそれっぽいものを適当に作ってみました。komamitsu/OCatra · GitHub現状はこんな感じでかけます: open Ocatra open HttpCommon o…
最近、Scalaのコップ本を読んでいるのですが、例題でN Queen問題が出ていて、結構すっきり書かれていてへぇ〜って思いました。そういえば、N Queen問題は試したことが無かったのと、このところコードをあまり書いていないような気がしたので、気分転換にOCam…
最近、機械学習に興味を持ち始めていて、SVMを実装してみようと思ったら、挫折したのでやはり段階を踏むべきであろうということでパーセプトロンから試してみた。komamitsu/ocaml-perceptron · GitHub perceptron.ml let ($) f g = f g let print x = Hashtb…
Gistが貼っ付けられるかテスト
↑のpostで引っかかったので単純な形にして確認してみた。 functor.ml (functorの定義) komamitsu@carrot:~/lab/ocaml$ cat functor.ml module type HogeType = sig type t val string_of_t : t -> string end module Make(Hoge : HogeType) = struct let pri…
仕事ではOCamlもA* search algorithmも全く使っていないのですが、自宅で気分転換/リハビリがてら何か書こうとすると、すぐOCamlでA* search algorithmを書いてしまいます。たまにダイクストラ法で何かgraphを探索するやつも書きます。毎回同じようなものを…
書いた。 https://gist.github.com/1362149これ↓を参考に https://github.com/avsm/ocaml-cohttpserver/blob/master/server/http_tcp_server.ml 適当に書き始めたのだけど、途中で「やばい徹底的にmonadicに書かないと動かないというかコンパイル通らない」…
先日から、AWS EC2上にFree usage tierのインスタンスを作って、CPU使うようなことはそちらで行おうとしています。まぁきっかけは節電なんですが、もともとEC2に興味があったので。それはさておき、動かそうとしているのはMySQLをstorageとしたOCamlのプログ…
久しぶりにOCamlでも書いてみようかと思ったら、全然書けなくなっていたのでリハビリをすることに。お題は @osiire さんの http://d.hatena.ne.jp/osiire/20101101 のレベル3。といってもこれまでの経験上、最初の「Ordシグネチャーとファンクターを使って独…
http://bitbucket.org/komamitsu/misc/src/tip/ocaml-reversi/作ってみようかと思ったのは、ふと「ちゃんとゲーム木を実装したことが無いなぁ、特にαβカット周りは全然やったことない」と思ったからなのです。できれば、min-maxの部分を切り分けておいてオセ…
OCamlで # let orig = Array.init 8 (fun _ -> Array.create 8 "x");; val orig : string array array = [|[|"x"; "x"; "x"; "x"; "x"; "x"; "x"; "x"|]; [|"x"; "x"; "x"; "x"; "x"; "x"; "x"; "x"|]; [|"x"; "x"; "x"; "x"; "x"; "x"; "x"; "x"|]; [|"x"; …
このところocamlyacc/ocamllexで簡単なインタープリターを作ろうとしていたのだけど、どうも萌えてこないので、適当な所でやめておいた。これは確固たる目的(xxxのために新しい言語が必要とか)が無いから萌えてこないのかなぁ、と思ったけれどアルゴリズム…
B-Treeアルゴリズムを試してみました。http://github.com/komamitsu/ocaml-b_treeB-Treeというのは多分木のアルゴリズムで、木の高さを低く保つことができてキーのバランスが良いので、結構DBのインデックスにそれ系統のやつが使われていてDisk I/O減らせて…
http://rwmj.wordpress.com/2009/08/06/ocaml-internals-part-3-the-minor-heap/ を見ていて興味深かったコードがあったのでコピペして試してみた。 #load "unix.cma" let f1 (a, b) = (a, b) let f2 (x : ('a * 'b)) = x let f3 x = x let rec loop n f arg…
http://rwmj.wordpress.com/2009/08/04/ocaml-internals/ (http://d.hatena.ne.jp/camlspotter/20090805/1249476309 経由)実装について基本的なところを知りたかったので助かるなぁ。Article was good but fish face at the top scared the shit out of me!…
Skew Binary Random-Access Lists - komamitsu.logのベンチマークをとりたいなぁ、と思っていたところ、OCamlにBenchmarkというそのものズバリなライブラリがあったので試してみました。# ちなみに件のコードは MIT License に. aptでのインストールは以下 $…
Linuxの環境整備に熱中していて、すっかり忘れていたけれど、http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf の 6.4.1章について。 これは何かというと、Skew Binary Numbers - komamitsu.logとBinary Random-Access List - komamitsu.logを合わせたランダ…
http://d.hatena.ne.jp/komamitsu/20090503/1241369214 で List使って書いたら遅かった Array.append使ってSuffix-Arrayを構築したら全然処理が終わらなかった としょうもない感じだったので、改善してみました(http://github.com/komamitsu/ocaml-suffixar…
引き続き、http://www.cs.cmu.edu/~rwh/theses/okasaki.pdfを眺めていますが、今回はBinary Random-Access Listについてメモ。 これは完全二分木と二進数を合体させたリストみたい。 このリストは二進数のように0か1を持っていて、1の場合はその中に完全二分…
先日、osiireさんにSkew Binary Random-Access Listsというのを紹介して頂いたので、http://www.cs.cmu.edu/~rwh/theses/okasaki.pdfを眺めていた。 これはSkew Binary Numbersというのに基づいているらしいので、まずそっちを見てみることに。いずれも初耳…
http://d.hatena.ne.jp/mzp/20090511/suffixを見て気がついたのだけど、先日ちょっと書いてみたSuffix Arrayの練習 - komamitsu.logがArrayじゃなかったことに絶望した。で、適当にArrayに置き換えてみたら、いつまでたっても処理が終わらなくなったので、簡…
前から少し気になっていたhttp://ja.wikipedia.org/wiki/Suffix_Arrayを試してみた。 gitの練習がてらgithubに => http://github.com/komamitsu/ocaml-suffixarray。 これと、Str.search_forwardでちょっと性能を比べてみたのだけど、Str.search_forwardの方…
練習のため、http://d.hatena.ne.jp/komamitsu/20090326/1238081086をモジュールにしてみた。lifegame.mli type cell = N | C type world val create_world : cell array array -> world val make_next_world : world -> world val disp_world : world -> (c…
前々から気になっていたので、それらしいのを書いてみた。描画は手抜きでprintf。 (* ocamlfind c -package unix -linkpkg -o lifegame lifegame.ml *) open Printf let orig_world = [| [|0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0|]; [|0;0;1;0;0;0;0;0;0;…
カミさんとシステムトレードの話をしていて、資金管理がいかに大切かを話していたのだけど、そもそも本当に効果があるのか自分でも自信がなかったので、簡単に試してみた。以前、聞きかじった手法は 賭け金の初期値は五枚 勝ったら一枚減らす 負けたら一枚増…
一昨日、昨日は、香川大学の先生達がうちの会社に来訪され、合同の勉強会が開かれていました。かねてから親交があり毎年一回程度開催されているそうです。 T先生はデータマイニングのお話。 わたしは以前、趣味で日経平均先物のトレーディングルール検出シス…