Changeset 13762 in project


Ignore:
Timestamp:
03/14/09 21:31:58 (11 years ago)
Author:
Kon Lovett
Message:

Experimental macros for many-arg routines.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/err5rs-arithmetic/trunk/err5rs-arithmetic-fixnums.scm

    r13716 r13762  
    168168  fxpow2log2
    169169  fx=?# fx<?# fx>?# fx<=?# fx>=?#
    170   fx-# fx+# fx*# fx/#)
     170  fx-# fx+# fx*# fx/#
     171  *fx=
     172  *fx<
     173  *fx>
     174  *fx>=
     175  *fx<=
     176  *fx+
     177  *fx-
     178  *fx*
     179  *fx/)
    171180
    172181(import scheme
     
    515524;;
    516525
     526(define-syntax fx=?#
     527  (syntax-rules ()
     528    ((_ ?x)
     529      #t )
     530    ((_ ?x ?y)
     531      (*fx= ?x ?y) )
     532    ((_ ?x ?y ?rest ...)
     533      (and (*fx= ?x ?y) (fx=?# ?y ?rest ...)) ) ) )
     534
     535(define-syntax fx<?#
     536  (syntax-rules ()
     537    ((_ ?x)
     538      #t )
     539    ((_ ?x ?y)
     540      (*fx< ?x ?y) )
     541    ((_ ?x ?y ?rest ...)
     542      (and (*fx< ?x ?y) (fx<?# ?y ?rest ...)) ) ) )
     543
     544(define-syntax fx>?#
     545  (syntax-rules ()
     546    ((_ ?x)
     547      #t )
     548    ((_ ?x ?y)
     549      (*fx> ?x ?y) )
     550    ((_ ?x ?y ?rest ...)
     551      (and (*fx> ?x ?y) (fx>?# ?y ?rest ...)) ) ) )
     552
     553(define-syntax fx<=?#
     554  (syntax-rules ()
     555    ((_ ?x)
     556      #t )
     557    ((_ ?x ?y)
     558      (*fx<= ?x ?y) )
     559    ((_ ?x ?y ?rest ...)
     560      (and (*fx<= ?x ?y) (fx<=?# ?y ?rest ...)) ) ) )
     561
     562(define-syntax fx>=?#
     563  (syntax-rules ()
     564    ((_ ?x)
     565      #t )
     566    ((_ ?x ?y)
     567      (*fx>= ?x ?y) )
     568    ((_ ?x ?y ?rest ...)
     569      (and (*fx>= ?x ?y) (fx>=?# ?y ?rest ...)) ) ) )
     570
     571;;
     572
     573(define-syntax fx-#
     574  (syntax-rules ()
     575    ((_ ?x)
     576      (*fxneg ?x) )
     577    ((_ ?x ?y)
     578      (*fx- ?x ?y) )
     579    ((_ ?x ?y ?rest ...)
     580      (*fx- ?x (fx-# ?y ?rest ...) ) ) ) )
     581
     582(define-syntax fx+#
     583  (syntax-rules ()
     584    ((_ ?x)
     585      ?x )
     586    ((_ ?x ?y)
     587      (*fx+ ?x ?y) )
     588    ((_ ?x ?y ?rest ...)
     589      (*fx+ ?x (fx+# ?y ?rest ...) ) ) ) )
     590
     591(define-syntax fx*#
     592  (syntax-rules ()
     593    ((_ ?x)
     594      ?x )
     595    ((_ ?x ?y)
     596      (*fx* ?x ?y) )
     597    ((_ ?x ?y ?rest ...)
     598      (*fx* ?x (fx*# ?y ?rest ...) ) ) ) )
     599
     600(define-syntax fx/#
     601  (syntax-rules ()
     602    ((_ ?x)
     603      ?x )
     604    ((_ ?x ?y)
     605      (*fx/ ?x ?y) )
     606    ((_ ?x ?y ?rest ...)
     607      (*fx/ ?x (fx/# ?y ?rest ...) ) ) ) )
     608
     609#|
     610;;
     611
    517612(define (fx=?# fx . fxs)
    518613  (%check-fixnum 'fx=?# fx)
     
    570665        ((%null? (%cdr fxs))  (%fx/ fx (%car fxs)))
    571666        (else                 (%fxfold 'fx/# *fx/ fx fxs) ) ) )
     667|#
    572668
    573669) ;module err5rs-arithmetic-fixnums
Note: See TracChangeset for help on using the changeset viewer.