ITPub博客

首页 > Linux操作系统 > Linux操作系统 > lisp 里的条件判断

lisp 里的条件判断

原创 Linux操作系统 作者:babyyellow 时间:2012-12-25 17:15:47 0 删除 编辑

if    , cond , case

and  , or  也可以作为判断的一种方式


其中case  是的比对是基于eq  , 所以业务上应该尽量避免基于字符串的对比。

示例:

CL-USER> (if (oddp 5 )
         'odd-number
         'even-number)
ODD-NUMBER
CL-USER> (if (oddp 6 )
         'odd-number
         'even-number)
EVEN-NUMBER

CL-USER> (defun pudding-eater (person)
       (case person
         ((henry) (setf *arch-enemy* 'henry)
                  '(curse you lisp alien - you ate my pudding))
         ((johnny) (setf *arch-enemy* 'johnny)
                   '(i hope you choked on my pudding johnny))
         (otherwise '(why you eat my pudding stranger ?))))
STYLE-WARNING: redefining COMMON-LISP-USER::PUDDING-EATER in DEFUN
PUDDING-EATER
CL-USER> (pudding-eater 'johnny)
(I HOPE YOU CHOKED ON MY PUDDING JOHNNY)
CL-USER> (pudding-eater 'henry)
(CURSE YOU LISP ALIEN - YOU ATE MY PUDDING)



CL-USER> (defun pudding-eater (person)
       (case person
         ((henry) (setf *arch-enemy* 'henry)
                  '(curse you lisp alien - you ate my pudding))
         ((johnny) (setf *arch-enemy* 'johnny)
                   '(i hope you choked on my pudding johnny))
         (otherwise '(why you eat my pudding stranger ?))))
STYLE-WARNING: redefining COMMON-LISP-USER::PUDDING-EATER in DEFUN
PUDDING-EATER
CL-USER> (pudding-eater 'johnny)
(I HOPE YOU CHOKED ON MY PUDDING JOHNNY)
CL-USER> (pudding-eater 'henry)
(CURSE YOU LISP ALIEN - YOU ATE MY PUDDING)


CL-USER> (or (oddp 5 ) (oddp 7 ) (oddp 11) (oddp 3))
T
CL-USER> (or (oddp 5 ) (oddp 7 ) (oddp 11) (oddp 3))
T
CL-USER> (and  (oddp 5 ) (oddp 7 ) (oddp 11) (oddp 3))
T
CL-USER>

CL-USER> *is-it-even*
NIL
CL-USER> (defparameter *is-it-even* nil)
*IS-IT-EVEN*
CL-USER> *is-it-even*
NIL
CL-USER> (or (oddp 4 ) (setf *is-it-even* t))
T
CL-USER> *is-it-even*
T
CL-USER> (and (oddp 3) (setf *is-it-even* nil))
NIL
CL-USER> *is-it-even*
NIL
CL-USER> (setf *is-it-even* t)
T
CL-USER> (and (oddp 4) (setf *is-it-even* nil))
NIL
CL-USER> *is-it-even*
T





来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-751620/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908855