相关疑难解决方法(0)

执行函数,直到它返回nil,将其值收集到列表中

我从XKCD的Hofstadter漫画中得到了这个想法; 什么是在(任何)Lisp方言中创建条件循环的最佳方法,该方法执行函数,直到它返回NIL,同时它将返回的值收集到列表中.

对于那些没有看过这个笑话的人来说,道格拉斯·霍夫施塔特的"八字"自传只包含六个词:"我就是这样的元,甚至这个缩写",包含了这个笑话的延续:(一些奇怪的meta-paraprosdokian ?)"是元" - 笑话是自传实际上是"我是如此元,甚至这个缩写是元".但为什么不深入呢?

假设META从字符串创建首字母缩略词并将其拆分为单词的首字母缩略词函数,NIL如果字符串只包含一个单词则返回:

(meta "I'm So Meta, Even This Acronym") ? "Is Meta"
(meta (meta "I'm So Meta, Even This Acronym")) ? "Im"
(meta (meta (meta "I'm So Meta, Even This Acronym"))) ? NIL

(meta "GNU is Not UNIX") ? "GNU"
(meta (meta "GNU is Not UNIX")) ? NIL
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找如何实现一个功能,以便:

(so-function #'meta "I'm So Meta, Even This Acronym") 
? ("I'm So Meta, Even This Acronym" "Is Meta" "Im") …
Run Code Online (Sandbox Code Playgroud)

lisp elisp common-lisp

9
推荐指数
1
解决办法
1331
查看次数

标签 统计

common-lisp ×1

elisp ×1

lisp ×1