Haskell趣学指南学习日记(3)

原创 2015年07月09日 21:33:40

Haskell的类型系统


Haskell与弱类型语言不太一样,它拥有一个完善的类型系统,虽说完善,但是也非常简单,下面稍微就稍微列举一下:

  • Int
  • Integer
  • Float
  • Double
  • Bool
  • Char
  • 元组
  • 类型类(typeclass)

这里最重要的则是类型类了,你可以将它看作一个接口。我们可以继承这个类型类来实现我们自己的实例。而在Haskell中,所有的运算符基本都是继承自类型类的。

查看变量的类型

在Haskell中,我们可以很轻松地使用命令来查看一个变量的类型,只要输入:t后接变量即可:

list = [1,5]

显示定义类型

Haskell会自动为我们推倒出变量的类型,但这只限于变量的声明。对于函数,就无能为力了,因为函数一般都是使用类型变量的,下面会介绍它,先来看显示定义函数参数和返回类型:

isPass :: Int -> Bool
isPass grade = if grade <60
               then False
               else True

在函数定义前我们可以加上类型定义,这里定义了一个叫isPass函数,它接受一个Int参数,返回一个Bool值。定义多个参数也很简单,只要追加在第一行即可:

printPerson :: String->Int->String
printPerson name age = name ++",age: "++show age


show函数暂时可以理解为toString

我们可以使用这种方式一直追加下去,不过要记住,最后一个参数是返回值的类型,函数必须要有返回值。

模式匹配

同所有现代语言一样,Haskell也支持泛型,不过在Haskell中,泛型便称之为类型变量,它的使用也非常简单,我们在一开始定义函数时就已经使用过了:

max2 a b = if a>b 
           then a 
           else b

Haskell的一些坑


  • 当你的代码出现错误时,比如无法载入模块,请把函数名称的首字母改为小写,在Haskell中,除了类型名字其余的首字母都应该小写。
  • Haskell中的类型是与机器有关的,比如Int类型的最大值在32位和在64位机器上的结果是不同的。
  • 有时候,你可以使用:t命令来查看一些运算符的类型,你会发现它们都是实现了一种特定的类型类
  • String类型其实是Char数组,而数组其实是一串:运算符连接起来的。比如[1,5,7]的真实身份是 1:5:7:[]
版权声明:如果你觉得作者有什么错误的地方,可以在评论区里指出来。

相关文章推荐

Haskell趣学指南

  • 2015-04-23 20:25
  • 2.81MB
  • 下载

Haskell趣学指南

  • 2015-11-03 10:32
  • 3.15MB
  • 下载

MongoDB学习日记(一):安装指南

MongoDB windows 下的实战安装指南,使用的是3.0.6版本

A HASKELL 趣学指南

  • 2010-06-09 10:03
  • 783KB
  • 下载

[Haskell] ex3

在疯狂的忙碌着忙碌着赢在中大比赛,疯狂幻想疯狂挥霍青春。终于踏上了Rails学习的路程。梦想很大,等我一步步去走。第三次Haskell大作业....大一学离散数学时候觉得遥不可及的程序,不到100行就...
  • parano
  • parano
  • 2011-05-26 20:27
  • 1011

Haskell趣学指南

  • 2016-12-28 14:28
  • 2.81MB
  • 下载

java学习日记3

  • 2015-11-21 09:35
  • 44KB
  • 下载

haskell的世界观(3)

2007-04-02旧作。原载:http://blog.csdn.net/st_monad/article/details/1548864 为什么monad的引入就能够把pure wor...

趣学Haskell

  • 2015-07-31 13:30
  • 5.57MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)