OSDN Git Service

split rec-example.
authorMIZUNO Hiroki <mzpppp@gmail.com>
Sat, 21 Jun 2008 08:25:41 +0000 (17:25 +0900)
committerMIZUNO Hiroki <mzpppp@gmail.com>
Sat, 21 Jun 2008 08:25:41 +0000 (17:25 +0900)
rec.scm: check for supporting recursion by "letrec","define"
define-hidden: check if define has lexcical scope

example/define-hidden.scm [new file with mode: 0644]
example/rec.scm

diff --git a/example/define-hidden.scm b/example/define-hidden.scm
new file mode 100644 (file)
index 0000000..e7955b9
--- /dev/null
@@ -0,0 +1,8 @@
+;;; 42
+
+;; check if define has lexcical scope
+(define x 42)
+(define (f) x)
+(define x 100)
+
+(print (f))
\ No newline at end of file
index 2cdbd55..6baccd1 100644 (file)
@@ -2,26 +2,31 @@
 ;;;  not rec
 ;;;  rec
 ;;;  3628800
-;; (let ([f (lambda (n) (print "not rec"))])
-;;   (let ([f (lambda (n) (if (= n 0)
-;;                        (print "rec")
-;;                        (f 0)))])
-;;     (f 1)))
+;;;  3628800
+
+;; check if not recursion
+(let ([f (lambda (n) (print "not rec"))])
+  (let ([f (lambda (n) (if (= n 0)
+                          (print "rec")
+                          (f 0)))])
+    (f 1)))
 
-;; (let ([f (lambda (n) (print "not rec"))])
-;;   (letrec ([f (lambda (n) (if (= n 0)
-;;                        (print "rec")
-;;                        (f 0)))])
-;;     (f 1)))
+(let ([f (lambda (n) (print "not rec"))])
+  (letrec ([f (lambda (n) (if (= n 0)
+                             (print "rec")
+                             (f 0)))])
+    (f 1)))
 
-;; (letrec ([fact (lambda (n) 
-;;              (if (<= n 1)
-;;                  1
-;;                  (* n (fact (- n 1)))))])
-;;   (print (fact 10)))
+;; check if recursion
+(letrec ([fact (lambda (n) 
+                (if (<= n 1)
+                    1
+                    (* n (fact (- n 1)))))])
+  (print (fact 10)))
 
-;; check if define has lexcical scope
-(define (f) "good")
-(define (g) (f))
-(define (f) "bad")
-(print (g))
\ No newline at end of file
+;; check if define
+(define (fact n)
+  (if (<= n 1)
+      1
+      (* n (fact (- n 1)))))
+(print (fact 10))
\ No newline at end of file