我对Haskell很新。在documentation of MonadState中,我看到以下内容:
class Monad m => MonadState s m | m -> s where
get :: m s
put :: s -> m ()
这里的| m -> s
语法是什么?
答案 0 :(得分:6)
它简称为功能依赖或fundep。语法
class Monad m => MonadState s m | m -> s where
表示每个m
只有一个实例,或者 - 换句话说,如果已知m
,编译器可以推断出s
形式的类型。使用fundeps使编码更容易,因为编译器可以推断更多。