|  |      1zhuangzhuang1988      2020-04-24 19:54:56 +08:00  1 搞牛逼技术吧, FP 就是放屁, | 
|  |      2Mohanson      2020-04-24 20:02:08 +08:00 via Android 之前看一个 wasm 虚拟机,4000 行代码,只有函数没有任何 class, 当时觉得真难阅读啊草,几个月后去看已经重构了。 这个项目是 eth2.0 虚拟机 py 版本,因为它叫 py-wasm, 和我的 pywasm 就差一个横杆所以特别关注过。 我觉得面向对象是邪说,函数式是歪理,只有 c 的过程式才是永恒的… 别打我。 | 
|  |      3dandycheung      2020-04-24 20:05:47 +08:00 via iPhone @Mohanson 面向对象并非歪理邪说,它是基于过程式的实践发展出来的。只是主要应用场景不同。不同规模的问题需要对应不同的技术手段。 | 
|  |      4Mohanson      2020-04-24 20:07:13 +08:00 via Android @dandycheung 同意的,适用场景不同 | 
|  |      5cmdOptionKana      2020-04-24 20:09:23 +08:00 | 
|      6pisc      2020-04-24 20:24:30 +08:00 via Android 不适合,别搞。 | 
|      7pisc      2020-04-24 20:43:45 +08:00 via Android  4 @zhuangzhuang1988 大哥你要不要搞个 PL 的博士再来大放厥词 | 
|  |      8xcstream      2020-04-24 20:47:27 +08:00 不适合,别搞。 cpu 指令就是过程式的 | 
|  |      9wellsc      2020-04-24 20:53:11 +08:00 不适合 | 
|      10TransAM      2020-04-24 21:22:31 +08:00 via Android 任何支持一等函数的语言都适合。 | 
|      11nguoidiqua      2020-04-24 21:24:08 +08:00 via Android  1 golang 适合,但不知道你适不适合。 | 
|  |      12yuk1no      2020-04-24 21:29:59 +08:00 via iPhone 不适合,FP 基础设施不够 | 
|  |      13szzhiyang OP | 
|  |      14szzhiyang OP @nguoidiqua 我适合。 | 
|      15FireFoxAhri      2020-04-24 21:55:25 +08:00  1 golang 新手,Scala/Java 开发。我觉得 Go 的基础的数据结构似乎都没有支持 map filter reduce fold 这类操作,而且写代码的时候似乎也是指令式的,一般使用变量。而写 Scala 的时候基本可以做到不使用 var 了,集合操作都用标准库提供的 map fold 来完成,不使用 while | 
|  |      16CosimoZi      2020-04-24 22:04:24 +08:00 via Android typeclass monad | 
|      17ConradG      2020-04-24 22:17:20 +08:00  1 支持函数指针 /高阶函数的理论上都能做 FP,无非方便程度的差距 golang 写 fp 的短板主要是它是强类型语言但类型系统又不够强。这本身也并不阻碍做 fp,但是别的 fp 语言或者有泛型,或者有类型推断,或者有偏特化,相比下 go 就显得不那么适合了。 | 
|  |      18reus      2020-04-24 22:49:42 +08:00 挺好的,记得用 reflect 。 | 
|      19yukiloh      2020-04-24 22:58:32 +08:00 via Android if nil………… | 
|      20pisc      2020-04-24 23:57:49 +08:00 via Android  2 @szzhiyang 不要看它支持 first-class function 就说它很“FP”,它支持这个是因为这是一个很基础、有用且重要的 feature 罢了,在 go 的设计里,很多都是反 FP 的理念和设计的,你不信的话你把主流 FP 语言( ML 、Haskell 、Scheme )一些常见的代码试图用 go 来实现你就知道了,主流的 FP 语言都会很强调可组合性,能这么做的前提是要么有灵活的动态类型系统、要么有强大的静态类型系统,go 的静态类型系统太弱鸡了,实现起来很费劲,比如 filter/map/fold 等等(这些只是小例子,很有很多更复杂的)在 FP 很容易实现,在 go 里就很鸡毛,“gopher”们会告诉你 for 一把梭,另外比如像 @reus 会告诉用 reflect,然而 reflect 是金手指两面刀肥猪拱墙,本质就是用动态类型的方式解决弱鸡的静态类型系统。 总而言之,不合适,不搭,别搞。 要玩 FP 就老老实实在主流 FP 里玩,小清新就玩 Scheme 、要血统就玩 SML 、要逼格玩 Haskell 、要振兴 type theory 就玩 Coq/Agda 。 | 
|  |      21ica10888      2020-04-25 00:13:32 +08:00 via Android 没有 arrow function,写起来难受。没有泛型,没法类型推断,高阶函数每次用的时候都写一次类型?map 和 slice 我都不知道怎么来支持 map/filter/fold... | 
|  |      23szzhiyang OP | 
|  |      24alphatoad      2020-04-25 07:15:50 +08:00 | 
|      25pisc      2020-04-25 08:44:38 +08:00 via Android @szzhiyang 你没理解我的话,我全文都没提过泛型,参数多态只是一个很基础的东西而已,我说的是设计,go 的很多设计是反 FP 的,就算支持泛型也没办法改变,你要不信你可以去玩玩,如果你觉得还不错,那我只能认为你没怎么写过 FP 代码。 | 
|  |      26shadownet      2020-04-25 10:44:37 +08:00 via iPhone 没有肉车 只有肉人 深入研究没什么不可能 有坑填 无轮造 | 
|      27tairan2006      2020-04-25 21:13:33 +08:00 via Android Go 和函数式编程没啥关系吧,你不能说支持 function 就支持函数式编程…楼主你写过 Haskell 么? | 
|      28outoftimeerror      2020-04-25 22:57:13 +08:00 为啥一点要搞函数式,我之前写 scala,我最烦同事引用 scalaz 和 cats 这两个库,后面他跑路了代码都没人维护。 |