当前位置:  开发笔记 > 编程语言 > 正文

理解Haskell函数签名

如何解决《理解Haskell函数签名》经验,为你挑选了1个好方法。

我是haskell世界的新手,我遇到了一些功能签名问题:

在简单的世界中它意味着什么:

add:: Integer -> Integer -> Integer

这是否意味着两个第一个参数是Integer,并且返回值Integer也是?

你能解释一下,使用箭头确定参数类型的目的,或者至少给我一个关于这个函数签名的简短解释吗?



1> sepp2k..:

通俗地说,我们可能确实称之为add一个需要两个Integers并生成一个的函数Integer.但是要理解这种符号,你需要理解技术上没有一个函数在Haskell中接受两个参数.

而每一个函数有且只有一个参数和功能的类型被写入a -> r其中a是参数的类型和r是结果的类型.函数箭头是右关联的,这意味着a -> (b -> c)可以在没有括号的情况下写入类型a -> b -> c.

所以Integer -> Integer -> Integer是相同的Integer -> (Integer -> Integer),它告诉我们这add是一个函数,它接受Integer并生成另一个类型的函数Integer -> Integer.这称为currying,是在Haskell中"编码"多参数函数的常用方法.

要调用这样一个curried函数,我们可以编写add 1 2,因为函数应用程序是左关联的,与(add 1) 2第一次调用add 1获取类型函数Integer -> Integer然后将该函数应用于参数相同2.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有