raulraja
01/23/2018, 9:40 AMState. We also have MonadState in the mtl module that is a typeclass that abstracts away from the data type since other datatypes could potentially implement the functions in State and provide an alternative implementation. Also State itself it's an alias to typealias State<A> = StateT<IdHK, S, A> Since the State itself is not that useful over Id but other more powerful and commonly used ones such as IO. In practices most people would end up using StateT unless they are using State for synchronous computations.