leLex l n ('-':cs)
   = case cs of
        []         -> [(l, n, Lminus, "-")]
        ('-':cs2)  -> leLexLComment l (n+2) cs2
        ('>':cs3)  -> (l, n, Larrow, "->") : leLex l (n+2) cs3
        ('}':cs3)  -> leFail l n "Misplaced -}"
        (_:_)      -> (l, n, Lminus, "-") : leLex l (n+1) cs
leLex l n ('-':cs)
   = case cs of
        []         -> [(l, n, Lminus, "-")]
        ('-':cs2)  -> leLexLComment l (n+2) cs2
        ('>':cs3)  -> (l, n, Larrow, "->") : leLex l (n+2) cs3
        ('}':cs3)  -> leFail l n "Misplaced -}"
        (_:_)      -> (l, n, Lminus, "-") : leLex l (n+1) cs
leLex l n ('-':cs)
   = case cs of
        []         -> [(l, n, Lminus, "-")]
        ('-':cs2)  -> leLexLComment l (n+2) cs2
        ('>':cs3)  -> (l, n, Larrow, "->") : leLex l (n+2) cs3
        ('}':cs3)  -> leFail l n "Misplaced -}"
        (_:_)      -> (l, n, Lminus, "-") : leLex l (n+1) cs