类型推断会干扰参照透明性

Haskell语言在引用透明性方面提供了什么确切的承诺/保证?至少Haskell报告没有提及此概念。

考虑表达

(7^7^7`mod`5`mod`2)

我想知道此表达式是否为1。为了安全起见,我将执行两次:

( (7^7^7`mod`5`mod`2)==1, [False,True]!!(7^7^7`mod`5`mod`2) )

现在提供(True,False)了GHCi 7.4.1。

显然,此表达式现在是参照不透明的。如何判断程序是否受到此类行为的影响?我可以::遍历整个程序,但这并不能使其可读性强。我错过了其他类的Haskell程序吗?那是在完全注释的和未注释的之间?

(除了我在SO上发现的唯一有点相关的问题之外,此上还必须包含其他内容)

八月

问题是超载,的确确实违反了参照透明性。您不知道(+)Haskell的情况如何;这取决于类型。

当Haskell程序中不受限制的数字类型时,编译器将使用默认的类型来选择一些合适的类型。这是为了方便起见,通常不会导致任何意外。但是在这种情况下确实引起了意外。在ghc中,您可以-fwarn-type-defaults用来查看编译器何时使用默认值为您选择类型。您也可以将行添加default ()到模块中以停止所有默认设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当Java8使用参照透明性时

来自分类Dev

纯度,参照透明性和状态单价

来自分类Dev

组件,隔离功能和“参照透明性”

来自分类Dev

例外情况和参照透明性

来自分类Dev

Skrollr背景透明性?

来自分类Dev

例外:无法绑定到目标方法,因为其签名或安全性透明性与委托类型的签名或安全性透明性不兼容

来自分类Dev

例外:无法绑定到目标方法,因为其签名或安全性透明性与委托类型的签名或安全性透明性不兼容

来自分类Dev

OpenGL透明性不透明

来自分类Dev

如何保证F#应用程序中的参照透明性?

来自分类Dev

OpenGL透明性无法正常工作

来自分类Dev

如何超越CSS的透明性方面

来自分类Dev

Gnome终端的背景透明性

来自分类Dev

为什么Matlab的透明违反了透明性?

来自分类Dev

方向会干扰NavigationDrawer

来自分类Dev

我对可变类的“引用透明性”的理解正确吗?

来自分类Dev

酒吧半透明性在iOS 7.0.3中消失了

来自分类Dev

来自FillRectangle的不希望有的透明性

来自分类Dev

证书透明性快速入门:如何监视域列表?

来自分类Dev

如何为KDE的终端配置背景透明性?

来自分类Dev

GraphicsMagic无法识别PDF的背景透明性

来自分类Dev

如何改变图像的不透明性

来自分类Dev

Matplotlib pgf后端是否支持透明性?

来自分类Dev

使用图像透明性使黑色显示为“东西”

来自分类Dev

如何为KDE的终端配置背景透明性?

来自分类Dev

WPF PngBitmapEncoder:如何禁用背景透明性?

来自分类Dev

证书透明性快速入门:如何监视域列表?

来自分类Dev

jQuery不透明性慢褪色

来自分类Dev

证书透明性如何查询域的证书

来自分类Dev

Wayland会具有网络透明性吗?

Related 相关文章

热门标签

归档