Haskell 入门(一):定义一个函数

【本文建议有 C/C++ 系语言基础的同学阅读】
首先呢,Haskell 和我们平时经常看见的 C++/Java 和 C 等面向对象和面向过程的语言不同,Haskell 是一门函数式语言.
这意味着很多在面向对象/过程语言上常用的语法在 Haskell 将完全不一样. 例如:Haskell 没有 for 循环. 那有人会问了,在 Haskell 里面连 for 循环都没有,难道要做循环必须使用递归吗?没错,在 Haskell 中,大部分的循环都用带模式匹配(Pattern Matching)的递归来完成. 而且虽然递归在空间和时间复杂度上通常差于相同的迭代算法,但 Haskell 的编译器会很聪明地把可能的递归转化成迭代. 因此,Haskell 的程序在做循环的时候并不比 C/C++ 慢很多,当然也不比 Java 慢.

首先,我们来看一段最简单的 Haskell 函数:

--tutor.hs
plus :: Int -> Int
plus a = a + 1

这个函数很简单,就是把接收到的 Int 类型(注意,在 Haskell 中,类型都以大写字母开头,所以所有函数必须小写字母开头)加上 1 然后再把值返回。

第一行的

plus :: Int -> Int

告诉编译器,我定义了一个名叫 plus 的函数,这个函数接受一个 Int 参数,并返回一个 Int.

有同学可能会问了:这段程序没有 return 关键字,编译器怎么知道需要返回哪个值?
很简单,Haskell 会把最后一个表达式的值返回. 在这里最后一个表达式是 a + 1,所以 Haskell 会把 a + 1 的值作为返回值返回.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值