【问题标题】:Haskell: Parse error pattern using ValTypesHaskell:使用 ValTypes 解析错误模式
【发布时间】:2019-05-03 02:07:03
【问题描述】:

有人可以解释为什么我不断收到此错误吗?尤其是当不同的模块,在同一台笔记本电脑上,可以运行相同的表达式,就可以了吗?

minCompare :: ValType -> ValType -> ValType
minCompare leftSide rightSide
     leftSide == rightSide = leftSide
     leftSide < rightSide = leftSide
     otherwise = rightSide

Haskell code screenshot

【问题讨论】:

  • 请将代码作为文本粘贴到您的问题中。图像不太容易访问

标签: haskell functional-programming pattern-matching parse-error


【解决方案1】:

在这种情况下,您不必使用模式匹配,如果 else 就足够了。您的函数和模式匹配语法略有偏差。 (这种情况经常发生在任何新的 haskell 初学者身上)

import Data.Ord


minCompare :: Ord a => a -> a -> a
minCompare left right = if left >= right then left else right

minCompare' :: Ord a => a -> a -> a
minCompare' left right = case (compare left right) of
                            LT -> right
                            EQ -> left
                            GT -> left

minCompare'' :: Ord a => a -> a -> a
minCompare'' left right = case (compare left right) of
                            LT -> right
                            _ -> left

【讨论】:

    【解决方案2】:

    你离得太近了!您只是在条件之前缺少保护符号|。

    minCompare :: ValType -> ValType -> ValType
    minCompare leftSide rightSide
        | leftSide == rightSide = leftSide
        | leftSide < rightSide = leftSide
        | otherwise = rightSide
    

    【讨论】:

      猜你喜欢
      • 2012-01-23
      • 2013-01-29
      • 1970-01-01
      • 2012-12-24
      • 2015-03-14
      • 2012-09-28
      • 2017-10-29
      • 1970-01-01
      • 2015-03-06
      相关资源
      最近更新 更多