Northeastern University Type Comments to typed/racket
This is a best-effort translator for Northeastern University Type Comments. It supports templates, generic declarations, aliases, annotations, sum types, and functions.
Download a compiled binary from the releases tab. Alternatively, compile it from source:
go build .
neut2tr filename.rkt
Converts NEU Type Comments to typed/racket and prints the result to stdout
neut2tr filename.rkt output.rkt
neut2tr filename.rkt -o output.rkt
neut2tr filename.rkt --out output.rkt
Converts NEU Type Comments to typed/racket and writes to output.rkt
; A TrafficLightColor is one of:
; - "Red"
; - "Yellow"
; - "Green"
(define-type TrafficLightColor (U "Red" "Yellow" "Green"))
; A CustomTruthy is one of:
; - #t
; - 1
; - "true"
(define-type CustomTruthy (U #t 1 "true"))
; A StringOrZero is one of
; - String
; - 0
(define-type StringOrZero (U String 0))
; A [Listof X] is one of:
; - '()
; - (cons X [Listof X])
(define-type (Listof X) (U '() (cons X [Listof X])))
; A [Maybe X] is one of:
; - X
; - #f
(define-type (Maybe X) (U X #f))
; display-clock : Minute -> Image
(: display-clock (-> Minute Image))
; generate-next : [Listof Real] -> [String -> Real]
(: generate-next (-> [Listof Real] (-> String Real)))
; map : {X Y} [X -> Y] [Listof X] -> [Listof Y]
(: map (All (X Y) (-> (-> X Y) [Listof X] [Listof Y])))
; foldr : {X Y} [X Y -> Y] Y [Listof X] -> Y
(: foldr (All (X Y) (-> (-> X Y Y) Y [Listof X] Y)))