Jun 22, 2014
During this discussion we talked about the implicit currying of haskell functions and how this could lead to run-time errors rather than compile errors, however whilst I (Mark) knew what I was talking about, I missed a fundamental part of the equation - function types include the return type, so a partially applied function that doesn’t fit a high-order function is a compile time error.
So given two functions:
someHof :: (String -> String) -> String
take3StringsReturningString :: String -> String -> String -> String
The first function someHof
takes a function
String -> String
and returns a String
,
if we partially apply take3StringsReturningString
"test"
the resulting function is String -> String
-> String
which doesn’t match the required
syntax of someHof
so wouldn’t even compile.