加载中...

Point-free 风格(又称 tacit programming,隐式编程)指定义函数时不显式写出其参数,而是直接用已有函数的组合来表达。名称中的 point 来自拓扑学术语,指函数作用的"点"(即参数),"无点"即不提及参数。
Haskell 中 sum = foldr (+) 0 与 countWords = length . words 都是 point-free 定义:后者用组合算子(.)把两个函数串起来,无需写出输入字符串这个参数。JavaScript 中借助 Ramda 的 compose/pipe 也能写出同样风格。
该风格与组合子逻辑一脉相承;John Backus 在 1977 年图灵奖演讲中倡导的 FP 语言即以函数级编程为核心。APL、J、Forth 以及 Unix 管道也体现了类似思想。
适度使用可让代码聚焦于变换流程本身,简洁且利于等式推理;过度使用则会产生难以阅读的"pointless"代码,社区普遍建议在可读性与简洁性之间权衡。

登录 后参与讨论
暂无讨论,来发表第一条评论吧