【问题标题】:Functional programming and Haskell [closed]函数式编程和 Haskell [关闭]
【发布时间】:2011-11-16 08:12:17
【问题描述】:

我来自 html/css/javascript/jQuery 的 1 年编程背景和 Java's JSP Servelets 的 6 个月编程背景。我在大学二年级,在二年级的最后一个学期,我没有通过函数式编程课程我们正在学习 Haskell(可能主要是因为我错过了 90% 的课程)。似乎在我的第二年,我还将参加有关 Haskell 女巫的课程,因此仅学习基础知识是不够的。

我感兴趣的是:

-OOP编程和函数编程的区别

-向初学者推荐使用 Haskell 进行功能编程的书(我似乎无法理解教授所写的内容)

-读完书去哪里练习语言

-我可以用 Haskell 做什么而不能用 Java 做什么

-我是否需要大量数学才能理解 Haskell(我的大学教授在他的课程中使用了很多与数学相关的东西)

【问题讨论】:

  • 所有这些都可以在网络上轻松搜索。 IMO Learn You a Haskell for Great Good 是无价的。
  • 您在这里提出了很多广泛的问题。你为什么不看看haskell.org,如果你有任何更具体的问题回来?
  • 尽管普遍认为,大多数教授喜欢谈论他们教的东西。所以找个时间找你的教授(或给他发电子邮件)问这些问题。我相信他会给出非常令人满意的答案。如果您对课程准备不足(例如您需要更多的数学经验),那么教授是识别该问题的最佳人选。

标签: java haskell functional-programming


【解决方案1】:

我同意上述观点 - 缺课是一件坏事,而良好的英语是一项很好的技能。

  • 当然 - 已经提到的Learn you a Haskell for great good - 是开始的位置。
  • Here 是德国运动课的录音,但口语是英语(带有德国口音)。
  • 您还应该注意的一件事是:Hoogle,如果不是 最伟大的事情,当谈到学习 haskell (imho) - 一种类型可搜索的文档:
    • 如果您搜索一个拉出列表末尾的函数 - 但您不知道名称:
      hoogle: [a]-> a 列出具有给定类型签名的所有函数 - last,您要查找的函数就是其中之一。
  • 另一件事 - 帮助我发展我的 Haskell 技能是 - vim 中的 syntastic,一个语法检查器,它大大加快了“编译 - 检查 - 运行”的循环,以及 hlint - 一个 linting 工具,它使代码更具可读性 - 并向您展示添加到代码中的不必要的东西,我真的从这样整理我的代码中学到了东西。
  • 从 IO 开始 - 有 this 很棒的文章。这也是一个很好的介绍经验丰富的函数式程序员是如何思考的。
  • 我听说,对于高级内容和了解 monad,Monad Reader recent stuffolder stuff 值得一提,尤其是 #13。

如果您已经了解并喜欢 Java,请查看 Clojure

【讨论】:

    【解决方案2】:

    OOP 编程和函数编程的区别

    从您的背景来看,您可能对 OOP 了解不足,因此无法进行比较。忘掉它,学习函数式编程本身。

    对于使用 Haskell 进行功能编程的初学者推荐什么书(我似乎无法对教授所写的内容进行标题或故事)

    其他人不断提到 Learn You A Haskell 是有原因的。 :]

    读完这本书去哪里练习语言

    在您的计算机上?获取编译器,获取代码编辑器,开始编程。边做边学是最好的方法。

    我可以用 Haskell 做什么而不能用 Java 做什么

    微不足道,什么都没有。最后,这两种语言都能够做任何你想做的事情。

    再一次,你没有花足够的时间使用 Java 来比较这两种语言是否有帮助,所以只需学习 Haskell 本身。

    我是否需要大量数学才能理解 Haskell(我的大学教授在他的课程中使用了很多与数学相关的东西)

    不是真的。虽然一点点离散数学和形式逻辑会有所帮助,但无论如何,这都是你应该在任何 CS 程序中获得的东西。

    【讨论】:

      【解决方案3】:

      Learn You a Haskell for Great Good 开头。另外,看看 jQuery 库的设计,因为它的许多功能都是围绕函数式编程技术设计的。

      另外,我强烈建议您也花一些时间来复习您的英语技能。在我看来,编程与语言的关系至少与数学的关系一样。到目前为止,从您的 cmets 来看,我怀疑您对两者的处理方式有些草率。这将是最难克服的事情。作为一般规则,编程系统非常严格,您需要学习一种或另一种方式,以便在组织思想的方式上更加精确。

      【讨论】:

        【解决方案4】:

        如果你错过了大部分的讲座,那么我并没有得到太多的同情。但我会尽力提供帮助。

        1:OOP 和函数式的差异:大问题。现在,我会尝试以开放的心态来接触 Haskell,而不是试图从它与 OOP 的区别来理解它。

        2:“Learn you a Haskell”和“Real World Haskell”都可以在网上找到。

        3:完成书中的练习。然后看看 Project Euler 中的练习。

        4:两者都是通用语言,因此任何应用程序都可以用这两种语言编写。 Haskell 实现了更高的类型安全性和更短的代码。

        5:不,但数学可以帮助您更深入地理解它。我边走边学了相关的数学。在 Wikipedia 上查找数学术语,不要费神。

        【讨论】:

        • 嗯,当你工作时,你没有太多时间学习所有课程,但谢谢你的信息
        • @Aly:如果你甚至没有足够的时间去听大部分的讲座,那么你肯定没有足够的时间来完成所需的学习。除了每周坐在房间里几次,然后希望及格,还有更多的学习。
        • 嗯。如果您同时工作,并且无法抽出必要的时间进行学习,我看不出这是一个可行的系统。
        • @Aly:那为什么不从大学休息一下,专注于你的工作呢?几年后,一旦您对一般编程习惯了一段时间,您肯定会更能体会到 Haskell 和函数式编程的价值。
        • @Aly:我想你会发现工作和大学教的东西不同,两者都很有价值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2010-09-06
        • 2011-05-15
        • 2020-03-27
        • 1970-01-01
        • 2012-09-12
        相关资源
        最近更新 更多