PasteRack.org
Paste # 89138
2017-03-08 13:27:10

Fork as a new paste.

Paste viewed 167 times.


Embed:

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

=>