diff --git a/collects/racket/function.rkt b/collects/racket/function.rkt index d60c1a670d..4883f26b98 100644 --- a/collects/racket/function.rkt +++ b/collects/racket/function.rkt @@ -1,6 +1,8 @@ #lang scheme/base -(provide const negate curry curryr) +(provide identity const negate curry curryr) + +(define (identity x) x) (define (const c) (define (const . _) c) diff --git a/collects/scribblings/reference/procedures.scrbl b/collects/scribblings/reference/procedures.scrbl index 99a40241ea..bbdda6a545 100644 --- a/collects/scribblings/reference/procedures.scrbl +++ b/collects/scribblings/reference/procedures.scrbl @@ -482,6 +482,10 @@ applied.} @(define fun-eval (make-base-eval)) @(interaction-eval #:eval fun-eval (require racket/function)) +@defproc[(identity [v any/c]) any/c]{ +Returns @scheme[v]. +} + @defproc[(const [v any]) procedure?]{ Returns a procedure that accepts any arguments and returns @scheme[v]. diff --git a/collects/tests/racket/function.rktl b/collects/tests/racket/function.rktl index 7b065b4dc1..3278c50d4f 100644 --- a/collects/tests/racket/function.rktl +++ b/collects/tests/racket/function.rktl @@ -43,6 +43,13 @@ (test 'f object-name (rec f (lambda (x) x))) (test (list 2) (rec (f . x) (if (= (car x) 3) (f 2) x)) 3)) +;; ---------- identity ---------- +(let () + (test 'foo identity 'foo) + (test 1 identity 1) + (err/rt-test (identity 1 2)) + (err/rt-test (identity))) + ;; ---------- const ---------- (let () (test 'foo (const 'foo)) diff --git a/collects/tests/unstable/function.rkt b/collects/tests/unstable/function.rkt index 0765894f27..fc6efda0ee 100644 --- a/collects/tests/unstable/function.rkt +++ b/collects/tests/unstable/function.rkt @@ -9,11 +9,6 @@ (test-suite "Simple Functions" - (test-suite "identity" - (test-case "unique symbol" - (let* ([sym (gensym)]) - (check-eq? (identity sym) sym)))) - (test-suite "thunk" (test-case "unique symbol" (let* ([count 0] diff --git a/collects/unstable/function.rkt b/collects/unstable/function.rkt index 70eac58361..be671d1fa3 100644 --- a/collects/unstable/function.rkt +++ b/collects/unstable/function.rkt @@ -91,8 +91,6 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define (identity x) x) - (define-syntax (thunk stx) (syntax-case stx () [(thunk body ...) @@ -365,7 +363,6 @@ (provide ;; functions - identity thunk conjoin disjoin curryn currynr papply papplyr call diff --git a/collects/unstable/scribblings/function.scrbl b/collects/unstable/scribblings/function.scrbl index 322a3dde78..c381e44ced 100644 --- a/collects/unstable/scribblings/function.scrbl +++ b/collects/unstable/scribblings/function.scrbl @@ -14,12 +14,6 @@ This module provides tools for higher-order programming and creating functions. @section{Simple Functions} -@defproc[(identity [x any/c]) (one-of/c x)]{ - -Returns @scheme[x]. - -} - @defform[(thunk body ...)]{ Creates a function that ignores its inputs and evaluates the given body. Useful