2006-08-01から1ヶ月間の記事一覧

Concurrent Clean : concatN and generics

[id:lethevert:20060701:p1], [id:lethevert:20060724:p1]で話していたような話と関連のある話。 MLでちょうど議論になってます。 といっても、結局そういうことはできないよね、という結論みたいですが。 - で、そこで話題になっているのが PolyP http://ww…

set! がないと再帰ができない

http://homepage3.nifty.com/mogami/diary/d0608.html#04t1より 本当か?・・・眠くてよく分からないや。

Concurrent Clean : CleanJ : マルチスレッドとCAF

今のところ、CAFはスタティックフィールドに値を保存しているが、その是非を考える。 スタティックフィールドに値を保存することの懸念事項は、次の通り。 GCされないので、大きなオブジェクトだとメモリの圧迫要因になる スレッド間で共有されるオブジェク…

Concurrent Clean : CleanJ : Java : ラベルとgoto

ABCマシンコードの次のようなコード。 :label_a pushI 0 jmp label_c :label_b pop_b 1 rtn :label_c buildI_b 0 jsr label_b rtnは、今のCleanJだと次のように(概念的に)変換される。 static final int label_a = 0; static boolean label_a (CleanVM vm)…

Concurrent Clean : CleanJ : StdLibMiscとCAF

StdLibのコンパイルに成功といっていたけれど、StdLibMiscが失敗していたことに気づいた。 エラーになった箇所は、CAFのところ。 pushcaf c7 0 2 .caf c7 0 2 fillcaf c7 0 2これらの命令がエラーになる。 よく考えると、CAFは、ABCマシンコードから型を推測…

Concurrent Clean : StdLibMisc

というかですね、StdLibMiscっていらなくないか?

Concurrent Clean : CleanJ : StdMaybe

StdMaybeは動作は問題ないが、プリティプリンタの動作に修正が必要。 Cleanでは、Nothingに括弧がつかないが、CleanJでは括弧がついてしまう。

Concurrent Clean : 乱数

乱数種を得る関数が参照透過でない関数になるという問題は、以前も考えたことがある。 [id:lethevert:20060108:p1] 昨日書いたことには訂正があって、randSeed関数は参照透過になるように作られていたのだけれど、これはサーバープログラムなんかだと上手い…

Concurrent Clean : ログ出力

乱数の扱いに悩みがあるのと対照的に、ログ出力は悩みが少ない。むしろ、普通のプログラミング言語よりも悩みが少なくて済む。 ログ出力は、確かに副作用を持つが、その出力内容はプログラムに影響を与えないし、その出力順序もプログラム側で指定する必要が…

L.L.Ringの問題も・・・

もうちょっと複雑だと、面白いのにと思う。 たとえば、次のようなプログラムを処理する処理系を作成しろ、とか。 (begin (print (concat Hell "o W" "orld!") (print "1+2*3*4 = " (+ 1 (* 2 3 4))) ((concat pri nt) ok))

Concurrent Clean : CleanJ : cycle in spine

cycle in spineエラーを起こすようなプログラム。 Start = a where a = tl a問題なし!

Concurrent Clean : CleanJ : StdLib, MersenneTwister

StdLib, MersenneTwister移植。コンパイルは問題なし。