Changeset 33780 in project for release


Ignore:
Timestamp:
01/01/17 16:32:51 (2 years ago)
Author:
juergen
Message:

simple-exceptions 0.3.1 with procedures << and >>

Location:
release/4/simple-exceptions
Files:
2 edited
4 copied

Legend:

Unmodified
Added
Removed
  • release/4/simple-exceptions/tags/0.3.1/simple-exceptions.scm

    r33774 r33780  
    33ju (at) jugilo (dot) de
    44
    5 Copyright (c) 2014-2016, Juergen Lorenz
     5Copyright (c) 2014-2017, Juergen Lorenz
    66All rights reserved.
    77
     
    9595;;; (<< x x? ...)
    9696;;; -------------
    97 ;;; pass in checked arguments in an and fashion
    98 (define-syntax <<
    99   (ir-macro-transformer
    100     (lambda (form inject compare?)
    101       (let ((x (cadr form)) (checks (cddr form)))
    102         `(let ((arg ,x) (all-names ',checks))
    103            (let loop ((checks ,(cons 'list checks)) (names ',checks))
    104              (cond
    105                ((null? checks) arg) ; passed on success
    106                (((car checks) arg)
    107                 (loop (cdr checks) (cdr names)))
    108                (else
    109                  (raise (pre-exception '<<
    110                                         arg
    111                                         all-names
    112                                         (car names)))))))))))
     97;;; pass in a checked argument in an and fashion
     98(define (<< x . preds)
     99  (let loop ((preds preds))
     100    (cond
     101      ((null? preds)
     102       x)
     103      (((car preds) x)
     104       (loop (cdr preds)))
     105      (else
     106        (raise (pre-exception '<< x (car preds)))))))
     107;(define-syntax <<
     108;  (ir-macro-transformer
     109;    (lambda (form inject compare?)
     110;      (let ((x (cadr form)) (checks (cddr form)))
     111;        `(let ((arg ,x) (all-names ',checks))
     112;           (let loop ((checks ,(cons 'list checks)) (names ',checks))
     113;             (cond
     114;               ((null? checks) arg) ; passed on success
     115;               (((car checks) arg)
     116;                (loop (cdr checks) (cdr names)))
     117;               (else
     118;                 (raise (pre-exception '<<
     119;                                        arg
     120;                                        all-names
     121;                                        (car names)))))))))))
    113122
    114123;;; (>> x x? ...)
    115124;;; -------------
    116 ;;; pass out checked returns in an and fashion
    117 (define-syntax >>
    118   (ir-macro-transformer
    119     (lambda (form inject compare?)
    120       (let ((x (cadr form)) (checks (cddr form)))
    121         `(let ((return ,x) (all-names ',checks))
    122            (let loop ((checks ,(cons 'list checks)) (names ',checks))
    123              (cond
    124                ((null? checks) return) ; passed on success
    125                (((car checks) return)
    126                 (loop (cdr checks) (cdr names)))
    127                (else
    128                  (raise (post-exception '>>
    129                                         return
    130                                         all-names
    131                                         (car names)))))))))))
     125;;; pass out a checked result in an and fashion
     126(define (>> x . preds)
     127  (let loop ((preds preds))
     128    (cond
     129      ((null? preds)
     130       x)
     131      (((car preds) x)
     132       (loop (cdr preds)))
     133      (else
     134        (raise (post-exception '>> x (car preds)))))))
     135;(define-syntax >>
     136;  (ir-macro-transformer
     137;    (lambda (form inject compare?)
     138;      (let ((x (cadr form)) (checks (cddr form)))
     139;        `(let ((return ,x) (all-names ',checks))
     140;           (let loop ((checks ,(cons 'list checks)) (names ',checks))
     141;             (cond
     142;               ((null? checks) return) ; passed on success
     143;               (((car checks) return)
     144;                (loop (cdr checks) (cdr names)))
     145;               (else
     146;                 (raise (post-exception '>>
     147;                                        return
     148;                                        all-names
     149;                                        (car names)))))))))))
    132150
    133151;;; (guard (exn cond-clause . cond-clauses) xpr . xprs)
     
    280298      "reexport of Chicken's macro")
    281299    (<<
    282       macro:
     300      procedure:
    283301      (<< x x? ...)
    284302      "precondition test"
    285303      "passes x unchanged only if all predicates x? return #t on it")
    286304    (>>
    287       macro:
     305      procedure:
    288306      (>> x x? ...)
    289307      "postcondition test"
  • release/4/simple-exceptions/tags/0.3.1/simple-exceptions.setup

    r33774 r33780  
    77 'simple-exceptions
    88 '("simple-exceptions.so" "simple-exceptions.import.so")
    9  '((version "0.3")))
     9 '((version "0.3.1")))
  • release/4/simple-exceptions/trunk/simple-exceptions.scm

    r33774 r33780  
    33ju (at) jugilo (dot) de
    44
    5 Copyright (c) 2014-2016, Juergen Lorenz
     5Copyright (c) 2014-2017, Juergen Lorenz
    66All rights reserved.
    77
     
    9595;;; (<< x x? ...)
    9696;;; -------------
    97 ;;; pass in checked arguments in an and fashion
    98 (define-syntax <<
    99   (ir-macro-transformer
    100     (lambda (form inject compare?)
    101       (let ((x (cadr form)) (checks (cddr form)))
    102         `(let ((arg ,x) (all-names ',checks))
    103            (let loop ((checks ,(cons 'list checks)) (names ',checks))
    104              (cond
    105                ((null? checks) arg) ; passed on success
    106                (((car checks) arg)
    107                 (loop (cdr checks) (cdr names)))
    108                (else
    109                  (raise (pre-exception '<<
    110                                         arg
    111                                         all-names
    112                                         (car names)))))))))))
     97;;; pass in a checked argument in an and fashion
     98(define (<< x . preds)
     99  (let loop ((preds preds))
     100    (cond
     101      ((null? preds)
     102       x)
     103      (((car preds) x)
     104       (loop (cdr preds)))
     105      (else
     106        (raise (pre-exception '<< x (car preds)))))))
     107;(define-syntax <<
     108;  (ir-macro-transformer
     109;    (lambda (form inject compare?)
     110;      (let ((x (cadr form)) (checks (cddr form)))
     111;        `(let ((arg ,x) (all-names ',checks))
     112;           (let loop ((checks ,(cons 'list checks)) (names ',checks))
     113;             (cond
     114;               ((null? checks) arg) ; passed on success
     115;               (((car checks) arg)
     116;                (loop (cdr checks) (cdr names)))
     117;               (else
     118;                 (raise (pre-exception '<<
     119;                                        arg
     120;                                        all-names
     121;                                        (car names)))))))))))
    113122
    114123;;; (>> x x? ...)
    115124;;; -------------
    116 ;;; pass out checked returns in an and fashion
    117 (define-syntax >>
    118   (ir-macro-transformer
    119     (lambda (form inject compare?)
    120       (let ((x (cadr form)) (checks (cddr form)))
    121         `(let ((return ,x) (all-names ',checks))
    122            (let loop ((checks ,(cons 'list checks)) (names ',checks))
    123              (cond
    124                ((null? checks) return) ; passed on success
    125                (((car checks) return)
    126                 (loop (cdr checks) (cdr names)))
    127                (else
    128                  (raise (post-exception '>>
    129                                         return
    130                                         all-names
    131                                         (car names)))))))))))
     125;;; pass out a checked result in an and fashion
     126(define (>> x . preds)
     127  (let loop ((preds preds))
     128    (cond
     129      ((null? preds)
     130       x)
     131      (((car preds) x)
     132       (loop (cdr preds)))
     133      (else
     134        (raise (post-exception '>> x (car preds)))))))
     135;(define-syntax >>
     136;  (ir-macro-transformer
     137;    (lambda (form inject compare?)
     138;      (let ((x (cadr form)) (checks (cddr form)))
     139;        `(let ((return ,x) (all-names ',checks))
     140;           (let loop ((checks ,(cons 'list checks)) (names ',checks))
     141;             (cond
     142;               ((null? checks) return) ; passed on success
     143;               (((car checks) return)
     144;                (loop (cdr checks) (cdr names)))
     145;               (else
     146;                 (raise (post-exception '>>
     147;                                        return
     148;                                        all-names
     149;                                        (car names)))))))))))
    132150
    133151;;; (guard (exn cond-clause . cond-clauses) xpr . xprs)
     
    280298      "reexport of Chicken's macro")
    281299    (<<
    282       macro:
     300      procedure:
    283301      (<< x x? ...)
    284302      "precondition test"
    285303      "passes x unchanged only if all predicates x? return #t on it")
    286304    (>>
    287       macro:
     305      procedure:
    288306      (>> x x? ...)
    289307      "postcondition test"
  • release/4/simple-exceptions/trunk/simple-exceptions.setup

    r33774 r33780  
    77 'simple-exceptions
    88 '("simple-exceptions.so" "simple-exceptions.import.so")
    9  '((version "0.3")))
     9 '((version "0.3.1")))
Note: See TracChangeset for help on using the changeset viewer.