Advertisement
triclops200

STML base

Jan 18th, 2013
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.88 KB | None | 0 0
  1. (define fold
  2.   (lambda xs
  3.     (if (= (length xs) 2)
  4.         (fold_h (car xs) (car (car (cdr xs))) (cdr (car (cdr xs))))
  5.         (apply fold_h xs))))
  6. (define map-reduce
  7.   (lambda (f b xs)
  8.     (fold b (map f xs))))
  9. (define (key-value->string pair)
  10.   (string-append
  11.    (symbol->string (car pair))
  12.    "=\""
  13.    (car (cdr pair))
  14.    "\" "))
  15. (define-syntax define-tag
  16.   (syntax-rules ()
  17.     ((_ tag)
  18.      (define-syntax tag
  19.        (syntax-rules ()
  20.          (('tag ((KEY value) (... ...)) expr* (... ...))
  21.           (string-append
  22.            "<" (symbol->string 'tag) " "
  23.            (map-reduce key-value->string string-append (list '(KEY value) (... ...)))
  24.            ">\n"
  25.            (string-append expr* (... ...))
  26.            "</" (symbol->string 'tag) ">\n"
  27.            ))
  28.          (('tag expr* (... ...))
  29.           (string-append
  30.            "<" (symbol->string 'tag) ">\n"
  31.            (string-append expr* (... ...))
  32.            "</" (symbol->string 'tag) ">\n")))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement