ref: b627a0cb99f603a0cc1bcf69be1da5eb00135cf3
dir: /tests/procedure.zuo/
#lang zuo (require "harness.zuo") (alert "procedures") (check (procedure? procedure?)) (check (procedure? (lambda (x) x))) (check (procedure? (lambda args args))) (check (procedure? apply)) (check (procedure? call/cc)) (check (procedure? (call/cc (lambda (k) k)))) (check (not (procedure? 1))) (check (apply + '()) 0) (check (apply + '(1)) 1) (check (apply + '(1 2)) 3) (check (apply + '(1 2 3 4)) 10) (check (apply apply (list + '(1 2))) 3) (check-fail (apply +) arity) (check-fail (apply '(+ 1 2)) arity) (check-fail (apply apply (cons + '(1 2))) arity) (check-arg-fail (apply + 1) "not a list") (check (call/cc (lambda (k) (+ 1 (k 'ok)))) 'ok) (check (let ([f (call/cc (lambda (k) k))]) (if (procedure? f) (f 10) f)) 10) (check-fail (call/cc 1) "not a procedure") (check (call/prompt (lambda () 10)) 10) (check (let ([k (call/prompt (lambda () (call/cc (lambda (k) k))))]) (+ 1 (call/prompt (lambda () (k 11))))) 12) (check (let ([k (call/prompt (lambda () (call/cc (lambda (esc) (+ 1 (* 2 (call/cc (lambda (k) (esc k)))))))))]) (list (call/prompt (lambda () (k 3))) (call/prompt (lambda () (k 4))))) (list 7 9)) (check-fail (call/prompt 1) "not a procedure") (check (let ([k (call/prompt (lambda () (call/cc (lambda (esc) (+ 1 (* 2 (call/comp esc)))))))]) (list (k 30) (k 40))) (list 61 81)) (check-arg-fail (call/comp 1) "not a procedure")