Haskell第二课

来源:互联网 发布:mac系统突然很卡 编辑:程序博客网 时间:2024/05/17 08:41

标签(空格分隔): 笔记 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
原创粉丝点击