0
(defmethod! expand-t-setclass (pcset &optional (n 12))
:icon *PC_ICON*
:doc "
Given any member of a t-setclass, lists every member of that t-setclass.
The optional parameter N can be used to set the number of equal steps per
octave to something other than the default of 12.
Will tolerate integers out of the mod-N range in PCSET."
:initvals '((1 3 4) 12)
:indoc '("pcset or list of them"
"modulus of the pc space")
(if (listp (first pcset))
(expand-t-setclasses pcset)
(let ((t-prime (t-primeform pcset n)))
(loop with result = nil
repeat n
for x-pcset = pcset then (xpose x-pcset 1 n)
unless (member x-pcset result) collect x-pcset into result
finally return result))))
(defmethod! expand-t-setclasses (pcset &optional (n 12))
(loop for item in pcset collect (expand-t-setclass item n)))
;-----
私は一般的にはLispのとあまり慣れていないよ、このエラーcasuesバグ発見しようとしています:Lispヘルプ|エラー:重複がLOOPに結合:(結果)
ERROR:重複がLOOPに結合:(結果を)
返信いただきありがとうございます!私は他のどのような形をとっているのか知っていますか?私はまだ私の最初のエラーを正確に修正する方法があまりにも分かりません。 (これは、古いプログラムからのコードの古い部分であり、Iは、開発者に連絡することができない)私が入力しようとした –
:FOO =ゼロ と (ループ;結果で除去 リピートN X-pcset = pcset、次いで? (member x-pcset result)(push x-pcset foo) finally(return(reverse foo))))) しかし、LOOPキーワードは(。 –
私は単に "with foo = nil"を取り除いて収集を続けた場合、各ループでコンパイルすると毎回0で初期化されますか?ですから、私はその1行のコードを取り除いて問題を解決することができますか? –