Date
May. 19th, 2024
 
2024年 4月 12日

Post: Haskell Primer 001: 尝鲜

Haskell Primer 001: 尝鲜

Published 12:04 Apr 04, 2016.

Created by @ezra. Categorized in #Programming, and tagged as #Haskell.

Source format: Markdown

Table of Content

关于什么是 Haskell 以及为什么要选择 Haskell 的问题就不再讨论了。本文主要介绍学习 Haskell 要准备的工作。

请知悉: 这个系列的博客只是 Haskell 的基础知识,写给准备了解和学习 Haskell 的初学者。对于某些知识点,深入的内容可能会在后续的文章中出现,但太复杂的问题不在这些博客的范围之内。

编辑器

编辑器你可以选择自己喜欢的任何工具,值得推荐的依然是 Atom

记得在 Install 中搜索和安装必要的语言插件。

编译器

本系列教程中将会使用比较流行的 GHC(Glasgow Haskell Compiler),它的安装也很简单,你只需要下载 Haskell Platform,其中包含了许多运行时类库。

Homebrew 为例,请执行 $ brew install haskell-platform

GHC 可以解释执行 Haskell 脚本,也可以进行编译。这些源文件通常以 .hs 为扩展名。

作为初学者,你可以通过 ghci 指令进入互动模式来开始你的学习。

$ ghci
GHCi, version 7.10.3: https://www.haskell.org/ghc/  :? for help
Haskell>

你可以像我一样修改 GHC 的提示符,方法是编辑 ~/.ghci 并输入 set prompt "提示符文字> " 即可。

现在,我们在 GHC 的互动模式中进行一些简单运算尝尝鲜:

Haskell> 2+15
17
Haskell> 4*200
800
Haskell> 213-43
170
Haskell> 10/2
5
Haskell> (100*2)+123
323
Haskell> 5 * 100 - 20
480
Haskell> 5 * (100 - 20)
400
Haskell>

有时候也会出现一些问题:

Haskell> 5 * -3

<interactive>:8:1:
    Precedence parsing error
        cannot mix ‘*’ [infixl 7] and prefix `-' [infixl 6] in the same infix expression
Haskell> 5 * (-3)
-15
Haskell>

也就是说使用负数时最好置于圆括号 () 中。

接下来试试布尔代数 (Boolean Algebra) 的演算,与其它语言类似, && 表示且 (AND),|| 则表示或 (OR),而 not 表示取反。

Haskell> True && True
True
Haskell> True && False
False
Haskell> True || False
True
Haskell> not False
True
Haskell> not (True && False)
True
Haskell>

对于相等性,我们使用 == 表示相等,/= 表示不等。

Haskell> 1 == 1
True
Haskell> 1 + 1 == 3
False
Haskell> 3 /= 3
False
Haskell> "Meniny" == "meniny"
False
Haskell> "Ezra" == "Ezra"
True
Haskell>
Pinned Message
HOTODOGO
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF