Question
Is Haskell's type system Curry-style or Church-style?
Is Haskell's type system Curry-style or Church-style?
While researching Haskell's type system, I came across the terms Curry-style and Church-style. I would like to understand the differences between them.
- Curry-style is a system where type information is external to the program, and type checking is not mandatory for executing the program. The compiler automatically infers types without needing explicit type annotations.
- Church-style is a system where types are integrated into the language's semantics. Type annotations are mandatory, and type inference is also performed. Given that Haskell's type system includes type inference and type annotations are not mandatory, I initially thought it to be classified as Curry-style. However, some literature suggests it also has characteristics of Church-style.
Should Haskell's type system be considered Curry-style or Church-style? Additionally, could you please explain the reasons for your opinion?