なんか色々やってみよう
アルゴリズム言語Schemeに関する第五改訂報告書
Practical Scheme
Scheme Programming
もうひとつの Scheme 入門
などを参考にしつつ適当に動かしてみよう。
まず適当に四則演算とかさせてみよう
gosh> (+ 32) 32 gosh> (+ 223 27) 250 gosh> (- 10 6) 4 gosh> (- 10 6 3) 1 gosh> (* 3 2) 6 gosh> (/ 324 108) 3 gosh> (/ 1 3) 0.3333333333333333 gosh> (+ (* 3 2) (- 6 3)) 9
SchemeはLisp系の言語ですから、前置記法(演算子を最初に、うしろに引数を書く)ですね。(+ (* 3 2) (- 6 3))
は入れ子になってますが、6を返す(* 3 2)と3を返す(- 6 3)を足してるんだから9になりますね。
四則演算以外の計算も
gosh> (quotient 7 3) ; 商を求めます 2 gosh> (modulo 7 3) ; 余りを求めます 1 gosh> (sqrt 9) ; 平方ですね。 3.0 gosh> (sqrt 2) 1.4142135623730951 gosh> (sin 0) ; 三角関数sin 0.0 gosh> (sin (/ 3.141592 2)) ; 単位はもちろんラジアンですよ 0.9999999999999466 gosh> (cos 3.141592) -0.9999999999997864 gosh> (asin 1) ; アークサイン(sinの逆関数) 1.5707963267948966 gosh> (cos (* 2 (asin 1))) -1.0 gosh> (log 1) 0.0 gosh> (log 2.7) 0.9932517730102834
;以降はコメントとして扱われます。
λ(lambda)で関数定義してみよう
gosh> (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) fact gosh> (fact 3) 6 gosh> (fact 4) 24 gosh> (+ (fact 3) 2) 8
なんかlambda式で階乗関数factが定義できましたよ、と。
そういえばまだ"Hello World!"してなかった。
gosh> (display "Hello World!") Hello World!#<undef>
はい副作用副作用。