Owe*_*wen 11 haskell types literals
这可能是不可能的,因为我已经检查了所有GHC扩展的列表,但这不在那里,但我想我会问以防万一.
有没有办法使它2
具有类型Int
(或Integer
)而不是通常Num a => a
?
(我之所以喜欢这种行为,是因为它使得错误消息更加清晰,类型推断更有可能(尤其是类型类).我总是可以写(2 :: Int)到处但是我宁愿"更多安全的"行为是不那么明确的行为"
C. *_*ann 14
使用GHC扩展有一种(略显侮辱和不方便)的方法.
{-# LANGUAGE RebindableSyntax #-}
import qualified Prelude as P
import Prelude hiding (Num(..))
fromInteger :: Integer -> Integer
fromInteger = id
Run Code Online (Sandbox Code Playgroud)
在GHCi中:
> :set -XRebindableSyntax
> :t 2
2 :: Integer
Run Code Online (Sandbox Code Playgroud)
通过RebindindableSyntax
启用扩展,GHC会使用任何fromInteger
的范围来处理数字文字.唯一的限制是它必须采用类型的参数Integer
(实际上,即使这不是必需的,但如果不是,你将从数字文字中获得类型错误).
请注意,因为标准fromInteger
是Num
类的一部分,所以您可能需要破解一些东西以使事情正常工作.
归档时间: |
|
查看次数: |
1451 次 |
最近记录: |