Abstractions

All definitions make use of the following type parameters:

  • F[_]: abstract effectful context F encapsulating all values, e.g. IO[Boolean]
  • Alg[_[_]]: algebra allowing interaction with the entity, e.g. BookingAlg[IO[*]]
  • RepositoryAlg[_[_]]: algebra allowing interaction with the repository, e.g. BookingsAlg[IO[*]]
  • ID: entity ID, e.g. BookingID
  • S: entity state, e.g. Booking
  • E: entity event, e.g. BookingEvent