| 1 | (module testegg
|
|---|
| 2 | (make-foo
|
|---|
| 3 | make-bar)
|
|---|
| 4 |
|
|---|
| 5 | (import scheme)
|
|---|
| 6 | (import matchable)
|
|---|
| 7 |
|
|---|
| 8 | (define (make-foo cmene valsi)
|
|---|
| 9 | `(,cmene ,valsi))
|
|---|
| 10 |
|
|---|
| 11 | (define (make-bar cmene nastura porjahe)
|
|---|
| 12 | (write `(,nastura ,porjahe))
|
|---|
| 13 | (newline)
|
|---|
| 14 | (match `(,nastura ,porjahe)
|
|---|
| 15 | ((#t #t) (lambda (ignore-valsi)
|
|---|
| 16 | (lambda () `(,(make-foo cmene #f)))))
|
|---|
| 17 | ((#t #f) (lambda (ignore-valsi)
|
|---|
| 18 | (lambda () (make-foo cmene #f))))
|
|---|
| 19 | ((#f #t) (lambda (valsi)
|
|---|
| 20 | (lambda () `(,(make-foo cmene valsi)))))
|
|---|
| 21 | ((#f #f) (lambda (valsi)
|
|---|
| 22 | (lambda () (make-foo cmene valsi))))))
|
|---|
| 23 |
|
|---|
| 24 | (write (((make-bar "aisa" #f #f) "baz")))
|
|---|
| 25 | (newline))
|
|---|