victory over polymorphism

main
Matthew Butterick 9 years ago
parent 2e87487acd
commit 7640625712

@ -1,9 +1,9 @@
#lang typed/racket/base #lang typed/racket/base
(require (for-syntax typed/racket/base racket/syntax)) (require (for-syntax typed/racket/base racket/syntax))
(require/typed racket/list [flatten ((Listof QuadAttrPair) . -> . (Listof QuadAttrPair))] (require/typed racket/list [flatten (All (A) ((Listof A) -> (Listof A)))]
[empty? ((Listof Any) . -> . Boolean)]) [empty? (All (A) ((Listof A) -> Boolean))])
(require/typed sugar/list [trimf ((Listof Any) Procedure . -> . (Listof Quad))] (require/typed sugar/list [trimf (All (A) ((Listof A) (A . -> . Boolean) -> (Listof A)))]
[filter-split ((Listof Any) Procedure . -> . (Listof (Listof Quad)))]) [filter-split (All (A) ((Listof A) (A . -> . Boolean) -> (Listof (Listof A))))])
(require sugar/debug) (require sugar/debug)
(provide (all-defined-out)) (provide (all-defined-out))
@ -101,15 +101,15 @@
(define-syntax (define-break-type stx) (define-syntax (define-break-type stx)
(syntax-case stx () (syntax-case stx ()
[(_ id) [(_ Id)
(with-syntax ([split-on-id-breaks (format-id #'id "split-on-~a-breaks" #'id)] (with-syntax ([split-on-id-breaks (format-id #'Id "split-on-~a-breaks" (string-downcase (symbol->string (syntax->datum #'Id))))]
[id-break (format-id #'id "~a-break" #'id)] [id-break (format-id #'Id "~a-break" #'Id)]
[id-break? (format-id #'id "~a-break?" #'id)] [id-break? (format-id #'Id "~a-break?" #'Id)]
[multi-id (format-id #'id "multi~a" #'id)] [multi-id (format-id #'Id "multi~a" #'Id)]
[multi-id? (format-id #'id "multi~a?" #'id)] [multi-id? (format-id #'Id "multi~a?" #'Id)]
[quads->multi-id (format-id #'id "quads->multi~a" #'id)]) [quads->multi-id (format-id #'Id "quads->multi~a" #'Id)])
#'(begin #'(begin
(define-quad-type id) (define-quad-type Id)
(define-quad-type id-break) (define-quad-type id-break)
(define-quad-type multi-id) (define-quad-type multi-id)
;; breaker ;; breaker
@ -126,4 +126,5 @@
(define-quad-type Word) (define-quad-type Word)
(define-break-type Block) (define-break-type Block)
(split-on-Block-breaks (list (word) (block-break) (word))) (define-break-type Page)
(split-on-page-breaks (list (word) (page-break) (word)))

Loading…
Cancel
Save