JavaScript中的函数式编程

Functional Programming in JavaScript

本文关键字:编程 函数 JavaScript      更新时间:2023-09-26

我不确定这里是否允许,如果不允许,请告诉我在哪里可以问这个问题。

虽然我有很多JavaScript是很容易学习的语言,但我发现它很难学习。我正在阅读Eloquent JavaScript中的函数式编程(Ch 6)。重点似乎是,函数式编程是一种通过使用函数封装丑陋的小细节(如for循环)来使程序更加清晰和有意图的方法,我明白了。让我发疯的是,试图遵循函数中有一个函数的代码,该函数返回一个以函数值为参数的函数,等等。。。等等。。。。过了一会儿,我的头就转了,我看不出这会让我的生活变得更轻松,尽管最后的节目看起来确实更好。。这只是你习惯的东西吗?或者我做错了什么。

我认为使用javascript学习函数式编程的主要问题是javascript没有强制执行函数式风格。虽然你可以用javascript编写纯函数,但很容易不这样做。此外,尽管javascript很容易学习,但它是一种有很多怪癖的语言;很难完全理解这种语言的机制。另一个问题是,Javascript没有提供使函数式编程如此有趣的大部分功能:lambda表达式、模式匹配等都没有内置在该语言中。

如果你的目标是学习函数式编程,我建议你使用像Haskell这样的纯函数式语言。然而,如果你想专门学习Javascript,请确保深入理解原型链、类型强制、自动分号插入、范围界定等概念。以下是一些有用的资源:

  • 我个人很喜欢大卫·赫尔曼的《有效的JavaScript:68种利用JavaScript力量的特定方法》。优秀的书
  • Chrome控制台!试试你读到的所有东西
  • Esprima在线解析器(http://esprima.org/demo/parse.html)。了解如何解析一段代码非常有用
  • 最终道格拉斯·克罗克福德的《好的部分》,但只是因为它提供了简单的介绍。我不认为这本书是一个参考"美丽的代码"。为此,请阅读大卫·赫尔曼的书
  • 加里·伯恩哈特的史诗"WAT"(https://www.destroyallsoftware.com/talks/wat)
  • Mozilla的文档(https://developer.mozilla.org/en-US/docs/Web/JavaScript)
  • ECMA技术规格(适度)(http://www.ecma-international.org/ecma-262/5.1/)

祝你好运!

我首先涉足正常语言之外的函数式编程。我没有开始用Javascript做这件事,而是先学习了一些Scheme、OCaml和f#。我发现用这种方式将原则带回Javascript更容易。

Javascript作为一种函数式语言(在我看来)非常棒。例如,一个Javascript构造函数是一个monad(这里的视频很棒:http://www.youtube.com/watch?v=b0EF0VTs9Dc)。

我会说,是的,你必须习惯它——但最简单的方法是在JS之外。当您习惯于循环时,递归(例如)是一种真正的头部烘焙。(提示:首先计算出你的退出条件!)。

坚持下去!