CS

TAPL 15.5.3の解答例

研究室の環境が使えなくなりつつあるのでここに載せる。 public class T { public static void main(String[] args) { S[] arr = new S[10]; f(arr); } public static void f(C[] arr) { arr[0] = new C(); } } class C { } class S extends C { }

Shift_JIS 0x5c

CS

こないだの謎エラーは「Cygwin で日本語 TeX」の方からのコメントにより原因がわかった。ありがとうございました,黒木裕介さん。今後も「Cygwin で日本語 TeX」使わせて頂きますっ! で、原因だが,Shift_JISを使ってたのがいけないようだ。Shift_JISは2バ…

ps2pdfの謎エラー

CS

powerdotを使って日本語のスライドを作っていると、ps2pdfで謎のエラーが発生した。こんな感じの(適当なところで改行を入れてある)。 Error: /limitcheck in -file- Operand stack: --nostringval-- Count 0 Dest slide.6 View --nostringval-- TitleExecuti…

継続のケイゾク

CS

『call/ccは副作用らしい』を書いてから一月経った。その間、何もしていなかったかと言うと、これについては何もしていなかった。卒論をやっていたのだ*1。 卒論も目処がついてきたので2、3日前から再び考え始めたのだが、さすがに一月も経つと何が分からな…

call/ccは副作用らしい

CS

参考[1]:http://d.hatena.ne.jp/sumii/20061121/p1 参考[2]:http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3acall%2fcc%e3%81%a8%e5%89%af%e4%bd%9c%e7%94%a8 ちょっと前に参考[1]で知ったのだが、Schemeのcall/ccには副作用が生じるらしい。ここ…

ラムダ計算

CS

ラムダ項のベータ正規形を求めるプログラムをHaskellで書いてみた。元ネタはWadlerの論文*1にあったMirandaのプログラム。ラムダ項の評価器らしいが、ラムダ項の評価って何を求めれば良いのかがイマイチ分からなかったので、ベータ正規形に簡約するプログラ…

ラムだけ遺産

CS

「らむだけいさん」を変換したら「ラムだけ遺産」と出た。むう、ラムは嫌いじゃないが、ラムだけが遺産とは。個人的には「るーみっくわーるど」とかの短編が好きだ。あと「人魚の森」シリーズも。ちなみに、どちらも最初に読んだのは英語版だ。というか短編…

C++でCの関数を使う

参考:http://www.med.osaka-u.ac.jp/pub/cl-comp/saito/cppintro/cppintro14.html extern "C" hoge(int); もしくは、 extern "C" { void foo(int); void bar(int); void baz(int); } のようにしなければならない。 くそう。こんなの知らねえよ。ムダに3時間…

3Dドラゴン

CS

ドラゴンブックの新版が出たらしい。そしてヘネパタも出たようだ。両方とも欲しいけど金がない。どっちか一冊ならドラゴンブックかなあ。ヘネパタは第3版持ってるから(半分くらいしか読んでないが)。Compilers: Principles, Techniques, and Tools作者: Alfr…

EOPL Ch.3 終了

CS

8月2日から読み始めたから、だいたい40日くらいかかったわけだ、一つの章を読むのにorz

strictlet

CS

EOPLのExercise3.59はcall-by-needインタプリタにstrictletを追加するというもの。問題文*1を読む限り、strictletとは束縛部が遅延評価されないletっぽい。しかし、本当にそれで合っているか自身がないので調べてみたら、どうやらそれで良いみたい(下記サイ…

call-by-value-result

CS

EOPLのExercise 3.55で出てきた。こんなのもあるのか。手続き呼出し終了後の効果はcall-by-referenceと同じで、手続き本体の実行はcall-by-valueと同じ、という感じ。Exercise 3.39のプログラムのapply-procvalとeval-expressionのapp-expのところをちょっと…

たたみ込み演算

Scheme(SRFI 1)のリストのたたみ込み演算って、foldでもfold-rightでも同じ型なのか。解りやすいと言えば解りやすいが、Haskellのたたみ込み演算を先に知ったので、ちょっと理解しづらかった。 Scheme:リストを1つしか取らない場合のfoldの型は下記のように…

delete-duplicates

Schemeでとある問題を解いていて、リストを同じ要素を含まないリストに変換するような手続きが欲しくなり、Gaucheのユーザリファレンスを探してみたが見当たらないので、自分で書いた。その後、今度は、ある要素がリストにあるかどうか調べる手続きが必要に…

コンパイラ本

Engineering a Compiler作者: Keith Cooper,Linda Torczon出版社/メーカー: Morgan Kaufmann発売日: 2003/09メディア: ペーパーバックこの商品を含むブログ (2件) を見る今、ゼミ(モグリだけど)でこんな本を読んでます。英語だし、コンパイラはそれほど知ら…

閉包

ゼミでクロージャについて説明したのだが、上手く伝えられることができただろうか。例として、 def hoge x return lambda {x = x + 1} end inc.call => 1 inc.call => 2 x = 10 => 10 inc.call => 3のようなRubyコードを挙げたら、「なぜhogeのxが保存される…

継続

CS

少しずつだけど理解できてきた気がする。先生の助言どおり実際に自分でやってみたのがよかったな。結局3時間以上かかったけど・・・。もう眠いので詳細は今度。