Common Lisp程序错误

时间:2013-08-30 08:09:15

标签: random lisp common-lisp

这是代码:

 (defun my-random (max &optional least)
    (setf max (+ max 1))
    (if (null least)
        (random max)
        (if (numberp least)
            (if (numberp max)
                (let ((x (random (- max least))))
                    (+ x least))
                (format t "~%在my-random函数中发现错误: 第一个输入值不是一个数字!~%"))
            (format t "~%在my-random函数中发现错误: 第二个输入值不是一个数字!~%"))))

; my-random 100 1

(defun prozentual (probability command)
    (if (numberp probability)
        (if (listp command)
            (if (> 101 probability)
                (if (> probability (my-random 101 1))
                    command)
                (format t "~%在prozentual函数中发现错误: 概率不得多于100!~%))
            (format t "~%在prozentual函数中发现错误: 第二个参数不是一个命令!~%))
        (format t "~%在prozentual函数中发现错误: 第一个参数不是一个数字!~%)))

; prozentual 100(格式t“as”)

This is the Clozure Common Lisp Version 1.6 runs on the results:
? (load "mika.cl")
> Error: Reader error: Illegal symbol syntax.
> While executing: CCL::%PARSE-TOKEN, in process listener(1).
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
1 > (my-random 101 1)
61
1 > (my-random 101 100)
100
1 > (my-random 101 100)
100
1 > (my-random 101 100)
100
1 > (my-random 101 100)
100

现在“prozentual”功能无法使用..

1 个答案:

答案 0 :(得分:9)

你错过了format字符串末尾的双引号。

(defun prozentual (probability command)
    (if (numberp probability)
        (if (listp command)
            (if (> 101 probability)
                (if (> probability (my-random 101 1))
                    command)
                (format t "~%在prozentual函数中发现错误: 概率不得多于100!~%"))
            (format t "~%在prozentual函数中发现错误: 第二个参数不是一个命令!~%"))
        (format t "~%在prozentual函数中发现错误: 第一个参数不是一个数字!~%")))