用Autolisp实现Racket的一些函数
racket内置了丰富的list函数,这些函数有些是SRFI 1 标准里边的,有些则不是。 不过,不管出自哪里,都比autolisp、visual lisp的list函数丰富多了。
这些函数是十分有用又是十分常用的,对于autolisp这种只有list一种内置数据结构的编程语言来说, 尤其地有用。所以,用autolisp来实现这些函数就是十分必要的了。
接下来我就贴出来一些racket函数和SRFI 1 标准函数的autolisp实现。
drop 函数
drop函数接受2个参数,1个list和1个整数,返回去掉list左边n个元素之后的新list。
drop-right 函数
drop-right函数接受2个参数,1个list和1个整数,返回去掉list右边n个元素之后的新list。
take 函数
take函数接受2个参数,1个list和1个整数,返回由list左边n个元素组成的新list。
take-right 函数
take-right函数接受2个参数,1个list和1个整数,返回由list右边n个元素组成的新list。
drop-while 函数
drop-while函数接受2个参数,1个判断函数和1个list,功能是去掉使用判断函数得到t值的元素,
从list左边开始执行直到碰到到判断函数结果为nil时停止。
这个函数在racket里边叫做dropf,drop-while是SRFI 标准里边采用的函数名称。
take-while 函数
take-while函数接受2个参数,1个判断函数和1个list,功能是提取使用判断函数得到t值的元素,
从list左边开始执行直到碰到到判断函数结果为nil时停止。
这个函数在racket里边叫做takef,take-while是SRFI 标准里边采用的函数名称。
一点体会
Racket很有意思,它有很多名字很长的内置函数,这个可能和它的教学语言的这个用途有关,
可是,在上面列出来的这个几个函数里边,Racket又偏偏选择了短得不能更短的名字,
这一点也不consistent,实在是十分令人遗憾。
文章作者 Jack Hsu
上次更新 2023-11-14
许可协议 Copyright © Jack Hsu. All Rights Reserved.