in-other-words插件
概述
一个typechecker插件,可以在使用时消除效果的“明显”用法的歧义用别人的话
.
例子
考虑以下程序:
foo::效率(状态Int)m=>m()foo=放置10
这个程序做什么?任何人都会告诉你它改变了这个国际
到10,这显然是什么意思。
不幸的是,用别人的话
这件事自己解决不了。其理由是“也许你想换一个州
效果是也一号码
,但你忘了加一些效率
/秒
约束。”
这显然很疯狂,但这就是饼干破碎的方式。in-other-words插件
是一个类型检查器插件,可以消除上面的歧义编写程序(和其他程序),以便编译器可以执行您想要的操作。
用法
将以下行添加到包配置中:
ghc选项:-fplugin=控制。效果。插件
限制
in-other-words插件
只有在只有一个效果的情况下才能消除歧义范围中的相关约束。例如,它将不消除歧义以下程序:
bar::Effs'[状态Int,状态双精度]米=>米()bar=放置10
因为现在还不清楚您是否试图设置国际
或双精度
相反,在这种情况下,您可以手动编写类型应用程序。
bar::Effs的[State Int,状态双精度]米=>米()bar=放置@Int 10
致谢
这个插件和这个README几乎一字不差地从多义插件
,它本身几乎是一字不差地从简单效果
.