Commits

Jürgen Bömmels committed 85cd073

Added a bush of TypePredicates

Comments (0)

Files changed (1)

scheme/procedure.py

 import py
 from scheme.object import W_Root, W_Boolean, W_Pair, W_Symbol, \
-        W_Number, W_Real, W_Integer, W_List, \
+        W_Number, W_Real, W_Integer, W_List, W_Character, W_Vector, \
         Body, W_Procedure, W_Promise, plst2lst, w_undefined, \
-        SchemeSyntaxError, SchemeQuit, WrongArgType, WrongArgsNumber
+        SchemeSyntaxError, SchemeQuit, WrongArgType, WrongArgsNumber, \
+        w_nil
 
 ##
 # operations
     def predicate(self, w_obj):
         return isinstance(w_obj, W_Symbol)
 
+class StringP(TypePredicate):
+    _symbol_name = "string?"
+
+    def predicate(self, w_obj):
+        return isinstance(w_obj, W_String)
+
 class PairP(TypePredicate):
     _symbol_name = "pair?"
 
     def predicate(self, w_obj):
         return isinstance(w_obj, W_Procedure)
 
+class CharP(TypePredicate):
+    _symbol_name = "char?"
+
+    def predicate(self, w_obj):
+        return isinstance(w_obj, W_Character)
+
+class VectorP(TypePredicate):
+    _symbol_name = "vector?"
+
+    def predicate(self, w_obj):
+        return isinstance(w_obj, W_Vector)
+
+class NullP(TypePredicate):
+    _symbol_name = "null?"
+
+    def predicate(self, w_obj):
+        return w_obj is w_nil
+
 ##
 # Input/Output procedures
 ##