功能javascript?

Jac*_*eja 14 javascript functional-programming coffeescript livescript

我想使用"javascript派生语言"来学习和使用今天的一些常用Web技术,如node.js,jquery等.

在用功能概念和语言(主要是F#)玩弄一段时间后,我在寻找Javascript世界中是否有类似的东西.到目前为止,我发现并考虑的是:

  • Javascript的功能方式:尽可能广泛地使用javascript的功能部分,使用Underscore或其他功能库.这种方法的优点是学习"母语".对我来说,缺点是我真的不喜欢它的语法,并且在Javascript中编写"功能优先"的感觉并不自然.
  • CoffeeScript + Underscore:我看过一些使用CoffeScript + Underscore的例子看起来很吸引人.例如:http
    ://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-第7章这方面的优点是CoffeScript正在疯狂传播,似乎是为其使用而设计的语言的事实标准javascript VM.它的语法对我来说更自然,我可以用更简单的方式编写一些功能方式.
    缺点是远离javascript本身(这对我来说真的不是一个问题)并且处于非真正功能的中间地带.
  • Livescript:源自Coco(它本身来自CoffeScript),它对我来说具有更吸引人的语法(它甚至还有来自F#的我心爱的管道'|>'运算符).专业人士认为它是最具功能性的方法.缺点是它没有很大的传播(我在SO中进行搜索,并且真的没有关于它)和所有这些暗示(没有太多的社区,支持,教程等).

在考虑了所有这些之后,我没有真正的结论,所以如果人们习惯使用javascript,CoffeeScript等可以指导我关注这个问题的真正重要性,那就太棒了.

以防万一......我还没有真正考虑使用Pit(因此继续使用F#),因为虽然它编译为javascript,但我认为它没有与上面的任何javascript库集成,并且不遵循相同的工作流程或与javascript生态系统以及列出的选项集成.

非常感谢!

gkz*_*gkz 10

我可能有点偏颇(我是LiveScript的创建者),但你应该尝试使用LiveScript!我目前正在为它开发一个标准库,它将比下划线更好地集成.正如你所说,目前还没有很多人使用它,但社区必须从某个地方开始!正如你所指出的那样,似乎所有其他事情都是平等的最佳选择 - 所以请潜水并尝试一下!


Jan*_*nen 2

你基本上有两个选择:

  • 使用 JS 派生语言,例如 CoffeeScript
  • 使用函数式语言来编译JS

对于选项 1,它可能是与其他 JS 代码互操作的最佳选择。如果您确实想与其他可能不熟悉<insert functional language>.

如果您实际上对 JS 不是很熟悉,我会建议选项 1。如果您不了解 JS 基础,那么理解事物的工作原理可能会很困难,尤其是在您选择的语言/工具中遇到错误时。

选项 2 使用起来可能更有趣,因为您可能会从 JS 中获得您最喜欢的语言的好处。除了你提到的 Pit 项目之外,还有一些尝试将 Haskell 编译成 JS,这也是一种选择。

选项 2 的缺点可能是这些项目(据我所知)到目前为止还不是很先进,并且它可能会编译成不是非常高效的 JS 代码。

最后还有一些基于JS的Haskell风格的语言,类似于CoffeeScript,不过我好像忘了它的名字了。如果有人能弄清楚它叫什么,可能值得一试:D

  • @Jani到目前为止我发现了关于JS之上的类似Haskell的语言:lambdascript(https://github.com/valderman/lambdascript),haste(https://github.com/valderman/haste-compiler) 、罗伊 (http://roy.brianmckenna.org/)、jsHaskell (http://code.google.com/p/jshaskell/)。其中任何一个都敲响了警钟吗? (2认同)