Advertisement
Guest User

Untitled

a guest
Aug 21st, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.98 KB | None | 0 0
  1. (define-module (guile compat))
  2.  
  3. (cond-expand
  4.  ((not guile-2)
  5.   ;;
  6.   ;; Code to backport selected features to 1.8 goes here:
  7.   ;;
  8.   (use-syntax (ice-9 syncase))
  9.  
  10.   ;;
  11.   ;; Thanks to taylanub at #guile:
  12.   ;;
  13.   (define-syntax define-syntax-rule
  14.     (syntax-rules ()
  15.       ((define-syntax-rule (keyword . pattern) template)
  16.        (define-syntax keyword
  17.          (syntax-rules ()
  18.            ((keyword . pattern) template))))))
  19.  
  20.   ;;
  21.   ;; Not in the define-module form:
  22.   ;;
  23.   (export-syntax define-syntax-rule)
  24.  
  25.   ;;
  26.   ;; Re-export all symbols from (ice-9 symcase). Credit to mark_weaver
  27.   ;; at #guile. Otherwise the importer of this module, (guile compat),
  28.   ;; still needs to explicitly import (ice-9 syncase) too in order for
  29.   ;; define-syntax-rule to work.
  30.   ;;
  31.   (let ((names (module-map (lambda (name var) name)
  32.                            (resolve-interface '(ice-9 syncase)))))
  33.     (module-re-export! (current-module) names)))
  34.  (else)
  35.  ;;
  36.  ;; Nothing here.
  37.  ;;
  38.  )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement