From 4ccea6d0965d0838fc3b0de398d1b69e7f58ad0c Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 12 Oct 2018 07:43:34 -0700 Subject: [PATCH] better error --- csp/csp.rkt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/csp/csp.rkt b/csp/csp.rkt index da450314..28cad5d7 100644 --- a/csp/csp.rkt +++ b/csp/csp.rkt @@ -237,8 +237,12 @@ (define (reduce-arity proc args) (unless (= (length args) (procedure-arity proc)) (raise-argument-error 'reduce-arity (format "list of length ~a, same as procedure arity" (procedure-arity proc)) args)) + (define reduced-arity-name (string->symbol (format "reduced-arity-~a" (object-name proc)))) + (define new-arity (length (filter symbol? args))) (procedure-rename (λ xs + (unless (= (length xs) new-arity) + (apply raise-arity-error reduced-arity-name new-arity xs)) (apply proc (for/fold ([acc empty] [xs xs] [vals (filter-not symbol? args)] @@ -247,7 +251,7 @@ (if (symbol? arg) (values (cons (car xs) acc) (cdr xs) vals) (values (cons (car vals) acc) xs (cdr vals)))))) - (string->symbol (format "reduced-arity-~a" (object-name proc))))) + reduced-arity-name)) (module+ test (require rackunit)