lambdaDef = emptyDef
    { P.commentStart = "{-"
    , P.commentEnd = "-}"
    , P.commentLine = "--"
    , P.nestedComments = True
    , P.identStart = letter
    , P.identLetter = alphaNum <|> oneOf "_'"
    , P.opStart = P.opLetter lambdaDef
    -- , P.opLetter = oneOf "=+/*-~><&|\\"
    , P.opLetter = oneOf "=\\.->:*+/"
    , P.reservedNames =
        [ "pack", "as"
        , "unpack"
        , "let", "in"
        , "True", "False"
        , "*"
        , "forall"
        , "exists"
        , "String", "Int", "Bool"
        ]
    }
lambdaDef = emptyDef
    { P.commentStart = "{-"
    , P.commentEnd = "-}"
    , P.commentLine = "--"
    , P.nestedComments = True
    , P.identStart = letter
    , P.identLetter = alphaNum <|> oneOf "_'"
    , P.opStart = P.opLetter lambdaDef
    -- , P.opLetter = oneOf "=+/*-~><&|\\"
    , P.opLetter = oneOf "=\\.->:*+/"
    , P.reservedNames =
        [ "pack", "as"
        , "unpack"
        , "let", "in"
        , "True", "False"
        , "*"
        , "forall"
        , "exists"
        , "String", "Int", "Bool"
        ]
    }
lambdaDef = emptyDef
    { P.commentStart = "{-"
    , P.commentEnd = "-}"
    , P.commentLine = "--"
    , P.nestedComments = True
    , P.identStart = letter
    , P.identLetter = alphaNum <|> oneOf "_'"
    , P.opStart = P.opLetter lambdaDef
    -- , P.opLetter = oneOf "=+/*-~><&|\\"
    , P.opLetter = oneOf "=\\.->:*+/"
    , P.reservedNames =
        [ "pack", "as"
        , "unpack"
        , "let", "in"
        , "True", "False"
        , "*"
        , "forall"
        , "exists"
        , "String", "Int", "Bool"
        ]
    }