Changeset 40135 in project


Ignore:
Timestamp:
05/24/21 22:42:19 (3 weeks ago)
Author:
Idiomdrottning
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • wiki/eggref/5/call-table-generics

    r40127 r40135  
    1 
    21== call-table-generics
    32[[toc:]]
     
    3332 (define-for-syntax gentable (call-table*))
    3433 (define-ir-syntax*
    35    define-generic
    36    ((define-generic (name . preds+bindings) . body)
    37     (gentable (strip-syntax name) (cons preds+bindings body))
    38     (let ((bindings (map (lambda (a) (if (pair? a) (cadr a) a)) preds+bindings)))
    39       `(define (,name ,@bindings)
    40      (cond ,@(map (lambda (el)
    41                     (cons
    42                      (let ((clause (car el)))
    43                        (if (< 1 (length clause))
    44                            (cons 'and clause)
    45                            (car clause)))
    46                      (cdr el)))
    47                   (gentable (strip-syntax name)))))))))
     34   (define-generic (name . preds+bindings) . body)
     35   (gentable (strip-syntax name) (cons preds+bindings body))
     36   (let ((bindings (map (lambda (a) (if (pair? a) (cadr a) a)) preds+bindings)))
     37     `(define (,name ,@bindings)
     38    (cond ,@(map (lambda (el)
     39                   (cons
     40                    (let ((clause (car el)))
     41                      (if (< 1 (length clause))
     42                          (cons 'and clause)
     43                          (car clause)))
     44                    (cdr el)))
     45                 (gentable (strip-syntax name)))))))))
    4846
    4947Or for a repo,
Note: See TracChangeset for help on using the changeset viewer.