_expr :: Parser (AST' Text)
data_expr = do
    reserved "data"
    ident <- identifier
    typvars <- parens (commaSep identifier)
    ts <- blockOfMany (try type_app <|> type_var)
    e <- expr
    return (Data ident typvars ts e)

im
data_expr :: Parser (AST' Text)
data_expr = do
    reserved "data"
    ident <- identifier
    typvars <- parens (commaSep identifier)
    ts <- blockOfMany (try type_app <|> type_var)
    e <- expr
    return (Data ident typvars ts e)
data_expr = do
    reserved "data"
    ident <- identifier
    typvars <- parens (commaSep identifier)
    ts <- blockOfMany (try type_app <|> type_var)
    e <- expr
    return (Data ident typvars ts e)