Can a type level function have different return kinds depending on its arguments? I think this question is best answered by quoting https://aphyr.com/posts/342-typing-the-technical-interview “Haskell is a dynamically-typed, interpreted language.”