Sib*_*ibi 9 haskell functional-dependencies
在Haskell中具有功能依赖性的动机是什么?
功能依赖的一个例子:
class (Monad m) => MonadSupply s m | m -> s where
next :: m (Maybe s)
Run Code Online (Sandbox Code Playgroud)
RWH一书中指出,功能依赖性有助于类型检查器.它实际上有何帮助?
此外,这段代码实际编译:
class (Monad m) => MonadSupply s m where
next :: m (Maybe s)
Run Code Online (Sandbox Code Playgroud)
但我想,它会产生运行时错误.
编写不使用函数依赖的代码是完全正确的,因为推理很糟糕,所以使用它只是一种痛苦.
基本上没有文件描述符,该函数get :: MonadState m s => m s将不得不找出m和s独立.通常m很容易推断,但通常s需要明确的注释.
而且,这比我们需要的要广泛得多,所以我们可以限制我们的类型检查器说"For m,恰好有1 s",这种方式,一旦m被推断,s对于类型推理算法是显而易见的
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |