bib.ss
#lang at-exp scheme
(require scribble/manual
         scriblib/autobib)

(provide (all-defined-out))

(define-cite ~cite citet generate-bib)

;; ----------------------------------------

(define ACM "ACM ")
(define International "Intl. ")
(define Conference "Conf. ")
(define Workshop "Wksp. ")
(define Journal "J. ")

(define icfp (string-append ACM International Conference "Functional Programming"))
(define lncs "Lecture Notes in Computer Science")
(define sigplan-notices (string-append ACM "SIGPLAN Notices"))

(define Haddock
  (make-bib
   #:author "Simon Marlow"
   #:title "Haddock, a Haskell Documentation Tool"
   #:location (proceedings-location
               (string-append ACM Workshop "Haskell")
               #:pages '(78 89))
   #:date "2002"))

(define OCAML
  (make-bib
   #:title "The Objective Caml System, release 3.10"
   #:author "Xavier Leroy"
   #:date "2007"))

(define Doxygen
  (make-bib
   #:title "Doxygen Source Code Documentation Generator Tool"
   #:author (author-name "Dimitri" "van Heesch")
   #:url "http://www.stack.nl/~dimitri/doxygen/"
   #:date "2007"))

(define Skribe
  (make-bib
   #:author (authors "Erick Gallesio" "Manuel Serrano")
   #:title "Skribe: a Functional Authoring Language"
   #:location (journal-location 
               (string-append Journal "Functional Programming")
               #:volume "15"
               #:number "5"
               #:pages '(751 770))
   #:date "2005"))
  
(define litprog
  (make-bib
   #:author "Donald E. Knuth"
   #:title "Literate Programming"
   #:location (journal-location
               "Computer Journal"
               #:volume "27"
               #:number "2"
               #:pages '(97 111))
   #:date "1984"))

(define noweb
  (make-bib
   #:author "Norman Ramsey"
   #:title "Literate Programming Simplified"
   #:location (journal-location
               "IEEE Software"
               #:volume "11"
               #:number "5"
               #:pages '(97 105))
   #:date "1994"))

;; Not currently cited:
(define macromod
  (make-bib
   #:author "Matthew Flatt"
   #:title @elem{Compilable and Composable Macros, You Want it @emph{When?}}
   #:location (proceedings-location icfp
                                    #:pages '(72 83))
   #:date "2002"))

(define planet-sw
  (make-bib
   #:author "Jacob Matthews"
   #:title @elem{Component Deployment with @|PLaneT|: You Want it @emph{Where?}}
   #:location (proceedings-location
               (string-append Workshop "Scheme and Functional Programming"))
   #:date "2006"))

(define Sitaram-slatex
  (make-bib
   #:title "How to Use SLaTeX"
   #:author "Dorai Sitaram"
   #:date "2007"
   #:url "http://www.ccs.neu.edu/home/dorai/slatex/"))

(define tex2page
  (make-bib
   #:title "TeX2page"
   #:author "Dorai Sitaram"
   #:date "2007"
   #:url "http://www.ccs.neu.edu/home/dorai/tex2page/tex2page-doc.html"))

(define R6RS
  (make-bib
   #:author (editor "Michael Sperber")
   #:title (elem "The Revised " (superscript "6") " Report on the Algorithmic Language Scheme")
   #:date "2007"))

;; Not currently cited:
(define R5RS
  (make-bib
   #:author (editor (authors "Richard Kelsey" "William Clinger" "Jonathan Rees"))
   #:title (elem "The Revised " (superscript "5") " Report on the Algorithmic Language Scheme")
   #:location (journal-location
               sigplan-notices
               #:volume "33"
               #:number "9")
   #:date "1998"))

(define icfp99-ffkf
  (make-bib
   #:author (authors "Matthew Flatt"
                     "Robert Bruce Findler"
                     "Shriram Krishnamurthi"
                     "Matthias Felleisen")
   #:title (elem "Programming Languages as Operating Systems ("
                 (italic "or") " Revenge of the Son of the Lisp Machine)")
   #:location (proceedings-location 
               icfp
               #:pages '(138 147))
   #:date "1999"))

(define plt-ref
  (make-bib
   #:author (authors "Matthew Flatt"
                     (org-author-name "PLT Scheme"))
   #:title "Reference: PLT Scheme"
   #:location (techrpt-location
               #:institution "PLT Scheme Inc."
               #:number "PLT-TR2009-reference-v4.2")
   ; #:url "http://download.plt-scheme.org/doc/4.2/pdf/reference.pdf"
   #:date "2009"))

(define CLTL2
  (make-bib
   #:author (author-name "Guy L." "Steele" #:suffix "Jr.")
   #:title "Common Lisp: The Language"
   #:location (book-location 
               #:edition "second"
               #:publisher "Digital Press")
   #:date "1990"
   #:is-book? #t))

(define syntax-case
  (make-bib
   #:author (authors "R. Kent Dybvig" "Robert Hieb" "Carl Bruggeman")
   #:title "Syntactic Abstraction in Scheme"
   #:location (journal-location
               "Lisp and Symbolic Computation"
               #:volume "5"
               #:number "4"
               #:pages '(295 326))
   #:date "1993"))

(define progdoc
  (make-bib
   #:title (elem "ProgDOC --- A New Program Documentation System")
   #:author (authors "Volker Simonis" "Roland Weiss")
   #:location (proceedings-location
               "Perspectives of System Informatics"
               #:pages '(438 449)
               #:series lncs
               #:volume "2890")
   #:date 2003))

(define docbook
  (make-bib
   #:title "DocBook: The Definitive Guide"
   #:author (authors "Norman Walsh" "Leonard Muellner")
   #:location (book-location
               #:publisher "O'Reilly & Associates, Inc.")
   #:date "2008"
   #:is-book? #t))

(define smalltalk-history
  (make-bib
   #:title "The early history of Smalltalk"
   #:author "Alan C. Kay"
   #:location (journal-location
               sigplan-notices
               #:volume "28"
               #:number "3")
   #:date "1993"))