■
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 は消えてますが、そういう問題ではないのかな。
メイリングリストに似たような問題があったが、微妙に違うみたい。
オプション引数
$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++
静的型言語は型が適合しなければポリモルフィズムを発揮できませんから、ある機能を呼び出すためにはかならず共通のスーパークラスを持つ必要があります。
ううむ。これはちょっと。
infix to postfix
真面目にパースしたら 336B で絶望したので、あんまり真面目じゃないので参加。それでも 318B とさほど変わらず。もうちょっと縮むような気もするが…。
あと echo の 29B は謎すぎです。
■
m.ukai さんの技は気付きませんでした。例外で再帰を抜けるのは考えていたんですが…。
これを使ったら Hamming Numbers が 120B になりました。いやーゴルフは深い。