【发布时间】:2010-01-29 14:40:21
【问题描述】:
是否有现成的 lisp 宏允许链接(管道)函数?我找不到一个。我将尝试用这个例子解释我的意思。
而不是像这样使用带有大量未使用的中间变量的 let*:
(let*
((var1 (f1 x y))
(var2 (f2 x var1))
(var3 (f1 var2 z)))
var3)
我想这样写:
(->
(f1 x y)
(f2 x _)
(f1 _ z))
其中,显然 _ 将是前一个表达式的返回值。如果可以使用 _1、_2、... 来引用以前返回的值,则加分项。
这就是想法,确切的语法并不那么重要。
我知道这并不难写,但似乎很有用,必须已经写好了。
【问题讨论】:
-
出于好奇,您最终是否经常使用此代码? (f1 (f2 x (f1 x y)) z) 而不是 let* 的级联通常看起来更易读。
标签: lisp macros common-lisp chaining piping