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]>> |