问题标签 [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 投票
4 回答
2394 浏览

haskell - 为什么在 where 子句中使用类型签名如此罕见?

它是否有助于编译器进行优化,或者只是添加额外的类型签名的多余工作?例如,人们经常看到:

而不是:

如果我省略了顶级类型签名,GHC 会给我一个警告,所以如果我没有收到警告,我很有信心我的程序是正确的。但是,如果我在 where 子句中省略签名,则不会发出警告。

0 投票
1 回答
14612 浏览

haskell - 具有多个类约束的 Haskell 类型签名

我怎么能有多个类约束,所以 if Ais an Eqand Bis a Num,我可以说要么

或者

那么,我怎样才能同时拥有Eq a =>Num b =>呢?

  • f :: Eq a => Num b => a -> b,
  • f :: Eq a -> Num b => a -> b, 和
  • f :: Eq a, Num b => a -> b

没有做我想做的事。

0 投票
2 回答
1466 浏览

haskell - Haskell:模式匹配、标识符和运算符

我正在尝试xor通过以下方式在 Haskell 中定义使用模式匹配:

然而,这给出了错误:

我很困惑为什么会抛出这个错误。另外,如果我用脚本加载之xor类的东西替换的话。&&

0 投票
3 回答
300 浏览

haskell - Haskell 中不直观的类型签名

我做了这个(我认为是)相当简单的代码来计算三角形的第三边:

但是,当我尝试将其加载到 GHCi 中时,出现以下错误:

事实证明,修复是删除我的类型签名,它工作正常。

当我查询 and 的类型toRadianslawOfCosines

有人可以向我解释这里发生了什么吗?为什么我写的“直观”类型签名实际上是不正确的?

0 投票
2 回答
106 浏览

c - C 中非标准主类型签名的使用

正在浏览本网站上提供的 sudo 的源代码,并且遇到了这个超级奇怪的类型签名(额外的问题:“类型签名”是否有更像 C 的术语?):

我知道风格本身就是 oldskool K&R。我真正感兴趣的是 main 正在接受一个额外的论点,char **envp. 为什么?sudo 是一个相当标准的命令行工具,因此被调用。当遇到一个没有用通常定义的主函数时,操作系统如何知道该怎么做?(int argc, char *argv[])?

很多时候,我自己都很懒惰,只是完全放弃了论点,而我编写的任何程序似乎都可以正常工作(我知道 C 可能发生的最危险的事情:p)

我的另一部分问题是,这一切能让你做什么很酷的事情?我有一种预感,它对嵌入式编程很有帮助,但遗憾的是,我对此的接触很少,也不能真正说出来。我很想看到一些具体的例子

0 投票
2 回答
213 浏览

haskell - 为什么在haskell中不将show视为转换?

我仍然非常想进入haskell,但我注意到一些让我很恼火的事情。

“Learn You a Haskell for Great Good!”一书中 有这部分显示了在模式匹配中使用警卫,在这本书的情况下,它是一个计算一个人的 bmi 的小函数,它有点像这样(部分略有改变,不侵犯版权或其他) :

这一切都很好,代码像宣传的那样工作,但我想,如果它也显示它计算的 bmi 和文本怎么办?

所以我重写了代码:

期望“show”像 .toString 在 java 和 c#
Boy 中一样工作,我错了。

ghci 给了我这个严重的错误信息:

这是为什么?为什么它不允许我将似乎返回字符串的内容附加到字符串?我的意思是据我所知"skinny, " ++ show bmi是一个字符串......这正是类型签名所说的我必须返回的内容

那么我在这里做错了什么?

0 投票
1 回答
957 浏览

haskell - 这种类型的签名发生了什么?(Haskell 中的 Vector.Mutable 修饰符)

Haskell 中的可变向量具有三个元素级别的修改器:

现在我可以很好地使用这些——

但是这里发生了什么?什么是PrimMonad? 并且是PrimState构造函数?

我知道这里有一些绑定,在一个PrimMonad类单子上。thaw返回m (MVector (PrimState m) a)ma在哪里PrimMonad...但是 monad 包含自己?为什么m在另一个上下文中m

我看到一切基本上都绑定在 this PrimStateor上PrimMonad,但我不明白这与可变/可存储向量有什么关系。那些允许它们存储状态的类型类有什么特别之处吗?

感谢您的时间!

0 投票
3 回答
105 浏览

scala - 是否有任何区别或理由更喜欢这些函数签名之一?

我不认为有任何区别,或者有理由更喜欢一个而不是另一个,但想检查一下......

0 投票
1 回答
65 浏览

java - 移植 JavaService 应用程序(Windows 服务)以在 Websphere 上运行 - 最好的父类?

我被要求移植作为 Windows 服务运行的现有 Java 应用程序以在 Websphere 上运行。它是使用JavaService.exestop_method实现的

父服务类的类型签名是:

请注意,main上面示例中的方法等效于init于 servlet 中的方法(尽管它是静态的) - 它用于相同的目的。

在 J2EE 标准中(甚至在 Websphere 自定义标准中),持续运行的对象的等效父类是什么?

0 投票
1 回答
77 浏览

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

我正在尝试创建StateMonadPlus一个MonadState.

代码编译得很好,但是当我取消注释 get 和 put 的类型时,它抱怨说

类型有什么问题?