我有這樣的功能:'試' 可以決定當一個程序暫停
isUndefined ::() -> Bool
isUndefined x = case unsafePerformIO $ (try (return $! x) :: IO (Either SomeException())) of
Left _ -> True
Right _ -> False
則:
isUndefined() = False
isUndefined undefined = True
解決停機問題。當然,這也可以擴展到其他類型。
我的問題:這怎麼可能? Control.Exception.try
真的在這裏打破了什麼?
程序可能會進入無限循環,不會返回'()'和'undefined'。那麼你的'isUndefined'函數也會進入一個無限循環,而不會給出任何有意義的結果,因此它不會回答暫停問題。記住暫停問題接收程序(函數,圖靈機,程序,無論)作爲輸入,而不是數據。 – Mephy
你的意思是你通過運行一個程序解決暫停問題,並等待它暫停? – mb14