pub fn new(ast: PatternAst<L>) -> Self {
        let ast = ast.compact();
        let program = machine::Program::compile_from_pat(&ast);
        Pattern { ast, program }
    }
/// Creates a new pattern from the given pattern ast.
Creates a new pattern from the given pattern ast.
Creates a new pattern from the given pattern ast .
pub fn new(ast: PatternAst<L>) -> Self {
        let ast = ast.compact();
        let program = machine::Program::compile_from_pat(&ast);
        Pattern { ast, program }
    }
pub fn new ( ast : PatternAst < L > ) -> Self { let ast = ast . compact ( ) ; let program = machine :: Program :: compile_from_pat ( & ast ) ; Pattern { ast , program } }
Creates a new pattern from the given pattern ast.
Creates a new pattern from the given pattern ast .
ast
PatternAst<L>
ast
PatternAst<L>