#! /home/nybble/src/c/rosella/rosella #S(#="lambda" ; (lambda (pathname . _) ; (call-with-values ; (lambda () (posix-open pathname O_RDONLY)) ; (lambda (fd errno . _) ; ((if fd ; (lambda (fd errno . _) ; (let [(str (make-byte-string 4096))] ; (letrec [(loop (lambda () ; (call-with-values ; (lambda () (posix-read fd str (byte-string-size str))) ; (lambda (result . _) ; (unless (eq? size 0) ; (posix-write 1 str size)) ; (loop)))))] ; (loop)))) ; k) ; fd errno)))) #( 0 ; O_RDONLY #="posix-open" #S(#="template" ; (let/cc k ; (lambda (fd errno . _) ; (if fd ; (k (apply ... argv)) ; (k argv)))) #( #S(#="lambda" ; (lambda (fd errno . _) ; (let/cc k ; (let [(str (make-byte-string 4096 0))] ; (letrec [(loop (lambda () ... k fd ...))] ; (loop))))) #( 4096 0 #S(#="template" ; loop ; (let (fd str) ; (letrec [(loop (lambda () ; (let/cc k ; (call-with-values ; (lambda () (posix-read fd str (byte-string-size str))) ; (lambda (result . _) ... k str loop ...)))))] ; loop)) #( #="posix-read" #S(#="template" ; (lambda (result . _) ; (unless (eq? result 0) ; ((lambda _ (loop)) (posix-write 1 str result)) ; (k))) #(0 1 #="posix-write") "\x41\xfc\xfe\xff" ; #(i1=str self=loop k ctx) 2 "\x00\x81\x03\xfd\; (set! f1 (car argv)) \x02\x80\x81\x00\; (set! f0 (cons f1 nil)) \x02\x80\x40\x80\; (set! f0 (cons i0 f0)) \x02\x80\x02\x80\; (set! f0 (cons g2 f0)) \x01\x81\x81\x01\; (set! f1 (eq? f1 g1)) \x80\x81\x00\x80\; (set! f0 (if f1 nil f0)) \x81\x81\x42\x03"; (set! f1 (if f1 i2 g3)) 0x81 ; f1 0x80 ; f0 0x41 ; i1 0x43 ; i3 ) ) "\x80\x81" ; #(f0 f1) 2 "\x00\x80\x29\x41\; (set! f0 (byte-string-size i1)) \x02\x80\x80\x00\; (set! f0 (cons f0 nil)) \x02\x80\x41\x80\; (set! f0 (cons i1 f0)) \x02\x80\x40\x80\; (set! f0 (cons i0 f0)) \x00\x81\x1b\x02"; (set! f1 (lambda g2)) 0x01 ; g1 0x80 ; f0 0x81 ; f1 0xff ; ctx ) ) #() 3 "\x00\x80\x03\xfd\; (set! f0 (car argv)) \x04\x81\x01\x02\; (set! f1 (make-byte-string g1 g2)) \x00\x82\x1b\x03"; (set! f2 (lambda g3)) 0x82 ; f2 0x00 ; nil 0xfe ; k 0xff ; ctx ) ) "\xfe\xff" ; k ctx 1 "\x00\x80\x03\xfd\; (set! f0 (car argv)) \x80\x80\x01\x40\; (set! f0 (if f0 g1 i0)) \x00\x80\x1b\x80"; (set! f0 (lambda f0)) 0x80 ; f0 0xfd ; argv 0x40 ; i0 0x41 ; i1 ) ) #() 2 "\x02\x80\x01\x00\; (set! f0 (cons g1 nil)) \x00\x81\x03\xfd\; (set! f1 (car argv)) \x02\x80\x81\x80\; (set! f0 (cons f1 f0)) \x00\x81\x1b\x03"; (set! f1 (lambda g3)) 0x02 ; g2 0x80 ; f0 0x81 ; f1 0xff ; ctx ) ; vim:set sw=2 expandtab syntax=: