14

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

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

  • Javascript 的功能方式:尽可能广泛地使用 javascript 的功能部分,利用 Underscore 或其他功能库。这种方法的优点是学习“母语”。对我来说,缺点是我真的不喜欢它的语法,并且在 Javascript 中编写“功能优先”的程序感觉不是很自然。
  • CoffeeScript + Underscore:我见过一些使用 CoffeScript + Underscore 的例子,它们看起来很吸引人。例如:http
    ://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-Chapter-7 这样做的好处是 CoffeScript 正在广泛传播,并且似乎是设计用于与javascript虚拟机。它的语法对我来说感觉更自然,我可以以更简单的方式以功能方式编写一些东西。
    缺点将远离 javascript 本身(这对我来说真的不是太大的问题)并且处于非真正功能的中间地带。
  • Livescript:源自 Coco(它本身源自 CoffeScript),它的语法对我来说更有吸引力(它甚至还有我钟爱的 F# 管道 '|>' 运算符)。优点是它是最实用的方法。缺点是它不是很普及(我在 SO 中进行了搜索,但实际上并没有任何关于它的内容)和所有暗示(没有太多的社区、支持、教程等)。

在考虑了所有这些之后,我没有真正的结论,所以如果习惯使用 javascript、CoffeeScript 等的人能够指导我了解这些问题的真正重要性,那就太好了。

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

非常感谢!

4

3 回答 3

10

我可能有点偏见(我是 LiveScript 的创建者),但你应该试试 LiveScript!我目前正在为它开发一个标准库,它将比下划线更好地集成。正如您所说,使用它的人还不是很多,但是社区必须从某个地方开始!正如您所指出的,在所有其他条件相同的情况下,这似乎是最好的选择——所以潜心尝试吧!

于 2012-05-25T01:47:47.997 回答
2

你基本上有两个选择:

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

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

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

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

选项 2 的缺点可能是项目到今天还不是(afaik)非常先进的事实,并且它可能编译成不是非常有效的 JS 代码。

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

于 2012-05-24T22:24:55.487 回答
2

还有一个“FUNCTIONAL”函数库,+咖啡脚本+下划线;)!

http://osteele.com/sources/javascript/functional/

于 2012-05-24T22:34:40.990 回答