whitespcae 入門
TRANSCRIPT
What is Whitespace ?Durham大学のEdwin BradyとChris Morrisが作った言語
使うのは スペースとタブと改行だけ
他の文字はコメントとして扱われる
2003 年 4 月 1 日にリリース
要するにエイプリルフールのジョーク
しかし、通常無視されがちな空白に対する「不公平を是正す
る」ために生まれたらしい
あとは 参照ココ
仕組み基本的にはスタックベース
スタックとはLIFOなデータ構造のこと
入るときは 1 2 3, 出るときは 3 2 1入れる命令をプッシュ です命令をポップという
演算(足し算など)の引数をスタックからとってくる
Hello world を読む ステップ2命令は [IMP] [コマンド] [パラメータ] で構成
IMP の例
[Space] は スタック命令
[Tab] [NewLine] は IO命令 など
この形に揃えると… (実はワンパターン)
ただのスタックマシーンなら...よかったが以外に高性能な処理系
1. ヒープを持っている
StoreとRetrieve2. ラベルジャンプが行える
しかも後の命令で定義したラベルに飛べる
3. サブルーチン呼び出しができる
コールスタックは別に用意する必要がある
ヒープ操作スタックにヒープアドレスを積む
Store:アドレスの上にヒープに保存する値を積んどく
Retrieve:アドレスの値をスタックトップへ
今回は連想配列で実装
連想配列:インデックスが任意の型の配列
あらゆる操作が O(1)しかし Haskell はイミュータブルなデータ構造は扱えない
HaskellではData.Map(平衡二分木)を使う
サブルーチン呼び出しコールスタックを別に用意する必要がある
コールスタックとは戻り値を格納するスタック
Call:コールスタックに次のPCを格納してラベルジャンプ
RETURN:コールスタックのトップのPCへジャンプ