diff options
| author | 2025-07-03 18:56:49 -0400 | |
|---|---|---|
| committer | 2025-07-03 18:56:49 -0400 | |
| commit | 89371cdb2e9308025a5b2e48e23711e0108bf442 (patch) | |
| tree | 7a47560ec08b805598dc87a6d3d238f369c3912c /test/examples | |
| parent | add inject-primitive (diff) | |
debruijnize converts functions to curry form
Diffstat (limited to 'test/examples')
| -rw-r--r-- | test/examples/untyped-lambda-calculus.scm | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/test/examples/untyped-lambda-calculus.scm b/test/examples/untyped-lambda-calculus.scm index a2f308e..c7baedf 100644 --- a/test/examples/untyped-lambda-calculus.scm +++ b/test/examples/untyped-lambda-calculus.scm @@ -13,6 +13,21 @@ | limitations under the License. |# +(define (curry-form form) + (cond + ((and (pair? form) + (eq? (car form) 'lambda)) + (list 'lambda (curry-form (cadr form)))) + ((and (pair? form) + (> (length form) 2)) + (curry-form (cons (list (list-ref form 0) + (list-ref form 1)) + (list-tail form 2)))) + ((pair? form) + (list (curry-form (list-ref form 0)) + (curry-form (list-ref form 1)))) + (else form))) + (define-syntax test-alpha (syntax-rules () ((test-alpha name (inputs ...) output) @@ -21,7 +36,7 @@ (expand initial-environment (list (empty-wrap (quote inputs)) ...)))) (test-equal name - (quote output) + (map curry-form (quote output)) (map (lambda (term) (debruijnize global-map term '())) expanded-list)))))) |
