请那位大虾给出函数式编程的确切定义!

CodeSaint 2006-11-08 02:14:59
请那位大虾给出函数式编程的确切定义!
然后介绍一下函数式编程的特点,优势和适用范围,发展方向!
...全文
1681 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
NARUIL 2007-02-15
  • 打赏
  • 举报
回复
函数式编程 在我的理解
是以lambda表达式为其模型核心的编程方式的名称

lambda算子是图灵完备的 函数式编程是通用的
任何一般的应用程序都可以用函数式编程模式写出

函数式的优点从根本上来说是抽象程度高 高于面向对象
因而更容易阅读理解 代码更精炼 更节约开发时间

如阶乘函数在haskell中:
let fac n = if n == 0 then 1 else n * fac (n-1)

如快速排序算法在c中
qsort( a, lo, hi ) int a[], hi, lo;
{
int h, l, p, t;

if (lo < hi) {
l = lo;
h = hi;
p = a[hi];

do {
while ((l < h) && (a[l] <= p))
l = l+1;
while ((h > l) && (a[h] >= p))
h = h-1;
if (l < h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l < h);

t = a[l];
a[l] = a[hi];
a[hi] = t;

qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}

在haskell中
qsort [] = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y <- xs, y < x]
elts_greq_x = [y | y <- xs, y >= x]



函数式程序可以在运行期间进行代码更新 并可以极其迅速的完成维护和调试
函数式程序可以进行自动的并行实现 网格计算易如反掌

函数式程序现在的唯一缺点是效率略低
但效率只比c++低一点 而带来的益处是不可估量的

纯的函数式编程很难学精 monad(单子)是一个门槛
但函数式编程仍然是未来的一个重要发展方向
improgrammer 2006-12-10
  • 打赏
  • 举报
回复
函数式程序设计:指令和数据浑为一体。
经典的语言:LISP。
经典的数据结构:表。
核心概念:lambda表达式求值。
hxblvc 2006-11-15
  • 打赏
  • 举报
回复
函数式语言是不是一般只用于数学计算中?

sandrowjw 2006-11-13
  • 打赏
  • 举报
回复
hoho,ln终于出现了

所谓算子的值,我是这样理解的:算子其实可以比对为函数的参数,它是一个box,那么它的值就是box里放的东西。
fixopen 2006-11-13
  • 打赏
  • 举报
回复
函数式语言背后的数学观念也非常简单的,就是所谓的lambda递归。跟图灵机是完全等价的。
函数式语言对应的一个概念是命令式语言,跟过程和OO没有什么可比性。另一个越出这个范畴的是Prolog语言,它是基于一阶谓词的逻辑式语言。
fixopen 2006-11-13
  • 打赏
  • 举报
回复
何谓算子的值?
某鸟 2006-11-09
  • 打赏
  • 举报
回复
程序设计语言有各种体裁(好像是称为范型),包括过程式,函数式,面向对象等等……
普通的高级语言应该是面向过程的……如:pascal等……
还有面向对象的,如java等……
函数式的典型的就如Lisp等……
sandrowjw 2006-11-09
  • 打赏
  • 举报
回复
我个人的理解是:所谓函数式就是以函数为主的编程方式,函数一般包括一个算符和一系列算子,并且会产生一个返回值。纯粹函数式编程的特点是没有副作用,即算子的值不会被改动。其实,现代语言中很多概念,比如GC(java, C#),boxing(perl, C#)等,都和函数式编程有很大渊源。函数式编程背后的数学原理比较复杂,效率上一般也比过程是语言要低一些,但是由函数构成的代码非常清晰,而且函数有上下文无关这个优点,所以表达复杂算法的时候有优势。
sjjf 2006-11-08
  • 打赏
  • 举报
回复
mark

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧