[英]Haskell Simple Function Definition
我从几天前开始学习Haskell,现在正在学习函数类型。
使用元组,下面的代码有效。
add1 :: (Int,Int) -> Int
add1(x,y) = x + y
但是,如果我想不使用元组来执行相同的功能怎么办?
我已经尝试了两个函数定义
add2 :: Int, Int -> Int
add2 :: Int Int -> Int
同
add2 a b = a + b
但是这两个函数定义无法编译。 我究竟做错了什么?
您的类型应该是
add2 :: Int -> Int -> Int
添加括号将显示此类型的实际含义。
add2 :: Int -> (Int -> Int)
因此,add2是一个接受int并返回另一个函数的函数(类型Int -> Int
)。 您可以如下使用
add2 1 -- this returns a function, type Int -> Int
或者,添加第二个参数以获取最终的Int
(add2 1) 2 --same as "add2 1 2", returns an Int value 1+2=3
您也可以使用咖喱 ( http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:curry ):
add2 :: Int -> Int -> Int
add2 = curry add1
> add1 (1,2)
3
> add2 1 2
3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.