Questions tagged «typing»

14
如何向父母解释我学习编程语言?
我目前正在完成计算机科学硕士学位。我对编程语言特别是类型系统感兴趣。我对这个领域的研究很感兴趣,下学期我将开始对该主题的博士学位。 现在这是一个真正的问题:我该如何向(以前)对计算机科学或相关领域没有知识的人解释自己的意愿? 标题来自以下事实:我什至无法向父母,朋友等解释自己的所作所为。是的,我可以说“重点在于帮助软件开发人员编写更好的软件”,但我认为这并不是真正有用的:他们不了解“编程”,他们不了解它的含义。感觉就像是我对中世纪的某人说我是一名汽车修理工:他们根本不知道我在说什么,更不用说如何改进它了。 有没有人与现实世界有很好的比喻?启发性的例子引起“啊哈”的时刻?我是否应该向60岁以上没有计算机科学(也没有学术经验)经验的人展示一段简短的代码?如果是这样,我应该使用哪种语言?这里有人遇到过类似的问题吗?

1
行多态性和子类型化之间的主要区别是什么
我经常听到行多态比子类型化更好,但是我很难找到详细比较它们的方法。我对系统用户的观点特别感兴趣。 我确实看过这篇博客文章,但是它给我留下了比以前更多的问题。例如,它声称具有子类型的系统将分配一种类型,而具有行类型的系统将分配另一种类型。这是否意味着如果一个据称具有子类型的系统分配了“行类型”类型,那么它的命名是否正确? 我确实看到的一个主要区别是,行键入使对齐参数的类型成为可能(也就是说,编写一个仅与a参数字段有关的两个参数函数,但要求其参数具有相同的字段) 。
20 typing 

2
通用类型是存在类型的子类型还是特例?
此问题是从软件工程堆栈交换迁移的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 我想知道一个普遍-量化类型是否:Ť 一个 = ∀ X :{ 一个∈ X ,˚F :X → { Ť ,˚F } }是一个存在限定的一个子类型,或特殊情况下,键入Ť Ë具有相同签名:Ť è = ∃ X :{ 一个∈ X ,˚F :X → { Ť ,˚F } }Ť一种TaT_aŤ一种= ∀ X:{ 一个∈ X,˚F:X→ { T,F} }Ta=∀X:{a∈X,f:X→{T,F}}T_a = \forall X: \left\{ a\in X,f:X→\{T, F\} \right\}ŤËTeT_eŤË= …

3
类型'a->'b的ML函数
我们的教授要求我们考虑OCaml中具有以下类型的函数 'a -> 'b 即,一个参数的函数可以是任何东西,并且可以返回不同的任何东西。 我想到了raise在忽略其参数的函数中使用: let f x = raise Exit 但是这位教授说,有一种解决方案不需要标准库中的任何功能。我很困惑:'b如果一开始就没有一个,怎么办? 我在这里而不是在Stack Overflow上问是因为我想了解发生了什么,我不想只看一个没有解释的程序。

1
为什么Hindley-Milner算法永远不会产生类似t1-> t2的类型?
我在编写实现时正在阅读有关Hindley-Milner输入算法的信息,并且看到,只要绑定了每个变量,您总会得到原子类型或参数将确定最终类型的类型,例如t1 -> t1或。(t1 -> t2) -> (t1 -> t2)其中t1和t2是类型变量。 我想不出一种方法,您将获得类似于t1 -> t2或简单的东西t1,据我所知,这意味着算法已被破坏,因为无法确定表达式的实际类型。您怎么知道只要绑定了每个变量,您就永远不会得到像“破”这样的类型? 我知道算法会产生带有变量的类型,但是一旦将参数传递给函数,这些变量就总是可以解决的,而带type的函数不会出现这种情况t1 -> t2。这就是为什么我想知道我们如何确定算法永远不会产生此类类型的原因。 (看来您可以在ML中获得这些“残缺的”类型,但我要询问的是lambda演算。)

1
基于约束的代数数据类型推断
我正在研究一种基于表达的ML族谱语言,因此自然需要类型推断> :) 现在,我正在尝试基于EOPL(Friedman和Wand)中的简单实现,将基于约束的解决方案扩展到类型推断问题,但是它们优雅地避开了代数数据类型。 到目前为止,我的工作进展顺利;如果一个表达式e是a + b,e : Int,a : Int和b : Int。如果e是比赛, match n with | 0 -> 1 | n' -> n' * fac(n - 1)`, 我可以正确地推断t(e) = t(the whole match expression),t(n) = t(0) = t(n'),t(match) = t(1) = t(n' * fac(n - 1)等... 但是我不确定何时涉及代数数据类型。假设有一个类似filter的函数: let filter pred list …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.