プログラム断片(2008/06/09)
for VisualWorks 7.6 with Jun780, Lispインタプリタのマニュアル(PDF)
(defun plus . (lambda (x y) (+ x y)))
(defun plus lambda (x y) (+ x y))
(defun plus (x y) (+ x y))
 |
> (defun plus . (lambda (x y) (+ x y)))
plus
> (defun plus lambda (x y) (+ x y))
plus
> (defun plus (x y) (+ x y))
plus
|
|
((lambda (x y) (+ x y)) 3 4)
((lambda (x y) (- x y)) 3 4)
((lambda (x y) (* x y)) 3 4)
((lambda (x y) (/ x y)) 3 4)
(+ 3 4)
(- 3 4)
(* 3 4)
(/ 3 4)
(defun plus (x y) (+ x y))
(plus 3 4)
 |
> ((lambda (x y) (+ x y)) 3 4)
7
> ((lambda (x y) (- x y)) 3 4)
-1
> ((lambda (x y) (* x y)) 3 4)
12
> ((lambda (x y) (/ x y)) 3 4)
(3/4)
> (+ 3 4)
7
> (- 3 4)
-1
> (* 3 4)
12
> (/ 3 4)
(3/4)
> (defun plus (x y) (+ x y))
plus
> (plus 3 4)
7
|
|
((lambda (x) (car x)) '(1 2 3))
((lambda (x) (car x)) nil)
((lambda (x) (car x)) '(a b))
((lambda (x) (cdr x)) '(1 2 3))
((lambda (x) (cdr x)) nil)
((lambda (x) (cdr x)) '(a b))
((lambda (x y) (cons x y)) 'a 'b)
((lambda (x y) (cons x y)) 'c nil)
((lambda (x y) (cons x y)) 1 '(2 3))
 |
> ((lambda (x) (car x)) '(1 2 3))
1
> ((lambda (x) (car x)) nil)
nil
> ((lambda (x) (car x)) '(a b))
a
> ((lambda (x) (cdr x)) '(1 2 3))
(2 3)
> ((lambda (x) (cdr x)) nil)
nil
> ((lambda (x) (cdr x)) '(a b))
(b)
> ((lambda (x y) (cons x y)) 'a 'b)
(a . b)
> ((lambda (x y) (cons x y)) 'c nil)
(c)
> ((lambda (x y) (cons x y)) 1 '(2 3))
(1 2 3)
|
|
(car '(1 2 3))
(cdr '(1 2 3))
(cons 0 '(1 2 3))
(car '(a b))
(cdr '(a b))
(cons 'a 'b)
(car nil)
(cdr nil)
(cons nil nil)
 |
> (car '(1 2 3))
1
> (cdr '(1 2 3))
(2 3)
> (cons 0 '(1 2 3))
(0 1 2 3)
> (car '(a b))
a
> (cdr '(a b))
(b)
> (cons 'a 'b)
(a . b)
> (car nil)
nil
> (cdr nil)
nil
> (cons nil nil)
(nil)
|
|
(clear)
((lambda () (clear)))
 |
t
|
|
((lambda ()
(clear)
(cons (cons 1 2)
(cons (cons (cons 3
(cons 4 nil))
5)
(cons 6 nil)))))
 |
((1 . 2) ((3 4) . 5) 6)
|
|
(list 123)
(cons 123 nil)
(list 1 2 3 4)
(cons 1 (cons 2 (cons 3 (cons 4 nil))))
(list 'a 'b 'c)
(cons 'a (cons 'b (cons 'c nil)))
(list 'a (list 1 2) 'b (list 3) 'c)
(cons 'a (cons (cons 1 (cons 2 nil)) (cons 'b (cons (cons 3 nil) (cons 'c nil)))))
 |
> (list 123)
(123)
> (cons 123 nil)
(123)
> (list 1 2 3 4)
(1 2 3 4)
> (cons 1 (cons 2 (cons 3 (cons 4 nil))))
(1 2 3 4)
> (list 'a 'b 'c)
(a b c)
> (cons 'a (cons 'b (cons 'c nil)))
(a b c)
> (list 'a (list 1 2) 'b (list 3) 'c)
(a (1 2) b (3) c)
> (cons 'a (cons (cons 1 (cons 2 nil)) (cons 'b (cons (cons 3 nil) (cons 'c nil)))))
(a (1 2) b (3) c)
|
|
((lambda ()
(clear)
(list (list (list 'k
(list 'r 's 't 'u))
'g
(list 'm))
'c
'd
(list (list 'n)
(list 'o
(list 'v 'w 'x 'y 'z)
'q)))))
 |
(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q)))
|
|
(defun visit (x)
(cond ((null x) nil)
((atom x) nil)
(t (print x)
(visit (car x))
(visit (cdr x)))))
(clear)
(visit '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
 |
t
> (visit '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q)))
((k (r s t u)) g (m))
(k (r s t u))
((r s t u))
(r s t u)
(s t u)
(t u)
(u)
(g (m))
((m))
(m)
(c d ((n) (o (v w x y z) q)))
(d ((n) (o (v w x y z) q)))
(((n) (o (v w x y z) q)))
((n) (o (v w x y z) q))
(n)
((o (v w x y z) q))
(o (v w x y z) q)
((v w x y z) q)
(v w x y z)
(w x y z)
(x y z)
(y z)
(z)
(q)
nil
|
|
(defun visit (x)
(cond ((null x) nil)
((atom x) (print x))
(t (visit (car x))
(visit (cdr x)))))
(clear)
(visit '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
 |
t
> (visit '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
k
r
s
t
u
g
m
c
d
n
o
v
w
x
y
z
q
nil
|
|
(defun numberOfNils lambda (x)
(cond ((null x) 1)
((atom x) 0)
(t (+ (numberOfNils (car x))
(numberOfNils (cdr x))))))
(defun numberOfAtoms lambda (x)
(cond ((null x) 0)
((atom x) 1)
(t (+ (numberOfAtoms (car x))
(numberOfAtoms (cdr x))))))
(defun numberOfCells lambda (x)
(cond ((null x) 0)
((atom x) 0)
(t (+ 1
(numberOfCells (car x))
(numberOfCells (cdr x))))))
(clear)
(numberOfNils '((1 . 2) ((3 4) . 5) 6))
(numberOfAtoms '((1 . 2) ((3 4) . 5) 6))
(numberOfCells '((1 . 2) ((3 4) . 5) 6))
(numberOfNils '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
(numberOfAtoms '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
(numberOfCells '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
 |
t
> (numberOfNils '((1 . 2) ((3 4) . 5) 6))
2
> (numberOfAtoms '((1 . 2) ((3 4) . 5) 6))
6
> (numberOfCells '((1 . 2) ((3 4) . 5) 6))
7
> (numberOfNils '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
9
> (numberOfAtoms '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
17
> (numberOfCells '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
25
|
|
(defun flatten (x) 作成してください)
(clear)
(flatten '(1 (2 (3 4) (5) (6 7) 8) 9))
(flatten '(a (b (c (d e))) f (g h) i))
(flatten '((1 . 2) ((3 4) . 5) 6))
(flatten '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
 |
t
> (flatten '(1 (2 (3 4) (5) (6 7) 8) 9))
(1 2 3 4 5 6 7 8 9)
> (flatten '(a (b (c (d e))) f (g h) i))
(a b c d e f g h i)
> (flatten '((1 . 2) ((3 4) . 5) 6))
(1 2 3 4 5 6)
> (flatten '(((k (r s t u)) g (m)) c d ((n) (o (v w x y z) q))))
(k r s t u g m c d n o v w x y z q)
|
|
 |
ー【平坦化】→ |
 |
|
for VisualWorks 7.6 with Jun780, Lispインタプリタのマニュアル(PDF)
Updated: 2015/11/08 (Created: 2008/06/09)
