fold: fix err while erroring when 3rd (or greater) list arg isnt list
This commit is contained in:
parent
84340c6cca
commit
2643a75ce3
|
@ -27,6 +27,12 @@
|
|||
(err/rt-test (foldl cons 0 '() '()))
|
||||
(err/rt-test (foldl list 0 '() 10))
|
||||
(err/rt-test (foldl list 0 '() '() 10))
|
||||
(err/rt-test (foldl list 0 '() '() 10)
|
||||
exn:fail:contract?
|
||||
"expected.*list\\?.*5th")
|
||||
(err/rt-test (foldl list 0 '() '() '() 10)
|
||||
exn:fail:contract?
|
||||
"expected.*list\\?.*6th")
|
||||
(err/rt-test (let/ec k (foldl k 0 '(1 2) '(1 2 3))))
|
||||
(err/rt-test (let/ec k (foldl k 0 '(1 2) '(1 2) '(1 2 3))))
|
||||
(err/rt-test (foldr 'list 0 10))
|
||||
|
@ -35,6 +41,12 @@
|
|||
(err/rt-test (foldr cons 0 '() '()))
|
||||
(err/rt-test (foldr list 0 '() 10))
|
||||
(err/rt-test (foldr list 0 '() '() 10))
|
||||
(err/rt-test (foldr list 0 '() '() 10)
|
||||
exn:fail:contract?
|
||||
"expected.*list\\?.*5th")
|
||||
(err/rt-test (foldr list 0 '() '() '() 10)
|
||||
exn:fail:contract?
|
||||
"expected.*list\\?.*6th")
|
||||
(err/rt-test (let/ec k (foldr k 0 '(1 2) '(1 2 3))))
|
||||
(err/rt-test (let/ec k (foldr k 0 '(1 2) '(1 2) '(1 2 3))))
|
||||
|
||||
|
|
|
@ -210,15 +210,15 @@
|
|||
(unless (procedure-arity-includes? proc 2)
|
||||
(raise-mismatch-error name "given procedure does not accept 2 arguments: " proc))
|
||||
(let ([len (length l)])
|
||||
(let loop ([more more][n 3])
|
||||
(unless (null? more)
|
||||
(unless (list? (car more))
|
||||
(let loop ([remaining more][n 3])
|
||||
(unless (null? remaining)
|
||||
(unless (list? (car remaining))
|
||||
(apply raise-argument-error name "list?" n proc init l more))
|
||||
(unless (= len (length (car more)))
|
||||
(unless (= len (length (car remaining)))
|
||||
(raise-mismatch-error name
|
||||
"given list does not have the same size as the first list: "
|
||||
(car more)))
|
||||
(loop (cdr more) (add1 n))))
|
||||
(car remaining)))
|
||||
(loop (cdr remaining) (add1 n))))
|
||||
(unless (procedure-arity-includes? proc (+ 2 (length more)))
|
||||
(raise-mismatch-error name
|
||||
(format "given procedure does not accept ~a arguments: "
|
||||
|
|
Loading…
Reference in New Issue
Block a user