Haskell: анализировать ошибки с помощью ValTypes - PullRequest
0 голосов
/ 01 декабря 2018

Может кто-нибудь объяснить, почему я продолжаю получать эту ошибку?Особенно, когда другой модуль на том же ноутбуке может работать с одним и тем же выражением, и это будет нормально?

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

Скриншот кода Haskell

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Ты так близко!Вам просто не хватает защитного символа | перед условиями.

minCompare :: ValType -> ValType -> ValType
minCompare leftSide rightSide
    | leftSide == rightSide = leftSide
    | leftSide < rightSide = leftSide
    | otherwise = rightSide
0 голосов
/ 01 декабря 2018

В этом случае вам не нужно использовать сопоставление с образцом, если этого будет достаточно.Ваш синтаксис для функции и сопоставления с образцом немного отключен.(Это случается с любым новым новичком в 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
...