Advertisement
Guest User

bitmatch syntax

a guest
Feb 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.47 KB | None | 0 0
  1. (use srfi-1)
  2.  
  3. (define-syntax bit-syntax
  4.   (syntax-rules (match)
  5.     ((_ x) `((rest ,x)))
  6.     ((_ x (match n l) z ...)
  7.      (let-values (((left right) (split-at x l)))
  8.        (cons (cons (quote n) left)
  9.              (bit-syntax right z ...))))
  10.     ((_ x y z ...) (and (= (car x) y) `(rest ,(cdr x))
  11.                         (bit-syntax (cdr x) z ...)))))
  12.  
  13.  
  14. ;; input
  15. (bit-syntax '(0 1 2 4 5 6 7) (match x 1) 1 2 (match y 2))
  16.  
  17. ;; output
  18. ((x 0) (y 4 5) (rest (6 7)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement