Gauche勉強メモ(1日目)
1.3 Scheme
Schemeの最も基本的なルール
- lambda式は、「レキシカルな環境を保持した手続き」(クロージャ)へと評価される
- 手続き呼び出しは継続を伴った引数つきgotoである
1番目のほうは、"lambda式"という言葉はわかる。"「レキシカルな環境を保持した手続き」(クロージャ)"もわかる。lambda式はクロージャへと評価される、って言うのがよくわからない。どういう意味なんだろう?
2番目のほうはなんとなくわかる気がする。"継続"と言うのはよくわかっていないけど、自分の現在のイメージではプログラム実行中のある状態を保存したもの、と言う感じ。で、手続き呼び出しは、手続きのところに処理がジャンプするから、継続を伴った(引数付き)gotoってことなのかな。
4.1.2 手続き呼び出し
手続きの定義は
(define (pythagoras x y) (sqrt (+ (* x x) (* y y))))
ちなみにelispだと
(defun pythagoras (x y) (sqrt (+ (* x x) (* y y))))
手続き(関数)名が引数と同じカッコの中にないのとあるのの違いがある。