在Haskell中是否可以将语言编译指示应用于代码块而不是整个文件本身?
例如,我启用了-fwarn-monomorphism-restriction
标志,但是我确实有几个文件要禁用此标志,因此我在文件顶部使用了{-# LANGUAGE NoMonomorphismRestriction #-}
。
但是,我不想将这个编译指示应用于整个模块,而只是将其应用于我认为此警告无济于事的代码块。我现在想到的唯一解决方案是将这段代码移到其自己的文件中,然后将其导入
答案 0 :(得分:3)
通常没有办法,没有。
对于此特定的编译指示,可以通过为单个声明赋予类型签名来禁用单态限制。尽管我强烈建议您提供完整的签名,但是在某些情况下,出于某些原因,这是不可取的。在这种情况下,即使是充满漏洞的签名也已足够,例如
{-# LANGUAGE PartialTypeSignatures #-}
x :: _ => _
x = (+)
将被推断为具有类型Num a => a -> a -> a
而不是Integer -> Integer -> Integer
。