いろいろ
Smileys Triangle がやっと追い付いた(63B)。Statistics も同じ。
echo が 1 バイト届かない。おかしいなあ。
Evil C Compiler は厳しい。Ruby や Perl は入力を適当に置換して eval してるんだと思う。こっちも Toploop モジュールで eval みたいなことはできなくもないが、決め打ちのほうが多分短くなるはず。
post-morterm
post-mortem は面白いシステム。
OCaml の easy regexp を見ると決め打ちばかりでずるい(笑)。後で決め打ちじゃないのを投稿する予定。
■
http://d.hatena.ne.jp/KeisukeNakano/20070314/1173846972
なるほど、参考になります。でも 2 番目の
- apply_3 で f を呼ぶときにはオプショナル引数を省略しているから,apply_3 f は int 型.
- apply_3 で f を呼んでも部分適用かもしれないので,apply_3 f は ?i:int -> int 型.
のところがまだよく分かっていません。
# (fun ?i:(i=0) x y -> x) 7;; - : '_a -> int = <fun>
の場合 ?i は消えてますが、そういう問題ではないのかな。
メイリングリストに似たような問題があったが、微妙に違うみたい。
交通事故
家の前で事故があった。三時半ごろ、凄い音がして家が揺れたので外に出てみると、車の窓ガラスは粉々に散らばっていて電灯も倒れている。ドライバーは重体のようだ。
普段交通事故のニュースなんて聞き流しているが、いざ自分の身の回りに起こると大騒ぎしてしまうものだ。事故は恐ろしい。
Hash
Ruby の Hash で
文字列をキーとして与えると、文字列をコピーし、コピーを更新不可に設定(freeze)してキーとして使用します。
プログラミング言語 Ruby リファレンスマニュアル
という仕様にひたすらハマる。むー。
オプション引数
$ocaml Objective Caml version 3.09.3 # let f x y = failwith (x^y);; val f : string -> string -> 'a =# (fun g -> g "foo" "bar") f;; Exception: Failure "foobar".
OK。
# let f ?(a=0) x y = x ^ y;; val f : ?a:int -> string -> string -> string = <fun> # (fun g -> g "foo" "bar") f;; - : string = "foobar"
これも OK。しかし次でエラーになる。
# let f ?(a=0) x y = failwith (x^y);; val f : ?a:int -> string -> string -> 'a =# (fun g -> g "foo" "bar") f;; This expression has type ?a:int -> string -> string -> 'a but is here used with type string -> string -> 'b
うーん、これは通ってもいいと思うんだけどなあ。次のようにすると通る。
# (fun g -> g "foo" "bar") (f : ?a:int -> string -> string -> string);; Exception: Failure "foobar".
るびま 18 号
Rubyist のための他言語探訪 【第 11 回】 C++
静的型言語は型が適合しなければポリモルフィズムを発揮できませんから、ある機能を呼び出すためにはかならず共通のスーパークラスを持つ必要があります。
ううむ。これはちょっと。