在Haskell中,是否可以将语言杂注应用于代码块,而不是整个文件本身?
例如,我启用了-fwarn-monomorphism-restriction标志,但是有几个文件我确实想禁用这个标志,所以我在文件的顶部使用了{-# LANGUAGE NoMonomorphismRestriction #-}。
但是,我不想将此编译指示应用于整个模块,而是仅将其应用于我认为此警告没有帮助的代码块。我现在能想到的唯一解决方案是将这段代码移到它自己的文件中,然后导入它
发布于 2018-08-15 04:27:31
一般来说,没有办法做到这一点。
对于这个特定的编译指示,您可以通过为其提供类型签名来禁用对单个声明的单态限制。虽然我强烈建议给出一个完整的签名,但在某些情况下,出于某些原因,这可能是不可取的;在这种情况下,即使是一个充满漏洞的签名也是足够的,例如
{-# LANGUAGE PartialTypeSignatures #-}
x :: _ => _
x = (+)将被推断为具有Num a => a -> a -> a类型而不是Integer -> Integer -> Integer类型。
https://stackoverflow.com/questions/51848747
复制相似问题