摘要:
今天模拟定义map函数.写着写着就发现Python可变长度参数的机制真是灵活而强大.假设有一个元组t,包含n个成员:t=(arg1,...,argn)而一个函数f恰好能接受n个参数:f(arg1,...,argn)f(t)这种做法显然是错的,那么如何把t的各成员作为独立的参数传给f,以便达到f(arg1,...,argn)的效果?我一开始想到的是很原始的解法,先把t的各个成员变为字符串的形式,再用英文逗号把它们串联起来,形成一个"标准参数字符串":str_t=(str(x) for x in t)str_args=",".join(str_t)str_a 阅读全文
摘要:
说明,这是r5rs的用法.(letrec (( ) ...) ) 假设(( ) ...)是变量定义块V,是执行块B.letrec最常见的用法就是用于绑定函数对象,让V里面定义的所有变量可以在运行时相互引用,不受位置前后的限制.比如:> (letrec ((x (lambda () (+ y y))) (y 100)) (+ (x) y))300这说明运行(+ (x) y)时,函数对象x可以读取y对象的值,尽管y在x之后才绑定的. 这一点letrec很像顶层的运作模式:> (define x (lambda () (+ y y)))> (define y 100)> (+ 阅读全文