diff options
Diffstat (limited to 'modules/language/python/exceptions.scm')
-rw-r--r-- | modules/language/python/exceptions.scm | 33 |
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__)))))) + + + + + |