Scheme事始め3:RacketでSchemeを扱ってみる

  • リストでない形で渡すとそれを値評価する。数値はそのやり方がOK、文字列は""で囲む
> 123
123
> "Gauss"
"Gauss"
  • リストを与えよう
    • 空リストはエラー(空リストはLISPの定義的にはnilという意味なのだけれど…)
> ()
. #%app: missing procedure expression;
 probably originally (), which is an illegal empty application in: (#%app)
    • 要素を1つ入れるとき、その要素は「特別な要素〜第1の要素」なので、きちんと評価される場合とそうでない場合とがある
> (7)
. . application: not a procedure;
 expected a procedure that can be applied to arguments
  given: 7
  arguments...: [none]
> ("apple")
. . application: not a procedure;
 expected a procedure that can be applied to arguments
  given: "apple"
  arguments...: [none]
> (+)
0
> (-)
. . -: arity mismatch;
 the expected number of arguments does not match the given number
  expected: at least 1
  given: 0
> (*)
1
  • 四則演算その1
> (+ 5)
5
> (- 5)
-5
> (* 5)
5
> (/ 5)
1/5
  • 四則演算その2
> (+ 2 5)
7
> (- 2 5)
-3
> (* 2 5)
10
> (/ 2 5)
2/5
  • 四則演算その3。演算の繰り返し
> (+ (+ (+ 1 2) 3) 4)
10
> (+ 1 2 3 4)
10
  • 四則演算その5.一般的な計算
    • 1 / 2 \times 3 + 4 - 5
> (- (+ (* (/ 1 2) 3) 4) 5)
1/2
  • いくつかの基本関数
> (sqrt 3)
1.7320508075688772
> (log 2)
0.6931471805599453
> (log (exp (exp 0)))
1.0
  • 字下げする
> (-
   (+
    (*
     (/ 1 2)
     3)
    4)
   5)
1/2