首页 > 其他分享 >类型、类型变量、多态函数

类型、类型变量、多态函数

时间:2023-04-01 15:14:22浏览次数:45  
标签:变量 Int 态函数 Char 类型 type String

类型

Haskell有一个静态类型系统,每个表达式的类型在编译时是已知的,这将产生更安全的代码
与Java或C不同,Haskell有类型推断,不用显式编写类型
理解类型系统是掌握Haskell的一个非常重要的部分
:type命令可以检查表达式的类型,如下

:type 'a'
:type True
:type "hello"
:type (True, 'a')
:type 4 == 5

常见的类型如下

  • Int 表示整数,有界,有最大值和最小值
  • Integer 表示整数,无界
  • Float
  • Double
  • Bool
  • Char 表示一个字符,字符列表是一个String字符串

函数也有类型,当我们编写函数时,可以在它们的声明中给它们一个显式类型,这是很好的,如下

removeNoUpper :: [Char] -> [Char]
remobeNoUpper xs = [x | x <- xs, x `elem' ['A' .. 'Z']]

[Char]类型与String同义,因此可以更优雅的写成

removeNoUpper :: String -> String

多个参数时,参数之间用 -> 分隔,参数和函数返回的类型之间没有特殊区别,函数返回的类型是声明的最后一个元素,参数是剩下的部分,如下

addThree :: Int -> Int -> Int -> Int
addThree x y z = x + y + z

类型变量 多态函数

如下

:type head
head :: [a] -> a

类型变量意味着a可以是任何类型,它类似于其他语言的泛型类型,只是在Hadkell的功能要强大的多
因为它允许我们轻松定义一般的函数,只要我们不使用任何特定的类型
具有类型变量的函数称为多态函数

标签:变量,Int,态函数,Char,类型,type,String
From: https://www.cnblogs.com/muyangui/p/17278589.html

相关文章

  • DSL5.变量定义区的权限规则
    当事人如果当事人被初始化,将定义一个初始化函数实现当事人的赋值,合约部署者可以对当事人参数进行修改如果当事人被is定义,该当事人将无法修改资产如果资产被当事人拥有,该资产如果被初始化,仅当事人可以修改该资产如果资产未被当事人拥有,该资产处于未定义状态,合约部署者......
  • DSL5.变量定义区的权限规则
    当事人如果当事人被初始化,将定义一个初始化函数实现当事人的赋值,合约部署者可以对当事人参数进行修改如果当事人被is定义,该当事人将无法修改资产如果资产被当事人拥有,该资产如果被初始化,仅当事人可以修改该资产如果资产未被当事人拥有,该资产处于未定义状态,合约部署者......
  • Go语言入门(go环境配置,变量和常量)
    go语言特点天然支持高并发语法简单,去掉很多臃肿的东西优化的内存分配和垃圾处理完善的标准库go安装下载:Go下载-Go语言中文网-Golang中文社区(studygolang.com)goversion判断是否安装成功配置环境变量GOROOT,GOPATHgoenv查看环境变量配置goland开发工具安装Dow......
  • 《Mysql基础》【Mysql函数 mysql数据类型】 编程入门 学习分享 【公开免费】
    -- --mysql数据库程序设计笔记:gb2312是国标,中国字库。一个汉字2个字节。utf8国际通用标准。包含gb2312;外键只能引用主键和候选键。外键只可以在InnoDB中使用。字段约束:字段类型后可加:check(多个列判断条件)列为:column用col1、col2....代替一、mysql函数:聚合函数:1、......
  • 《Mysql基础》【Mysql小数浮点数】double float decimal数据类型 编程入门 学习分享
    -- --mysql数据库程序设计笔记:-------------小数测试--------------------double浮点小数(最多小数位后15位,)使用8个字节存储。--float单精度小数:(最多小数位后6位)使用4个字节存储。--举例保留2位:float(18,2),或:double(20,2)--decimal(最多小数位后30位)(存储空间更优,更小,......
  • C语言逆向汇编——参数局部变量、函数堆栈、调用约定和内嵌汇编码
    第一节1.1C语言1、注意参数和局部变量在堆栈中的存储方式2、参数在调用函数前就已经存入堆栈,从[EBP+8]、[EBP+C]、……开始。3、局部变量是在调用函数后,存入缓冲区里,从[EBP-4]、[EBP-8]、……开始4、函数运算得到的结果,通常存在EAX里。        第一......
  • su su- sudo 的环境变量的知识
             ......
  • 记录使用mybatis时踩到的坑-integer类型数据为0时,会判断为:等于空字符串为true
    因为做查询操作时,需要设置为传入参数值才进行查询,于是判断条件是:status!=nullandstatus!=''即mapper层的写法:<iftest="status!=nullandstatus!=''">andstatus=#{status}</if> 但设计表时,默认status=0表示正常状态,status=1表示其他状态。当传入status=0进......
  • Python 数字类型之 int float
    数字常量int:一般的整数,long:长整型,2.x版本需在数字后加“L”或“l”,表示长整型如100000000L;python3.x版本后不分长整型,统一为int,不可加“L”或“l”float:浮点数,1.0也为浮点数,float可强制转换为int,取整;print(type(1234))print(type(-24))print......
  • 标识符,数据类型
    标识符标识符是大小写敏感的所有的标识符都应该以字母(A-Z或者a-z)美元符号$、下划线(_)开始首字母符号之后可以是字母(A-Z或者a-z)、美元符号$、下划线(_)或数字的任何符号组合不能使用关键字作为变量名或者方法名可以使用中文命名,但是一般不这样做,也不建议是用拼音,很LOW数据类......