Schemeを覚える2
http://www.shido.info/lisp/idx_scm.html
今日もこのサイトでSchemeを勉強。
繰り返しではまりちゅう。
分岐
(if 条件 結果が真の場合の処理 結果が偽の場合の処理)
入力した値が偶数だったら"even number"、奇数だったら"odd number"と表示する。
> (define (even-or-odd n) (if (= 0 (/ n 2)) "even number" "odd number")) > (even-or-odd 0) "even number" > (even-or-odd 1) "odd number"
2つ目の引数で入力した文字が"square"だったら1つ目の数字を二乗し、そうでなければ2倍する。
> (define (calc n op) (if (equal? op "square") (* n n) (* n 2))) > (calc 3 "") 6 > (calc 3 "square") 9
文字列の比較にはequal?関数を使う。
else ifがたくさんになったときはcondを使う
(cond (条件1 結果が真場合の処理) (条件2 結果が真場合の処理) (条件3 結果が真場合の処理) ・・・ (else 上のどの条件にも当てはまらなかった場合の処理)
入力したデータが数字か文字列かリストかそれ以外か判断する関数
> (define (type t) (cond ((number? t) "number") ((string? t) "string") ((list? t) "list") (else "other type"))) > (type 10) "number" > (type "hello") "string" > (type '(1 2 3)) "list" > (type #\a) "other type"
ちなみに、Schemeで文字(文字列ではなく)を表すときは#\の後にaやbという文字を書くことで表現する。