ボストン・メスの上の手をクローにすると,チェリー・ピッカーという技になるらしい. 簡単そうなので今度試してみよう.
この日記のタイトルになっているラムダ式「λx. x K S K」は, 「*1の一点基底」と呼ばれるコンビネータで, 全ての閉ラムダ式はこのコンビネータ X = λx. x K S K から構築することができる. このことは,S と K がそれぞれ X (X X) と X X X で表現できる…
なんだかやり過ぎのような. google:自然対数の底の円周率乗の虚数単位乗 google:自然対数の底の円周率虚数単位乗 二つ目は日本語としておかしいし. でも,下はだめらしい. google:ネイピア数の円周率乗の虚数単位乗
というソーシャルブックマーク(?)があるというのを恥ずかしながら最近聞いたので, 見にいってみると自分の記事が紹介されていてびっくり. 紹介してる yoriyuki さんというのはあの yoriyuki さんかな. 8 point も頂いているということは, 少なくとも …
OCaml では,let rec を使わずに再帰関数を模倣することができる. 但し「for ループを使えばできる」とかそういう話ではない. 例えば,階乗を計算する関数 fact は,通常 let rec を用いて,let rec fact n = if n > 0 then n * fact (n-1) else 1 と再帰…
11月にシドニーへ出張の予定だが, ANA はオセアニア方面には運行していないらしい. ちょっと意外. スターアライアンス系列で成田からシドニーに行けるのは, オークランド経由のニュージーランド航空のみ. 直通で行けるのは JAL かカンタスだけだが, ど…
OCaml で遅延(怠惰*1)評価を 実装する方法があるが, 毎回 lazy や Lazy.force を書かないといけないため非常に面倒である. たとえば,ML の授業などでは,type 'a lazy_list = Nil | Cons of 'a * 'a lazy_list lazy_t とすれば簡単,と教わるのではない…
近所の図書館に行ったら「ふつうのHaskellプログラミング」が置いてあった. 小さな図書館だったので,情報リテラシーとかの書籍にまぎれていたのだが, まあ,そんな小さな図書館に置かれるほど関数型言語が流行っていると言えるかもしれない. OCaml でも…
今年の JSSST の大会の招待公演者が,それぞれ修士課程と博士課程の指導教官だったりする事実. ああ,それに恥じない研究者にならねば….
今回のPPLサマースクール (ココも参照)は非常に参考になった. 関数型言語の実装についてはある程度分かった気でいたのだが, 自分の中で大きな勘違いをしていたようだ. それはコンパイルにおけるクロージャ変換のフェーズである. これまで,OCaml でプ…
先日,フランスの XML 関係の研究者と共著する機会があり, 「こっちの方が早いだろ」「いやココを変えればこっちの方が」 「いやいやまだまだ改善できる」だの OCaml のコードで文通をしたりしていたが, そんな中,相手のこの一行に愕然としてしまった.ex…
提出したものに不備があったようで結果的に大幅に遅れてしまいました. 関係者の方々には非常に申し訳ないです.
先日 OCaml で存在型を実装する方法を紹介したが, 前回の例はあまり面白くないものだったので, こちらの記事にある存在型に対して同様の実装をしてみることにする. この記事にもあるように存在型は module として実装することも可能である (こちらの方が…
(これは id:KeisukeNakano:20060817:1155714034 の解答です.問題はそちらをご覧ください) 挑戦した方に前もって言っておくと 「実際に操作を繰り返してその回数を数えるプログラム」というのは期待された解答ではない. もっと効率的にその回数を求めてほ…
(だいぶ前にわかっていたことだが)めでたく採録されたらしい. S さん曰く「(採録された論文は)AsianというよりWesternな感じ」. しかし,シドニーで開催するという時点で Asian ではない気もする. とりあえず,最終稿に向けて鋭意修正中.
研究室合宿でのプログラミングコンテストで出題した問題. 正解したチームは多かったものの, 解答時間が実質一時間しかなかったせいもあり, 残念ながら期待していた解答をしたチームは無かった. 暇な人は是非チャレンジを. 解答は後日ということで. 円…
Haskell の場合,任意の関数 f に対し, `f` のように `(バッククオート)で囲むことにより中置演算子(infix operator)として用いることができる. 一方,OCaml でユーザが定義できる中置演算子は一部の記号に限定されている. 以下では,OCaml で任意の…
int 型の要素から成るリストは,type int_list = Nil | Cons of int * int_list のように再帰的に定義され. 'a t = 'a (ここで type 'a t = Nil | Cons of int * 'a ) を満たすような t の最小不動点として捉えることができる. このような代数的データ型…
リンクをアドレスバーにドラッグ&ドロップ.以上. こんなお手軽な方法があったとは….これって常識?
あまり面白くない例だが,プリント可能なヘテロジニアス(異種混合)リストを考える. (但し,中身を直接見られないのでただの文字列のリストなのだが…)type hetero = Nil | Cons of ∃'a. 'a * ('a -> string) * hetero Cons の2つ目の引数は,要素を文字…
OCaml では,違う型で再帰する多相関数を書くことが難しい. 以下のデータ型 ('a,'b) twist を考える.type ('a,'b) twist = Nil | Cons of 'a * 'b * ('b,'a) twist 例えば,次の値はデータ型 (int,bool) twist を持っている.let twist_data = Cons(1,true…
ここでは,研究やその他諸々について記録していく予定. とりあえず,自分用のメモとして使っていくと思うので, 他人に見せるほどのものではないような.