可能分割中的分析错误(Haskell)
只是一个我无法解决的简单问题 我试图根据赋值要求,用下面的代码除以,但是终端给了我一条错误消息 test2.hs:1:112:模式中的解析错误:(仅x) 谁愿意告诉我它出了什么问题?可能分割中的分析错误(Haskell),haskell,pattern-matching,maybe,Haskell,Pattern Matching,Maybe,只是一个我无法解决的简单问题 我试图根据赋值要求,用下面的代码除以,但是终端给了我一条错误消息 test2.hs:1:112:模式中的解析错误:(仅x) 谁愿意告诉我它出了什么问题? 感谢maybeX-maybeY正在对参数maybeY应用函数maybeX,而您打算对这对(maybeX,maybeY)进行案例分析。您还应该使用=表示相等,而不是单个=。以下内容将按您的意愿执行: maybe_devide :: Maybe Float -> Maybe Float -> Maybe F
感谢
maybeX-maybeY
正在对参数maybeY
应用函数maybeX
,而您打算对这对(maybeX,maybeY)
进行案例分析。您还应该使用=
表示相等,而不是单个=
。以下内容将按您的意愿执行:
maybe_devide :: Maybe Float -> Maybe Float -> Maybe Float
maybe_devide maybeX maybeY = case (maybeX,maybeY) of
(Just x,Just y)
|x/=0 && y/=0 -> Just (div x y)
|x==0 && y/=0 -> Just 0
|x/=0 && y==0 -> Nothing
(Nothing,Just y) -> Nothing
(Just x,Nothing) -> Nothing
或者,您可以使用Maybe
monad,如中所示
maybe_devide :: Maybe Float -> Maybe Float -> Maybe Float
maybe_devide maybeX maybeY = do
x <- maybeX
y <- maybeY
case (x,y) of
(0,y) -> Just 0
(x,0) -> Nothing
(x,y) -> Just (div x y)
maybe\u devide::maybe Float->maybe Float->maybe Float
也许
什么都没有
(x,y)->刚刚(div x y)
maybeX-maybeY
正在对参数maybeY
应用函数maybeX
,而您打算对该对(maybeX,maybeY)
进行案例分析。您还应该使用=
表示相等,而不是单个=
。以下内容将按您的意愿执行:
maybe_devide :: Maybe Float -> Maybe Float -> Maybe Float
maybe_devide maybeX maybeY = case (maybeX,maybeY) of
(Just x,Just y)
|x/=0 && y/=0 -> Just (div x y)
|x==0 && y/=0 -> Just 0
|x/=0 && y==0 -> Nothing
(Nothing,Just y) -> Nothing
(Just x,Nothing) -> Nothing
或者,您可以使用Maybe
monad,如中所示
maybe_devide :: Maybe Float -> Maybe Float -> Maybe Float
maybe_devide maybeX maybeY = do
x <- maybeX
y <- maybeY
case (x,y) of
(0,y) -> Just 0
(x,0) -> Nothing
(x,y) -> Just (div x y)
maybe\u devide::maybe Float->maybe Float->maybe Float
也许
什么都没有
(x,y)->刚刚(div x y)
maybeDivide mx my=do x为什么x=0
作为特例?顺便说一句,这应该是=
。哈哈,这是一个意外,我在发布这个问题后立即改变了这一点,@augustss,sry-man,我在haskell没有走这么远,所以我不知道返回和maybeDivide mx my=do x为什么x=0
作为特例?顺便说一句,它应该是=
。哈哈,这是一个意外,我在发布这个问题后马上改变了这个想法,@augustss,sry man,我在haskell没有走这么远,所以我不知道返回,非常感谢。然而,当我尝试你的maybedevide版本时,终端显示以下错误信息[1/1]编译Main(test2.hs,已解释)test2.hs:1:251:输入“->”上的分析错误失败,加载的模块:无“sry老兄,插入新行要花很长时间,我试着输入,但这会代替HMM发布评论。可能是ghc的不同版本。你可以试试奥古斯都的版本。实际上,我在Float
上使用div
时也遇到了一个错误。哈哈,我的错,应该是整数,我已经把它改成了xd应该是x/y
而不是div xy
div
用于Integral
类型,/
用于分数类型。另外,(0,y)
案例是不必要的,因为它已经包含在最终案例中。非常感谢,但是,当我尝试您的maybedevide版本时,终端显示以下错误消息“[1/1]编译Main(test2.hs,解释)test2.hs:1:251:输入“->”的解析错误失败,模块加载:无“sry man,插入新行需要很长时间,我尝试输入,但这将代替HMM发布注释。可能是ghc的不同版本。你可以试试奥古斯都的版本。实际上,我在Float
上使用div
时也遇到了一个错误。哈哈,我的错,应该是整数,我已经把它改成了xd应该是x/y
而不是div xy
div
用于Integral
类型,/
用于分数类型。另外,(0,y)
案例是不必要的,因为它已经包含在最终案例中。