osiire’s blog

ふしぎなそふとやさん

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

FRPの実装

前にも触れたけど、これ((http://conal.net/papers/simply-reactive/)を元にOCamlでFRP(っぽいもの)が実現できる機能をconcurrent cellに追加した。ほぼできたと思う。あとはテスト(バグがないか、メモリリークはないか、速度はどうか)といったところ。…

Advanced Module Systems

http://www.cis.upenn.edu/~bcpierce/papers/modules-icfp.ps モジュール間の参照をどう扱うか?1.はスケールしない。2, 3を使おう。 parameterization on modules -> functor sharing by specification -> reference the module direct sharing by paramete…

The FRP

FRPにも色々実装があるみたいだけど、私的にはこれ(http://conal.net/papers/simply-reactive/)がThe FRPのような気がしてきた。簡単さ、動作効率の両面で。実践にも即してるし。 [追記] FutureをいんちきしてReactとEventを実装してみた(Eventの>>=がま…

構造的部分型の比較

私はOCaml, haXe, Scalaを勉強してきましたが、この三つの言語では構造的部分型がサポートされています。せっかくだから三言語の構造的部分型の特徴を比較してみることにしました。 OCamlは全て型推論してくれる代わりに部分型への変換は明示的。部分型変換…

CCA

http://lambda-the-ultimate.org/node/3659 より。とりあえずそれっぽいの(loopはいんちき)を実装してみたんだけど、何が嬉しいのか未だ分からん...。なんとなくすごく使えそうな気がするんだけど。[追記]あー、switchとかchoiseとか無いのかー。これは厳し…

OCamlを使ったシステム開発まとめ

うちの会社(有限会社ITプランニング)でやってきたOCamlを使ったシステム開発の概要を書いておきます。ふと思うと今までまとめて公開したことはなかったなと。別に隠す程のものじゃないし、もしこれからOCamlを使ったプロジェクトを始めてみたい人の参考にな…

lwt and react

lwt 2.0出た http://ocsigen.org/lwt/ インストールしてみようとしたら、React(http://erratique.ch/software/react/doc/React)に依存してた。やはり。元々マルチスレッドを意識していないReactとその名の通りlightweightなthreadのlwtの相性は抜群だと思わ…

scala三日目 段々基本的な文法に慣れてきた。 構造的部分型の要素のMapできた。thx id:mzp。型注釈の位置の問題だった。 補助コンストラクタかファクトリメソッドか。 クロージャーの引数とタプルのパターンマッチの辺りがまだ慣れない。 共変か反変かはサブ…

Scala二日目。 trait便利すぎ クラス名の文字列からインスタンスを生成できちゃう柔軟さ Enumでいいような場面でも、あえてケースクラス 単純なimplicit defは分かるんだけど、部分型が絡んでくると急に難しく感じる。慣れの問題。 coercionって使わないの?…

データ構造と手続きとモジュール分け

アプリケーション全体に渡って使われる基本的なデータ構造については、データ構造と手続きを別モジュールにした方がよい場合もあるんじゃなかろうか。具体的に言うと、四本値とか足の種類とか通貨ペアとか。 type candle = { (* ローソク足のデータ構造 *) u…

maybeモナドはDB読み込みにちょうどよい気がする

思い切ってpa_monadを実プロジェクトに初めて投入してみた。特に今回はDB周りの処理が多かったので、maybeモナドが大活躍。 module MaybeM = struct let bind m f = match m with None -> None | Some v -> f v let return v = Some v end データベースからs…

OCamlerがScalaを触った感想

やっぱりタプルとオプションはどんな言語でも必須だと確信した 正規表現のマッチ結果をパターンマッチして変数束縛できるのは便利だわぁ Javaの資産がまるごと使えるのはすごい、というかうらやましい η変換に不自由なOCamlerから見ても、高階関数がやや書き…

OCaml Meeting in Tokyo 2009お疲れさまでした

もう一週間経ってしまいますが、OCaml Meeting in Tokyo 2009にて講演頂いた方、参加下さったOCamlerの皆様、手伝ってくれたocaml-nagoyaのメンバー、そしてid:camlspotterさん、お疲れさまでした。お蔭様でよい会になったのではないかと思います。ありがと…

Observer、haXe版

package itpl.util; import itpl.util.Util; class Observer<A> { var listener : Array<A -> Void> ; public function new() { listener = new Array(); } public function listen( l : A -> Void ) : Void { listener.push( l ); } public function clear_listener</a></a>…

0から小さい順に整数を返す関数をスレッドセーフに

今度はconcurrent cellを使ってみる。 (* to compile, ocamlfind ocamlc -thread -package ccell -linkpkg sf.ml *) let (@@) f g = f g let (+>) g f = f g let tee f x = ignore (f x); x open Ccell open Event let num = let m = Mvar.init_make 0 in fu…

0から順番の数字を返す関数をスレッドセーフに

(* to compile, ocamlc -thread unix.cma threads.cma mts.ml *) let nums = let with_lock m f x = Mutex.lock m; let r = f x in Mutex.unlock m; r in let c = ref ~-1 in let m = Mutex.create () in fun () -> with_lock m (fun () -> incr c; !c) () l…

氷のような微細構造

均一と考えられていた液体の水に不均一な微細構造を発見 | 理化学研究所 この手の研究をしていた研究室に所属していた事もあり興味深い。90°Cでも構造があるんだ。へー。でも1nmなら水分子4つ分くらい?そりゃ4つくらいならくっついてても不思議じゃない...…

原爆

今日は原爆の日。64年目。私は原爆は嫌いだ。好きな人なんていないと思うけど。今でも原爆が落ちてくるから逃げなきゃいけないと焦る夢を見ることがある。昔は結構頻繁に見てた。実は子供のころに観に行かされた原爆の劇と展示と「おこりじぞう」という絵本…

レイアウトの述語(Level 1)

こないだからレイアウトは述語と合成がいいとチラチラ言っているので、今のところ考えている述語を晒す。 type point = int * int type size = int * int type rect = point * size type independent = (* 自らsizeが決まるもの *) [ `Fix of size | `Prefer…

奴隷型顧客満足第一主義w

仕事関係でちょっと思う所があるので、書いて考えをまとめてみる。 http://kusoshigoto.blog121.fc2.com/blog-entry-278.html このエントリの内容は、ちょっと言葉があれだけど、分かりやすい。私も反省すべき点が多い。素直に言うと「奴隷型顧客満足第一主…

GUIを作るシステム開発がコスト高な理由

※似たようなことをもう何度か書いてきたけど、自分の考えをまとめるために書きます。読みづらいのであしからず。 レイアウトできない問題 思うようにレイアウトできない。無駄な試行錯誤の時間がかさむ。これはプログラマのGUIライブラリへの習熟不足の問題…

Auckland Layout Model

バックの理論は知らんけど、面白そうなレイアウトシステム発見。 ALM - The Auckland Layout Model Domain Specific High-Level Constraints for User Interface Layout 最初はちょっと面倒に思うかもしれないけど、やっぱりレイアウトはこんな感じで合成し…

衝突判定

Amthingにもそろそろ衝突判定をと思っていたら、こんなのを発見。 その8 4分木空間分割を最適化する! 空間を再帰的に4分割して、その空間にモートン順序と呼ばれる順序付をして、鬼のようなビット演算を駆使してインデックス化。恐るべし。 でも意外と簡単…

OCaml Meeting Tokyo 2009ではLightning Talkを募集中です!

OCamlに関連することなら何でも歓迎です。OCamlでピザを注文しました!とかOCamlを拡張してHaskellにしてみました!とか、ありありだと思います。5分であなたのネタを披露してみませんか?私(ogasawara@itpl.会社.jp)かid:camlspotter氏までメール下さい。よ…

ふと想うんですが、ある言語の「表現能力」ってうまく厳密に定義できないものですかね。それがあると言語の比較に便利じゃないですか。それが同型なら同じ表現能力と言えると。もちろんチューリング完全とか持ち出すとフラット過ぎるので、それはなしの方向…

今日もレイアウトで苦しむの巻。どうしてこう生産性が低いんだろうね、GUIのレイアウトシステムは。たぶん、FlowLayoutだとかBlockLayoutだとかGridLayoutだとか、なんとなくその場のノリで決めた感じのするいい加減な合成だからいかんのだな。レイアウトの…

Observerパターンを内包して合成できるようにした何か

先日いげ太さんに紹介されたF#のイベント(http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Control.Event.html)が面白かったので、Objective Camlでも(一部を)実装してみました。↓ http://forge…

友人から寡黙に送られて来たガンダムの写真。べ、別にうらやましくなんてなんだからね!!

次世代のGUIライブラリの要件

古き伝統のライブラリから脱却して、次のステップに進んだイベントドリブンなGUIツールキットはどんなものになるのでしょう。難しいですが、その要件が少しずつ幾つか見えてきた気がしてきたので、メモしておきます。 ■イベントの一級化と合成 これはつまり…

first class event in F#

http://blogs.msdn.com/dsyme/articles/FSharpCompositionalEvents.aspx これって2006年の記事だけど、F#は結構昔から頑張ってたんだー、すごいな。 二つのイベントに依存するイベントは作れないのかなー?なんとなくこのままでは作れなそうではあるが。今度…