是否有可能强制F#表现得像纯函数式语言Haskell一样?也许使用一些编译器指令?
附注:由于我来自C/C++背景,我想在不学习Haskell的情况下强迫自己学习函数式编程 :)
是否有可能强制F#表现得像纯函数式语言Haskell一样?也许使用一些编译器指令?
附注:由于我来自C/C++背景,我想在不学习Haskell的情况下强迫自己学习函数式编程 :)
在 F# 中,你无法强制执行这种行为,但正如 Brian 所说,约束是你最好的朋友。例如,不要使用 mutable
、for
或者 while
循环,ref
关键字等。同时,使用纯不可变数据结构(discriminated union、list、tuple、map 等)。如果你需要进行 IO 操作,在架构程序时将其与纯函数式代码分离。
别忘了,函数式编程是关于限制和隔离副作用的。
不好意思,你只能靠自律。
不可以。目前F#编译器无法进行此类检查。
为什么不开始写一些F#程序来学习函数式编程呢?我认识一些人先学习ML/Ocaml/F#然后再转移到Haskell。
这样你就会更好地理解纯度。(如果您以前没有接触过任何函数式编程语言,那么您对纯函数式的理解可能是肤浅的。)