나는 대부분의 표준에서 초보자 용 리스프 프로그래머이지만, 나는 내가하려고하는 것이 특히 복잡하고 그것이 왜 작동하지 않는지 이해하지 못한다고 느낀다.인턴을 사용하여 문자열을 기호로 변환하는 것이 오류를 반환하는 구조의 접근 함수입니까?
나는 시간이 지남에 따라 발생하는 이벤트의 데이터베이스를 만들려고하고 있으며 서로 관련되어 나타나는 방식에 따라 연결됩니다. 이 개념은 매우 실험적이며 피드백을 찾는 대상이 아닙니다.
아이디어는 이벤트에 대한 임의의 이름을 생성하는 것입니다 (프로그램의 기호로 불리는 나쁜 스타일, 나는 알고 있습니다). 이벤트의 임의 번호를 생성합니다 (시작 시간은 a 기간 및 이벤트가 다시 발생할 때까지 경과하는 기간). 그런 다음 임의의 수의 이벤트 유형과 각각의 무작위 수를 만든 후에는 목록에서 시간 순서대로 정리하고 싶습니다. 그러나 내가 만드는 이름이 생성되기 때문에 멀지는 않습니다. sym-appearance 액세스 함수에서 sym-aprs-h의 형식 오류입니다. 예상 된 타입의 sym이 아니라는 것을 알려주려고합니다. 그러나 run-sym-name에서 type-of를 호출하는 것과 같은 테스트를 실행할 때 심볼을 반환합니다. 그래서 나는 정말로 무슨 일이 일어나고 있는지 전혀 모른다.
(defun initialize()
(defvar *alphabet* '#(a b c d e f g h i j k l m n o p q r s t u v w x y z))
(defvar *symbol-names* nil)
(defvar *moment-chain* nil))
(defun ran-let()
(Coerce (aref *alphabet* (random 26)) 'character))
(defun ran-sym-name()
(intern (coerce (list (ran-let) (ran-let) (ran-let) (ran-let) (ran-let) (ran-let)) 'string)))
(defstruct sym
(name nil)
(appearances nil)
(connections nil))
(defun ran-sym-gen()
(let ((x (ran-sym-name)))
(cond ((member x *Symbol-names*) (ran-sym-gen))
(t (push x *Symbol-names*)(make-sym :name x)(sym-aprs x)))))
(defun sym-aprs-h (s tm n)
(let ((dr (+ 1 (random 7200))))
(cond ((= n 0) nil)
(t (push (list tm dr nil) (sym-appearances s)) (push (list tm dr s nil) *moment-chain*) (sym-aprs-h s (+ tm dr (random 14400)) (- n 1))))))
(defun sym-aprs (s)
(sym-aprs-h s (get-universal-time) (+ 1 (random 101))))
(defun mchain-org()
(sort *moment-chain* #'< :key #'car))
(defun mchain-con (n)
(cond ((= 0 n) nil)
(t (ran-sym-gen) (mchain-con (- n 1)))))
나는 언어에 새로 온 사람과 내가 처리 할 수있는 것보다 더 smidge에 복용하여 자신을 가르치는 말했듯이. 그러나 어떤 건설적인 비판도 인정 될 것입니다. 그러나 저는 주로 표정 오류가 형식 오류를 생성하지 않도록하는 것에 관심이 있습니다.
''defun ran-let() (Coerce (aref * alphabet * (임의의 26)) '))''과 관련하여 \ * 알파벳 \ *을 문자열로 만들어서 등장 인물? –
** "하지만 sym- appearance 액세서 함수에서 sym-aprs-h에 형식 오류를 생성하고 있기 때문에 이름이 잘못 작성되어 매우 멀리는 아닙니다. 예상되는 형식이 아님을 알려주려고합니다. sym,하지만 run-sym-name에 type-of를 호출하는 것과 같은 테스트를 실행하면 심볼이 반환되므로 실제로 무슨 일이 일어나는지 전혀 알지 못합니다. "** 스택 트레이스는 어떻게 생겼습니까? 오류를 표시하십시오. –