~ chicken-core (chicken-5) e7fe2fb5725be459a20fe4d703a8e3367d885e6a
commit e7fe2fb5725be459a20fe4d703a8e3367d885e6a Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Oct 31 09:03:22 2011 +0100 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Sun Nov 6 11:37:30 2011 +0100 allow procedure in operator-position of evaluated list (#705, suggested by John Cowan) Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> diff --git a/eval.scm b/eval.scm index bc1f303e..4f65c8d0 100644 --- a/eval.scm +++ b/eval.scm @@ -752,10 +752,13 @@ [else #f] ) ) ) (define (compile-call x e tf cntr se) - (let* ([fn (compile (##sys#slot x 0) e #f tf cntr se)] - [args (##sys#slot x 1)] - [argc (checked-length args)] - [info x] ) + (let* ((head (##sys#slot x 0)) + (fn (if (procedure? head) + (lambda _ head) + (compile (##sys#slot x 0) e #f tf cntr se))) + (args (##sys#slot x 1)) + (argc (checked-length args)) + (info x) ) (case argc [(#f) (##sys#syntax-error/context "malformed expression" x)] [(0) (lambda (v)Trap