summaryrefslogtreecommitdiff
path: root/modules/language/python/exceptions.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/exceptions.scm')
-rw-r--r--modules/language/python/exceptions.scm33
1 files changed, 33 insertions, 0 deletions
diff --git a/modules/language/python/exceptions.scm b/modules/language/python/exceptions.scm
new file mode 100644
index 0000000..57690aa
--- /dev/null
+++ b/modules/language/python/exceptions.scm
@@ -0,0 +1,33 @@
+(define-module (language python exceptions)
+ #:use-module (oop pf-objects)
+ #:use-module (oop goops)
+ #:export (StopIteration GeneratorExit RuntimeError
+ Exception))
+
+(define-syntax-rule (aif it p x y) (let ((it p)) (if it x y)))
+
+(define StopIteration 'StopIteration)
+(define GeneratorExit 'GeneratorExit)
+(define RuntimeError 'RuntimeError)
+
+(define-python-class Exception ()
+ (define __init__
+ (case-lambda
+ ((self)
+ (values))
+ ((self str)
+ (set self 'str str))))
+
+ (define __repr__
+ (lambda (self . l)
+ (define port (if (pair? l) (car l) #f))
+ (aif it (ref self 'str)
+ (format port "~s: ~a"
+ (ref self '__name__) it)
+ (format port "~s"
+ (ref self '__name__))))))
+
+
+
+
+