LINUX.ORG.RU

История изменений

Исправление silver-bullet-bfg, (текущая версия) :

Возникла такая проблема. Разбираю код, как работает:

(require
 (for-syntax
  "./core/src/application-server/src/calculated.rkt"))


(define-for-syntax (data colname)
  (let*
      ([config (database-config)]
       [collections (hash-ref config 'collections)]
       [string-key (syntax->datum colname)]
       [config (hash-ref collections (string->symbol string-key))]
       [fields (hash-ref config 'fields)])
    (cons string-key fields)))

(define-for-syntax (parse/build-cdr fields)
  (for/list
      ([(field-name config) (in-hash fields)])
    (cons field-name config)))

(define-for-syntax (parse data)
  (list (car data)
        (for/list ([(field-name args) (in-hash (cdr data))])
          (cons field-name (append 0)))))

(define-syntax (define/mongo-struct stx)
  (syntax-case stx ()
    [(_ VAR COLNAME)
     (with-syntax
       ([(NAME FIELDS)
         (datum->syntax stx (parse (data #'COLNAME)))])
       #'(define VAR FIELDS))]))

(define/mongo-struct t "points")

(displayln t)

Получаю ошибки:

/usr/local/share/racket/collects/racket/private/kw.rkt:1182:25: #%app: bad syntax
  in: (#%app y . 0)
...

Как такое можно полечить? З.Ы.: спасибо за подсказки огромное. Сейчас как раз разбираюсь и стараюсь модифицировать

Исходная версия silver-bullet-bfg, :

Возникла такая проблема. Разбираю код, как работает:

(require
 (for-syntax
  "./core/src/application-server/src/calculated.rkt"))


(define-for-syntax (data colname)
  (let*
      ([config (database-config)]
       [collections (hash-ref config 'collections)]
       [string-key (syntax->datum colname)]
       [config (hash-ref collections (string->symbol string-key))]
       [fields (hash-ref config 'fields)])
    (cons string-key fields)))

(define-for-syntax (parse/build-cdr fields)
  (for/list
      ([(field-name config) (in-hash fields)])
    (cons field-name config)))

(define-for-syntax (parse data)
  (list (car data)
        (for/list ([(field-name args) (in-hash (cdr data))])
          (cons field-name (append 0)))))

(define-syntax (define/mongo-struct stx)
  (syntax-case stx ()
    [(_ VAR COLNAME)
     (with-syntax
       ([(NAME FIELDS)
         (datum->syntax stx (parse (data #'COLNAME)))])
       #'(define VAR FIELDS))]))

(define/mongo-struct t "points")

(displayln t)

Получаю ошибки:

/usr/local/share/racket/collects/racket/private/kw.rkt:1182:25: #%app: bad syntax
  in: (#%app y . 0)
...

Как такое можно полечить?