Preview Mode Links will not work in preview mode
Mark, Greg, and Peter's semi-weekly discussion about topics relating to the Java/JVM space with an Auckland and New Zealand focus. Contact Us

Jun 22, 2014

  • Garbage Collection
  • Language/Compiler design
  • Function Types
    • A discussion on whether a functions signature is a type, or not.

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.