Haskell第二课

标签(空格分隔): 笔记 Haskell


1.
double x y = x + y
f x y::Int->Int(以e :: t的格式表示e的类型是t)
f:: A1 -> A2-> B 其中A1A2是输入的类型,B是输出的类型(这事写函数前的类型说明),f是函数名(要小写字母开头)

例:add :: Int -> Int -> Int
add x y = x + y 注:类型定义和函数声明要左对齐,如果函数太长,要写到下一行,需要缩进(不用文本编辑是无法换行的)

2.类型
Int是有限整数
Integer,所有整数
Float,Double,浮点数(即实数)
“XXX”,”Hello, world”表示字符串,类型是String.
(String==[char],如Hello==[‘H’,’e’,’l’,’l’,’o’])

布尔类型Bool:True,False, (&&) , (||)
布尔运算True | | False = True

3.
:type length 可查看length的类型(注意冒号)
结果为length :: Foldable t => t a -> Int (a,b是类型变量,可以是任意类型,这种函数叫多态函数)

:type可简写成:t (如     :t (3 + 5)   可得到:(3 + 5) :: Num a => a    
:t (++)  可得到 (++) :: [a] -> [a] -> [a] (问运算符的类型时需要打括号,二元运算符不能放在两个值的前面)

myMax (x,y) = if x>y then x else y 的类型为:
myMax :: (Float, Float) -> Float

myMax x y = if x>y then x else y 的类型为:
Mymax1 :: Float -> Float ->Float 两种方式类型不一样,使用方法也不一样

(Int , Int) 整数对
(String , Int) 两个集合的叫做二元组

关于二元组的函数例子:
getName :: (String , Int) -> String(编程时不用写)
getName (name, age) = name

qSort :: [Int] -> [Int]
类型[Int]包含整数序列,如[1,2],[2,3,3,2],[3,1],[3],[]
[Float],[String]都是类型,一般地,a是一个类型,[a]是一个列表类型,表示a的值的列表类型
(Int, [Int]),[((Int,Float), [String])]都是合法类型,
[(Int,Int)(Int,Float)]不合法(一个是整数对,一个是二元组)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值