タグ

ブックマーク / camlspotter.hatenablog.com (18)

  • そろそろ Jane Street Core について語ろう、かな #0: Core とは - camlspotter’s blog

    Core とは Jane Street が開発、使用、オープンソースとして公開している OCaml 基ライブラリ。この Core についてちょっと書こうかな。 ちなみに、ここに書いてあるのは一ユーザとしての意見。間違っても会社の見解ではありません。念のため。 発端 まず、このエントリの発端は、Caml-list に出現した「Why don't you use batteries?」という長ーいスレッド(今長さ57)。Batteries included というのは、OCaml の「標準ライブラリ」が余りに貧弱なので、それを拡充しようというものです。古くは extlib という 3rd party ライブラリがあって、それを取り込んでさらに拡張しています。(Batteries included も 3rd party。念のため。) OCaml 貧弱標準ライブラリ まず、その、OCaml の

    そろそろ Jane Street Core について語ろう、かな #0: Core とは - camlspotter’s blog
  • CamlP4 が何やっているか知りたいときどうするか - camlspotter’s blog

    一番よいのは CamlP4 が何を出力しているか見ることです。 例として OCamltter の Twitter API の JSON 表現と OCaml の型との間を取り持つ api11.ml がどうなっているか見てみましょう。 type 'a t = { previous_cursor : Json.t; next_cursor : Json.t; next_cursor_str : string; previous_cursor_str : string; contents : 'a mc_embeded; } with conv(json, ocaml) この型宣言の with conv(json, ocaml) の部分は CamlP4 の拡張の部分で、型定義からなにかしらコードを生成しています。 $ rm lib/twitter/api11.cmo $ omake --verbo

    CamlP4 が何やっているか知りたいときどうするか - camlspotter’s blog
    masterq
    masterq 2013/07/25
    いつかお世話になるかもしれないので、メモ
  • OCaml 開発環境について ~ コンパイラに付属しない非公式ツールたち - camlspotter’s blog

    2012年12月での関数型言語 OCaml コンパイラ一式には入っていない 内部もしくは外部開発されたのツール群の紹介を行う。 例によって多岐に渡るので、一つ一つの詳しい説明は行わない。 各ツールの細かい情報はそれぞれのドキュメントを参照して欲しい。 リンクは貼るの面倒だからググって。 もし知らないツール名があったらちょっと読んでみて欲しい。 もしかしたらあなたの問題を解決するツールがあるかもしれないから。 ライブラリとツールの中間のようなコード生成系も取り上げた。 あくまでも基的に私が触ったことのある物しか紹介しないから、 そっけなかったりするのはあまり触ってないということ。 なんでこれはなんで取り上げてないの?と思ったら、それは使ったことないから。ごめんね。 不満があったら自分で紹介記事書いてください夜露死苦! ★は重要度。五点満点。 コンパイラ同梱のツールの紹介はもうした。 htt

    OCaml 開発環境について ~ コンパイラに付属しない非公式ツールたち - camlspotter’s blog
  • コードレビューについて - camlspotter’s blog

    このところ立て続けにコードレビューについて話をする機会があったので 私が経験した最高のレビュー体制を簡単にまとめておこうと思います。 利点 何故必要か 何が嬉しいのか コスト うまく回すためには何が必要か 細かい運営方法 はっきり言って当たり前の事しか書きません。 私も当時は当たり前のことだと思っていましたから、特に気にもしていなかったのです。 ただ見聞するところによると、これをちゃんとやっているところはとても少ないようです。 ウォールストリート系のファンドでもろくにレビューしてないとかどういうことなんでしょう。 だから時々会社が吹っ飛ぶんですね… 結局は、ああだ、こうだ各論を言っても、ちゃんとやれるのか、それ一点に尽きてしまう話なのですが… 利点 レビューを何のためにするか、それはまず第一に自分達の書いているコードに潜在するバグによる損失をできるだけ少なくすることでしょう。 型システムや

    コードレビューについて - camlspotter’s blog
    masterq
    masterq 2012/08/15
    なるほど。
  • 大駱駝解軆變造概説補遺 - camlspotter’s blog

    OCaml Meeting 2009 in Tokyo で私が発表した、「大駱駝解軆變造概説」という OCaml コンパイラを改造するお話の補遺です。 スライド: http://ocaml.jp/?plugin=attach&refer=Users%20Meeting&openfile=camlmod.pdf トーク動画: http://www.ustream.tv/recorded/2073121 そして、このお話のために準備した改造パッチ: http://ocaml.jp/?plugin=attach&refer=Users%20Meeting&openfile=OCM-patch2.txt このパッチを使用して (+) と (+.) を SML 97 風に (+) 一つにオーバーロードするのですが、パッチの実際の使用法と、長いわりに判りにくいですが、パッチの解説をしておきたいと思いま

    大駱駝解軆變造概説補遺 - camlspotter’s blog
  • OMake のための emacs mode: omake-mode.el - camlspotter’s blog

    OCaml とは直接関係ないんだけど、 OMake のためのコンパイルモードを書いてみた。 OMake(私の興奮気味の紹介) には -P スイッチって言うのがあって、コンパイルが成功/失敗した後も居座ってソースファイルの変更を監視、自動的にリコンパイルするっていう機能があるのだが、これが従来の emacs の compile-mode とはちょっと相性が悪い(compile-mode は -P とか想定してない)。なので、面倒だけどコマンドシェルで omake -P して、エラーメッセージを見て手動でエラーを探していた。 ようやく、ここんとこの金融危機の余波で増えた仕事が落ち着いて、気持ちにも余裕が出てきたので、懸案だった OMake のためのモードを書いてみた。はじめは compile-mode を元に書こうかと思ったが、、、俺は人の書いた elisp は読めないことが判ったので、スクラ

    OMake のための emacs mode: omake-mode.el - camlspotter’s blog
    masterq
    masterq 2012/01/21
    パッケージするか。。。
  • OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog

    はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。 前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/camlspotter/20101212/1292165692 のような易しい文章ではないのでわからない人はとことん判らないだろう。まあ勘弁して欲しい。 あと、面倒だろうが、読む人は全部常体を敬体にして最後に「と思います」をつけて読んでくれ。ください、と思います。 Shadowing は便利であると思っている OCaml の let は非再帰なので以前定義された名前に別の値の束縛をオーバーライドできる。OCaml の人はこれが便利だと思っており皆普通に使っている。詳しくは http://d.hat

    OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog
    masterq
    masterq 2012/01/10
    "let rec の右辺には原則として即値しか取れない"
  • Gc.finalise について - camlspotter’s blog

    OCaml には、 Gc.finalise という関数があります。これはガーベージコレクター(GC)に関連のある関数で、 ある値が必要なくなってガーベージコレクトされる直前に、その値に対して何かするためのコールバックを登録する ために使われます。 Gc.finalise f vとすると、v が GC される直前に f v を評価します。 まず、謎 なぜ、finalise であって finali*z*e ではないか、これは OCaml 七ふしぎの一つです*1。オブジェクト初期化コードのための予約語は initiali*z*er なのにね、、、大昔理由を聞いたような気がしますが、、、確か、 finalize という名前の関数が既にコンパイラか何かで使われていたから、とかいう理由だったような、、、 次に、効用 リソース開放のタイミングを自動的に行えます。v がリソースのハンドルとすると、ハンドル

    Gc.finalise について - camlspotter’s blog
    masterq
    masterq 2011/12/27
    なんですかこれは。。。
  • OCaml のパッケージシステム OASIS を使ってみた - camlspotter’s blog

    この文書は新情報が入り次第、適時更新します。 今日も OCaml ライブラリのソースをダウンロードするところから始めている皆さん、こんにちは。 はっきり言って、面倒ですよね。一度ダウンロード、コンパイルに成功したら、それのソースツリーを置いておけばそれまでなんですが、 他のマシンでコンパイルしたくなったりしますよね。 私はブチ切れて OMake で指定 URL からダウンロードして apt-get+configure+make+install までオンデマンドでやっちゃうシステムを組みました。 マシンが変わっても omake 一発で全部やってくれるのが気持ちいいです。 ( https://bitbucket.org/camlspotter/omy/overview ) それでもやっぱり、ライブラリがバージョンアップしたら、また始めからソース取ってきて確認、は変わりません。 そうなるとやっぱ

    OCaml のパッケージシステム OASIS を使ってみた - camlspotter’s blog
  • 星のキャミバ様 Adventure Calendar 第十四夜: シンガポール便利リンク - camlspotter’s blog

    今のところ私がガンガン使っているサイトを紹介します Google map http://g.co/maps/cznjs まあ当然ですね! Street view 便利! Street Directory http://www.streetdirectory.com/ シンガポールの地図は Google map より便利。コンドやアパートの形までちゃんと出てくるので物件の正確な場所がわかります。U/C と書いてある建物は工事中なので、その近辺の物件は要注意です! また、西海岸公園へ歩いて抜ける地下道など、生活密着情報もここなら見れます。 Street view が無いのが残念。(あるのかな? Property Guru http://www.propertyguru.com.sg/map-search?listing_type=rent ここの左に自分のご予算とか広さとか入れれば、物件が地図

    星のキャミバ様 Adventure Calendar 第十四夜: シンガポール便利リンク - camlspotter’s blog
    masterq
    masterq 2011/12/15
    移民のすすめ
  • ウェブブラウザで関数型プログラミング! js_of_ocaml - camlspotter’s blog

    js_of_ocaml が熱い。 GoogleDart とか、そんな場合じゃない!! OCaml で書かれたプログラムがなぜか JavaScript に変換され、それがブラウザで動く。 JS で型がついていないオブジェクトでも何となく型をつけて OCamlで型安全に呼び出せる! 既存の JS ライブラリ資産が、ほとんど手間をかけずに、そのまま関数型言語パラダイムで使える! え?よくわからない? http://ocsigen.org/js_of_ocaml/manual/ の demo を試してご覧なさい。これが全部 OCaml で書かれている…! そんなわけで、 js_of_ocaml 体験記。だいたい実際に行っていった Hack を(行き止まりになった失敗枝は刈り去って)なぞっている。あ、ちなみに当方 JavaScript に関してはほとんど知識が無い。JS に関しては用語とか間違

    ウェブブラウザで関数型プログラミング! js_of_ocaml - camlspotter’s blog
    masterq
    masterq 2011/10/15
    むむむむむ!Debianだとlibjs-of-ocaml-devパッケージ
  • 型システムの勉強なんかどうでもいいから、それにカバーされ無いところに気をつけて欲しい - camlspotter’s blog

    コードがあった: match (modeA opts, modeB opts, modeC opts ..., modeG opts) with | (true, _, _, _, _, _, _) -> Opt.setMode A | (_, true, _, _, _, _, _) -> Opt.setMode B | (_, _, true, _, _, _, _) -> Opt.setMode C | (_, _, _, true, _, _, _) -> Opt.setMode D | (_, _, _, _, true, _, _) -> Opt.setMode E | (_, _, _, _, _, true, _) -> Opt.setMode F | (_, _, _, _, _, _, true) -> Opt.setMode G | (_, _, _, _, _, _

    型システムの勉強なんかどうでもいいから、それにカバーされ無いところに気をつけて欲しい - camlspotter’s blog
  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

    今の会社に移って半年経ちました。めでたく試用期間終了です。といっても別に試用期間中に密かに首を切られるような事をしたとか、逆に試用期間が終わったからと言ってこれで定年までのうのうと働ける、という訳ではありません。未来は全く判りません。まあとにかく、一つ区切りがやってきました。 金融を知らないQuantsの仕事 私の職業の肩書きには Quantitatitatitatitative という単語がくっついて超カッコよさそう。普通は Quant というと、金融工学や統計数理に詳しい夜もブイブイいわしている超イケメン20代を想像しますが、私は金融とか全然知らないアラフォーお父さんです。それでも Quant です。お願いですから、私に何を買ったらいいかとか、聞かないでください。金融商品とか買った事ないし。というか、逆に教えて欲しいです。 私のチームは、当の Quant さん達が開発した、金融派生商

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
    masterq
    masterq 2010/12/21
    だからってもーC言語はお腹いっぱいなんス
  • モジュールを「拡張」するテクニック - camlspotter’s blog

    すとっどりぶ ご存知のように OCaml の stdlib は「標準ライブラリ」ではありません。「すとっどりぶ」です。大事な事などでもう二度言いますってやつです。これは OCaml コンパイラがコンパイルできる様にするための最小限のライブラリ+ INRIA の人たちの気分で加えた関数から成っています。当然、OCaml をバリバァリ使う人には全く力不足です。「すとっどりぶ」で満足できない人は Jane Street Core や OCaml Batteries Included 等を使うと良いです。 でも、なんだか自分の書いているソフトに外部のライブラリを使って変な依存性を入れるのはどうかなあ、とか、わざわざ巨大な「代替標準ライブラリ」を入れるの面倒だ、という人もいるでしょう。そういう時は自分で「すとっどりぶ」を拡張すればよい。その時に便利な方法をお教えします。 すとっどりぶを拡張する たと

    モジュールを「拡張」するテクニック - camlspotter’s blog
  • キャミバ様が id:ymotongpoo を木人形にされるようです - camlspotter’s blog

    事の次第 @camlspotter「めんどくせ、あいつに押し付けよ… @camloeba「おれには強く型付けされたコードが必要だ! あらゆる実験にたえうる木人形がな!ぶつぶつ‥ @camlspotter: 「キャミバ様、実はこんなものが… @camloeba「ほう… … ||||||:::::::;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::|     | |::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::||||||| |||||::::::::::/   ●   \:::|    |:::/   ●   \::::::::::||||||| |||::::::::;;;;;;;──────;;;;;;;;|    |;;;;;;──────;;;;;;;;;;:::::|||||| |;;;;;;;

    キャミバ様が id:ymotongpoo を木人形にされるようです - camlspotter’s blog
    masterq
    masterq 2010/12/10
    "まず問題を良く読み、アルゴリズムを再検討しよう 末尾再帰に気をつけよう 無駄なデータの計算は避けよう リスト系再帰関数を書いたら、fold かどうか確認しよう。大体が fold で綺麗に書けるはず OCaml は自動的なコード
  • 補足その2 OCaml Meeting 2010 in Nagoya で話しました - camlspotter’s blog

    Find Your White Caml というタイトルで一席噺させていただきました。 スライドは http://www.slideshare.net/camlspotter/um2010 にあります。見てやってください。 テーマは「OCaml で書かれた大規模なコードベースを如何に早く理解し、チームの重要な一員になるか」です。要するに他人の書いたコードの読み方です。偶然ですが、浅井先生が私の前にコードの書き方のお話をされましたので、流れ的に良かったのではないかと思います。 ほとんど私の実体験から出てきた噺です。前半は別に OCaml に限った事や無いやんという気もしますが、逆に、OCaml であってもパッと飛び込んだら別に他の言語の仕事と変わらず、catch-up が大変ということをお知らせしたく、強調しました。それは、当然 Haskell でも同じです。まあ魔法のような言語は、世の中、

    補足その2 OCaml Meeting 2010 in Nagoya で話しました - camlspotter’s blog
    masterq
    masterq 2010/09/01
    テーマは「OCaml で書かれた大規模なコードベースを如何に早く理解し、チームの重要な一員になるか」です。要するに他人の書いたコードの読み方です。
  • Effective ML 9ヶ条 - camlspotter’s blog

    私の前のボスのハーバードでの講演のビデオが公開されました: http://ocaml.janestcapital.com/?q=node/82 彼は早口ですが、まあ頑張って聞いてください。普通に判れば、アメリカで普通に仕事できます。判らなくても仕事できますから安心してください。 正直、この Effective ML 9ヶ条と Jane Street Core のソースコードを見れば、 Jane Street での関数型プログラミングの秘訣は大体抑えられると言ってよいでしょう。学問的には新しいことは何もありませんが、徒党を組んで関数型言語によるプロジェクトを行うには重要な物ばかりです。 この、Effective ML 9ヶ条をまとめておきました。これを見ながら視聴すると良いかもしれないです。オリジナルは 00:47:13 で見れますね。 コードライタよりもリーダの意見を尊重せよ。大体において

    Effective ML 9ヶ条 - camlspotter’s blog
    masterq
    masterq 2010/08/25
    僕には完全に理解できいない。。。 コードライタよりもリーダの意見を尊重せよ。大体において彼らの意見の方が正しい 統一的ライブラリモジュールインターフェースを作れ 不可能な状態が原理的に表現できないデータ定
  • 彼らはどうやって Haskell プログラムを編集しているのか教えてください - camlspotter’s blog

    さて、今度の会社は色々と研修や事務手続きなどありまして、さすが巨大な企業です、中々仕事に取り掛かれませんでした。ようやく今日ちょいと Haskell プログラミングの真似事などを始めましたよ。 読めねー いえ、一応私、関数型言語の研究などやっておりましたし、オーバーローディングの事もやっておりましたので、Haskell は読めるはずなんです。でも読めない。まず CamelCase が気にわない。Camel と言えば OCaml じゃ流行じゃないのになんで Haskell では Camel なんだぜ?まあ、それはいいんです。それより、 なんか一行がすっごく長いんですけど、、、 オジサン、もうちょっと老眼気味なんで、24dot font (12x24とか) を愛用しているのですが、それで表示させると全然横が足りません。頑張ってウィンドウを広げても現在仮に使っている15inchのモニタでは歯が

    彼らはどうやって Haskell プログラムを編集しているのか教えてください - camlspotter’s blog
    masterq
    masterq 2010/07/08
    最深インデント : 140chars 最長行 : 400chars
  • 1