Jürgen Bömmels avatar 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
 ##
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.