t-nissieの日記: Schemeb自習帳003 andとorは途中で評価をやめるが…
日記 by
t-nissie
andとorは結果が決まったら途中で評価をやめるが、<はやめないみたいです。
ちょっと予想外です。R5RSの"These predicates are required to be
transitive." ってのはこのことなのか、それともまったく別のことなのか。
$ cat larger.scm
(define (ten)
(display "ten ")
10)
(define (hundred)
(display "hundred ")
100)
(define (thousand)
(display "thousand\n")
1000)
(< (ten) (hundred) (thousand)) ; => #t
(< (hundred) (ten) (thousand)) ; => #f
(define (true)
(display "true ")
#t)
(define (false)
(display "false ")
#f)
(or (false) (false)) ; => #f
(display "\n")
(or (true) (false)) ; => #t
(display "\n")
(and (false) (true)) ; => #f
(display "\n")
$ gosh larger.scm
ten hundred thousand
hundred ten thousand
false false
true
false
$
ちょっと予想外です。R5RSの"These predicates are required to be
transitive." ってのはこのことなのか、それともまったく別のことなのか。
$ cat larger.scm
(define (ten)
(display "ten ")
10)
(define (hundred)
(display "hundred ")
100)
(define (thousand)
(display "thousand\n")
1000)
(< (ten) (hundred) (thousand)) ; => #t
(< (hundred) (ten) (thousand)) ; => #f
(define (true)
(display "true ")
#t)
(define (false)
(display "false ")
#f)
(or (false) (false)) ; => #f
(display "\n")
(or (true) (false)) ; => #t
(display "\n")
(and (false) (true)) ; => #f
(display "\n")
$ gosh larger.scm
ten hundred thousand
hundred ten thousand
false false
true
false
$
Schemeb自習帳003 andとorは途中で評価をやめるが… More ログイン