问题标签 [type-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
589 浏览

haskell - haskell 函数签名

我对haskell中的类型签名有疑问。阅读应用函子,我发现:

它返回Just (+3)了类型 Maybe (a->a)。现在的签名<*>

这意味着我们f b在上面的例子中是fMaybeb替换得到的a->a

在这里我有点惊讶,因为据我所知,b无法统一(对不起,如果我没有使用指定的术语,但我希望它们足够清楚)与a->a.

这是否可能仅仅因为我们在内部和应用函子中,或者我还缺少其他东西?

0 投票
1 回答
332 浏览

haskell - haskell中多个类型变量的顺序规则是什么?

例如,ParsecT 在其定义中有多个类型变量。

我们可以这样做吗?

我想知道当我们定义一个新类型时,是否有关于类型变量顺序的规则或原则。

0 投票
3 回答
741 浏览

java - Class #getTypeParameters()的返回类型是什么?

与给定的java.lang.reflect.Method.

我可以打电话,

但是当我尝试getTypeParameters()使用以下语句调用时,

我得到一个编译器错误。

这个说法有什么问题?我只是关注了apidocs。

0 投票
3 回答
145 浏览

scala - Scala:为什么函数前面需要类型变量?

解决 99 Scala Puzzles 的第一个问题开始,我定义了自己的版本,last如下所示:

我的问题是:为什么last必须直接跟在类型变量后面,如last[A]?如果我这样编写函数,为什么编译器不能做正确的事情:

(离开[A]结束last[A]?)

如果编译器能够解决这个问题,那么以这种方式设计语言的基本原理是什么?

0 投票
1 回答
498 浏览

haskell - 只有字符的 Haskell 二叉树

可以说我让我的树像这样

data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)

但我想制作一棵只使用字符的树,我不需要它作为模板。我知道我的树将只使用字符,如果我像上面那样if dataOfNode == ')'在函数中创建它,因为它说它是 [char] 类型并且它需要 [a] 类型。

如何制作只使用字符的树,或者有没有办法dataOfNode == ')'用我给出的这种类型的树进行这种类型的检查。你能给我一个简短的例子,比如检查这个节点中的数据是否是符号')'?

编辑:
根据要求,我发布了我想做的功能`

从逻辑上讲,它还没有完成,但我也不能使用它,因为它需要一个字符串,我将一个字符一个字符地分开。这就是为什么我确定我只想用字符制作我的树,这样我就可以在函数的开头type a替换为。type char它也有其他错误,但我认为主要思想很清楚。

0 投票
2 回答
97 浏览

haskell - 将类型变量约束为具体类型

我有这个单态代码:

一个完全多态的签名push将是:

但我尝试编写这些部分多态的签名:

我收到错误,例如can't deduce (e ~ Int)can't deduce (MArray a Int m) ...Non type-variable argument in constraintIllegal equational constraint

有没有办法将e第一个签名中的类型变量限制为具体类型,例如Int

0 投票
2 回答
229 浏览

haskell - 是否可以在模式匹配中引用类型变量?

以下代码(并不意味着做任何有用的事情)编译得很好:

我是否可以按照以下精神在模式匹配中使用类型变量(代码无法编译):

0 投票
1 回答
341 浏览

haskell - 如何指定内联类型中使用的类型变量,是否与函数定义中使用的类型变量相同?

(抱歉,如果我的术语有误)。

我正在尝试编写一个处理异常的包装函数:如果给定的IO动作抛出,它返回NothingIO当然是在上下文中),但如果给定的IO动作成功,它返回Just v

这会导致编译器错误消息:

我猜a第一行中的类型变量a与第三行中的类型变量不同——它们只是在源代码中具有相同的名称,并且编译器已a1在错误消息中将其重命名。

那么我如何告诉 Haskell 这些是相同的类型呢?

0 投票
1 回答
167 浏览

scala - 在运行时确定或访问类型变量的具体类型

鉴于以下情况:

显然上面不会编译。有没有办法在运行时确定类型变量的具体类型?

0 投票
1 回答
510 浏览

generics - Swift 通用类型变量应该遵守协议(类型类)

我正在尝试快速编写一个辅助函数,以便更方便地进行排序。这是我拥有的和有效的:

相反,我想写

我试图像这样定义比较函数

问题是,类型检查器不知道“B”需要遵守“Equatable”协议。我不知道如何实现。编译器抱怨 '\'B\' is not convertible to \'UInt8\'',因为它假定两个 Int 由 '<' 函数进行比较。如果我覆盖'<'例如:

然后编译器假定 SomeType 而不是 UInt8。

这是我玩 Swift 的第二天。我希望我的问题不是太愚蠢。我可能还会犯很多其他错误。

谢谢!