cdecl1 :: (Name, Range) -> HParser (Range -> Declaration)
cdecl1 (n, _) =
    do
        lexCOMMA
        ns <- vars
        lexCOLCOL
        t <- contextAndType
        return $ \r -> Declaration_TypeSignature r (n:ns) t
    <|>
    do
        lexCOLCOL
        t <- contextAndType
        return $ \r -> Declaration_TypeSignature r [n] t
    <|>
    do
        b <- normalRhs
        return $ \r -> Declaration_FunctionBindings r
            [FunctionBinding_FunctionBinding r (LeftHandSide_Function r n []) b]

{-
idecl -> (funlhs | var) rhs
        |                       (empty)
-}
cdecl1 :: (Name, Range) -> HParser (Range -> Declaration)
cdecl1 (n, _) =
    do
        lexCOMMA
        ns <- vars
        lexCOLCOL
        t <- contextAndType
        return $ \r -> Declaration_TypeSignature r (n:ns) t
    <|>
    do
        lexCOLCOL
        t <- contextAndType
        return $ \r -> Declaration_TypeSignature r [n] t
    <|>
    do
        b <- normalRhs
        return $ \r -> Declaration_FunctionBindings r
            [FunctionBinding_FunctionBinding r (LeftHandSide_Function r n []) b]

{-
idecl -> (funlhs | var) rhs
        |                       (empty)
-}
cdecl1 (n, _) =
    do
        lexCOMMA
        ns <- vars
        lexCOLCOL
        t <- contextAndType
        return $ \r -> Declaration_TypeSignature r (n:ns) t
    <|>
    do
        lexCOLCOL
        t <- contextAndType
        return $ \r -> Declaration_TypeSignature r [n] t
    <|>
    do
        b <- normalRhs
        return $ \r -> Declaration_FunctionBindings r
            [FunctionBinding_FunctionBinding r (LeftHandSide_Function r n []) b]

{-
idecl -> (funlhs | var) rhs
        |                       (empty)
-}