• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
象鼻蚌
有心栽花花不开,无心插柳柳成荫!
博客园    首页    新随笔    联系   管理    订阅  订阅

CLTL2关于LISP Lambda-EXpress参数关键字的一些例子

(1) Examples of &optional and &rest parameters:

((lambda (a b) (+ a (* b 3))) 4 5) => 19 
((lambda (a &optional (b 2)) (+ a (* b 3))) 4 5) => 19 
((lambda (a &optional (b 2)) (+ a (* b 3))) 4) => 10 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x))) 
   => (2 nil 3 nil nil) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6) 
   => (6 t 3 nil nil) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6 3) 
   => (6 t 3 t nil) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6 3 8) 
   => (6 t 3 t (8)) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6 3 8 9 10 11) 
   => (6 t 3 t (8 9 10 11))

(2) Examples of &key parameters:

((lambda (a b &key c d) (list a b c d)) 1 2) 
   => (1 2 nil nil) 
((lambda (a b &key c d) (list a b c d)) 1 2 :c 6) 
   => (1 2 6 nil) 
((lambda (a b &key c d) (list a b c d)) 1 2 :d 8) 
   => (1 2 nil 8) 
((lambda (a b &key c d) (list a b c d)) 1 2 :c 6 :d 8) 
   => (1 2 6 8) 
((lambda (a b &key c d) (list a b c d)) 1 2 :d 8 :c 6) 
   => (1 2 6 8) 
((lambda (a b &key c d) (list a b c d)) :a 1 :d 8 :c 6) 
   => (:a 1 6 8) 
((lambda (a b &key c d) (list a b c d)) :a :b :c :d) 
   => (:a :b :d nil)

(3) Examples of mixtures:

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1)   => (1 3 nil 1 ())
((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 2)   => (1 2 nil 1 ()) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 :c 7)   => (:c 7 nil :c ()) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 6 :c 7)   => (1 6 7 1 (:c 7)) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 6 :d 8)   => (1 6 nil 8 (:d 8)) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 6 :d 8 :c 9 :d 10)   => (1 6 9 8 (:d 8 :c 9 :d 10))
posted @ 2010-02-23 21:41  象鼻蚌  阅读(503)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3