开发者

Syntax Error in Common Lisp Loop facility

This refuses to compile. Commenting out the (setf roll line lets it compile. However, (setf roll... itself evaluates correctly in the REPL.

Program:

;; 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_h开发者_如何转开发ash table 6))))

Message:

*** - LOOP: illegal syntax near (SETF ROLL (ROLLD6)) in (LOOP FOR I FROM 1 TO N (SETF ROLL (ROLLD6)))


The loop macro requires "do" before the loop body. You have

(loop for i from 1 to n
   (stuff)

and you need

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜