haskell - 入门Haskell

  显示原文与译文双语对照的内容

几天前,我试图在Haskell的函数式编程范式中绞尽脑汁。 我通过阅读教程和观看视频来做到这一点,但似乎没什么真正的坚持。 现在,在学习各种命令式/oo语言的时候,练习对我来说是一个不错的方法。 但是,因为我不知道Haskell有哪些能力,而且有很多新概念要使用,我还不知道从何开始。

那么你是如何学习 Haskell? 什么让你真正的"打破冰面"? 还有,开始练习的好主意?

时间: 原作者:

我的一些同事对有很好的经验,了解到你是一个伟大的Haskell ! 。

针对具有命令式编程语言但还没有在函数语言中编程的人的教程。

并检查答案这里的

原作者:

下面是一本可以在线阅读的好书: 真实世界 Haskell

我所做的大部分Haskell程序都是为了解决项目 Euler 问题。

一条建议我读不久之前,你应该有一组标准的简单的问题你知道如何解决( 理论中) 然后当你尝试学习一门新语言实现那些语言的问题。

原作者:

要添加其他'答案- 在编码时有一个有用的帮助( 例如在解决项目Euler问题时) ): Hoogle 。你可以使用 命令行 接口或者网络界面。

yf_terminology_Command Line@#@#@#命令行_yf_terminology

在你安装完Haskell平台之后,请确保 cabal install hoogle

Hoogle用法示例:

你有一个函数 f x = 3 * x + 1 你想要在 (5 :: Int) 上应用它,然后在结果上应用它,然后在结果上,然后得到这些值的无限列表。 你怀疑有一个函数可以帮助你( 虽然不是针对你的f ) 。

函数的类型为 (a -> a) -> a -> [a] 如果需要 f 5 或者 a -> (a -> a) -> [a] 如果需要 5 f ( 我们假设函数是针对一般类型而不仅仅是 Int的)


$ hoogle"a -> (a -> a) -> [a]"
Prelude iterate :: (a -> a) -> a -> [a]

是的,你需要的函数已经存在,它被称为 iterate 。 你用 iterate func 5

web 界面

同样示例的结果可以在这里找到

原作者:

格雷厄姆在haskell Hutton编程简洁,相当彻底,他多年的教学haskell真的表演。 这几乎总是我推荐人们开始的地方,不管你从哪里去。

特别是,第 8章("函数解析器") 提供了开始处理清单所需的真实基础,我认为是开始的最好地方,其次是 。 ( 关于这一章,请注意网站的勘误: 没有特殊帮助,你不能使用 do 表单。 你可能需要先了解 typeclasses,然后自己解决这个问题。

Haskell初学者很少强调这一点,但它值得尽早学习,不仅仅是关于使用 monad,而是构建自己的。 这不是难事,定制的可以使许多任务更加简单。

原作者:

这些是我最喜欢的

Haskell: 使用 类型的函数编程


Joeri van Eekelen, et al. | Wikibooks
 Published in 2012, 597 pages

真实世界 Haskell


 B. O'Sullivan, J. Goerzen, D. Stewart | OReilly Media, Inc.
 Published in 2008, 710 pages

原作者:
...