func (bt BindingTable) IndexSet(idx, v eval.Value) { key := ToKey(idx) f, ok := v.(eval.FnValue) if !ok { throwf("want function, got %s", v.Kind()) } bt.inner[key] = f }
func (bt BindingTable) IndexSet(idx, v eval.Value) { key := keyIndex(idx) var f Caller switch v := v.(type) { case eval.String: builtin, ok := builtinMap[string(v)] if !ok { throw(fmt.Errorf("no builtin named %s", v.Repr())) } f = builtin case eval.Caller: f = EvalCaller{v} default: throw(fmt.Errorf("bad function type %s", v.Kind())) } bt.inner[key] = f }
func (bt BindingTable) IndexSet(idx, v eval.Value) { key := keyIndex(idx) var f BoundFunc switch v := v.(type) { case eval.String: builtin, ok := builtinMap[string(v)] if !ok { throw(fmt.Errorf("no builtin named %s", v.Repr(eval.NoPretty))) } f = builtin case eval.FnValue: f = FnAsBoundFunc{v} default: throw(fmt.Errorf("bad function type %s", v.Kind())) } bt.inner[key] = f }