首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不明白为什么这是斐波纳契序列。我有足够的智慧成为一个Haskell程序员吗?

我不明白为什么这是斐波纳契序列。我有足够的智慧成为一个Haskell程序员吗?
EN

Stack Overflow用户
提问于 2016-02-08 21:46:37
回答 2查看 339关注 0票数 3

这是一种在Haskell中获取斐波纳契序列的方法。它来自于“haskellbook.com”一书(据说是为初学者编写的):

代码语言:javascript
复制
fibs = 1 : scanl (+) 1 fibs

在手动写出第几个元素之后,我只能“看到”这是Fibonacci:

代码语言:javascript
复制
1 : scanl (+) 1 (1 : scanl (+) 1 (1 : scanl (+) 1 (1 : 1 ...
1 : scanl (+) 1 (1 : scanl (+) 1 (1 : 1 : 2 : 3 ...
1 : scanl (+) 1 (1 : 1 : 2 : 3 : 5 : 8 ...
1 : 1 : 2 : 3 : 5 : 8 : 13 : 21 ...

直到现在,我才有一些直觉来解释为什么这是斐波纳契序列。但我得像这样先把它写下来。即使如此,它仍然只是直觉,而不是确凿的证据。

我有三个问题:

  1. 我是不是应该马上从原始线路上找出斐波纳契序列?
  2. 你们中的一些专业的Haskell程序员会不会在这里工作5-10年,如果你之前从未见过这个特殊的例子,你会立即看到原来的一行是Fibonacci序列吗?
  3. 有时我会怀疑自己是否聪明到足以成为Haskell程序员。也许不是给我的。Haskell有时会让我觉得自己不够格:(在其他编程语言中从来没有这种感觉)。因此,第三个问题:是否开发了任何测试/方法来确定某个特定的程序员是否足够聪明,足以成为Haskell程序员?(我确信Haskell比大多数其他语言都需要更高的智商!)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-08 22:14:22

我是不是应该马上从原始线路上找出斐波纳契序列?

该死的不!你应该读这个例子,抓起你的头,用手写出来.从而直观地了解scanl是如何工作的,以及为什么它可以用于斐波那契数。

你们中的一些人..。看到原来的线路是斐波纳契序列了吗?

它叫fibs..。除此之外,是的,scanl是足够标准的,一个有经验的程序员很快就会看到正在发生的事情。

很确定Haskell需要更高的智商

我认为Haskell最需要的是一种很强的固执,以及一种特殊的美感。哈斯克尔有一些古怪的方法来做不同的事情。其中有些地方有点难以理解,但最重要的是,它们对大多数程序员来说都是陌生的。这一切都是为了适应这些东西。

而且,如果我们诚实的话,Haskell技能现在还不是一个非常实用的东西(就像在任何现实世界中的任务也可以被其他语言解决一样),你真的需要对语言的美丽和未来的潜力有一些热情才能跟上它。

请注意,Haskell的怪癖和特性有慢慢渗入主流语言的趋势。所以,即使“Haskell不适合你”,从长远来看,你也可以从这里原型的美好事物中获益,甚至可能根本没有注意到它们来自哪里。

票数 11
EN

Stack Overflow用户

发布于 2016-02-08 22:11:29

  1. 与任何其他语言一样,代码的语义应该--在某种程度上--文档本身,所以答案是肯定的。但与此同时,它需要时间来适应语法-就像任何其他语言一样。别担心,你会明白的。试着不要回避这些问题,并接受它们。一步一步地工作是一种很好的方法,继续这样做!
  2. 我既不是一个专业的Haskell程序员,10年前也没有学过它,但在某种程度上是肯定的。就像您在半秒钟内无法理解任何其他语言中的Fibonacci一样,我不得不考虑它,但与我开始用Haskell编写时相比,我可以快速地获得一个lot
  3. 和任何其他编程语言一样,Haskell需要一种特定的思维方式来轻松、快速地阅读和理解。请记住,您第一次看到任何其他语言的代码。很有可能,你感觉到了同样的事情,但不要记得那么清楚。由于Haskell是一种非常受数学启发的语言,许多非数学家经常在符号和编码风格上挣扎。我的建议是不要放弃。在大学里,你可能没有三年的数学经验,所以这只需要一小段时间。但是在彩虹的尽头有一大罐金子。根据我的经验,编写Haskell代码的人能够在其他任何人都无法理解的水平上理解函数式编程!它肯定有助于用任何其他语言编写优雅的代码!
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35279969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档