public override bool subst(ref Erlang.Object obj, Erlang.VarBind binding) { if (isAny() || binding == null || binding.Empty) { throw new UnboundVarException(); } Erlang.Object term = binding[m_var]; if (term == null) { throw new UnboundVarException("Variable " + m_var + " not bound!"); } obj = term; return(true); }
public override bool match(Erlang.Object pattern, Erlang.VarBind binding) { if (binding == null) { return(false); } Erlang.Object value = binding.find(m_var); if (value != null) { return(value.match(pattern, binding)); } Erlang.Object term = null; binding[m_var] = pattern.subst(ref term, binding) ? term : pattern; return(true); }
public override bool subst(ref Erlang.Object obj, Erlang.VarBind binding) { if (isAny() || binding == null || binding.Empty) { throw new UnboundVarException(); } Erlang.Object term = binding[m_var]; if (term == null) { throw new UnboundVarException("Variable " + m_var + " not bound!"); } if (!checkType(term)) { throw new InvalidValueType( string.Format("Invalid variable {0} value type (got={1}, expected={2})", m_var, obj.Type, m_termType)); } obj = term; return(true); }
public virtual bool subst(ref Erlang.Object term, Erlang.VarBind binding) { return(false); }
public virtual bool match(Erlang.Object pattern, Erlang.VarBind binding) { return((pattern is Erlang.Var) ? pattern.match(this, binding) : this.Equals(pattern)); }