[pypy-commit] lang-scheme default: Added a bush of TypePredicates

boemmels noreply at buildbot.pypy.org
Mon Nov 28 00:38:30 CET 2011


Author: Juergen Boemmels <boemmels at web.de>
Branch: 
Changeset: r18:85cd07336233
Date: 2011-11-27 19:20 +0100
http://bitbucket.org/pypy/lang-scheme/changeset/85cd07336233/

Log:	Added a bush of TypePredicates

diff --git a/scheme/procedure.py b/scheme/procedure.py
--- a/scheme/procedure.py
+++ b/scheme/procedure.py
@@ -1,8 +1,9 @@
 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
@@ -342,6 +343,12 @@
     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?"
 
@@ -354,6 +361,24 @@
     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
 ##


More information about the pypy-commit mailing list