否则Haskell是多重的

yon*_*tix 1 haskell

您好我正在尝试使用imbricated条件,但我得到解析错误:

parse error on input ‘|’

isAssignMent::String->Bool
isAssignMent a
    | a == "" = False
    | otherwise
        | (head trimmed) == '=' = True
        | otherwise = False
        where 
            trimmed = trimRightSide a [' ', '\n']
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢

Eri*_*ikR 5

这是你想要的吗?

isAssignMent::String->Bool
isAssignMent a
    | a == "" = False
    | (head trimmed) == '=' = True
    | otherwise = False
        where 
            trimmed = trimRightSide a [' ', '\n']
Run Code Online (Sandbox Code Playgroud)

按顺序检查Guard子句.你最后只需要一个otherwise条款.


Ørj*_*sen 5

您还可以使用模式匹配来更加惯用地写这个:

isAssignMent::String->Bool
isAssignMent ""         = False
isAssignMent a
    | '=':_ <- trimmed  = True
    | otherwise         = False
    where 
        trimmed = trimRightSide a [' ', '\n']
Run Code Online (Sandbox Code Playgroud)