I am relatively new to Haskell and came across the following problem. Given a function f from a to b (let's say from Int to Int) and an element x in the domain.
Ideally, what I would like to do: If the function f given input x evaluates in finite time to a y, I would like to return "Just y". If the function f given input x enters an infinite loop, I would like to return "Nothing".
I know that this task is impossible as I stated it because the Halting problem is undecidable. But what should be possible is the following: Take a function f, try to evaluate it at input x, try for 5 seconds and if you're not finished after 5 seconds, abort and return Nothing.
Is there a way to do this?