gauche
以下の微妙なエントリにてコメントにてフォローを頂くことができました。 02d4? 本当にありがとうございます。id:leque さん曰く、以下とのこと。
16 進なダンプを Gauche で云々、と思っていろいろアレしてたんですが、これって一体どーゆー意味なんだろうか。 gosh> '02d4 20000.0 gosh> 'fd2c fd2cむむむ。symbol ではない模様。 gosh> (symbol? '02d5) #f gosh> (symbol? 'fd2c) #t
備忘メモです。
TLI というナニの実装。実装に引用は諸々の事情でスルーですが、色々ハマりました。 つうか mod と remainder の違いを知りませなんだ。 gosh> (remainder -544 48) -16 gosh> (mod -544 48) 32 gosh>ぐぬぬ。
一番基本的なオブジェクトの型として ScmObj という型が定義されています。また、直下で ScmClass 型も定義されています。コメント含め以下に引用。 /* * An opaque pointer. All Scheme objects are represented by * this type. */ typedef struct ScmHead…
ひさびさに Gauche のソースを掘削してみることに。リポジトリが Github にある模様。いざ入手。 $ git clone git://github.com/shirok/Gauche.gitで、以前読んでた 0.8.11 を取り出してみます。 $ git checkout release0_8_11掘削着手。
複素数の四則演算なソレを Gauche で。
以下なナニが書けるあたり、やはり Gauche というか Scheme はアレ。 #!/usr/bin/env gosh (define (fizzbuzz . args) (let-optionals* args ((limit 100) (fizz 3) (buzz 5)) (define inner-fizzbuzz (lambda (x limit fizz buzz) (if (> x limit) '() (con…
小さい部分木で考えてみると良いのかどうなのか、と言いつつ確認してみました。 ええとまず、片方だけ子供が居る部分木は親の色が黒限定で子供は赤限定。 R:-2 B:-1とか B:-1 R:0とか。逆に両方子供が居る、というケイスについては親は赤も黒もあり得ますし…
削除処理について確認など。 4[ab] のケイスについては sibling が赤なんですが、この時点で child は黒限定だし、parent も黒です (sibling が赤ってことはその親は黒)。
纏めを作成すべく削除な記録を見つつ整理をしてみます。もしかすると追加も整理してしまうかもしれませんが、とりあえず削除云々を始点に、ということで。
そろそろ終わりも近いがどうなるか。 とゆーことで削除の試験の確認ですが継続は deletion case7a からのはず、ということで確認します。
現実トウヒな成果物としてのエントリです。何故か ;; B:-3 => -3 ;; B:-2 => -2 ;; B:-1.5 => -1.5 ;; B:0 => 0みたいな部分木ができる条件って何なのか、と思いたち case5 の試験の準備なソレを追い掛けてみました。とりあえず最初の状態が以下で ;; B:-3 =…
削除の試験確認メモです。と言いつつ昨晩の 3 な記述が微妙というか無い事に気づく。
そろそろかなり gdgd になってきてるので、という訳でもないのですが最後のアレとゆーことで Gauche の test/treemap.scm の挿入、削除の試験を確認してみます。
なかなかにハードル高いです。ちなみに会議中の現実トウヒな成果。 ある削除のパターン 4a とか 4b などの削除対象 node の sibling が赤、というケイス。一般的 (?) には以下のような部分木の B:2 な要素を削除するようなケイスになります。 B:2 B:3 B:4 R:5…
纏めに三度着手。の前に赤い要素の仕様を。 末端赤は許容 末端でない赤は左右両方に黒の要素を持つ という理解だけど良いのかどうか。 とりあえず case4 以降の条件を整理してみます。case2 以降は削除対象要素は黒限定となります。
昨日の件、 ;; B:-1.5 => -1.5 ;; R:-0.5 => -0.5 ;; B:0 => 0 ;; B:2.5 => 2.5 ;; B:3 => 3 ;; B:3.5 => 3.5 ;; R:4 => 4上記の状態になり、parent が B:0 で child が B:-1.5 になった時点で終了してます。見返しててびっくり仰天。ここから再度 case5 に…
纏め作成リトライ。
昨晩、以下をトレイス中に力尽きた模様。
shiro さん実装確認終了。纏めを作成してみます。
理解がアレなので整理しつつ再確認。つうか風が凄い。昼頃最接近らしいのでそれまで何も無いことを切に願う。
delete_node1 手続き掘削。ええと手続き定義なコメントにもあるように /* deletes a node TODIE who has at most one child, CHILD. Note that CHILD can be NULL (empty BLACK node) */この手続きが呼び出される時点で両方子供が居るケイスはあり得ない形に…
朝練メモおよびその後の現実トウヒなメモ。昨晩のショックは相当大きいのですが。 とりあえず 木構造な情報を出力するソレが欲しい。つうか util.rbtree は export されてる手続きが必要最低限に抑えられててかなり辛い。やはり原理をきちんと理解して試験を…
昨日のソレは大嘘で下記から B:1 を削除してから ;; B:-1.5 => -1.5 ;; R:-1 => -1 ;; B:-0.5 => -0.5 ;; B:0 => 0 ;; B:1 => 1 ;; B:2 => 2 ;; B:2.5 => 2.5 ;; B:3 => 3 ;; B:3.5 => 3.5 ;; R:4 => 4B:2 および B:-1 を削除せねば、な模様。
へろへろな週末も終わろうかという時にやや復活気味なのでこちら方面に着手してみます。前回の継続はというと ;; B:-1.5 => -1.5 ;; R:-1 => -1 ;; B:-0.5 => -0.5 ;; B:0 => 0 ;; B:1 => 1 ;; B:2.5 => 2.5 ;; B:3 => 3 ;; B:3.5 => 3.5 ;; B:4 => 4となっ…
朝練メモ。ここから順に 2 と -1 な要素が削除される模様。 ;; B:-1.5 => -1.5 ;; R:-1 => -1 ;; B:-0.5 => -0.5 ;; B:0 => 0 ;; B:1 => 1 ;; B:2 => 2 ;; B:2.5 => 2.5 ;; B:3 => 3 ;; B:3.5 => 3.5 ;; R:4 => 4以下なコメントがあります。 ;; case 3. this…
朝の続きに着手。case 7a です。
朝練メモ。ちょっと間が空いたのですが続きを。一旦仕切り直しで再開。case 5. からです。最初の状態は以下で ;; B:-3 => -3 ;; B:-2 => -2 ;; B:-1.5 => -1.5 ;; B:0 => 0 ;; R:0.5 => 0.5 ;; B:1 => 1 ;; B:2 => 2 ;; B:2.5 => 2.5 ;; R:3 => 3 ;; B:3.5 =…
とりあえず赤黒木というよりも define-values 云々の解決から。ええと、Gauche ユーザリファレンスの 4.10 定義 に以下な記述がありますね。 まずexprが評価されます。それは与えられたvarと同数の値を 返さなければなりません。続いて各値がvarに順に束縛さ…