15 lines
304 B
Racket
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))
|