Hacker News new | ask | show | jobs
by rachitnigam 1443 days ago
Not quite. This also has the type ‘a -> ‘a:

def nitpick(x): throw “foo”

2 comments

that's not a function (in the pedantic sense).

technically a partial function, or you could say that every function is really of the type A -> Exception \/ A

But you should not be writing functions that make you think about the fact that Hask is not really a category.
You're right, and foo x = foo x also qualifies as 'a -> 'a. The only function that always terminates is the identity function, then.
A function in the mathematical sense is total (always terminates).
We could throw some unsafePerformIO in there and do anything else as well, but if course we would have a function in the mathematical sense anymore.