racket/collects/meta/web/www/people.rkt
2011-12-31 14:24:41 -05:00

108 lines
4.7 KiB
Racket

#lang meta/web
(require "resources.rkt")
(define (make-all place person)
;; The first person in a place is the one responsible for it
(list
(place ; -------------------------------------------------------------------
'neu "Northeastern University"
#:location "Boston, MA"
#:url "http://www.ccs.neu.edu/racket/"
#:pubs "http://www.ccs.neu.edu/racket/pubs/"
(person 'matthias "Matthias Felleisen"
#:url "http://www.ccs.neu.edu/home/matthias/")
(person 'eli "Eli Barzilay"
#:url "http://barzilay.org/"))
(place ; -------------------------------------------------------------------
'utah "University of Utah"
#:location "Salt Lake City, UT"
#:url "http://www.cs.utah.edu/plt/"
#:pubs "http://www.cs.utah.edu/plt/publications/"
(person 'mflatt "Matthew Flatt"
#:url "http://www.cs.utah.edu/~mflatt/"))
(place ; -------------------------------------------------------------------
'nwu "Northwestern University"
#:location "Evanston, IL"
#:url "http://plt.eecs.northwestern.edu/"
#:pubs "http://www.eecs.northwestern.edu/~robby/pubs/"
(person 'robby "Robby Findler"
#:bibname "Robert Bruce Findler"
#:url "http://www.eecs.northwestern.edu/~robby/"))
(place ; -------------------------------------------------------------------
'brown "Brown University"
#:location "Providence, RI"
#:url "http://www.cs.brown.edu/research/plt/"
#:pubs "http://www.cs.brown.edu/~sk/Publications/Papers/"
(person 'shriram "Shriram Krishnamurthi"
#:url "http://www.cs.brown.edu/~sk/"))
(place ; -------------------------------------------------------------------
'byu "Brigham Young University"
#:location "Provo, UT"
#:url "http://faculty.cs.byu.edu/~jay/"
#:pubs "http://faculty.cs.byu.edu/~jay/home/#(part._pubs)"
(person 'jay "Jay McCarthy"
#:url "http://faculty.cs.byu.edu/~jay/"))
(place ; -------------------------------------------------------------------
'calpoly "California Polytechnic State University"
#:location "San Luis Obispo, CA"
#:url "http://users.csc.calpoly.edu/~clements/"
#:pubs "http://www.brinckerhoff.org/clements/papers/"
(person 'clements "John Clements"
#:url "http://users.csc.calpoly.edu/~clements/"))
(place ; -------------------------------------------------------------------
'wpi "Worcester Polytechnic Institute"
#:location "Worcester, MA"
#:url "http://web.cs.wpi.edu/~kfisler/"
(person 'kathi "Kathi Fisler"
#:url "http://web.cs.wpi.edu/~kfisler/"))))
;; ----------------------------------------------------------------------------
(struct person (nick name url bibname place) #:prefab)
(struct place (nick name location url pubs people) #:prefab)
(provide (struct-out place) all-places find-place
(struct-out person) all-people find-person)
(define-values (all-places find-place all-people find-person)
(let ()
(define places0
(make-all
;; make a place
(λ (nick name #:location loc #:url url #:pubs [pubs #f] . people)
(place nick name loc url pubs people))
;; make a person
(λ (nick name #:url url #:bibname [bibname name])
(person nick name url bibname (make-placeholder #f)))))
(for* ([place (in-list places0)]
[person (in-list (place-people place))])
(placeholder-set! (person-place person) place))
(define places (make-reader-graph places0))
(define people (append-map place-people places))
(when (ormap (λ (p) (null? (place-people p))) places)
(error 'places "all places should have people in them"))
(define (make-finder what xs get-nick)
(define t (make-hasheq))
(for ([x (in-list xs)])
(hash-update! t (get-nick x)
(λ (old) (if old (error what "got duplicate nicks") x))
#f))
(λ (nick) (or (hash-ref t nick #f)
(error what "nick not found: ~s" nick))))
(values places (make-finder 'places places place-nick)
people (make-finder 'people people person-nick))))
(provide people)
(define people
@page[#:part-of 'community]{
@p{“PLT” refers to the group that is the core of the Racket development
team. PLT consists of numerous people distributed across several
different universities in the USA:
@(ul (map (λ (p) @li{@a[href: (place-url p)]{
@(place-name p), @(place-location p)}})
all-places))}
@p{Also, Racket is supported by a band of volunteers who contribute not
only code and documentation but also infectious enthusiasm—too many to
name but whose help and encouragement make this fun and worthwhile.}})