首页

2010年5月29日星期六

Scheme中lambda表达式的形参表有3种

现在真正的介入正题吧,一个月来总结下自己所学的东西,和自己的感悟,首先,我来武汉研究的第一个程序,是lambda演算,当时的感觉很奇妙,该程序也 很好理解。也是很有趣的程序,很多程序员第一次接触Scheme的时候就是先学习的lambda演算,lambda本身就是一个匿名函数,而且 Scheme里面支持匿名函数,可以回顾下当时我的列子,如下:
(define foo (lambda (x)
(* x x)))
Scheme中lambda表达式的形参表有3种接收参数的方式:
1,定长,这种是最常见的,eg:
(define square (lambda (n) (* n n)))
(square 5)=>25

2,全定长,目前还没想通用处在哪里eg:
(define foo (lambda x x))
(foo 1 2 3)=>(1 2 3)

3,半定长,这种在很多语言中都有用到,比如C的printf函数eg:
(define f (lambda (x . y) (* x x)))
(f 10 20 30)=>100

通常函数由以下4个部分组成:
1,前继,n!(fac)
2,后续,(n-1)!(fac (- n 1))
3,测零,(= n 0)
4,不动点算子,1

没有评论:

发表评论