functions create their own scope
builtin scope is created only once
integer -> generic rational number