Schemeに手を出してみる (2)

前回 Schemeに手を出してみる - tetu1984の日記に引き続き,もうひとつの Scheme 入門を参考にSchemeについて学んでいく.

2章の円周率を求める問題

複素数も扱えるってことで,
e^{i\pi} = -1より,\pi=-(\log(-1)\times i)となり

(- (* (log -1.0) 0+i))

で求めた.

3章の練習問題1

consを使ったやり方と,quote,listを使ったやり方.

;; ex 1.1 ("hi" . "everybody")
(cons "hi" "everybody")
(quote("hi" . "everybody"))

;; ex 1.2 (0)
(cons 0 '())
(quote(0))
(list 0)

;; ex 1.3 (1 10 . 100)
(cons 1 (cons 10 100))
(quote(1 10 . 100))

;; ex 1.4 (1 10 100)
(cons 1 (cons 10 (cons 100 '())))
(quote (1 10 100))
(list 1 10 100)

;; ex 1.5 (#\I "saw" 3 "girls")
(cons #\I (cons "saw" (cons 3 (cons "girls" '()))))
(quote(#\I "saw" 3 "girls"))
(list #\I "saw" 3 "girls")

;; ex 1.6 ("Sum of" (1 2 3 4) "is" 10)
(cons "Sum of" 
      (cons (cons 1 (cons 2 (cons 3 (cons 4 '())))) 
	    (cons "is" (cons 10 '()))
	    )
      )
(quote("Sum of" (1 2 3 4) "is" 10))
(list "Sum of" '(1 2 3 4) "is" 10)