;;; -*- Mode: Lisp; Syntax: Common-Lisp; Base: 10; Package: USER -*-

(in-package "USER")

(export '(
	  )
	(find-package "USER"))


(defvar *learner* "learner")
(defvar *childes-generator* "childes-generator")
(defvar *phonetics* "childes-sentences-phonetics")
(defvar *semantics* "childes-sentences-semantics")
(defvar *semantic-dictionary* "childes-semantic-dictionary")

(defvar *learning-dictionary*)
(defvar *utterance-number*)

(defun load-system ()
  (load *learner*)
  (load *childes-generator*)
  (load-childes-data)
)

(defun run-test ()
  (prepare-for-test)
  (dotimes (i *number-of-childes-sentences*)
    (process-next-utterance)))

(defun prepare-for-test ()
  (setf *learning-dictionary* (make-dictionary)
	*utterance-number* 0)
  (values)
  )

(defun process-next-utterance (&key (spaces 0.0)
				    (print-level :basic)
				    (print-every 50))
  (multiple-value-bind (utterance-phoneme-sequence utterance-sememe-set)
      (generate-childes-sentence :spaces spaces)
    (let ((utterance (create-utterance utterance-phoneme-sequence
				       utterance-sememe-set))
	  (print? (or (eq print-every T)
		      (and print-every (zerop (mod (incf *utterance-number*) print-every))))))
      (when print? (format t "~%~%****** ~D" *utterance-number*))
      (process-utterance utterance
			 *learning-dictionary*
			 (and print? print-level)
			 *utterance-number*)))
  (values))

(defun test-utterance (phonetic-sequence sememe-set)
  (process-utterance (create-utterance phonetic-sequence sememe-set)
		     *learning-dictionary*
		     T
		     0)
  (values))

(load-system)
