aboutsummaryrefslogtreecommitdiff
path: root/go/src/types
diff options
context:
space:
mode:
Diffstat (limited to 'go/src/types')
-rw-r--r--go/src/types/types.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/go/src/types/types.go b/go/src/types/types.go
index 613bfb5..54e4176 100644
--- a/go/src/types/types.go
+++ b/go/src/types/types.go
@@ -4,6 +4,7 @@ import (
"reflect"
"errors"
"fmt"
+ "strings"
)
// Errors/Exceptions
@@ -21,10 +22,9 @@ type MalType interface {
}
type EnvType interface {
- //Find(key string) *EnvType
- Find(key string) EnvType
- Set(key string, value MalType) MalType
- Get(key string) (MalType, error)
+ Find(key Symbol) EnvType
+ Set(key Symbol, value MalType) MalType
+ Get(key Symbol) (MalType, error)
}
// Scalars
@@ -57,6 +57,20 @@ func Symbol_Q(obj MalType) bool {
}
+// Keywords
+func NewKeyword(s string) (MalType, error) {
+ return "\u029e" + s, nil;
+}
+
+func Keyword_Q(obj MalType) bool {
+ if obj == nil { return false }
+ switch s := obj.(type) {
+ case string: return strings.HasPrefix(s, "\u029e")
+ default: return false
+ }
+}
+
+
// Strings
func String_Q(obj MalType) bool {
if obj == nil { return false }