running.
Formerly, static typing required the programmer to add lots of annotations in
-her source code explicitly specifying what they type of each function argument
+her source code explicitly specifying what the type of each function argument
is, what the type of the function's return value was, and so on. This is
tedious, and partly for this reason dynamically typed languages have become
popular and are thought of as easier to work with. However, nowadays statically
This just says explicitly that foo takes an argument x of type int, an argument
y of type float, and returns a pair of type int\*float (that is, a pair whose
-first member is if type int and whose second member is of type float).
+first member is of type int and whose second member is of type float).
Type inference allows programmers to enjoy the benefits of strict compile-time
type-checking, which as we said, helps eliminate a large class of errors at a
Though as we said dynamically-typed languages have become popular, programmers
who get used to modern statically-typed languages find them productive.
-Sometimes they become zealots for working this way instead; at any case, they
+Sometimes they become zealots for working this way instead; in any case, they
say that the popular dim opinion of static typing is based on out-of-date
experiences of older languages like C and Java.