diff options
| author | Joel Martin <github@martintribe.org> | 2014-10-06 23:31:11 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-10-06 23:31:11 -0500 |
| commit | aeabd2145ff133cc6991166d8f1023ed33e223c8 (patch) | |
| tree | 072243e5aab3a862c9416d533d362185d9153bb9 /go/src/core/core.go | |
| parent | ad95503cea8ca85e9188effa87681275283157bf (diff) | |
| download | mal-aeabd2145ff133cc6991166d8f1023ed33e223c8.tar.gz mal-aeabd2145ff133cc6991166d8f1023ed33e223c8.zip | |
go: add step7_quote
Diffstat (limited to 'go/src/core/core.go')
| -rw-r--r-- | go/src/core/core.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/go/src/core/core.go b/go/src/core/core.go index 94e2452..65475bb 100644 --- a/go/src/core/core.go +++ b/go/src/core/core.go @@ -42,6 +42,20 @@ func slurp(a []MalType) (MalType, error) { // Sequence functions +func cons(a []MalType) (MalType, error) { + val := a[0] + lst, e := GetSlice(a[1]); if e != nil { return nil, e } + + return List{append([]MalType{val}, lst...)}, nil +} + +func concat(a []MalType) (MalType, error) { + lst1, e := GetSlice(a[0]); if e != nil { return nil, e } + lst2, e := GetSlice(a[1]); if e != nil { return nil, e } + + return List{append(lst1, lst2...)}, nil +} + func empty_Q(a []MalType) (MalType, error) { switch obj := a[0].(type) { case List: return len(obj.Val) == 0, nil @@ -96,6 +110,8 @@ var NS = map[string]MalType{ "list?": func(a []MalType) (MalType, error) { return List_Q(a[0]), nil }, + "cons": cons, + "concat": concat, "empty?": empty_Q, "count": count, } |
