Lisp is strongly, implicit and dynamically typed, with type coercions. For example it provides generic arithmetic:
* (let ((a 1) ; integer
(b 2.0) ; default float
(c 1/3) ; ratio
(d #c(1.2 2.3))) ; complex number
(+ a b c d))
#C(4.5333333 2.3)
Variables A, B, C, D have no type declarations. The values usually carry type information. The + operation will take any numeric value and create a result value of a type it chooses. for example (+ 1/2 1/2) will result to 1. Adding ratios might create a ratio or an integer.
There is a whole bunch of literature on compiling Scheme:
There is a whole bunch of literature on compiling Scheme:
https://github.com/scheme-live/library.readscheme.org/blob/m...