321_common lisp complement使用

完整的emacs and lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp

    继续emacs以及lisp的学习,今天看一下complement的使用。首先来看一个基础函数的使用,判断一个数是否是奇数。

321_common lisp complement使用

    上面的奇数判断全都OK,当然,我们的common lisp中其实也是有一个偶数判断函数的。

321_common lisp complement使用

    假设,有一个情况:我们的环境中只有一个奇数判断函数,没有偶数判断函数的时候,我们如何快速做一个与之相对的功能出来呢?这个就可以通过complement来实现了。

321_common lisp complement使用

    按照上面增加一个表达式,这里的结果其实还是让我有点迷惑的。因为在我看的教程中,其实左边定义的这个变量本身应该是一个lambda表达式。

321_common lisp complement使用

    不过,通过上面的操作可以看出,这个变量的确是有函数的那些行为。同时,也能够看得出,这个函数的行为是与oddp相对的一个功能。

321_common lisp complement使用

    增加一个自定义函数,用来看看这个具体的功能。我们定义一个函数is-jam用来判断传入的参数是否是一个名称为:jam的属性名。之后,在REPL中进行了测试,测试编写的时候使用了一个小技巧,通过:key 来指定了一个函数用来获取返回信息的第二个元素。之后,测试complement,测试通过。

    这个就是大致的complement的简单使用。

完整的emacs and lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp