Exception haskell if异常
我有类似的东西Exception haskell if异常,exception,haskell,Exception,Haskell,我有类似的东西 isLastPermutation (h:t)= catch (nextPermutation (h:t)) (\e-> return True) return False 在某些情况下,nextPermutation抛出异常,如果nextPermutation抛出异常,我希望我的函数isLastPermutation返回true,否则返回false。不要在其他纯Haskell中使用异常进行流控制。使用也许代码>或 < >
isLastPermutation (h:t)=
catch (nextPermutation (h:t)) (\e-> return True)
return False
在某些情况下,
nextPermutation
抛出异常,如果nextPermutation
抛出异常,我希望我的函数isLastPermutation
返回true,否则返回false。不要在其他纯Haskell中使用异常进行流控制。使用<代码>也许<>代码>或<代码> < <代码> > 什么是<代码> nExtRebug < /代码>类型?考虑返回“<代码> > <代码> >,而不是在函数<代码> NExtRePrime< /代码>中抛出异常。然后它只是一个模式匹配的问题,在just
和Nothing
上,由于缺少do
,所以无法编译。如果要抛出(并捕获)异常,必须在catch
中移动return False
,因此:catch(nextpermutate(h:t)>>return False)(\\\->return True)
。但是,正如莫格所说,这不是例外的工作,使用<代码>也许,并且不需要<代码> IO < /C> >和<代码> catch < /C> >注意:C++ >代码STD::NExtPyPrimult](< /代码>)返回<代码>布尔O/S>(不例外),以指示排列是否已达到最后版本,尽管C++上下文中的异常可以比Haskell上下文中的异常少。如果您的另一个Haskell函数正在通过异常传递此类信息,则该函数已损坏,应予以修复!我同意其他人的看法:重写nextpermutat
及其调用的函数,这样它们就不会给出错误。如果您需要帮助,请将他们的代码编辑到您的问题中,我们可以帮助您。