g****t 发帖数: 31659 | 1 我个人的浅见,functional programming在现在的算法时代还是挺重要的吧,也许会越
来越重要。并发什么的我不懂。
举最简单的例子如下:
假如你有一列数据,有一些坏点。你想查表求查表的结果。
那先填坏点,再查表
还是先查表,再填坏点
结果是不一样的。
现在你想两个办法都实验下。
如果能写成纯函数,那就是
f(g(x))还有g(f(x))即可。如果是打开写在loop里,那两个办法试一下还是比较麻烦。
这种例子挺多的。尤其ann很多是从ee的信号流图来的思路。 |
x***4 发帖数: 1815 | 2 想太复杂了。fp对普通人最大的好处是ref transparent,aka结果在任何环境run都是
一样的。这对理解复杂系统很有帮助。
【在 g****t 的大作中提到】 : 我个人的浅见,functional programming在现在的算法时代还是挺重要的吧,也许会越 : 来越重要。并发什么的我不懂。 : 举最简单的例子如下: : 假如你有一列数据,有一些坏点。你想查表求查表的结果。 : 那先填坏点,再查表 : 还是先查表,再填坏点 : 结果是不一样的。 : 现在你想两个办法都实验下。 : 如果能写成纯函数,那就是 : f(g(x))还有g(f(x))即可。如果是打开写在loop里,那两个办法试一下还是比较麻烦。
|
h*i 发帖数: 3446 | 3 我的浅见,FP与其他的编程模式区别只在小处(日常小算法的实现),大处(程序体系
结构)其实没有啥区别。
FP强迫程序员把局部小问题也要想清楚才下手,我个人体会,这样写出来的代码要清楚
明白得多,更容易维护,对其正确性要有信心得多。这个FP的“局部需要想更多“的特
征,有人喜欢,有人不喜欢,确实是个人口味问题。
对FP的爱好可能与个人喜不喜欢用debugger有负相关。比如我几乎从不用debuger,觉
得FP这种想清楚再写的方式很好,反正我debug也是用想的。
【在 g****t 的大作中提到】 : 我个人的浅见,functional programming在现在的算法时代还是挺重要的吧,也许会越 : 来越重要。并发什么的我不懂。 : 举最简单的例子如下: : 假如你有一列数据,有一些坏点。你想查表求查表的结果。 : 那先填坏点,再查表 : 还是先查表,再填坏点 : 结果是不一样的。 : 现在你想两个办法都实验下。 : 如果能写成纯函数,那就是 : f(g(x))还有g(f(x))即可。如果是打开写在loop里,那两个办法试一下还是比较麻烦。
|
g****t 发帖数: 31659 | 4 我和你习惯有点类似。可能是当年Mathematica写的比较多。debug不太会用.
“A computation is a temptation that should be resisted as
long as possible.”
— J. P. Boyd
FP和其他语言确实没有大区别。有的任务用FP一天能多试几个办法。因为FP容易写出来
composable接口干净的代码。用一般语言就不是那么方便。
【在 h*i 的大作中提到】 : 我的浅见,FP与其他的编程模式区别只在小处(日常小算法的实现),大处(程序体系 : 结构)其实没有啥区别。 : FP强迫程序员把局部小问题也要想清楚才下手,我个人体会,这样写出来的代码要清楚 : 明白得多,更容易维护,对其正确性要有信心得多。这个FP的“局部需要想更多“的特 : 征,有人喜欢,有人不喜欢,确实是个人口味问题。 : 对FP的爱好可能与个人喜不喜欢用debugger有负相关。比如我几乎从不用debuger,觉 : 得FP这种想清楚再写的方式很好,反正我debug也是用想的。
|
d******c 发帖数: 2407 | 5 我用R的时候,因为想尽量用vectorized operation,就要求尽量用已有的函数,同时
尽量避免手工写for loop。不是所有时候都能避免for loop,但有的时候确实可以避免。
用已有函数实际可能还是在用循环,但是是用一个经过证明的可靠函数,作一件比较简
单确定的事,相比直接去写一个复杂的for loop或者if else,这样的结构比较可靠。
另外尽量从vector角度去思考,有时也是有好处的。
这种方式有局限,但能用的时候好处很多。 |