日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 函数式编程一问

Home Forums 《冒号课堂》讨论区 函数式编程一问 Reply To: 函数式编程一问

#1252
hui
Keymaster

在函数式中函数是first-class citizen,故可直接定义g = f . f,这样g实际上就是一个恒等变换,同时在形式上满足了你想要的“先外后内”。至于编译器(或解释器)能否更聪明地直接把g用恒等变换代替,那就归结为函数简化的问题了,而这并非易事(尽管该个例很简单,但难有普适方法)。当然,象LISP这种能进行符号运算(区别于数值运算)的函数式语言,完全可能对一些复合函数通过符号处理来简化。不过,符号处理本身并非函数式的必要特性。

另外,如果不考虑效率的话,程序员倒也不用关心这类简化问题,代码的抽象性不会因此而发生变化。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)