|
273
|
| JUST MY correct OPINION · 技术社区 · 16 年前 |
|
|
1
289
这段代码没有在纯Haskell 98中编译(语法错误)。它需要一个扩展来支持
不同的
一般用途
上面的代码在启用这两个选项的情况下都不会得到语法错误,但是只会使用
作用域类型变量:
作用域类型变量有助于指定内部代码的类型
令人困惑的一点
:当您省略
排名类型:
让我们从这个开始
这意味着它适用于所有
假设你想做这样的事。
“嗯。。为什么GHC推断元组必须包含两个相同类型的元组?让我们告诉它,他们不必
嗯。所以GHC不允许我们申请
所以不是
举个例子:
空列表可以作为任何类型的列表使用。
|
|
|
2
128
至于你的例子,
A
完成
解释
附录:
行话“上面”,“下面”,“左边”。这些和
类型的编写方式以及与抽象语法树有关的一切。在抽象语法中
示例:
|
|
|
3
54
我最初的回答是: 正如诺曼所指出的,很难用简单明了的英语给出清楚的解释 “福尔”只有一件事需要记住: 一些范围 使用“left”/“above”的概念来表达相同的范围概念 his excellent answer . “forall”的大多数用法都非常简单,您可以在中找到它们的介绍 the GHC Users Manual, S7.8 尤其是 the excellent S7.8.5 关于嵌套 在Haskell中,当类型为
就这样。 因为现在可以将类型变量绑定到某个作用域,所以可以使用其他作用域 比最高级别(“ universally quantified 例如你的第一个例子, 其中类型变量仅在数据结构中可见。这允许 对于隐藏类型(“ existential types arbitrary nesting 绑定类型(“秩N类型”)。 要深入理解类型系统,您需要学习一些行话。那是 计算机科学的本质。然而,像上面这样的简单用法应该是 很好的介绍是 Launchbury and Peyton Jones |
|
|
4
34
这里有一个简单明了的解释,你可能已经很熟悉了。
这个
A
普遍量化类型
或者类型
存在量化
安
存在量化类型
它可能会让人困惑,但它实际上是在描述
我们先来看看
我们现在应该能够解决
所以呢
类型
|
|
|
5
31
所以,如果这没有帮助,或者如果你只是不喜欢符号逻辑,从函数式编程的角度来看,你可以认为类型变量只是(隐式的)
函数的参数。从这个意义上讲,接受类型参数的函数传统上都是使用大写lambda编写的,不管出于什么原因,我在这里写为
所以,考虑一下
我们可以将其重写为lambdas,将“类型参数”从类型签名中移出,并添加内联类型注释:
请注意,给定给
在这里
另一方面,这里是什么
所以当你看到
后脚本 :也许您会想——既然我们正在考虑函数接受类型参数,为什么我们不能对这些参数做一些比将它们放入类型签名更有趣的事情呢?答案是我们可以! 将类型变量与标签放在一起并返回新类型的函数是 类型构造器 ,你可以这样写:
但是我们需要一个全新的符号,因为这样一个类型的书写方式
另一方面,一个对其类型参数进行某种“模式匹配”的函数,为不同的类型返回不同的值,是一个
类型类的方法
. 我身体的轻微膨胀
我个人认为我更喜欢Haskell的实际语法。。。 类型族 函数依赖 --在前一种情况下,它甚至看起来已经非常像一个函数定义。 |
|
|
6
11
我将试着解释一下
Constraints Liberate, Liberties Constrain
". 这篇演讲充满了来自真实世界用例的例子,以及Scala中支持这一说法的例子,尽管它没有提到
理解并相信这句话是非常重要的,所以我劝你看一下这篇演讲(至少是部分)。
据说,给定这种类型的签名,只有一个函数可以满足这种类型,那就是
在我学习Haskell的最初阶段,我总是想知道以下功能:
它们都满足上面的类型签名,那么为什么Haskell的人声称是这样呢
这是因为有一个隐含的
约束解放,自由约束 将其转换为类型系统,此语句将变为: 类型级别的约束在术语级别变为自由
类型级别的自由,变成术语级别的约束
类型级别的约束。。 所以对我们的类型签名施加一个约束
给了我们自由或灵活性来写所有这些
通过约束也可以观察到这一点
那么现在这种类型的签名是什么:
这就是所谓的存在主义量化,也就是
存在
一些例子
因此,我们可以看到添加一个约束(即
接下来是第二个陈述,这个陈述实际上解释了
类型级别的自由,变成术语级别的约束 现在让我们在类型级别释放函数:
这意味着这个类型签名的实现应该是
所以现在这开始限制我们在学期水平。 我们不能再写了
因此
|
|
|
7
10
这个关键字有不同用法的原因是,它实际上至少在两个不同的类型系统扩展中使用:高等级类型和存在类型。 最好只是分别阅读和理解这两件事,而不是试图解释为什么“forall”同时是这两种语言的适当语法。 |
|
|
8
4
存在主义是如何存在的?
解释原因
以下是简短的逐字摘要:
模式匹配/解构时
因此,以下是同构的:
福尔意味着福尔
我对这一切的简单解释是
价值
,则表示该值必须对所有合适的
如果所定义的事物是多态的
功能
,则意味着函数必须对所有合适的
如果
因此,存在主义
市场类型:
价值类型:
也就是说
定义
值必须是多态的。在这种情况下,
差异
尽管
|
|
|
tomm · 谷歌表格-将两列相乘,复制第三列 4 年前 |
|
|
ziemsterr · 无法在SQL SELECT语句中找出此语法错误 4 年前 |
|
|
Andrés BolÃvar · AJAX请求未收到我想要的属性 4 年前 |
|
|
clarkk · 当声明向量时,(1)是什么意思? 4 年前 |
|
|
Mike C. · Bash错误[:检查文件是否存在时缺少“]” 4 年前 |
|
|
michael · 错误的脚本和语法问题 4 年前 |