当前位置: 首页 > news >正文

《Haskell趣学指南》—— 第2章,第2.2节Haskell的常见类型

本节书摘来自异步社区《Haskell趣学指南》一书中的第2章,第2.2节Haskell的常见类型,作者 【斯洛文尼亚】Miran Lipovaca,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 Haskell的常见类型
接下来我们看几个Haskell中常见的基本类型,比如用于表示数、字符、布尔值的类型。

Int意为整数。7可以是Int,但7.2不可以。Int是有界的(bounded),它的值一定界于最小值与最大值之间。
注意:
我们使用的 GHC 编译器规定 Int 的界限与机器相关。如果你的机器采用64位CPU,那么Int 的最小值一般为−263,最大值为263−1。
Integer也是用来表示整数的,但它是无界的。这就意味着可以用它存放非常非常大的数(真的非常非常大!),不过它的效率不如Int高。拿下面的函数作为例子,可以将下面的函数保存到一个文件中:

factorial :: Integer -> Integer
factorial n = product [1..n] 

然后通过:l将它装载入GHCi并进行测试:

ghci> factorial 50
30414093201713378043612608166064768844377641568960512000000000000

Float表示单精度浮点数。将下面的函数加入刚才的文件:

circumference :: Float -> Float
circumference r = 2 * pi * r

随后装载并测试:

ghci> circumference 4.0
25.132742

Double表示双精度浮点数。双精度的数值类型中的位是一般的数值类型的两倍,这些多出来的位使它的精度更高,同时也占据更大的内存空间。继续将下面的这个函数加入文件:

circumference' :: Double -> Double
circumference' r = 2 * pi * r

装载并测试。可以特别留意circumference与circumference'两者在精度上的差异。
`
ghci> circumference' 4.0
25.132741228718345

Bool表示布尔值,它只有两种值,即True和False。
Char表示一个Unicode字符。一个字符由单引号括起,一组字符的列表即字符串。

相关文章:

  • awk 系列:如何使用 awk 的 ‘next’ 命令
  • 《深入浅出iPhone/iPad开发(第2版)》——你已经创建了自己的第一个iPhone应用程序!...
  • 十分钟搞清字符集和字符编码
  • 缓存失效竟然可以这么解决?
  • 一个最简单的jQuery插件编写历程
  • 《Android游戏开发详解》一2.10 使用对象
  • 《Python核心编程(第3版)》——2.8 练习
  • 《编译与反编译技术实战 》一 第1章 实践的环境与工具
  • Hadoop创始人Doug Cutting谈未来大数据的技术
  • 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.16 创建索引...
  • 《嵌入式C编程:PIC单片机和C编程技术与应用》一1.11 兼容性
  • 《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》——2.5节点对点通信
  • 《走进SAP(第2版)》——1.2 小结
  • 《HTML5实战》——第2章 创建表单:输入小部件、数据绑定以及数据验证
  • 《Nmap渗透测试指南》—第7章7.9节系统漏洞扫描
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【译】理解JavaScript:new 关键字
  • Android开源项目规范总结
  • express + mock 让前后台并行开发
  • HTML5新特性总结
  • HTML-表单
  • HTTP请求重发
  • js ES6 求数组的交集,并集,还有差集
  • js中的正则表达式入门
  • Spring-boot 启动时碰到的错误
  • Twitter赢在开放,三年创造奇迹
  • Vue.js-Day01
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 技术胖1-4季视频复习— (看视频笔记)
  • # Panda3d 碰撞检测系统介绍
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4)Elastix图像配准:3D图像
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (TOJ2804)Even? Odd?
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (六)vue-router+UI组件库
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)C#调用WebService 基础
  • (转)程序员技术练级攻略
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET 反射的使用
  • .net打印*三角形
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [17]JAVAEE-HTTP协议
  • [20190416]完善shared latch测试脚本2.txt
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Android]常见的数据传递方式
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C\C++]读入优化【技巧】