你好呀 Haskell

你好呀Haskell

引子

开始玩耍一个新的编程语言:Haskell, 其实很早就准备学习这个语言,而且也在官网上看了一小段教程,但是有一种云里雾里的感觉,不是没有学懂他的语法,而是还没有理解他的思想,所以一直拖到现在。

直到在上了大学物理这门课程。感谢岳老师的物理课,虽然我的物理学的并不好,但是对于看待事务本身多了一个新的角度。

对于之前学习C++,C#, Java…还有别的语言,在解决问题方面更像是在解释这个问题应该怎么做。即使是说使用了面向对象、多态、继承、封装、抽象、接口、泛型、多线程、异常等等,但依然更像是描述这个问题应该怎么做,所以这类语言也成为命令式语言。在命令式语言中执行操作需要给电脑安排一组指令, 随着命令的执行,状态会随之发生改变。

然而在纯函数式编程语言中,不再是像命令式语言那样描述要做什么,而是通过函数描述问题“是什么”。

有一个简单的例子说, 在函数式编程语言中,变量一旦赋值,就不能改了,比如 x = 5 这里已规定好了,x的值是5,那么在函数式编程语言中,变量x的值就是5,不能被改变。

简单的运算

simple-calc.hs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
plus x y = x + y
substract x y = x - y
multiply x y = x * y
divide x y = x / y

and_gate x y = x && y
or_gate x y = x || y
not_gate x = not x

is_equal x y = x == y
is_bigger x y = x > y
is_smaller x y = x < y
is_odd x = mod x 2 == 0

double_value x = x * 2

测试运行

1
2
3
4
5
6
7
8
9
10
11
12
$ ghci simple-calc.hs
#GHCi, version 9.0.2: https://www.haskell.org/ghc/ :? for help
#[1 of 1] Compiling Main ( simple-calc.hs, interpreted )
#Ok, one module loaded.

ghci> plus 2 4
6
ghci> or_gate True False
True
ghci> double_value 5
10

小小解释

定义函数: functionName args = expression

执行函数: functionName args

如果一个函数有两个参数,也可以用这样的方法调用

1
2
4 `mod` 2
mod 4 2 #两者相当

你好呀 Haskell
http://cvrain.cloudvl.cn/2023/11/10/Haskell/hello-haskell/
作者
ClaudeRainer
发布于
2023年11月10日
许可协议