Lisp,为什么这个数字不是浮点数

bcw*_*ger 1 clisp common-lisp

使用Common Lisp我正在尝试循环学生列表,如果GPA大于或等于3.0,我想将1推到另一个名为equal_names的列表中.我遇到的问题是解释器一直说比较列表中的GPA是"不属于类型(或理性浮点数)".为什么我收到此错误?

是的,这是作业.这也是我第一次在这里问,所以如果你还需要什么,请告诉我.

列表的样本我从GPA获得GPA,其中GPA是2.307 ......:

(SETQ students (LIST  
    (LIST (LIST 'Abbott 'Ashley 'J) '8697387888 'NONE 2.3073320999676614))) 
Run Code Online (Sandbox Code Playgroud)

我写的代码:

(setq gpa_count ())  

    (loop for x in students 
        if(>=  3.0 (cdr (cdr (cdr x))))  
            do(push '1 gpa_count))
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 5

给定非空列表cdr返回该列表的尾部,即包含列表的所有元素但是第一个的列表.需要注意的重要一点是它返回一个列表,而不是一个元素.那是(cdr (cdr (cdr x)))返回列表(2.30733...),而不是浮点数2.30733.