rosella/src/lib/primitive/or.rla

61 lines
1.3 KiB
Plaintext

;; Evaluates each function in turn, immediately returning the first
;; non-#f result, or #f if no function returns a non-#f result.
; (define (or . fns)
; (let/cc k
; (foldl (lambda (fn _)
; (let/cc k2
; ((lambda (x)
; ((if x k k2) x))
; (fn))))
; #f
; fns))
#S(#="lambda"
#(
#i"foldl.rla"
#S(#="template"
; (lambda (fn _)
; (let/cc k2
; ((lambda (x)
; ((if x k2 k) x))
; (fn))))
#(
#S(#="template"
; (lambda (x)
; ((if x k2 k) x))
#(#f)
"\x40\xff" ; i0 k
1
"\x00\x80\x03\xfd\; (set! f0 (car argv))
\x80\x80\x40\x41"; (set! f0 (if f0 i0 i1))
0x80 ; f0
0xfd ; argv
0x01 ; g1
0x01 ; g1
)
)
"\xff" ; k
2
"\x00\x80\x03\xfd\; (set! f0 (car argv))
\x00\x81\x1b\x01"; (set! f1 (lambda g1))
0x80 ; f0
0x00 ; nil
0xfe ; ctx
0x81 ; f1
)
#f
)
#()
2
"\x02\x80\xfd\x00\; (set! f0 (cons argv nil))
\x02\x80\x03\x80\; (set! f0 (cons g3 f0))
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
0x01 ; g1
0x80 ; f0
0xfe ; ctx
0xff ; k
)
; vim:set syntax= sw=2 expandtab: