level 3
贴吧用户_079EVtt
楼主
有时候简单运算sexp还是有点难读,写了个宏可以以日常方式写算术表达式。(支持变量)
形如(ca 1 + 2 +(3 * 5 (+ 1 17)* 3))
下载
网盘链接
(好吧我承认由于空格要求严格的原因只是可读性好实际上不好写。。。)
----什么烂排版
(define-syntax ca (syntax-rules () ( (ca tail ...) (caa () tail ...))))(define-syntax caa (syntax-rules () ((caa (list ...)(list2 ...) tail ...) (caa (list ... (ca list2 ...))tail ...)) ((caa (list ...)atom tail ...) (caa (list ... atom)tail ...)) ((caa (list ...)) (cab () list ...))))(define-syntax cab (syntax-rules (* /) ((cab (list ...)atom1 * atom2 tail ...) (cab (list ...)(* atom1 atom2) tail ...)) ((cab (list ...)atom1 / atom2 tail ...) (cab (list ...)(/ atom1 atom2) tail ...)) ((cab (list ...) atom other tail ...) (cab (list ... atom other)tail ...)) ((cab (list ...)end) (cac list ... end))))(define-syntax cac (syntax-rules (+ -) ((cac a1 + a2 tail ...) (cac (+ a1 a2)tail ...)) ((cac a1 - a2 tail ...) (cac (- a1 a2)tail ...)) ((cac (list ...)) (list ...)) ((cac divnum)(quote divnum))))
2013年09月06日 11点09分
1
形如(ca 1 + 2 +(3 * 5 (+ 1 17)* 3))
下载
网盘链接
(好吧我承认由于空格要求严格的原因只是可读性好实际上不好写。。。)
----什么烂排版
(define-syntax ca (syntax-rules () ( (ca tail ...) (caa () tail ...))))(define-syntax caa (syntax-rules () ((caa (list ...)(list2 ...) tail ...) (caa (list ... (ca list2 ...))tail ...)) ((caa (list ...)atom tail ...) (caa (list ... atom)tail ...)) ((caa (list ...)) (cab () list ...))))(define-syntax cab (syntax-rules (* /) ((cab (list ...)atom1 * atom2 tail ...) (cab (list ...)(* atom1 atom2) tail ...)) ((cab (list ...)atom1 / atom2 tail ...) (cab (list ...)(/ atom1 atom2) tail ...)) ((cab (list ...) atom other tail ...) (cab (list ... atom other)tail ...)) ((cab (list ...)end) (cac list ... end))))(define-syntax cac (syntax-rules (+ -) ((cac a1 + a2 tail ...) (cac (+ a1 a2)tail ...)) ((cac a1 - a2 tail ...) (cac (- a1 a2)tail ...)) ((cac (list ...)) (list ...)) ((cac divnum)(quote divnum))))