繁体   English   中英

Haskell简单函数定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM