diff --git a/collects/lang/private/beginner-funs.rkt b/collects/lang/private/beginner-funs.rkt index 3bef3bc18f..72401af9be 100644 --- a/collects/lang/private/beginner-funs.rkt +++ b/collects/lang/private/beginner-funs.rkt @@ -491,12 +491,16 @@ Evaluates the number of items on a list. @interaction[#:eval (bsl) x (length x)] } - @defproc[(memq [x any/c][l list?]) (or/c false list?)]{ - Determines whether some value is on some list if so, it produces the - suffix of the list that starts with x if not, it produces false. (It - compares values with the eq? predicate.) + @defproc[((beginner-memq memq) [x any/c][l list?]) boolean?]{ + Determines whether some value @racket[x] is on some list @racket[l], + using @racket[eq?] to compare @racket[x] with items on @racket[l]. @interaction[#:eval (bsl) x (memq (list (list 1 2 3)) x)] } + @defproc[((beginner-memq? memq?) [x any/c][l list?]) boolean?]{ + Determines whether some value @racket[x] is on some list @racket[l], + using @racket[eq?] to compare @racket[x] with items on @racket[l]. + @interaction[#:eval (bsl) x (memq? (list (list 1 2 3)) x)] + } @defproc[(memv [x any/c][l list?]) (or/c false list)]{ Determines whether some value is on the list if so, it produces the suffix of the list that starts with x if not, it produces false. (It diff --git a/collects/lang/private/teachprims.rkt b/collects/lang/private/teachprims.rkt index 3bad49ef0b..76fb908688 100644 --- a/collects/lang/private/teachprims.rkt +++ b/collects/lang/private/teachprims.rkt @@ -139,6 +139,16 @@ namespace. (current-continuation-marks)))) (sqr a))) +(define-teach beginner memq + (lambda (a b) + (check-second 'memq a b) + (not (boolean? (memq a b))))) + +(define-teach beginner memq? + (lambda (a b) + (check-second 'memq? a b) + (not (boolean? (memq a b))))) + (define-teach beginner member (lambda (a b) (check-second 'member a b) @@ -402,6 +412,8 @@ namespace. beginner-list? beginner-member beginner-member? + beginner-memq + beginner-memq? beginner-remove beginner-cons beginner-car