【发布时间】:2012-02-05 22:15:49
【问题描述】:
我看过的许多 Haskell 教程几乎完全集中在语法上,很少涉及如何构建程序。
例如...
这是一个 C++ 应用程序的基本概要:
#include <iostream>
using namespace std;
int addition (int a, int b)
{
int r;
r=a+b;
return (r);
}
int main ()
{
int z;
z = addition (5,3);
cout << "The result is " << z;
return 0;
}
当我第一次开始学习 C++ 时,这些示例极大地帮助了我学习如何将各个部分组装成工作程序。也许我在寻找错误的地方,但我无法找到任何对 Haskell 一样直接和简单的示例。
我已经知道很多 Haskell 语法。我可以编写递归列表推导,操作字符串、整数,并列出 wazoo。
简而言之:我只想知道 Haskell 中的两个子例程和变量传递是什么样的。如果我能够对如何构建 Haskell 程序有一些基本的了解,我可能最终能够将我学到的所有语法都用于某些用途。
【问题讨论】:
-
我会从 haskell.org/haskellwiki/Haskell_in_5_steps 这样的地方开始,我正在学习 Clojure。不过,我确实有 O'Reilly Haskell 的书,而且这本书 -- nostarch.com/lyah.htm -- 似乎得到了很多好评。
-
虽然这是一个合理的问题,但请允许我建议您接近 Haskell 略有错误。 Haskell 尽可能强调纯函数,并且大多数 Haskell 实现提供了一个 REPL(读取-评估-打印循环),您可以在其中使用您定义的函数。我强烈建议不要编写打印到标准输出的小程序,而只需编写函数并在 ghci 中使用它们。我想你会发现学习 Haskell 更加灵活有趣。
-
@DanBurton 上个月我可能一直在阅读语法,并在 ghci 中使用函数和列表推导。我现在准备做一个程序。 (:D你是对的,我一直在错误地接近Haskell。我正在尝试将过程编程原则应用于函数式编程语言。我仍在努力思考如何将一堆函数变成某种东西它可以做的不仅仅是运行一次就停止。我会继续阅读。
-
@octopusgrabbus 这是我第一次看到 Haskell in 5 Steps 链接。据我所知,我可以通过主调用和循环下面列出的各种函数来制作一个 Haskell 程序?
-
@SubtleArray: 没有“下层”:在 Haskell 中,函数可以在源文件中以任意顺序排列。
标签: function haskell data-structures subroutine