[CM] process bug in common music

Orm Finnendahl orm.finnendahl at selma.hfmdk-frankfurt.de
Mon Jan 23 15:07:10 PST 2017


Hi list,

 working with common music 2 it seems I stumbled across a bug in the
process macro today. Trying the same with cm3 seems to indicate the
bug hasn't been discovered yet (see below).

I fixed it in the common lisp part of the cm2 source. It is related to
wrong handling and positioning of the iteration clauses in the process
macro expansion. In case you're interested contact me and I can
provide information how to fix the bug (the fix should easily be
adoptable to the current cm3).

In case you want to see the differences I applied today, just checkout
cm-incudine at github (userid: ormf).

--
Orm

this works:

sprout
 (process
   for a in '(0 1 2)
   for b = a
   do (display (format "a: ~a, b: ~a~%" a b))))

-> a: 0, b: 0
   a: 1, b: 1
   a: 2, b: 2

This doesn't work as expected:

(sprout
 (process
   for a in '(0 1 2)
   for b = a then (+ a 1)
   do (display (format "a: ~a, b: ~a~%" a b))))

-> a: 0, b: #f
   a: 1, b: 1
   a: 2, b: 2

(sprout
 (process
   for a in '(0 1 2)
   for b = a then (+ b 1)
   do (display (format "a: ~a, b: ~a~%" a b))))

-> a: 0, b: #f
-> Error: + argument 1, #f, is boolean but should be a number(+ b 1)                                           ; b: #f


More information about the Cmdist mailing list