![]() | 1 ssword 2013-11-14 20:56:09 +08:00 看一遍 sicp,再练习下 haskell 就好了。 期间遇到不懂的地方就放一放,不要把fp的一些概念想得过于玄乎。 |
![]() | 2 frogs OP |
3 gihnius 2013-11-14 21:09:59 +08:00 common lisp |
5 yangff 2013-11-14 21:40:05 +08:00 如果这样……只是想玩玩的话不妨Javascript算了…… |
![]() | 6 zava 2013-11-14 21:42:50 +08:00 嘿嘿,scala |
![]() | 9 sectic 2013-11-14 21:50:26 +08:00 ![]() haskell 这个语言不一定能用上,设计上也不一定“好”,但是对于接触functional programming最好不过,可以让你很直接的接触各个概念。 |
![]() | 10 wenbinwu 2013-11-14 21:56:10 +08:00 ML名字也得 |
![]() | 11 zava 2013-11-14 21:58:20 +08:00 @frogs 同好。 scala既实用,又能满足楼主的要求。编译成class,跑在JVM上,和java互通很方便。算是和主流语言最接近的了。 |
![]() | 13 sectic 2013-11-14 21:58:34 +08:00 sicp的话有些概念很有意思,比如引用透明性,这个往上深究可以到lambda 算子怎么和图灵机等价的。 |
![]() | 15 tzheng 2013-11-14 22:01:56 +08:00 为啥楼上没有人提clojure啊。。我也来搅趟浑水。。我真的以为最应该clojure |
![]() | 17 MichaelYin 2013-11-14 22:11:53 +08:00 sicp里面用到的Scheme是lisp的一个分支,sicp这本书写的也非常不错特别是里面的练习题是很值得一做的。。。如果要学FP这本书是极力推荐的了。。。 |
![]() | 18 Golevka 2013-11-14 22:13:59 +08:00 ![]() 上coursera和Dan Grossman一起撸SML和Racket |
![]() | 21 felix021 2013-11-14 22:23:28 +08:00 同1L @ssword 同学,我也是推荐先跟着SICP学(就用scheme),然后再看看haskell作为对比。对于只是想要了解fp的需求最合适了。 如果想要贴近开发的话,就考虑ErLang/Clojure/Scala。 |
![]() | 22 wenbinwu 2013-11-14 22:46:17 +08:00 |
![]() | 23 sectic 2013-11-14 22:48:06 +08:00 ![]() 我来讲一下吧,计算机语言基本来源大概就俩,一个是无限纸带的图灵机,另外一个是邱奇的算子。这俩很有意思,图灵和邱奇差不多同时通过这俩模型来证明了希尔伯特猜想不成立。图灵机可以说是一大批语言的前身,比如ALGO,比如C。元图灵机U可以说是现代编程这个东西的先驱。functional programming 可以说是另外一个路子,就是邱奇的算子。我推荐haskell的原因之一,就是haskell中的概念跟lambda calculus 中的概念基本是一一对应的,知道这些概念后,看其他的函数式语言也差不多。包括haskell中函数的定义。说实话,lisp可能是最正统的,但是我觉得lisp方言有点严重,各种lisp应该有一定鉴别力后再去看。 |
![]() | 26 frogs OP @sectic 我只知道函数是跟过程式的是截然不同的两种想法,一种是面向机器式的,首先是最大限度利用机器,其次才是解决问题。另外一种是面向解决问题,只不过需要依赖机器来帮助实现。没想到有这么个历史,长知识了。 |
![]() | 27 wenbinwu 2013-11-14 23:21:25 +08:00 你想用是概念 前者就往erlang 和haskell靠吧 後者的SML ML的就行了 |
![]() | 28 aristotle9 2013-11-15 00:05:56 +08:00 Haskell没有代数基础真玩不起来 |
29 stevenyou 2013-11-15 07:05:03 +08:00 个人觉得还是scala, coursera 上面有一个functional programming 的课,是教scala的 |
![]() | 30 robertlyc 2013-11-15 08:38:29 +08:00 clojure |
![]() | 31 fly2never 2013-11-15 09:09:25 +08:00 如果考虑jvm的话, clojure真是不错的推荐 |
![]() | 32 cYcoco 2013-11-15 09:31:20 +08:00 LZ其实JVM啊 TAT clojure蛮赞的 |
![]() | 33 cYcoco 2013-11-15 09:31:36 +08:00 歧视。 |
![]() | 34 heganj 2013-11-15 11:07:14 +08:00 函数式编程跟 S表达式 是绝配,如果是C出身就考虑 Common Lisp / Scheme 咯,同样强烈推荐 SICP。 我学的是Clojure,有4clojure这样的网站可以练习,不知道 Common Lisp / Scheme 有没有类似的学习网站 |
![]() | 35 isprin 2013-11-15 12:01:08 +08:00 看SICP学Scheme |
![]() | 36 CrazyApi 2013-11-15 12:56:32 +08:00 lz 只是想学的话 先找个简单的 ML 或 Scheme,了解下核心和基本的概念。理解后再学一门相对复杂但实用性更高的语言入 Haskell 之类的。 这篇可以读一下 https://www.byvoid.com/blog/why-functional-programming/ |
![]() | 38 se77en 2013-11-15 13:55:08 +08:00 ocaml吧,haskell不够real world啊,ocaml就不一样了,Jane Street 90%的工作使用它啊 |
![]() | 39 luikore 2013-11-15 15:01:55 +08:00 Haskell 或者 ML 系 (F# 比 Ocaml 更简洁) 如果学 jvm 二奶语言, 最后你会发现想干点正经事你还得找各种 api 设计得让人吐血的 java 库. |
![]() | 40 bombless 2013-11-15 22:11:36 +08:00 haskell如果你不是一开始就完全想好了,改的时候痛苦死…被类型系统拖累死。 推荐动态类型的,比如Racket,Common Lisp |
![]() | 41 tioover 2013-11-17 13:25:21 +08:00 学习的话自然是Scheme。 实用的话……Racket 也很好啊。 |
43 Sherlockhlt 2013-11-18 08:55:22 +08:00 |
44 aminic 2013-11-19 08:38:21 +08:00 sicp必看,就冲里面的太极图也要看的。。 |
45 dinw 2015-10-19 06:49:45 +08:00 虽然是老帖子了。顶起来。方面后来人在线学习 OCaml: http://www.v2ex.com/t/229082 |