func define(s *scheme.Scope, args []scheme.Sexpr) (scheme.Sexpr, error) { if len(args) != 2 { return nil, scheme.ProcError("define requires exactly 2 arguments") } idSym, ok := args[0].(*scheme.Symbol) if !ok { return nil, scheme.ProcError("invalid argument to define") } val, err := eval.Eval(s, args[1]) if err != nil { return nil, err } s.DefineHigh(idSym, val) return scheme.Nil, nil }