Haskell编程语言入门
Haskell是一种先进,纯粹的功能和通用编程语言。
本教程地址如何安装Haskell以及如何在UNIX操作系统中使用Haskell编程语言入门。
Haskell可以三种方式安装;手动安装,使用堆栈和使用Haskell平台。
到目前为止,使用堆栈安装Haskell是官方推荐和最简单的方法。
在本教程中,我们将看到如何安装Haskell以及如何在UNIX的系统中使用Haskell编程语言入门。
安装haskell工具堆栈
Haskell Tool Stack是一个跨平台的跨平台,用于构建Haskell项目。
随着Haskell堆栈,我们为Haskell提供了全面的开发环境。
使用Haskell工具堆栈,我们可以轻松安装以下组件:
- 堆栈:用于多包Haskell项目的项目构建器,
- GHC:Haskell程序的编译器和口译员,
- Haddock:Haskell软件包的文档生成器,
- 和数千个包可以按需安装。
首先,让我们使用命令安装Haskell堆栈:
$wget -qO- https://get.haskellstack.org/| sh
或者,
$curl -sSL https://get.haskellstack.org/| sh
上面的命令将下载最新的堆栈版本并立即安装。
这些命令几乎是所有Linux发行版和FreeBSD的相同。
但是,Arch Community正在维持[社区]存储库中的官方版本。
因此,如果我们正在运行Arch Linux和/或者任何基于ARCH的系统,只需运行以下命令即可安装最新的稳定堆栈版本。
$sudo pacman -S stack
安装后,运行以下命令将路径环境变量设置为包括$home/.local/bin:
$echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
使用命令更新~/.bashrc文件中的更改:
$source ~/.bashrc
让我们看看已安装的堆栈版本:
$stack --version Version 1.6.1, Git revision f25811329bbc40b0c21053a8160c56f923e1201b (5435 commits) x86_64 hpack-0.20.0
要随时更新堆栈,刚刚运行:
$stack upgrade
要更新包索引,请运行:
$stack update
我们已安装堆栈。
让我们继续创建一个新项目。
建立一个新项目
要获取我们的新项目,我们需要一些文件,如一些Haskell源代码,包.yaml,stack.yaml和.cabal文件等其他目录。
我们可以手动创建这些文件。
但是,Haskell有许多预定义的模板。
所以,我们可以使用一个而不是手动创建它们。
要列出所有可用模板,请运行:
$stack templates
现在,我将创建一个名为"onItoad"的新项目,并使用"新模板"。
为此,运行:
$stack new theitroad new-template
示例输出将是:
Downloading template "new-template" to create project "theitroad" in theitroad/... The following parameters were needed by the template but not provided: author-email, author-name, category, copyright, github-username You can provide them in /home/sk/.stack/config.yaml, like this: templates: params: author-email: value author-name: value category: value copyright: value github-username: value Or you can pass each one as parameters like this: stack new theitroad new-template -p "author-email:value" -p "author-name:value" -p "category:value" -p "copyright:value" -p "github-username:value" Looking for .cabal or package.yaml files to use to init the project. Using cabal packages: - theitroad/ Selecting the best among 12 snapshots... Downloaded lts-10.0 build plan. Populated index cache. * Matches lts-10.0 Selected resolver: lts-10.0 Initialising configuration using resolver: lts-10.0 Total number of user packages considered: 1 Writing configuration to file: theitroad/stack.yaml All done.
安装GHC.
转到新创建的项目的目录并运行'堆栈设置'下载并安装所需的编译器。
$cd theitroad/
$stack setup
此命令将正确的GHC编译器安装到新的HASKELL项目。
GHC将安装在孤立的位置。
这意味着这不会干扰任何系统级安装。
请注意,GHC将安装在全局堆栈根目录上。
所以,我们不能使用命令GHC从shell调用它。
相反,考虑使用:Stack GHC,Stack GHCI,Stack Runghc或者Stack Exec。
有关路径的更多信息,请运行:
$stack path
和..
$stack exec env
我们现在创建了一个新项目并为我们的项目安装了正确的编译器。
现在是时候建造它了。
构建项目
要构建项目,请运行:
$stack build
确保在项目的目录中运行此命令。
构建完成后,使用命令运行可执行文件:
$stack exec theitroad-exe
示例输出将是:
someFunc
请注意,可执行文件"OniToad-EXE"将隐藏在项目的主目录中的./.Stack-工作目录中。
玩Haskell.
打开GHCI编译器:
$stack exec ghci
或者,
$stack exec -- ghci
我们将登陆GHCI提示。
GHCi, version 8.2.2: http://www.haskell.org/ghc/:? for help Prelude>
像其他人一样,让我们从"你好世界!"开始。
Prelude> "hello world!" "hello world!"
让我们尝试一些算术运算。
Prelude> 14+90 104 Prelude> 14-90 -76 Prelude> 34/2 17.0
一些复杂的操作:
Prelude> (67*98) - 50 - (24-2) 6494
让我们了解哪个数字更大或者更小:
Prelude> max 34 17 34 Prelude> min 45 98 45
找到继任者:
Prelude> succ 89 90
找到给定的输入等于或者不等于:
Prelude> 10 == 10 True Prelude> 10 == 20 False Prelude> "theitroad" == "theitroad" True Prelude> "theitroad" == "windows" False
它也很容易使用如下所示的布尔值:
Prelude> True && False False Prelude> True && True True Prelude> False || True True Prelude> False && False False
默认情况下,提示名称是prelude>。
我们可以通过键入以下方式将其更改为其他内容,例如ghci>
:set prompt "ghci> "
有关帮助,请键入:
:?
要退出,请键入:
:quit
或者,
:q
请注意,我们不必创建项目的目录。
只需从shell运行"Stack GHCI",我们可以开始使用堆栈。
它将下载正确的GHC版本并将我们降落在Prelude>提示符中。
编译和运行Haskell代码
很容易运行Haskell代码。
检查以下示例。
创建一个名为"onitad.hs"的文件,其中包含以下内容。
#!/usr/bin/env stack -- stack --install-ghc runghc main :: IO () main = putStrLn "Welcome To theitroad"
现在,我们可以使用命令运行此程序:
$stack theitroad.hs Welcome To theitroad
这是另一个例子。
使用以下代码创建名为myhaskell.hs的haskell程序:
module Main where main :: IO () main = putStrLn "Welcome To theitroad!"
然后使用命令编译它:
stack exec -- ghc myhaskell.hs -o test.hs
示例输出将是:
[1 of 1] Compiling Main ( myhaskell.hs, myhaskell.o ) Linking theitroad.hs ...
最后,如下所示运行它:
$./test.hs Welcome To theitroad!