15得票2回答
在Elm中,“HTML msg”中的“msg”是什么?

我正在自学 Elm,并看到(当然)许多关于 Html msg 的引用-- 我知道这是一个“参数化类型”,也就是说,(据我所知),类型 Html 的构造函数接受一个参数--就像 List Char 一样。 好的。但是在跟随一些教程时,我看到他们很快将 msg 更改为自定义类型,通常是像这样的...

14得票2回答
在where子句中的类型签名

我写了一个类似于Data.Enumerator.List.map的函数,使得Iteratee与将不同的Stream类型提供给Enumerator的Enumerator兼容。 import Data.Enumeratortest :: Monad m => (ao -> ai) -...

14得票3回答
哪个是多态类型:类型还是一组类型?

《Haskell编程》一书中写道: 包含一个或多个类型变量的类型被称为多态类型。 下列哪个是多态类型:类型还是类型集合? 当一个具有具体类型替换其类型变量的多态类型被使用时,它是否仍然是一种类型? 当不同的具体类型替换其类型变量时,多态类型被认为是相同类型还是不同类型?

14得票2回答
在Haskell中,“higher-kinded types”是否真的是类型?还是仅表示“具体”类型的集合而已?

参数多态函数 考虑以下函数:f :: a -> Int f x = (1 :: Int) 我们可以说f的类型是a -> Int,因此f是“多态”类型之一。 以下哪种方式最准确地描述了f的使用? 实际上只有一个f是a -> Int类型。但是它可以用作f :: Int -...

13得票1回答
在OCaml中,"constraint"关键字可以做什么?

OCaml手册描述了“constraint”关键字,它可以用于类型定义。然而,我无法找到任何可以使用此关键字的用法。什么时候使用这个关键字是有用的?它可以用来移除多态类型变量吗?(这样一个模块中的type 'a t就变成了t,并且可以在一个需要没有变量的t的函数器参数中使用该模块。)

13得票2回答
“NextMethod()”的内部运作方式

我正在尝试弄清楚NextMethod()的工作原理。我找到的关于S3类系统最详细的解释在Chambers和Hastie(eds.)的《S统计模型》(1993年,Chapman&Hall)中,但是我发现涉及NextMethod调用的部分有些晦涩。以下是我试图理解的相关段落(第268-269页)。...

13得票1回答
在Idris中,我能证明自由定理吗?例如,类型为`forall t. t -> t`的唯一(全)函数是`id`吗?

对于足够多态的类型,参数性可以唯一确定函数本身(详情请见Wadler's Theorems for free!)。例如,类型为forall t. t -> t的唯一总函数是恒等函数id。 在Idris中能否陈述和证明这一点?(如果不能在Idris中证明,那么它是否仍然成立?) 以下是...

12得票1回答
如何在Swift中使用没有类型参数的通用类?

我希望在另一个类中封装一个通用对象,但不需要设置通用类型参数。我创建了一个基础的Animal<T>类,并从中定义了其他子类。例如: public class Animal<T: YummyObject> { // Code } public class Do...

11得票2回答
为什么C++被认为不支持参数多态性?

根据参数化多态性的维基百科页面: 某些类型多态性的实现与参数多态性表面上相似,同时也引入了特定方面。其中一个例子是C++模板专业化。 问题:C++为什么被认为只实现了类似于参数化多态性的东西?特别是,难道模板不是完全的参数化多态性的例子吗?

11得票2回答
为什么具有不同类型变量的两个多态高阶函数在类型方面是等效的?

作为一个来自Javascript的人,我理解Haskell的列表类型强制要求同类型的列表。现在以下不同的函数类型满足这个要求让我感到惊讶:f :: (a -> a) -> a -> a f g x = g x g :: (a -> b) -> a -> ...