|
SketchyLISP Reference |
Copyright (C) 2007 Nils M Holm |
| <<[non-negative?] | [Index] | [not]>> |
Conformance: SketchyLISP Core
Purpose: Normalize a number by removing leading zeroes and plus signs.
Arguments:
X - number
Implementation:
(define (normalize x)
(letrec
; remove leading zeroes from natural number
((skip0
(lambda (x)
(cond ((null? (cdr x)) x)
((eq? (car x) 0d)
(skip0 (cdr x)))
(else x))))
(norm
(lambda (x)
(cond ((eq? (car x) '+)
(skip0 (cdr x)))
((eq? (car x) '-)
(let ((d (skip0 (cdr x))))
(cond ((equal? d '(0d)) d)
(else (cons '- d)))))
(else (skip0 x))))))
(list->integer
(norm (integer->list x)) #t)))
Example:
(normalize +000511) => 511
| <<[non-negative?] | [Index] | [not]>> |