typed-racket/typed-racket-test/succeed/pr10319.rkt
2014-12-16 10:07:25 -05:00

15 lines
304 B
Racket

#lang typed-scheme
(define-type-alias LSN (Rec LSN (U '() (cons Number LSN) (cons Symbol LSN))))
(: sum (LSN -> Number))
;; add all numbers in this lsn
(define (sum lsn)
(cond
[(null? lsn) 0]
[(number? (car lsn)) (+ (car lsn) (sum (cdr lsn)))]
[else (sum (cdr lsn))]))
(sum '(a b 2 3))