Last active
August 29, 2015 14:27
-
-
Save SaitoAtsushi/5e47c3562e0ac7ccc9b0 to your computer and use it in GitHub Desktop.
Error sample for Sagittarius 0.6.6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(define-library (pandoric) | |
(export define-pandoric-procedure pandoric-ref pandoric-set!) | |
(import (scheme base)) | |
(begin | |
(define-syntax flag-a (syntax-rules ())) | |
(define-syntax flag-m (syntax-rules ())) | |
(define-syntax %dpp | |
(syntax-rules () | |
((_ name (var ...) (form ...) () () | |
(a ...) (m ...) args body0 body1 ...) | |
(begin | |
(define-values | |
(a ... m ... temp) | |
(let ((var form) ...) | |
(values | |
(lambda() var) ... | |
(lambda(n) (set! var n)) ... | |
(lambda args body0 body1 ...)))) | |
(define-syntax name | |
(syntax-rules (flag-a flag-m var ...) | |
((_ flag-a var) a) ... | |
((_ flag-m var) m) ... | |
((_ . n) (temp . n)))))) | |
((_ name (var ...) (form ...) (v vs ...) (f fs ...) | |
(a ...) (m ...) args body0 body1 ...) | |
(%dpp name (var ...) (form ...) (vs ...) (fs ...) | |
(a ... t1) (m ... t2) args body0 body1 ...)))) | |
(define-syntax define-pandoric-procedure | |
(syntax-rules () | |
((_ name ((var form) ...) args body0 body1 ...) | |
(%dpp name (var ...) (form ...) (var ...) (form ...) | |
() () args body0 body1 ...)))) | |
(define-syntax pandoric-ref | |
(syntax-rules () | |
((_ pandora var) ((pandora flag-a var))))) | |
(define-syntax pandoric-set! | |
(syntax-rules () | |
((_ pandora var obj) ((pandora flag-m var)obj)))) | |
)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(import (scheme base) (scheme write) (pandoric)) | |
(define-pandoric-procedure pandtest ((acc 0)) (n) | |
(set! acc (+ n acc)) | |
acc) | |
(display (pandtest 1)) | |
(display (pandtest 2)) | |
(display (pandoric-ref pandtest acc)) | |
(pandoric-set! pandtest acc 0) | |
(display (pandtest 1)) | |
(display (pandoric-ref pandtest acc)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment