Stone 第10週
N. Shimizu ([email protected] / @chikoski)
今週の進捗• 変数の宣言ができるようになった• 再帰呼び出しできるようになった!• 環境の退避が問題だった• 関数呼び出しの評価時に退避するようにした• 関数の中で関数を定義できるようになった
def fact(n){ ret = 1 if(n > 1){ prev = fact(n - 1) ret = prev * n } ret}
fact(10)
再帰呼び出し
def main(n){ var i = 0; var c = 1; var ret = 0; while(i < n){ ret = add(ret, i); i = i + 1 } ret
def add(a, b){ a + b + c; }}
main(10);
関数内で定義されている関数
def main(n){ var i = 0; var c = 1; var ret = 0; while(i < n){ ret = add(ret, i); i = i + 1 } ret
def add(a, b){ a + b + c; }}
main(10);
外側のブロックの変数を参照できる
これを参照
def main(n){ var i = 0; var c = 1; var ret = 0; while(i < n){ ret = add(ret, i); i = i + 1 } ret
def add(a, b){ a + b + c; }}
main(10);
静的スコープ
これを参照
To Do• 関数内で定義された関数の再帰呼び出しはできるのか確認する
• 関数内で定義された二つの関数の、相互の呼び出しができるかどうかを確認する
• 高階関数• 無名関数• 関数を返す関数• 継続• 文脈に応じた評価(null など)• オブジェクト指向
言語仕様的な野望
• データ型をつくれるようにする• 配列、リスト• ハッシュ• 記号処理、文字列処理• return 文をつくる• Scheme への変換
言語仕様的な野望(つづき)
• ブラウザ上でのプログラミング• 評価器、構文解析器のWeb API化• エディタ?• ビジュアルプログラミング言語• 内部の可視化• あと何かありますかねー
開発環境的な野望