PasteRack.org
Paste # 77933
2017-03-08 13:55:49

Forked from paste # 89138.

Fork as a new paste.

Paste viewed 144 times.


Embed:

  1. #lang racket/base
  2.  
  3. (module create racket/base
  4.   (require (for-syntax racket/base
  5.                        syntax/parse))
  6.  
  7.   (define-syntax (create stx)
  8.     (define (identifier->keyword id)
  9.       (datum->syntax id (string->keyword (symbol->string (syntax-e id))) id id))
  10.  
  11.     (define-syntax-class param
  12.       (pattern name:id
  13.                #:with name-kw (identifier->keyword #'name)
  14.                #:with (param ...) #'(name-kw name)))
  15.  
  16.     (syntax-parse stx
  17.       [(_ n (p:param ...))
  18.        (quasisyntax/loc stx
  19.          (define-values (zxcv n)
  20.            (values
  21.             1
  22.             #,(syntax/loc stx
  23.                 (lambda (p.param ... ...)
  24.                   '[a b c])))))]))
  25.   (provide create))
  26.  
  27.  
  28. (module use racket/base
  29.   (require (submod ".." create))
  30.   (create asdf (a b))
  31.   (asdf ))
  32.  
  33. (require 'use)

=>