level 4
love_mely2
楼主
题目叙述有点长,链接:
http://www.cs.northwestern.edu/academics/courses/325/exercises/lisp-exs.php
Lisp #2: KEY-IF (Wilensky 13.2)
宏展开要这样,比如
例子1: (key-if flag :then x y)
展开是:
(cond (flag x y) (t nil))
例子2:(key-if flag :then x y :else z w)
展开是:
(cond (flag x y) (t z w))
对此我很困惑。key-if的参数是不固定长的,怎么把参数放到cond里面合适的位置呢?
我的思路是,分析key-if的参数,比如发现then,就怎样怎样。这样可以实现题目要求,但是宏展开也很长,不像上述那样简洁。
等高手给建议
2012年12月07日 20点12分
1
http://www.cs.northwestern.edu/academics/courses/325/exercises/lisp-exs.php
Lisp #2: KEY-IF (Wilensky 13.2)
宏展开要这样,比如
例子1: (key-if flag :then x y)
展开是:
(cond (flag x y) (t nil))
例子2:(key-if flag :then x y :else z w)
展开是:
(cond (flag x y) (t z w))
对此我很困惑。key-if的参数是不固定长的,怎么把参数放到cond里面合适的位置呢?
我的思路是,分析key-if的参数,比如发现then,就怎样怎样。这样可以实现题目要求,但是宏展开也很长,不像上述那样简洁。
等高手给建议