首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从 Java JavaScript 来学习 Haskell Groovy(引子)

Haskell。纯粹的函数式语言。可以这样理解 “纯粹” 一说:有一些语言 “可以” 进行函数式编程,但是有的则是 “不得不” 进行函数式编程。编程语言发展的两大趋势就是动态语言和函数式语言。...网上太多文章批 Haskell 太过学院派,连教科书里面要教授函数式编程都用 Scheme(因为它更易学,还没有那么复杂的类型系统),但是开阔视野无疑是非常好的(“代码原来可以这样写!”)...Haskell 之于函数,就像 Perl 之于字符串,就像 Prolog 之于谜题,就像 Groovy 之于 DSL。...我争取从 Java JavaScript 到 Haskell Groovy,对这四门语言,一个特性一个特性地横向比较,比如站在类型系统的角度,弱类型、强类型,静态的、动态的,类型之间的关系、类型创建等等...;再比如元编程方面,Java 的反射代理系统,JavaScript 的 prototype,Groovy 强大的元编程体系,还有 Haskell 的编译期元编程实现等等。

31710

从 Java JavaScript 来学习 Haskell Groovy(汇总)

. state(所谓的不确定性状态) Named state(包含数据流、消息传递状态共享这几种分类),Haskell 出现在了左侧函数式语言的分支内,而 Java 出现在了右侧状态共享的分支内。...《从 Java JavaScript 来学习 Haskell Groovy(类型系统)》,介绍了从类型角度看编程语言的几个重要概念,比如动态/静态类型,类型推导,强/弱类型,结构类型鸭子类型;...《从 Java JavaScript 来学习 Haskell Groovy(元编程)》,介绍了这四种语言实现元编程方面的能力特性,包括 Java 的自省,编译期织入运行期代理,Haskell...《从 Java JavaScript 来学习 Haskell Groovy(DSL)》,介绍了这几门语言对于 DSL 实现的常见模式语法糖,比如 Java 的链式调用泛型传递,闭包 Lambda...表达式,JavaScript 的高阶函数,Groovy 对于 DSL 友好的语法糖,Haskell 的模式匹配 List Comprehension,尾递归惰性求值等等。

47510
您找到你想要的搜索结果了吗?
是的
没有找到

从 Java JavaScript 来学习 Haskell Groovy(元编程)

比如像 Lombok 这样基于注解的类库,让一个类的扩展完善非常容易。...再来看看 Haskell,把它 Java 放在一起介绍,因为二者都是静态语言,改变类或者定义结构的事情只能寄期望于编译期完成。...Haskell 的元编程并非核心内容,因此也更加初级,据我所知,基本上谈及 Haskell 的元编程,必谈 Template Haskell(TH)。...从静态语言的囚笼中解脱出来, JavaScript 的元编程的能力虽然强大,但是却很容易归纳: 对对象的自省,对对象方法属性的改变,这里的对象既包括普通的对象方法实例,也包括 prototype 这个特殊成员...但是回过头来看一下,若论功能特性的种类纷繁程度,自然没得说,但是从语言设计的简洁性来说,JavaScript 这个老被说 “有缺陷” 的语言却可以甩 Groovy 几条街。

46720

又要头秃?2020年七大AI编程语言大盘点

Lisp ? 用来创建一个有着N维输入M个输出单元的单层感知器的Lisp代码 Lisp是List Processing的简称,它是仅次于Fortran的第二古老的编程语言。...采用了Lisp开发的一些著名项目包括RedditHackerNews。 就Lisp而言,你知道它是世界上最美丽的语言,至少在Haskell出现之前是这样。——Larry Wall ?...Haskell ? Haskell发布于1990年,以著名数学家Haskell Brooks Curry的名字命名,它是一种纯函数式强静态类型的编程语言,经常延迟计算较短的代码搭配使用。...Haskell被认为是一种非常安全的编程语言,与其他编程语言相比,它在错误处理方面提供了更大的灵活性。在Haskell中很少发生错误。...Haskell提供的一些功能包括: 强大的抽象能力 内置的内存管理 代码可重用性 易于理解 SQL、LispHaskell是我见过的仅有的编程语言,在这些语言中,人们花在思考上的时间比写代码的时间要多

1.7K20

从 Java JavaScript 来学习 Haskell Groovy(类型系统)

接上文 《从 Java JavaScript 来学习 Haskell Groovy(引子)》。...这就是在使用 TypeChecked 以后,Groovy 纯静态类型+类型推断的 Haskell 的区别。...在 Haskell 中集合操作非常常见,这 SQL 很像,拿着一堆集合做各种运算。...这 SQL 中的 select 1 from xxx 再求和的写法没啥区别嘛。 2、模式匹配。这大概是 Haskell 中我最喜欢的部分。模式匹配在函数的定义里面使用起来简直太漂亮了。...另外,这也不是教程,只是按照特性的比较整理,如果要系统学习 Groovy 或者 Haskell,还是需要寻找相应的教程,通常在官网上的资料就很不错。下一部分将谈到这几门语言的元编程。

51150

Java核心技术整理(七)---Lambda表达式

lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。...如果程序员每天所写的代码行数基本相同,这就意味着,"C语言需要一年时间完成开发某个功能,Lisp语言只需要不到三星期。反过来说,如果某个新功能,Lisp语言完成开发需要三个月,C语言需要写五年。...因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)除错(debugging),以及模块化组合。 4 ....缺点: 1、函数式编程常被认为严重耗费在CPU存储器资源。 主因有二: (1)早期的函数式编程语言实现时并无考虑过效率问题。...惰性求值亦为语言如Haskell增加了额外的管理工作。 2、语言学习曲线陡峭,难度高 函数式语言对开发者的要求比较高,学习曲线比较陡,而且很容易因为其灵活的语法控制不好程序的结构。

25010

高薪AI工程师都在用什么编程语言?2020 年七大 AI 编程语言大盘点

Lisp 用来创建一个有着N维输入M个输出单元的单层感知器的Lisp代码 Lisp是List Processing的简称,它是仅次于Fortran的第二古老的编程语言。...采用了Lisp开发的一些著名项目包括RedditHackerNews。 就Lisp而言,你知道它是世界上最美丽的语言,至少在Haskell出现之前是这样。...——Larry Wall Haskell 官网 Haskell发布于1990年,以著名数学家Haskell Brooks Curry的名字命名,它是一种纯函数式强静态类型的编程语言,经常延迟计算较短的代码搭配使用...Haskell被认为是一种非常安全的编程语言,与其他编程语言相比,它在错误处理方面提供了更大的灵活性。在Haskell中很少发生错误。...Haskell提供的一些功能包括: 强大的抽象能力 内置的内存管理 代码可重用性 易于理解 SQL、LispHaskell是我见过的仅有的编程语言,在这些语言中,人们花在思考上的时间比写代码的时间要多

1.8K20

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

涉及到 Lisp 的著名项目有 Reddit HackerNews。 说到 Lisp,这是世界上最美的语言——至少在 Haskell 出现之前是这样。...Haskell 是纯粹的函数式和静态类型的编程语言,与惰性计算短代码配合使用。...Haskell 是一种非常安全的编程语言,因为其他编程语言相比,Haskell 很少出现错误,所以在处理错误方面提供了更大的灵活性。即便发生了错误,也可以在编译(而非运行)时捕获大多数非语法错误。...Haskell 提供的功能包括: 强大的抽象能力; 内置的内存管理; 代码的可重用性; 易于理解。 SQL、Lisp Haskell 是我所见过的唯一可以把时间花在思考而不是打字上的编程语言。...撇开挑战不谈,随着开发者社区使用率的增加,可以证明 Haskell 其他用于 AI 的竞争语言一样出色。

1.3K00

2017最受欢迎人工智能编程语言:Python第一,R并未上榜

Haskell ? Haskell 是1990年开发的强静态类型,非限定性编程语言。由于Haskell开发人员不多,小公司很少尝试Haskell。...Haskell 做得很好的是抽象(抽象数学,而不是Java OOP)。它允许具有表达性的、高效的库表达AI算法。例如,HLearn使用常见的代数结构(模块,单群等)来表达提高简单机器学习算法速度。...虽然近年来Lisp没有被很多人使用,但该语言既灵活又具有可扩展性。 Lisp最初是针对Lambda演算开发的,诞生以来发生了很多演变。...Lisp用于开发人工智能软件,因为它支持使用符号计算的程序的实现。符号表达计算是Lisp擅长的。...此外,Lisp由一个宏系统,可以生成高效代码的开发良好的编译器,以及一组集合类型,包括哈希表动态大小列表组成。

2.3K60

函数式编程很难,这正是你要学习它的原因

如果你用Scala, Haskell, Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。...但这也同时暗示了这样做的难度需要的付出。Lisp语言跟Haskell、OcamlScala语言不同,被认为是出了名的难学,可以说是臭名昭著。文雅的人说这是Lisp语言的深度&广度的体现。...我可以打保票的说,如果你还不曾有过这样的认识,一旦你学了一种Lisp语言,你会发现所有的Lisp变种都很相似。   有人说,大部分人第一次使用Haskell或Ocaml时都完全的不知所措。...HaskellOCaml都是极好的选择,F#Erlang也相当的不错。它们都不好学,但也许这是个好事。...因为我已经学习了LispErlang,而且使用OCaml做专业工作,我决定研究一下Haskell,这完全是另外一个世界。

99651

别忙着撒欢儿了,送你一本《前端函数式攻城指南》可好?

不管是Google力推的Go、学术派的Scala与Haskell,还是Lisp的新方言Clojure,这些新的函数式编程语言都越来越受到人们的关注。...不仅如此,还有一些能编译成JavaScript的语言,能让前端的函数式编程发挥到极致,例如Haskell的PureScript、Scala的Scalajs、Clojure的ClojureScript。...Clojure独特于其他语言,它既是一门新的语言、一门函数式编程范式的语言,又流淌着古老的血液——Lisp。这是我选择用Clojure来诠释函数式编程的原因之一。...不仅如此,Mozilla的Sweet.js更是完成了另一个突破——JavaScript的macro,它虽然不能算是函数式的概念,但也算是Lisp语言的一项独门绝技了。...这一切的一切,都让我忍不住要帮Fogus出一本续集 用JavaScript实现其他函数式编程语言如Clojure甚至是Haskell的奇技淫巧,让大家进一步感受用JavaScript这门不完美的语言同样可以编写出优雅的函数式代码

78670

可爱的 Python:Python 中的函数编程

一个答案可能会说 FP 就是您在使用例如 Lisp、Scheme、Haskell、ML、OCAML、Clean、Mercury、Erlang(或其它一些)语言进行编程时所做的。...重点集中在列表 LISt 处理(例如,名称 Lisp)。列表经常子列表的递归一起使用以替代循环。 “纯”函数语言能够避免副作用。...虽然实际上消除程序中的所有流控制命令可能只对加入“混乱的 Python”竞争(与看上去非常象 Lisp 的代码)有用,但是理解 FP 是如何使用函数递归来表示流控制是值得的。 ...但他的重点与我这一专栏的观点有些相反,它提供了 Python Lisp 之间非常好的常规比较。 comp.lang.functional 常见问题是了解函数编程的一个良好开始。...我发现通过语言 HaskellLisp/Scheme 更容易掌握函数编程(即使如果只在 Emacs 中,后者可能使用得更广泛)。

87920
领券