Hi, I'm studying the last chapter of "Notes from the Metalevel" and I am getting some errors...<br><br>In chapter 20, when I try to evaluate the lines<br><br>"<br>(new heap :of (list (new cycle :of 'q :for 3)
<br> (new palindrome :of '(e. s e))<br> (new random :of '(h w h.) :for 1)))<br>"<br><br>I get:<br><br><br><br>"<br>There is no class named RANDOM.<br> [Condition of type SIMPLE-ERROR]
<br><br>Restarts:<br> 0: [ABORT-REQUEST] Abort handling SLIME request.<br> 1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "worker" {B96CB41}>)<br><br>Backtrace:<br> 0: (SB-PCL::FIND-CLASS-FROM-CELL RANDOM NIL T)
<br> 1: ((LAMBDA (#:WHOLE593 #:ENVIRONMENT594)) (NEW RANDOM :OF (QUOTE (H W H.)) :FOR 1) #<unavailable argument>)<br> 2: (MACROEXPAND-1 (NEW RANDOM :OF (QUOTE (H W H.)) :FOR 1) #<NULL-LEXENV>)<br> 3: (MACROEXPAND (NEW RANDOM :OF (QUOTE (H W H.)) :FOR 1) #<NULL-LEXENV>)
<br> 4: (SB-INT:SIMPLE-EVAL-IN-LEXENV (NEW RANDOM :OF (QUOTE (H W H.)) :FOR 1) #<NULL-LEXENV>)<br> 5: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LIST (NEW CYCLE :OF (QUOTE Q) :FOR 3) (NEW PALINDROME :OF (QUOTE #)) (NEW RANDOM :OF (QUOTE #) :FOR 1)) #<NULL-LEXENV>)
<br> 6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (NEW HEAP :OF (LIST (NEW CYCLE :OF # :FOR 3) (NEW PALINDROME :OF #) (NEW RANDOM :OF # :FOR 1))) #<NULL-LEXENV>)<br> 7: ((LAMBDA NIL))<br> 8: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-SYNTAX-HOOKS (T)) #<unused argument> #<unused argument> #<CLOSURE (LAMBDA NIL) {B939E65}>)
<br> --more--<br>"<br><br>and in chapter 24, when I try to evaluate the CMN example<br><br>"<br>(define (duet-cmn stf len nts)<br> (let ((nts (new heap :notes nts))<br> ;; choose quarter or two eighths<br>
(rhy (new random<br> :of `(1 ,(new cycle :of '(1/2 1/2))))))<br> (process while (< (now) len)<br> for n = (next nts)<br> for r = (next rhy)<br> output (new midi :time (now)
<br> :duration r<br> :keynum n<br> :channel stf) ; link to cmn staff<br> wait r)))"<br><br>I get:<br><br>"<br>; in: LAMBDA NIL<br>
; (CM:NEW RANDOM :OF `(,1 ,(CM:NEW CM:CYCLE :OF '(1/2 1/2))))<br>; <br>; caught ERROR:<br>; (in macroexpansion of (NEW RANDOM :OF ...))<br>; (hint: For more precise location, try *BREAK-ON-SIGNALS*.)<br>; There is no class named RANDOM.
<br><br>; (LET ((CM::NTS (CM:NEW CM:HEAP :NOTES CM::NTS))<br>; (CM::RHY (CM:NEW RANDOM :OF `(,1 ,#))))<br>; (CM:PROCESS CM::WHILE (< (CM:NOW) CM::LEN) CM::FOR CM::N =<br>; (CM:NEXT CM::NTS) CM::FOR CM::R = (CM:NEXT CM::RHY) CM:OUTPUT
<br>; ...))<br>; <br>; note: deleting unreachable code<br>; <br>; note: deleting unreachable code<br>; <br>; compilation unit finished<br>; caught 1 ERROR condition<br>; printed 2 notes<br>"<br> it seems to be the same error but as I am a newbie I have no idea about what is wrong...
<br>Tx if anyone can help,<br>José H. Padovani<br>