Novel ways of expressing computation
Better execution model
Better reliability
With laziness infinite functions can be created
Algebraic data types ?
Product Types: Combine multiple types using an “and”
Sum Types: Combined multiple types using an “or”
Use of product types is similar to the use of strcuts. But the use of product types leads to a strong top-down design pattern.
Sum types allow similarity between types without the same bloated code.
In Haskell, Product types include tuples and records. Sum types includes ordinals and general data types.
Actually typically relates to type safety, memory safety.
Most languages are strongly typed (even Python with duck typing)
Strongly typed languages has stricter rules during compile time, while implies that errors and exceptions are likely to happen during compilation.
Weakly typed languages might expose pointers and allow operations on them. Weakly typed langauges allow for type coercion.