|
48 | 48 | (check-equal? (parse '(make-string 10 #\a)) |
49 | 49 | (p (Prim2 'make-string (Lit 10) (Lit #\a))))) |
50 | 50 |
|
| 51 | +(begin ; Iniquity (in Iniquity+) |
| 52 | + (check-equal? (parse '(define (f x) x) 1) |
| 53 | + (Prog (list (Defn 'f (FunPlain '(x) (Var 'x)))) (Lit 1))) |
| 54 | + (check-equal? (parse '(define (define) 0) '(define)) |
| 55 | + (Prog (list (Defn 'define (FunPlain '() (Lit 0)))) |
| 56 | + (App 'define '()))) |
| 57 | + (check-exn exn:fail? (λ () (parse '(define (f y y) y) 1))) |
| 58 | + (check-exn exn:fail? (λ () (parse '(define (f y) y) '(define (f x) x) 1))) |
| 59 | + (check-equal? (parse-closed '(define (f x) (g x)) |
| 60 | + '(define (g x) (f x)) |
| 61 | + '(f 0)) |
| 62 | + (Prog (list (Defn 'f (FunPlain '(x) (App 'g (list (Var 'x))))) |
| 63 | + (Defn 'g (FunPlain '(x) (App 'f (list (Var 'x)))))) |
| 64 | + (App 'f (list (Lit 0))))) |
| 65 | + (check-equal? (parse '(define (define x) x) |
| 66 | + '(define 1)) |
| 67 | + (Prog (list (Defn 'define (FunPlain '(x) (Var 'x)))) |
| 68 | + (App 'define (list (Lit 1))))) |
| 69 | + (check-exn exn:fail? (λ () (parse '(define (define x) x) |
| 70 | + '(define (g x) x) |
| 71 | + '(define (g 1)))))) |
| 72 | + |
| 73 | +(begin ; Iniquity+ |
| 74 | + (check-equal? (parse '(define (f . x) x) 1) |
| 75 | + (Prog (list (Defn 'f (FunRest '() 'x (Var 'x)))) (Lit 1))) |
| 76 | + (check-exn exn:fail? (λ () (parse '(define (f x . x)) 1))) |
| 77 | + (check-exn exn:fail? (λ () (parse '(define (f x x . y)) 1))) |
| 78 | + (check-exn exn:fail? (λ () (parse '(define (f . x)) '(define (f y) y) 1))) |
| 79 | + (check-equal? (parse '(define f (case-lambda)) '(f)) |
| 80 | + (Prog (list (Defn 'f (FunCase '()))) (App 'f '()))) |
| 81 | + (check-exn exn:fail? (λ () (parse '(define case-lambda (case-lambda)) 1))) |
| 82 | + (check-exn exn:fail? (λ () (parse '(define f (case-lambda [(x x) x])) 1))) |
| 83 | + (check-equal? (parse '(define f (case-lambda [(x) x] [(x y) y])) 1) |
| 84 | + (Prog (list (Defn 'f (FunCase (list (FunPlain '(x) (Var 'x)) (FunPlain '(x y) (Var 'y)))))) (Lit 1)))) |
| 85 | + |
0 commit comments