Units in Programming Languages
It is possible to incorporate units into the type system, make legal conversions automatically, and detect errors:
>(gldefun test ( (x (units real meter))
(z (units real inch)) )
(z = x) )
result type: (UNITS REAL INCH)
(LAMBDA (X Z) (SETQ Z (* 39.37007874015748 X)))
(gldefun testb ( (x (units real meter))
(z (units real kilogram)) )
(z = x) )
glisp error detected in function TESTB
Cannot convert METER to KILOGRAM
in expression: (Z = X)