星田さんの記事に対するコメント。
今回は、まずはもうちょっとPaizaの使い方を紹介しよう。
まず、「現時点で書いてるプログラム」は一応セーブされる事は知ってるとは思うんだけど、それに「名前を付ける」事が出来る。
ここの入力欄は検索欄ではなくって、今書いてるプログラム(Main.scmを含んだ全てのファイルタブとの組み合わせ)に「名前を付ける」意図がある。
基本的に、プログラムを「実行」すると自動でセーブされる模様だけど、不安な場合は[実行ボタン]から[Save only]を選べばいい。
Paizaのページの上方は次のようになっている。
[新規コード]と言うのは新しいプログラムを一から書く際に使う。
ここを選ぶとまっさらな状態になるが、今まで書いてたプログラムは保存されている。
今まで書いてきたプログラムを「選びたい」場合は[一覧]をクリックすればいい。
ここに今まで書いたプログラムが全部保存されてる、って事が見れるんで、古いプログラムを復活させたい場合は、それをクリックすればいい。
いずれにせよ、これが大体のPaizaの使い方になる。
さて。
ほぼ最後の試練?赤黒木を使った get_ekikan_kyoriを作るための関数、木に要素を追加するinsert_ekikan関連に苦戦中。Empty型はこれでオッケイか?
うん、まだレコード型で書く方式とタグ付きデータでの方式が混ざってる。
具体的には、パターンマッチングの部分はレコード型方式なんだけど、本体がタグ付きデータの方式になってんのね。
もう一度、レコード型方式での書き方とタグ付きデータでの書き方を比較してみよう。
レコード型方式:
タグ付きデータ方式:
違いが分かるだろうか?
レコード型使用の場合は、パターンマッチング部で$が引き連れたユーザー定義型が判定対象になってて、本体部ではレコード型生成のmake-何とやらでデータを生成しないとならない。
一方、タグ付きデータだとパターンマッチングでは単にリストの先頭が特定のシンボルなのか見ていってるだけ、だし、本体もリストにシンボルがconsされてるだけ、となってる。
この2つの差異は、当然テスト部分にも現れる。
レコード型方式:
タグ付きデータ方式:
レコード型方式の場合は、当然make-何とかをデータ型を生成してどうなるか、をチェックしないとならない。
一方、タグ付きデータの場合は、単なるシンボルをconsしたリストだ。
テスト結果に於いても、これら2つの方式は出力に特徴的な違いがある。
レコード型方式:
タグ付きデータ方式
(Gaucheに於いては)レコード型は、テスト正解の式がどこのメモリを先頭にして陣取ってるか、と言うデータしか表示されない(ちなみに、#<Node ...>のNodeがレコード型の内情での「タグ」になってる)。
一方、タグ付きデータの場合は、テスト正解の式も単なるリストなんで、そのままリストとして表示されている。言わば「丸見え」だ。
一応、ここにファイル構成も合わせて晒しておくので、違いを確認してみて欲しい。
そう言えば・・挿入した画像データって埋め込みを行った時点でコピーされるのか?それとも相対パスでリンクが張られてる感じになるのか・・予想ではリンクが張られる気がするので画像用フォルダを作って画像をキャプチャする作業を最初にやらないといかんなぁ。
あんま画像の量があるなら、RacketのIDEに直接挿入するより、2htdp/imageのbitmap/file使った方がラクかも。