Questions tagged «parametric-polymorphism»

6
Javascript中的多态性是什么?
我读过一些我可以在互联网上找到的关于多态的文章。但是我认为我不太了解它的含义及其重要性。大多数文章都没有说明为什么它很重要,以及如何在OOP中实现多态行为(当然是在JavaScript中)。 我无法提供任何代码示例,因为我不知道如何实现它,因此我的问题如下: 它是什么? 我们为什么需要它? 这个怎么运作? 如何在javascript中实现这种多态行为? 我有这个例子。但是很容易理解该代码的结果。它没有对多态性本身给出任何清晰的想法。 function Person(age, weight) { this.age = age; this.weight = weight; this.getInfo = function() { return "I am " + this.age + " years old " + "and weighs " + this.weight +" kilo."; } } function Employee(age, weight, salary) { this.salary = salary; …

6
为什么Haskell的`head`崩溃在一个空列表上(或者为什么*不*返回一个空列表)?(语言哲学)
其他潜在贡献者的注意事项:请毫不犹豫地使用抽象或数学符号来表达您的观点。如果我不确定您的答案,我会要求您进行说明,否则请随意以一种舒适的方式表达自己。 需要明确的是:我不是在寻找“安全”对象head,也不是head特别有意义的选择。问题的重点在于对head和的讨论head',后者旨在提供上下文。 我已经和Haskell纠缠了几个月了(以至于它已经成为我的主要语言),但是我承认我对某些更高级的概念或该语言的哲学细节并不了解(尽管我非常愿意学习)。那么,我的问题不只是技术性的问题(除非是技术性问题,我只是没有意识到),因为它是一种哲学。 对于此示例,我正在谈论head。 我想像你会知道, Prelude> head [] *** Exception: Prelude.head: empty list 这来自head :: [a] -> a。很公平。显然,不能返回(挥舞着)no类型的元素。但是同时,定义起来很简单(如果不是很简单的话) head' :: [a] -> Maybe a head' [] = Nothing head' (x:xs) = Just x 我见过一些这方面的讨论很少在这里的某些语句的注释部分。值得注意的是,一位Alex Stangl说 “有充分的理由不使一切都“安全”,并在违反前提条件时抛出异常。 我不一定要质疑这个主张,但是我对这些“好的理由”是什么感到好奇。 另外,保罗·约翰逊(Paul Johnson)说, “例如,您可以定义“ safeHead :: :: [a]->可能是一个”,但是现在除了处理一个空列表或证明它不会发生之外,您必须处理“ Nothing”或证明它不会发生。” 我从那条评论中读到的语气表明,这在难度/复杂性/事物方面有明显的增加,但是我不确定我是否理解他在这里提出的内容。 一位史蒂文·普鲁兹纳(Steven Pruzina)说(在2011年不少), “有一个更深层的原因,例如'head'不能防崩溃。要实现多态但要处理一个空列表,'head'必须始终返回任何特定空列表中都没有的类型的变量。如果Haskell能够做到这一点,那就太好了……”。 通过允许空列表处理,多态性会丢失吗?如果是这样,怎么回事,为什么?是否有某些特殊情况使这一点显而易见?此部分由@Russell …
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.