关于Haskell中的类型
Friday, 5. January 2007, 15:39:47
Haskell的类型独特,变化较多,第一次接触感觉确实有点摸不到头脑。
:t命令用来查看变量/函数/表达式的类型,比如:
就得到:
[2,3,4]
而
"ello"
这是简单的情况,下面看个稍微复杂的:
假设函数f的类型是Float -> Float,也就是说它接收一个Float参数,并返回Float值,这和C/C++还不一样,因为Haskell是functional语言,所以Float -> Float只能单纯地做数值计算,换句话说,就是不能做一些额外的其他东西,比如打印最后的结果。 现在,我们想要f计算并打印出结果,那么f的类型就变了,就应该是: Float -> (Float,String) 。
:t "hello" "hello" :: [Char]"hello"是由Char类型组成的List。
:t tail tail :: [a] -> [a]->前面的是函数接收的参数类型,后面的是返回值类型。上面表明tail可以接收任何类型,并且返回一个同类型的值。 这很容易理解,比如:
tail [1,2,3,4]就得到:
[2,3,4]
而
tail "hello"也可以,就能得到:"ello"
这是简单的情况,下面看个稍微复杂的:
假设函数f的类型是Float -> Float,也就是说它接收一个Float参数,并返回Float值,这和C/C++还不一样,因为Haskell是functional语言,所以Float -> Float只能单纯地做数值计算,换句话说,就是不能做一些额外的其他东西,比如打印最后的结果。 现在,我们想要f计算并打印出结果,那么f的类型就变了,就应该是: Float -> (Float,String) 。













