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)