0. 简介和准备
Haskell是一门声明式、函数式的编程语言,相比起命令式编程,它的代码相当简洁、表达力强。一个示例是Haskell写的八皇后:
safe :: Int -> [Int] -> Int -> Bool
safe _ [] _ = True
safe x (x1:xs) n = x /= x1 && x /= x1 + n && x /= x1 - n && safe x xs (n+1)
queens :: Int -> [[Int]]
queens 0 = [[]]
queens n = [ x:y | y <- queens (n-1), x <- [1..8], safe x y 1]
要做的准备是,按照Windows10下VS Code配置Haskell语言环境这篇文章,在Windows下搭建一个VS Code+Stack+GHC的语言学习环境。
然后在VS Code中新建一个 test.hs
,并在其所处文件夹打开终端,输入 stack exec ghci
或者 stack exec -- ghci
或者 stack --compiler ghc-8.0.2 exec ghci
或者 stack --compiler ghc-8.0.2 exec -- ghci
,进入Haskell解释器环境。
1. 基础语法
函数
在 test.hs
中输入:
doublex x = x + x
然后在REPL中导入这个Haskell文件,在终端使用这个 doublex
函数:
Prelude> :l test
[1 of 1] Compiling Main ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> doublex 5
10
类似的,duoblex x
可以看作是函数名和传入的参数, =
后面则是函数返回值。相当于:
def doublex(x):
return x + x
更进一步的,我们在函数 doublexy
中调用我们写的函数 doublex
:
doublex x = x + x
doublexy x y = doublex(x)