From 70567e34589583e11e6b987e1f66e399c3f5ba0a Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Sun, 29 Jun 2014 18:30:45 -0700 Subject: [PATCH] Replace procedure-rename with eta-expansion. Closes PR 14612. original commit: 393d7d49fc6c051bdcf1b221979b856747898cf2 --- .../typed-racket-lib/typed-racket/base-env/prims.rkt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt index c9de1733..257fc9d7 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/prims.rkt @@ -289,7 +289,12 @@ This file defines two sorts of primitives. All of them are provided into any mod (syntax-parse stx [(_ name:id ty:expr) #`(begin - #,(ignore #'(define name (procedure-rename (make-predicate ty) 'name))) + ;; We want the value bound to name to have a nice object name. Using the built in mechanism + ;; of define has better performance than procedure-rename. + #,(ignore + #'(define name + (let ([pred (make-predicate ty)]) + (lambda (x) (pred x))))) ;; not a require, this is just the unchecked declaration syntax #,(internal #'(require/typed-internal name (Any -> Boolean : ty))))]))