{"size": 1083, "ext": "scrbl", "max_stars_repo_path": "scribblings/define-who.scrbl", "max_stars_repo_name": "sorawee/define-who", "max_stars_repo_stars_event_min_datetime": "2020-07-20T03:09:07.000Z", "max_stars_repo_stars_event_max_datetime": "2020-07-20T03:09:07.000Z", "max_issues_repo_path": "scribblings/define-who.scrbl", "max_issues_repo_name": "sorawee/define-who", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "scribblings/define-who.scrbl", "max_forks_repo_name": "sorawee/define-who", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": 1, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 25.1860465116, "max_line_length": 83, "alphanum_fraction": 0.621421976}
#lang scribble/manual
@require[scribble/example
         @for-label[define-who
                    racket/base]]

@(define evaluator (make-base-eval))
@(evaluator '(require define-who))

@title{define-who}
@author[@author+email["Sorawee Porncharoenwase" "sorawee.pwase@gmail.com"]]

@defmodule[define-who]

This library provides a macro @racket[define/who] which is similar to
@racket[define], but it additionally binds @racket[who] to the name of the function
(as a @tech[#:doc '(lib "scribblings/reference/reference.scrbl")]{symbol}).

@defform*[((define/who (head args) body ...+)
           (define/who id expr))]{
  @examples[#:eval evaluator
    (define/who (test x)
      (list x who))
    (test 42)
    (define/who ((foo #:x x) #:y y)
      (list x y who))
    ((foo #:x 1) #:y 2)
    (define/who (bar)
      (define who 42)
      who)
    (bar)
    (define/who baz
      (let ([table (make-hash)])
        (λ () who)))
    (baz)
  ]
}


@defidform[who]{
  Recognized specially within forms like @racket[define/who].
  A @racket[who] form out of context is a syntax error.
}
