ESPL1000 can infer the type of a local variable for you, so
it is
optional to declare the type.
fn main () ~> int {
a = 3;
return a;
}
This type inference has a compile-time cost
(time needed to infer the type)
which rises with the size
of the expression.
The type of '3+4' can be quickly computed, the type of '3*(call1(3,3)*4)+7 > call2()'
might take longer,
as the entire tree of the expression has to be traversed.
It would also be possible to infer the types of
entire functions.
This is not implemented in ESPL1000,
as it would be much more difficult to implement.
Unrelated to the implementation difficulty and compile-time
cost,
the function signature is a good
source of documentation.