问题标签 [type-signature]
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.
gtk - 如何阅读此 OCaml 类型签名?
我目前正在尝试同时使用 OCaml 和 GTK(使用lablgtk绑定)。但是,文档并不是最好的,虽然我可以弄清楚如何使用大多数功能,但我仍然坚持更改笔记本页面(切换到不同的选项卡)。
我找到了我需要使用的功能,但我不知道如何使用它。该文档似乎表明它位于 的子模块中GtkPackProps.Notebook
,但我不知道如何调用它。
此外,这个函数的类型签名与我以前见过的任何不同。
我认为它返回 a GtkSignal.t
,但我不知道如何将第一个参数传递给函数(括号中的整个部分)。
有没有人有一些示例代码显示如何更改笔记本页面,或者可以给我一些关于如何做到这一点的提示?
haskell - 我的类型签名有什么问题?
我正在使用 corecursive 数据结构,并且在我的代码的早期,我收到了一个类型错误:
当我尝试加载它时ghci
,我得到
如果我删除类型签名nodes :: Map a (Node a)
和edges :: [Edge a]
,错误就会消失。
我在这里做错了什么?我猜类型变量a
不受mkGraph
类型签名的约束,但 mkGraph 的定义不应该强制 和的a
签名相同吗?nodes
edges
a
haskell - haskell 类型签名问题
有人可以解释一下,为什么这些函数有不同数量的参数和行为,但类型签名相同,但它们都是正确的?
还有,为什么 comp2 有
而不是像
?
谢谢你。
overriding - C# 中的类型签名差异,关于覆盖
这次关于方差的问题略有不同。
我从实验中得知 C# 不允许您使用逆变函数覆盖虚函数?如果是这样,你怎么做,因为我不断收到“找不到合适的方法重载”。如果不是,为什么不呢?如果基类指定in的值永远是int,而子类可以取对象,问题出在哪里?
与返回类型相同,在它们的覆盖签名中应该是协变的
哪些语言允许您这样做?(C++/Java 我在看你)如果他们让你使用,variance 是什么类型?(返回类型/参数列表等)
你能有多个覆盖吗?只要签名在技术上是独一无二的,我不明白为什么不这样做。
我读了这个,我看不到任何问题的答案。我知道通用方差,而且我知道它很棒。我想知道方法签名的差异,不仅在 C# 中,而且在 C# 中(即包括但不限于)。如果它不存在,我想对此进行确认和解释(它是实现细节吗?我的类型理论错了吗?只是 CLR/C# 碰巧不支持这个特定功能吗?是我没有的东西吗?没想到因为我不必处理实现CLR,因此不知道具体的复杂细节?)
haskell - 重载函数签名haskell
我在编译时收到以下错误消息:
重复类型签名:
weightedMedian.hs:71:0-39: findVal :: [ValPair] -> Double -> Double
weightedMedian.hs:68:0-36: findVal :: [ValPair] -> Int -> Double
我的解决方案是拥有 findValI 和 findValD。但是,findValI 只是将 Int 类型转换为 Double 并调用 findValD。
我也不能对 Num (Int, Double) 的类型进行模式匹配,所以我不能只将类型签名更改为
在许多语言中,我不需要不同的名称。为什么我需要在 Haskell 中使用不同的名称?这很难添加到语言中吗?还是那里有龙?
list - `Ord a =>` or `Num a =>`
I have the following functions:
and am wondering how I should define the types signatures of these above functions which
and worker
?
For Example, which of the following ways would be best as a type signature for worker?
worker :: Num a => a -> [a] -> a
,
or
worker :: Ord a => a -> [a] -> a
?
I'm just really confused and don't get which these three I should choose. I'd appreciate your thoughts. Thanks.
haskell - 键入列表等的签名类型
您将如何用简单的英语定义以下类型签名:
您能否描述这些含义并让我知道它们之间的区别(就我如何向其他人解释而言)?
谢谢。
haskell - 使用 Haskell 的“Maybe”,类型声明 [初学者问题]
我已经开始尝试使用 Haskell 并且遇到了问题。qqq 是一个函数,如果用“Nothing”调用应该打印一个字符串,如果用“Just something”调用则打印其他东西。
第一次尝试似乎有效:
但:
- 当我试图
main = qqq (Nothing)
让它失败时(“约束中的模糊类型变量‘a0’:(显示a0)因使用‘qqq’而产生”) - 如果失败,我想添加类型签名时:
qqq :: Maybe x => x -> IO ()
->Type constructor 'Maybe' used as a class
-> 但不是吗?
qqq :: (Maybe x) -> IO ()
. 现在签名本身看起来成功了。但是main = qqq (Just 43)
开始失败并出现那个神秘(Show a0)
的错误,比如main = qqq (Nothing)
以防万一。
问题:
- 为什么用 qqq
Nothing
调用与用 调用如此不同Just 43
? - 是什么
(Show a0)
?它仅在错误消息中提及。任何使用它的尝试都会导致类似“显示不在范围内”的结果。 - 什么是正确的类型签名?如何制作它推导出的 Haskell 打印类型签名?期待类似的东西:
haskell - 为什么不能将类型签名放在 Haskell 的实例声明中?
我喜欢将所有顶级定义的类型签名放在我的代码中。但是,似乎不允许实例声明中的类型签名,如果我放一个,我会从 GHC 收到“错误的类型签名”错误。为什么会这样?为什么 GHC 不能检查类型签名是否与预期的相同,如果不是则拒绝(或警告)?
haskell - 组合器的类型签名与其等效 Lambda 函数的类型签名不匹配
考虑这个组合器:
将其应用于参数 XY:
它签订合同:
我将 S (SK) 转换为相应的 Lambda 项并得到以下结果:
我使用 Haskell WinGHCi 工具获取 (\xy -> xy) 的类型签名并返回:
这对我来说很有意义。
接下来,我使用 WinGHCi 获取 s (sk) 的类型签名并返回:
这对我来说没有意义。为什么类型签名不同?
注意:我将 s、k 和 i 定义为: