想学一门functional programming语言,求推荐

2013-11-14 20:48:53 +08:00
 frogs
各位有谁对函数式编程语言比较熟悉的,求推荐。jvm语言不想考虑。
7466 次点击
所在节点    程序员
45 条回复
felix021
2013-11-14 22:23:28 +08:00
同1L @ssword 同学,我也是推荐先跟着SICP学(就用scheme),然后再看看haskell作为对比。对于只是想要了解fp的需求最合适了。

如果想要贴近开发的话,就考虑ErLang/Clojure/Scala。
wenbinwu
2013-11-14 22:46:17 +08:00
sectic
2013-11-14 22:48:06 +08:00
我来讲一下吧,计算机语言基本来源大概就俩,一个是无限纸带的图灵机,另外一个是邱奇的算子。这俩很有意思,图灵和邱奇差不多同时通过这俩模型来证明了希尔伯特猜想不成立。图灵机可以说是一大批语言的前身,比如ALGO,比如C。元图灵机U可以说是现代编程这个东西的先驱。functional programming 可以说是另外一个路子,就是邱奇的算子。我推荐haskell的原因之一,就是haskell中的概念跟lambda calculus 中的概念基本是一一对应的,知道这些概念后,看其他的函数式语言也差不多。包括haskell中函数的定义。说实话,lisp可能是最正统的,但是我觉得lisp方言有点严重,各种lisp应该有一定鉴别力后再去看。
frogs
2013-11-14 22:50:35 +08:00
@wenbinwu
额 是不知道怎么回。 我当然知道,ML是跟ocaml一脉的。
gihnius
2013-11-14 22:52:00 +08:00
@frogs 很多人都先入为主的在乎了最不该在乎的 '括号', 唉!
frogs
2013-11-14 22:57:56 +08:00
@sectic
我只知道函数是跟过程式的是截然不同的两种想法,一种是面向机器式的,首先是最大限度利用机器,其次才是解决问题。另外一种是面向解决问题,只不过需要依赖机器来帮助实现。没想到有这么个历史,长知识了。
wenbinwu
2013-11-14 23:21:25 +08:00
你想應用還是學學概念
前者就往erlang 和haskell靠吧
後者的話SML ML這類簡單的就行了
aristotle9
2013-11-15 00:05:56 +08:00
Haskell没有代数基础真玩不起来
stevenyou
2013-11-15 07:05:03 +08:00
个人觉得还是scala, coursera 上面有一个functional programming 的课,是教scala的
robertlyc
2013-11-15 08:38:29 +08:00
clojure
fly2never
2013-11-15 09:09:25 +08:00
如果考虑jvm的话, clojure真是不错的推荐
cYcoco
2013-11-15 09:31:20 +08:00
LZ其实JVM啊 TAT clojure蛮赞的
cYcoco
2013-11-15 09:31:36 +08:00
歧视。
heganj
2013-11-15 11:07:14 +08:00
函数式编程跟 S表达式 是绝配,如果是C出身就考虑 Common Lisp / Scheme 咯,同样强烈推荐 SICP。
我学的是Clojure,有4clojure这样的网站可以练习,不知道 Common Lisp / Scheme 有没有类似的学习网站
isprin
2013-11-15 12:01:08 +08:00
看SICP学Scheme
CrazyApi
2013-11-15 12:56:32 +08:00
lz 只是想学的话 先找个简单的 ML 或 Scheme,了解下核心和基本的概念。理解后再学一门相对复杂但实用性更高的语言入 Haskell 之类的。
这篇可以读一下 https://www.byvoid.com/blog/why-functional-programming/
CrazyApi
2013-11-15 13:13:22 +08:00
@frogs 写 Lisp 真的不用担心括号的问题,让编辑器自动补全‘()’,还能自动匹配'(]'成‘[]’。
se77en
2013-11-15 13:55:08 +08:00
ocaml吧,haskell不够real world啊,ocaml就不一样了,Jane Street 90%的工作使用它啊
luikore
2013-11-15 15:01:55 +08:00
Haskell 或者 ML 系 (F# 比 Ocaml 更简洁)

如果学 jvm 二奶语言, 最后你会发现想干点正经事你还得找各种 api 设计得让人吐血的 java 库.
bombless
2013-11-15 22:11:36 +08:00
haskell如果你不是一开始就完全想好了,改的时候痛苦死…被类型系统拖累死。

推荐动态类型的,比如Racket,Common Lisp

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX