Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell-理解:t[长度,头部]定义_Haskell - Fatal编程技术网

Haskell-理解:t[长度,头部]定义

Haskell-理解:t[长度,头部]定义,haskell,Haskell,做作业时我发现自己被一个问题困住了。我必须通过统一它们(教授称之为统一它们)从一个基本类型到一个“更复杂”类型。地图示例: map :: (c -> d) -> [c] -> [d] map :: (a -> b) -> [a] -> [b] 通过将c替换为a->b,将d替换为[a]->[b]并省略map的第一个参数,结果是[a->b]->[[a]->[b]],这是haskell在执行以下操作时返回的:t map map 在一个练习中,我有一个[lengt

做作业时我发现自己被一个问题困住了。我必须通过统一它们(教授称之为统一它们)从一个基本类型到一个“更复杂”类型。地图示例:

map :: (c -> d) -> [c] -> [d]

map :: (a -> b) -> [a] -> [b]
通过将
c
替换为
a->b
,将
d
替换为
[a]->[b]
并省略map的第一个参数,结果是
[a->b]->[[a]->[b]]
,这是haskell在执行以下操作时返回的:t map map

在一个练习中,我有一个
[length,head]
,根据Haskell中的:t
[length,head]::[[Int]->Int]

我在理解
[length,head]
的工作原理时遇到问题。这是一个函数列表?它对列表执行
head
,然后对结果应用
length

我找不到这样的例子,每次我试图将一个或多个列表输入到
[length,head]
时,它都会出错。我注意到
[head,length]
的类型与
[length,head]
的类型相同,这并不能帮助我理解它

[长度,头部]
应该如何工作

我在理解
[length,head]
的工作原理时遇到问题。这是一个函数列表

,它是一个包含两个元素的列表,这两个元素都是函数

它对列表执行
head
,然后对结果应用
length

。它只是一个有两个函数的列表,就像你可以有两个
Char
s的列表,或者两个
String
s的列表一样,你可以有两个函数的列表。在Haskell函数中,函数是第一类公民,您可以将其作为参数传递,并将其作为函数的结果返回。然而,列表中的元素总是属于同一类型。因此,这意味着列表中的
长度
头部
必须是相同的类型

因此,这意味着,并且需要是相同的类型,因此我们可以说
[a]->a
[b]->Int
应该是相同的类型。这意味着
a~Int
(因为两个函数的返回类型相同)和
a~b
(因为两个类型的输入类型相同),因此,这两个函数的类型是
[Int]->Int


因此,对于该列表,
长度
具有as类型
[Int]->Int
。因此,这意味着这两个函数的列表具有类型
[[Int]->Int]

,您在什么上下文中试图准确地使用
[length,head]
?不幸的是,由于这个作业是如何呈现的,我必须从类型length和head开始,并达到:t[length,head],就像上面的地图示例一样(如果我没有说清楚,我很抱歉,这对我来说是全新的,我对此感到非常困惑)。我们没有在任何地方实施它,也没有它如何工作的例子,所以我真的不知道如何[长度,头部]可以实现。当它在Haskell中返回带有:t的内容时,我想我缺少了它如何工作的逻辑,没有什么需要实现的。
[length,head]
已经有了完整的描述。如果练习是关于统一类型的,它可能希望您展示如何统一
length
head
的类型,这对于将它们放在与
[length,head]相同的列表中是必要的
。但奇怪的是,作业问题中没有明确说明这一点。哦,好的,我现在明白了。谢谢!