From f3de56f742b366577821dd8e32c58dbe9d068c77 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 29 Sep 2009 15:28:44 +0000 Subject: [PATCH] fix 'append' in ISL+ to disallow a non-list last argument (merge to 4.2.2) svn: r16166 --- collects/lang/private/intermediate-funs.ss | 2 +- collects/lang/private/teachprims.ss | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/collects/lang/private/intermediate-funs.ss b/collects/lang/private/intermediate-funs.ss index 9c648e41e5..cab07f16bd 100644 --- a/collects/lang/private/intermediate-funs.ss +++ b/collects/lang/private/intermediate-funs.ss @@ -19,7 +19,7 @@ ) ("Lists" - (append ((listof any) ... -> (listof any)) + ((intermediate-append append) ((listof any) ... -> (listof any)) "to create a single list from several, by juxtaposition of the items")) ("Higher-Order Functions" diff --git a/collects/lang/private/teachprims.ss b/collects/lang/private/teachprims.ss index 6415b037b0..6a2b3d0159 100644 --- a/collects/lang/private/teachprims.ss +++ b/collects/lang/private/teachprims.ss @@ -183,6 +183,14 @@ namespace. (check-last 'append (cons a (cons b x))) (apply append a b x))) +(define-teach intermediate append + (lambda x + (if (null? x) + null + (begin + (check-last 'append x) + (apply append x))))) + (define-teach beginner error (lambda (str) (unless (string? str) @@ -340,6 +348,7 @@ namespace. beginner-cons beginner-list* beginner-append + intermediate-append beginner-error beginner-struct? beginner-exit