シンタックス形式
if
(if <test> <then-expression> <else-expression>)
      
<test> 部をまず評価し、その値が #t なら<then-expression> 部のみを評価して 結果を返す。#f なら<else-expression> 部のみを評価して結果を返す。
> (if (= 1 5) (+ 2 4) (- 2 3))
-1
	
cond
(cond (<test1> <expression1>)
      (<test2> <expression2>)
      ...
      (else <expression>))
      
<test> 部を上から順に評価していき、最初に #t であった節(なければ最後の else 節)の <expression> を評価して返す。最後の else 節は省略可能。
define
2形式ある。
変数を定義するときは
(define <name> <expression>)
関数を定義するときは
(define (<name> <parameter1> ...) <body> ...)
<parameter> 部はなくてもよい。また、<body> は複数あっても良い。その場合には、 前から順に評価していき、最後の<body>の値が返り値となるような関数になる。

> pi       ; まだ定義されていない変数なのでエラー
*** ERROR -- Unbound variable: pi
1> ,d      ; エラー後にプロンプトを直す方法
> (define pi 3.14159)          ; 変数を定義
> pi                           ; 変数を評価(参照と呼ぶ)するとその値を得る
3.14159
> (define radius 10)
> (define circumference (* 2 pi radius))
> circumference
62.8318
> (define (square x) (* x x))  ; 関数を定義
> (square 21)                  ; 関数の適用
441
> (square (+ 2 5))
49
> (define (sum-of-squares x y) ; 関数の定義内で他の関数を使用
    (+ (square x) (square y)))
> (sum-of-squares 3 4)
25
> (define (f a) (sum-of-squares (+ a 1) (* a 2)))
> (f 5)
136
	

一覧 前へ 次へ