タグ

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

  • OutsideIn(X) と OCaml - camlspotter’s blog

    Haskell の実装 GHC の新しめのバージョンでは 多相let の型付けが今までの HM (Hindley Milner) 方式から新しい OutsideIn(X) に変わっています。(言語拡張でどうたらあるらしいがシラネ) 詳しい動機はまあいろいろあるみたいですが GADT とか Type family の型推論の効率とか完全性とかそういう方面らしいです。正直両方とも使わないのであまりありがたみがわかりません。で、世の中 Haskell のやることは外でも全て正しいという考えの方がおられまして、 OutsideIn(X) は Haskell で問題ないのだから他でも問題が無いはずだとかおっしゃるわけです。 あんまり科学的な態度じゃないですよね。まあプログラミング言語論のこれは便利だ便利じゃないなんて思想であって自然科学じゃあないので究極的には好き嫌いの問題だと私は思うからまあいいっ

    OutsideIn(X) と OCaml - camlspotter’s blog
  • 金融と OCaml - camlspotter’s blog

    関数型言語というと金融で流行っている、特に OCaml と言えば金融御用達関数型言語として語られることも多い。金融業界に関数型言語を持ち込み成功した最初の二社 LexiFi とJane Street Capital は共に OCaml を採用し、そして二社とも今日成功しているからだ。 今回はそのうち LexiFi について話したい。私が Ph.D を取った後、一年間、産業ポスドクとしてお世話になった会社である。 金融派生商品(デリヴァティブ)は様々な日時や条件、依存する別の商品価格によって価値が変化する。デリヴァティブは先物やオプションなどのような一般市場でも流通している簡単な派生商品だけでなく、会社間でだけで取引される非常に複雑な物もある。これらの商品にはそれぞれ業界内で通用する名前が付けられ取引、評価、管理が行われてきた。そしてこれらを扱うプログラムもまた、それぞれの商品ごとに別個の機

    金融と OCaml - camlspotter’s blog
  • 言語の実装は関数型言語で、は本当か - camlspotter’s blog

    表題の様なことがちょっと気になったので、型無λ計算の big step semantics (戦略は正格評価)を実装しました。まあ要するにしょぼいインタプリタですね。 FP でλ計算を実装する まず、普通に関数型言語(OCaml)で実装してみました。 λ式の型は t (term) λ式には整数定数と加減をプリミティブとして追加 λ式を評価すると value になる(計算止まらない場合はさようなら) value には引数を待っているプリミティブがある open List (** primitives *) type prim = Add | Sub (** terms *) type t = | Int of int | Var of string | App of t * t | Lambda of string * t | Prim of prim (** semantic values

    言語の実装は関数型言語で、は本当か - camlspotter’s blog
  • 静的型と OO というものははじめから… - camlspotter’s blog

    OO の方面から、「静的型とか別に役に立つとは思えない、静的型の人は頭おかしい」 とか関数型の方面から、「静的型が役に立たないなんてはずない OO の人は頭おかしい」 とか良く聞こえてくるんですが、ダックタイピング心理学 とかいう真に頭おかしい意見を無視できるとすると(無視できない量あるんですが)、まあ私にはどっちもわからんでもない、という話です。 型をゴミ箱に捨てておいてから、後でゴミ箱を漁るなら、型なんかいらない オブジェクトの静的型システムを大雑把にいうとまず upcast と downcast があります。 upcast はオブジェクトの静的型をそれが属するクラスからそのスーパークラスにを変えちまうこと、downcast はその逆、オブジェクトの静的型をそれが属するクラスから子クラスに変えちまうことです。サブクラスの物はスーパークラスとしても通用するはずですから upcast は失

    静的型と OO というものははじめから… - camlspotter’s blog
  • 例外の効率: OCaml の例外は早い、は本当か - camlspotter’s blog

    例外による再帰関数からの大域脱出は OCaml ではランタイムのペナルティはほとんどない、 という事になっている。 try with を書いてそれでもコードが読みやすければ使って構わない。 が、実際のところ、どうか。 -g を付けてコンパイルした場合、遅くなる。 さらに、 OCAMLRUNPARAM 環境変数に "b" が入っていると更に遅くなる。 しっかりした OCaml プログラムを開発したい場合はバックトレースは是非欲しい ところなので、 -g を付けて OCAMLRUNPARAM 環境変数に "b" を入れてプログラム を実行することは普通にある。だから、安易に例外を使うとパフォーマンスに影響する: let gen_timed get minus f v = let t1 = get () in let res = f v in let t2 = get () in res, mi

    例外の効率: OCaml の例外は早い、は本当か - camlspotter’s blog
    terazzo
    terazzo 2013/08/25
    限定継続を言語でサポートしてくれたら効率よく大域脱出できるのかな。
  • シンガポールブログと身バレ - camlspotter’s blog

    いつも楽しく拝読させていただいている「シンガポールで団地」さんのブログでこんなことが http://arihara1010.blogspot.sg/2013/08/seo.html シンガポール狭いしシンガポールにいる日人多いといっても日の大都会とは比べ物にならないし、こういうの難しいですね。 私はこのブログの id たらなんたらでちょっと検索すればすぐ名とかわかっちゃうのでそもそも身バレしてるものとしていろいろ書いているんですけど、一応住所特定されないようにはしています。もちろん読めばどの辺に住んでるかとか直ぐわかるけどね。 私のもシンガポール移住ブログ、家族と友人のために書いていたんですが、簡単に検索で外から一見さんやってくるのあまりわかってなかったみたいで、ネガっぽいコメント一つで閉鎖してしまいました。まあ子供の写真てんこ盛りだったんで、ね。まあいまどき Facebook

    シンガポールブログと身バレ - camlspotter’s blog
    terazzo
    terazzo 2013/08/10
  • GODI 終了宣言事件に関して - camlspotter’s blog

    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 world everyday, in OSS, in football, in finance, or in everything. But if he had been excluded from the project for pro's quick market domination..., it would not be

    GODI 終了宣言事件に関して - camlspotter’s blog
    terazzo
    terazzo 2013/07/24
  • Real World OCaml が出ました - camlspotter’s blog

    一昨年から少しずつ書かれていた OCaml プログラミングの、 Real World OCaml (以下 RWO)がついに public beta になり公開されました。 ( https://realworldocaml.org/beta1/en/html/ ) 版元の O'Reilly ではこのベータ版の状態の e-book が 今なら安く手に入ります。完全版には後から無料でアクセスできるように なるそうです。( http://shop.oreilly.com/product/0636920024743.do ) !!!!!安く買いたい人は http://shop.oreilly.com/category/deals/early-release.do?code=WKERRLS をよく読んでね!!!!! このは、今まで外に伝わりづらかった OCaml プログラミングの最前線の一面を 伝

    Real World OCaml が出ました - camlspotter’s blog
  • コードレビューについて - camlspotter’s blog

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

    コードレビューについて - camlspotter’s blog
    terazzo
    terazzo 2012/08/14
  • ML系言語の型エラー報告を改良する - camlspotter’s blog

    さて、お約束していた OCaml の型エラーメッセージ改良のための改造、ある程度形になりましたので、公開します。 hg clone -b typeloc https://bitbucket.org/camlspotter/mutated_ocaml ビルドは configure の後、 make core coreboot world です。インストールなさる場合は既存の OCaml システムを潰さないように注意してください。インストールなしにトップレベルを試したい場合は ./ocaml -I stdlib 。といってもまだコンセプトが理解できる程度にしか動作せずまだまだ不完全です。バグもあるかと思います。 さてここから簡単にアイデアを説明します。MLの型推論についてある程度の知識が必要です。 HM 型システムではプログラムの各所を見ながらそれぞれが要求する型の情報を制約として集め、解の存

    ML系言語の型エラー報告を改良する - camlspotter’s blog
    terazzo
    terazzo 2012/07/21
  • 関数型言語が今どう産業で使われているか - camlspotter’s blog

    良心が咎めないことも無いので… 各関数型言語(らしきもの)のホームページには大体、ウチの言語はこの会社で使われているよ!だから君も使わなきゃ駄目駄目!というお手盛りのページがあります。それをペペッとググリましたので列挙しておきます: Scala: http://www.scala-lang.org/node/1658 Clojure: http://dev.clojure.org/display/community/Clojure+Success+Stories Haskell: http://www.haskell.org/haskellwiki/Haskell_in_industry F#: http://msdn.microsoft.com/en-us/vstudio/gg634701#Who_Uses_F_sharp OCaml http://cufp.org/archive/20

    関数型言語が今どう産業で使われているか - camlspotter’s blog
    terazzo
    terazzo 2012/05/02
  • ウェブブラウザで関数型プログラミング! 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
    terazzo
    terazzo 2011/10/15
    http://jaked.github.com/ocamljs/とは別口なのかしら
  • CUFP 2011 のチュートリアルが発表されています - camlspotter’s blog

    CUFP のチュートリアルプログラムがいつの間にか発表されていますね: http://cufp.org/conference/sessions/2011 はじめ噂で聞いてた人がいなかったりしますが、選考はほとんど関わっていないので、何か事情があったりするんでしょう。 一つ25分のトークと違ってチュートリアルは一つ三時間。体力が必要そう… 二つのチュートリアルが並行に開催されますので、各セッション、どちらか一つを選ばなきゃいけません。悩みますね!

    CUFP 2011 のチュートリアルが発表されています - camlspotter’s blog
    terazzo
    terazzo 2011/07/22
  • Planck という monadic parser combinator を公開しました - camlspotter’s blog

    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 original OCaml's lex+yacc, and available at https://bitbucket.org/camlspotter/planck . http://camlspotter.blogspot.com/2011/05/planck-small-parser-combinator-library.ht

    Planck という monadic parser combinator を公開しました - camlspotter’s blog
  • 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
  • OCaml で LLVM -- 事始め - camlspotter’s blog

    この記事は LLVM-2.8 とその OCaml binding を使った LLVM プログラミングの始め方について、良く判らないという声を聞いたので、理屈はともかく、どうやって始めるかを主眼に書いた物です。OCaml や Makefile を全く書いた事が無いし知りたくも無い、でも LLVM を使いたいという方にはちょっと無理な内容になっています clang とか LLVM とかこの頃よく聞きますよね。Apple が製品に結構使っているという話ですし、気になっている人もいるでしょう。私も LLVM、気になりました。要するに、プログラム内で Cみたいな言語(語弊がありますが)の構文ツリーを動的に生成して、それを、はいお願いと LLVM のエンジンに投げるとアーラ不思議、各アーキテクチャ用にいい感じで JIT コンパイルしてくれてスイスイ動く、という魔法のような話です。 マシン語は Z80

    OCaml で LLVM -- 事始め - camlspotter’s blog
    terazzo
    terazzo 2011/02/10
  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

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

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
  • キャミバ様が id:ymotongpoo を木人形にされるようです - camlspotter’s blog

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

    キャミバ様が id:ymotongpoo を木人形にされるようです - camlspotter’s blog
    terazzo
    terazzo 2010/12/10
  • 1