问题标签 [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.
haskell - haskell 函数签名
我对haskell中的类型签名有疑问。阅读应用函子,我发现:
它返回Just (+3)
了类型 Maybe (a->a)
。现在的签名<*>
是
这意味着我们f b
在上面的例子中是f
用Maybe
和b
替换得到的a->a
。
在这里我有点惊讶,因为据我所知,b
无法统一(对不起,如果我没有使用指定的术语,但我希望它们足够清楚)与a->a
.
这是否可能仅仅因为我们在内部和应用函子中,或者我还缺少其他东西?
haskell - haskell中多个类型变量的顺序规则是什么?
例如,ParsecT 在其定义中有多个类型变量。
我们可以这样做吗?
我想知道当我们定义一个新类型时,是否有关于类型变量顺序的规则或原则。
java - Class #getTypeParameters()的返回类型是什么?
scala - Scala:为什么函数前面需要类型变量?
从解决 99 Scala Puzzles 的第一个问题开始,我定义了自己的版本,last
如下所示:
我的问题是:为什么last
必须直接跟在类型变量后面,如last[A]
?如果我这样编写函数,为什么编译器不能做正确的事情:
(离开[A]
结束last[A]
?)
如果编译器能够解决这个问题,那么以这种方式设计语言的基本原理是什么?
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
它也有其他错误,但我认为主要思想很清楚。
haskell - 将类型变量约束为具体类型
我有这个单态代码:
一个完全多态的签名push
将是:
但我尝试编写这些部分多态的签名:
我收到错误,例如can't deduce (e ~ Int)
,can't deduce (MArray a Int m) ...
和Non type-variable argument in constraint
,Illegal equational constraint
有没有办法将e
第一个签名中的类型变量限制为具体类型,例如Int
?
haskell - 是否可以在模式匹配中引用类型变量?
以下代码(并不意味着做任何有用的事情)编译得很好:
我是否可以按照以下精神在模式匹配中使用类型变量(代码无法编译):
haskell - 如何指定内联类型中使用的类型变量,是否与函数定义中使用的类型变量相同?
(抱歉,如果我的术语有误)。
我正在尝试编写一个处理异常的包装函数:如果给定的IO
动作抛出,它返回Nothing
(IO
当然是在上下文中),但如果给定的IO
动作成功,它返回Just v
。
这会导致编译器错误消息:
我猜a
第一行中的类型变量a
与第三行中的类型变量不同——它们只是在源代码中具有相同的名称,并且编译器已a1
在错误消息中将其重命名。
那么我如何告诉 Haskell 这些是相同的类型呢?
scala - 在运行时确定或访问类型变量的具体类型
鉴于以下情况:
显然上面不会编译。有没有办法在运行时确定类型变量的具体类型?
generics - Swift 通用类型变量应该遵守协议(类型类)
我正在尝试快速编写一个辅助函数,以便更方便地进行排序。这是我拥有的和有效的:
相反,我想写
我试图像这样定义比较函数
问题是,类型检查器不知道“B”需要遵守“Equatable”协议。我不知道如何实现。编译器抱怨 '\'B\' is not convertible to \'UInt8\'',因为它假定两个 Int 由 '<' 函数进行比较。如果我覆盖'<'例如:
然后编译器假定 SomeType 而不是 UInt8。
这是我玩 Swift 的第二天。我希望我的问题不是太愚蠢。我可能还会犯很多其他错误。
谢谢!