My other post was posted in the hope that it might shed some light on the
following problem: I have some code which executes in the order I want on
CLISP. By breaking it out inside the CMUCL debugger, it works as I wish,
thus:
6] (DOLIST (PROMPT (PROMPTS THESCANNER))
(UNLESS (SHOWPROMPT PROMPT) (print "arg")))
I am WRAPPER! worship me!
Continue?y
I foo
[snipped...]
Continue?y
bar
Continue?y
NIL
However, when invoked as (wrapper) :
* (wrapper)
Please enter a value>
Continue?y
Continue?y
Continue?y
Continue?y
Continue?y
Continue?y
Continue?y
Continue?y
NAME: $MOOMIN
LABEL: I am the first textbox
foo
I am WRAPPER! worship me!I foofoofooMOOMINMOOMINfoobar
NIL
Code follows:
;;Showprompt - displays a prompt, returns t or nil to indicate user response
(defun showPrompt (text)
(princ text)
(y-or-n-p "Continue?"))
(defun Wrapper ()
(let ((theScanner (make-instance 'Scanner :file #P"wrapconf")))
(scan theScanner)
;(dolist (prompt (prompts theScanner))
; (unless (showPrompt prompt) (return-from wrapper "arg")) )
(DOLIST (PROMPT (PROMPTS THESCANNER))
(UNLESS (SHOWPROMPT PROMPT) (print "arg")))
(dolist (dialog (dialogs theScanner)) (display dialog))
))
(Note that these are intended to eventually display prompts etc. using a
gui).
Thanks in advance guys, and thanks for the input before - I know this is a
fairly substantial "Help! I'm crap" post.