2010-02-21 2 views
4

Это отказывается компилировать. Комментирование строки (setf roll позволяет скомпилировать ее. Однако (setf roll... сам правильно оценивает REPL.Ошибка синтаксиса в общем цикле Lisp Loop

Программа:

;; loop n times 
; sum up number of hits over value v 
(defun num-hits (n v) 
    (let 
    ((roll) 
     (table)) 
    (setq table (make-hash-table)) 
    ;;until i == n 
    (loop for i from 1 to n 
     (setf roll (rolld6)) 
;  (if (nilp (view_hash table)) 
;   (oxuassign_hash table roll 1) 
;  (assign_hash table (+ 1 (view_hash table roll)))) 
    ) 
    (+ (view_hash table 5) (view_hash table 6)))) 

Сообщение:

макро
*** - LOOP: illegal syntax near (SETF ROLL (ROLLD6)) in (LOOP FOR I FROM 1 TO N (SETF ROLL (ROLLD6))) 

ответ

8

Петля требует "делать" перед телом цикла. У вас есть

(loop for i from 1 to n 
    (stuff) 

и вам нужно

(loop for i from 1 to n do 
    (stuff)) 
+0

Durp. Спасибо чувак! –

Смежные вопросы