|
Scala example source code file (MonadState.scala)
The MonadState.scala Scala example source code
package scalaz
////
/** The class of monads supporting the operations of
* [[scalaz.State]].
*
*/
////
trait MonadState[F[_], S] extends Monad[F] { self =>
////
def state[A](a: A): F[A] = bind(init)(s => point(a))
def constantState[A](a: A, s: => S): F[A] = bind(put(s))(_ => point(a))
def init: F[S]
def get: F[S]
def gets[A](f: S => A): F[A] = bind(init)(s => point(f(s)))
def put(s: S): F[Unit]
def modify(f: S => S): F[Unit] = bind(init)(s => put(f(s)))
////
}
object MonadState {
@inline def apply[F[_], S](implicit F: MonadState[F, S]): MonadState[F, S] = F
////
////
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala MonadState.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.