uct_expr :: Parser (AST' Text)
product_expr =
    reserved "product"
    *> (Product
        <$> identifier
        <*  symbol "from"
        <*> expr
        <*  symbol "to"
        <*> expr
        <*> semiblockExpr
        )

ex
product_expr :: Parser (AST' Text)
product_expr =
    reserved "product"
    *> (Product
        <$> identifier
        <*  symbol "from"
        <*> expr
        <*  symbol "to"
        <*> expr
        <*> semiblockExpr
        )
product_expr =
    reserved "product"
    *> (Product
        <$> identifier
        <*  symbol "from"
        <*> expr
        <*  symbol "to"
        <*> expr
        <*> semiblockExpr
        )