lef*_*out 5 performance haskell existential-type gadt
假设我有一些ADT,比如
data Foo = Foo !Int
| Bar (Int->Int) Foo
Run Code Online (Sandbox Code Playgroud)
现在说我要强加一些额外的类型安全,摆脱"魔数类型":
{-# LANGUAGE GADTs #-}
newtype Intey a = Intey { getIntey :: Int }
data Foo' a where
Foo :: !(Intey a) -> Foo' a
Bar :: (Intey a -> Intey b) -> Foo' a -> Foo' b
Run Code Online (Sandbox Code Playgroud)
因为b它只是构造函数中的一个幻像参数,没有约束或其他任何东西,它基本上没有意义 - 除了类型检查器.因此可以编译成相同的Foo,没有任何性能等成本吗?
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |