Haskell简单函数定义

时间:2016-04-09 22:39:09

标签: haskell functional-programming

我几天前开始学习Haskell,现在我正在学习函数类型。

使用元组,代码可以正常工作。

add1 :: (Int,Int) -> Int
add1(x,y) = x + y

但是如果我想在不使用元组的情况下执行相同的功能呢?

我已尝试过两种功能定义

add2 :: Int, Int -> Int
add2 :: Int Int -> Int

add2 a b = a + b

但是这两个函数定义不能编译。我做错了什么?

2 个答案:

答案 0 :(得分:3)

你的类型应该是

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

答案 1 :(得分:1)