Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可能分割中的分析错误(Haskell)_Haskell_Pattern Matching_Maybe - Fatal编程技术网

可能分割中的分析错误(Haskell)

可能分割中的分析错误(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

只是一个我无法解决的简单问题 我试图根据赋值要求,用下面的代码除以,但是终端给了我一条错误消息

test2.hs:1:112:模式中的解析错误:(仅x)

谁愿意告诉我它出了什么问题?
感谢

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)
案例是不必要的,因为它已经包含在最终案例中。