Custom Query (1630 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (73 - 75 of 1630)

Ticket Resolution Summary Owner Reporter
#238 fixed 4.5.0 post-release maintenance felix winkelmann felix winkelmann
Description
  • sync wiki and core manual
  • merge future branch into master (4.5.1)
  • bump version of experimental (4.5.2)
#235 fixed > < >= <= = 2-arg compiler rewrites are broken felix winkelmann Jim Ursetto
Description

The implementation of C_i_greaterp does not throw an error when the first argument is not a number.

See example at http://paste.lisp.org/display/99206

I believe this is because it does not check the argument type of x, only y. Instead if x is not a fixnum or flonum, C_i_greaterp just returns #f.

In other words it is missing: else barf(C_BAD_ARGUMENT_TYPE_ERROR, ">", x);

I also believe C_i_nequalp, C_i_greaterp, C_i_lessp, C_i_greater_or_equalp, C_i_less_or_equalp are all affected.

#1362 fixed A case when composing with ir-macro-transformer megane
Description

I ran into this unexpected behaviour when using ir macros in ir macros. I don't think this should happen:

(I have tested this with 4.12, not with 5. )

First macro:

(define-syntax bind-pair
  (ir-macro-transformer
   (lambda (e i c)
     (let* ((b (second e))
            (exp (third e))
            (body (drop e 3)))
       `(let* ((x ,exp)
               (,(first b) (car x))
               (,(second b) (cdr x)))
          ,@body)))))

Testing:

 (bind-pair (x y) (cons 1 2) (print y))
 
 => prints 2

Now a second macro using bind-pair:

 (define-syntax foo
   (ir-macro-transformer
    (lambda (e i c)
      `(bind-pair (x y) (cons 'foo-car 'b) (print y)))))

Running (foo) gives the error:

Error: (cdr) bad argument type: foo-car

The expansion of (foo) looks like this:

 ;; (##core#let
 ;;   ((x40 (cons42 (quote43 foo-car44) (quote43 b45))))
 ;;   (##core#let
 ;;     ((x40 (car48 x40)))
 ;;     (##core#let ((y41 (cdr49 x40))) (##core#let () (print46 y41)))))

As you can see, the x in bind-pair and foo macros refer to the same variable in the expansion. You can confirm this happens by changing the x in foo to, say z.

Note: See TracQuery for help on using queries.