pub fn new(patterns: Vec<(Arc<PatternMatch>, Vec<CellRef>, CellRef)>, fallback_syntax: Option<CellRef>) -> SyntaxSymbol {
        // This syntax should have a monad reference type if any of its statements have a monad reference type 
        let mut reference_type = ReferenceType::Value;

        for (_, _, partially_bound) in patterns.iter() {
            if reference_type_for_partially_bound_statements(partially_bound) == ReferenceType::Monad {
                // If any of the definitions for a symbol returns a monad, then assume they all do
                reference_type = ReferenceType::Monad;
                break;
            }
        }

        SyntaxSymbol { patterns: patterns, imported_bindings: Arc::new(HashMap::new()), reference_type: reference_type, fallback_syntax: fallback_syntax }
    }
///
/// Creates a new syntax symbol that will match one of the specified patterns
/// 
/// If no patterns are matched, the fallback syntax may be used instead
///
Creates a new syntax symbol that will match one of the specified patterns
If no patterns are matched, the fallback syntax may be used instead
Creates a new syntax symbol that will match one of the specified patterns If no patterns are matched the fallback syntax may be used instead
pub fn new(patterns: Vec<(Arc<PatternMatch>, Vec<CellRef>, CellRef)>, fallback_syntax: Option<CellRef>) -> SyntaxSymbol {
        // This syntax should have a monad reference type if any of its statements have a monad reference type 
        let mut reference_type = ReferenceType::Value;
        for (_, _, partially_bound) in patterns.iter() {
            if reference_type_for_partially_bound_statements(partially_bound) == ReferenceType::Monad {
                // If any of the definitions for a symbol returns a monad, then assume they all do
                reference_type = ReferenceType::Monad;
                break;
            }
        }
        SyntaxSymbol { patterns: patterns, imported_bindings: Arc::new(HashMap::new()), reference_type: reference_type, fallback_syntax: fallback_syntax }
    }
pub fn new ( patterns : Vec < ( Arc < PatternMatch > , Vec < CellRef > , CellRef ) > , fallback_syntax : Option < CellRef > ) -> SyntaxSymbol { // This syntax should have a monad reference type if any of its statements have a monad reference type  let mut reference_type = ReferenceType :: Value ; for ( _ , _ , partially_bound ) in patterns . iter ( ) { if reference_type_for_partially_bound_statements ( partially_bound ) == ReferenceType :: Monad { // If any of the definitions for a symbol returns a monad, then assume they all do reference_type = ReferenceType :: Monad ; break ; } } SyntaxSymbol { patterns : patterns , imported_bindings : Arc :: new ( HashMap :: new ( ) ) , reference_type : reference_type , fallback_syntax : fallback_syntax } }
Creates a new syntax symbol that will match one of the specified patterns
If no patterns are matched, the fallback syntax may be used instead
Creates a new syntax symbol that will match one of the specified patterns If no patterns are matched the fallback syntax may be used instead
patterns
Vec<(Arc<PatternMatch>, Vec<CellRef>, CellRef)>
fallback_syntax
Option<CellRef>
patterns
Vec<(Arc<PatternMatch>, Vec<CellRef>, CellRef)>
fallback_syntax
Option<CellRef>