aboutsummaryrefslogtreecommitdiff
path: root/go/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'go/src/core')
-rw-r--r--go/src/core/core.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/go/src/core/core.go b/go/src/core/core.go
index 9df71a6..94e2452 100644
--- a/go/src/core/core.go
+++ b/go/src/core/core.go
@@ -2,11 +2,13 @@ package core
import (
"errors"
+ "io/ioutil"
"fmt"
)
import (
. "types"
+ "reader"
"printer"
)
@@ -31,6 +33,12 @@ func println(a []MalType) (MalType, error) {
return nil, nil
}
+func slurp(a []MalType) (MalType, error) {
+ b, e := ioutil.ReadFile(a[0].(string))
+ if e != nil { return nil, e }
+ return string(b), nil
+}
+
// Sequence functions
@@ -62,6 +70,9 @@ var NS = map[string]MalType{
"str": func(a []MalType) (MalType, error) { return str(a) },
"prn": func(a []MalType) (MalType, error) { return prn(a) },
"println": func(a []MalType) (MalType, error) { return println(a) },
+ "read-string": func(a []MalType) (MalType, error) {
+ return reader.Read_str(a[0].(string)) },
+ "slurp": slurp,
"<": func(a []MalType) (MalType, error) {
return a[0].(int) < a[1].(int), nil },