1. referential transparency: 相同參數(shù)屡穗,每次調(diào)用,返回的結(jié)果都是一樣的室梅。
2. lack-of-side-effects:無side effects留晚,也就是不會改變“外面的世界”(通常是改變?nèi)肿兞浚蛘遫utput io)
為什么這兩個特性這么好呢扒最?因為把每個function都獨(dú)立起來了丑勤。(從代碼級別的隔離,臥槽)吧趣。
面向?qū)ο笾械腸lass提供的一個主要功能就是屏蔽內(nèi)部的數(shù)據(jù)法竞,而函數(shù)編程這方面更好耙厚。
面向?qū)ο缶幊蹋a(chǎn)生的一個問題是岔霸,會把一些函數(shù)和class綁定起來薛躬,減少了可重復(fù)利用性。
而函數(shù)編程呆细,則把數(shù)據(jù)結(jié)構(gòu)和函數(shù)解耦型宝。
a) decoupling functions and data and?
b) programming to a small set of abstractions, you end up with more reusable, composable code.
還有一點(diǎn)還是沒想清楚:函數(shù)編程,多線程是怎么搞的絮爷,imutable data structure是怎么幫助多線程編程的趴酣。