Gauche勉強メモ(1日目)

1.3 Scheme

Schemeの最も基本的なルール

  1. lambda式は、「レキシカルな環境を保持した手続き」(クロージャ)へと評価される
  2. 手続き呼び出しは継続を伴った引数つきgotoである

1番目のほうは、"lambda式"という言葉はわかる。"「レキシカルな環境を保持した手続き」(クロージャ)"もわかる。lambda式はクロージャへと評価される、って言うのがよくわからない。どういう意味なんだろう?
2番目のほうはなんとなくわかる気がする。"継続"と言うのはよくわかっていないけど、自分の現在のイメージではプログラム実行中のある状態を保存したもの、と言う感じ。で、手続き呼び出しは、手続きのところに処理がジャンプするから、継続を伴った(引数付き)gotoってことなのかな。

4.1.1 リテラル

文字は#\に続けて入力したい文字を直接入力する。マルチバイトもOK。

gosh> #\a
#\
gosh> #\あ
#\あ

4.1.2 手続き呼び出し

手続きの定義は

(define (pythagoras x y) (sqrt (+ (* x x) (* y y))))

ちなみにelispだと

(defun pythagoras (x y) (sqrt (+ (* x x) (* y y))))

手続き(関数)名が引数と同じカッコの中にないのとあるのの違いがある。