问题标签 [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.

0 投票
2 回答
479 浏览

gtk - 如何阅读此 OCaml 类型签名?

我目前正在尝试同时使用 OCaml 和 GTK(使用lablgtk绑定)。但是,文档并不是最好的,虽然我可以弄清楚如何使用大多数功能,但我仍然坚持更改笔记本页面(切换到不同的选项卡)。

我找到了我需要使用的功能,但我不知道如何使用它。该文档似乎表明它位于 的子模块中GtkPackProps.Notebook,但我不知道如何调用它。

此外,这个函数的类型签名与我以前见过的任何不同。

我认为它返回 a GtkSignal.t,但我不知道如何将第一个参数传递给函数(括号中的整个部分)。

有没有人有一些示例代码显示如何更改笔记本页面,或者可以给我一些关于如何做到这一点的提示?

0 投票
1 回答
268 浏览

haskell - 我的类型签名有什么问题?

我正在使用 corecursive 数据结构,并且在我的代码的早期,我收到了一个类型错误:

当我尝试加载它时ghci,我得到

如果我删除类型签名nodes :: Map a (Node a)edges :: [Edge a],错误就会消失。

我在这里做错了什么?我猜类型变量a不受mkGraph类型签名的约束,但 mkGraph 的定义不应该强制 和的a签名相同吗?nodesedgesa

0 投票
3 回答
281 浏览

haskell - haskell 类型签名问题

有人可以解释一下,为什么这些函数有不同数量的参数和行为,但类型签名相同,但它们都是正确的?

还有,为什么 comp2 有

而不是像

?

谢谢你。

0 投票
1 回答
238 浏览

overriding - C# 中的类型签名差异,关于覆盖

这次关于方差的问题略有不同。

我从实验中得知 C# 不允许您使用逆变函数覆盖虚函数?如果是这样,你怎么做,因为我不断收到“找不到合适的方法重载”。如果不是,为什么不呢?如果基类指定in的值永远是int,而子类可以取对象,问题出在哪里?

与返回类型相同,在它们的覆盖签名中应该是协变的

哪些语言允许您这样做?(C++/Java 我在看你)如果他们让你使用,variance 是什么类型?(返回类型/参数列表等)

你能有多个覆盖吗?只要签名在技术上是独一无二的,我不明白为什么不这样做。

为什么 C#/CLR 不支持方法覆盖协/逆变?

我读了这个,我看不到任何问题的答案。我知道通用方差,而且我知道它很棒。我想知道方法签名的差异,不仅在 C# 中,而且在 C# 中(即包括但不限于)。如果它不存在,我想对此进行确认和解释(它是实现细节吗?我的类型理论错了吗?只是 CLR/C# 碰巧不支持这个特定功能吗?是我没有的东西吗?没想到因为我不必处理实现CLR,因此不知道具体的复杂细节?)

0 投票
5 回答
22974 浏览

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 中使用不同的名称?这很难添加到语言中吗?还是那里有龙?

0 投票
5 回答
1070 浏览

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.

0 投票
1 回答
382 浏览

haskell - 键入列表等的签名类型

您将如何用简单的英语定义以下类型签名:

您能否描述这些含义并让我知道它们之间的区别(就我如何向其他人解释而言)?

谢谢。

0 投票
1 回答
1095 浏览

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)以防万一。

问题:

  1. 为什么用 qqqNothing调用与用 调用如此不同Just 43
  2. 是什么(Show a0)?它仅在错误消息中提及。任何使用它的尝试都会导致类似“显示不在范围内”的结果。
  3. 什么是正确的类型签名?如何制作它推导出的 Haskell 打印类型签名?期待类似的东西:
0 投票
5 回答
4740 浏览

haskell - 为什么不能将类型签名放在 Haskell 的实例声明中?

我喜欢将所有顶级定义的类型签名放在我的代码中。但是,似乎不允许实例声明中的类型签名,如果我放一个,我会从 GHC 收到“错误的类型签名”错误。为什么会这样?为什么 GHC 不能检查类型签名是否与预期的相同,如果不是则拒绝(或警告)?

0 投票
3 回答
633 浏览

haskell - 组合器的类型签名与其等效 Lambda 函数的类型签名不匹配

考虑这个组合器:

将其应用于参数 XY:

它签订合同:

我将 S (SK) 转换为相应的 Lambda 项并得到以下结果:

我使用 Haskell WinGHCi 工具获取 (\xy -> xy) 的类型签名并返回:

这对我来说很有意义。

接下来,我使用 WinGHCi 获取 s (sk) 的类型签名并返回:

这对我来说没有意义。为什么类型签名不同?

注意:我将 s、k 和 i 定义为: