hlist

object hlist extends TypeInequalityCompat

An heterogeneous list, mainly used to operate on transactions.

An heterogeneous list, mainly used to operate on transactions.

Highly inspired by Shapeless machinery but very much lightweight.

class Object
trait Matchable
class Any

Type members

Classlikes

sealed trait Filter[T <: HList]
Companion
object
object Filter
Companion
class
final case class HCons[+H, +Tail <: HList](head: H, tail: Tail) extends HList
sealed trait HList
Companion
object
object HList
Companion
class
case object HNil extends HList
sealed trait Witness[T <: HList]

It witnesses a relationship between two HLists.

It witnesses a relationship between two HLists.

The existing instances model a relationship between an HList comformed of actions F[A] and results A. E.g.:

val actions: IO[Unit] :: IO[String] :: HNil = IO.unit :: IO.pure("hi") :: HNil
val results: actions.R = () :: "hi" :: HNil

A Witness[IO[Unit] :: IO[String] :: HNil] proves that its result type can only be Unit :: String :: HNil.

A Witness is sealed to avoid the creation of invalid instances.

Companion
object
object Witness
Companion
class
sealed trait WitnessFilter[T <: HList]
Companion
object
Companion
class
object ~:

Inherited classlikes

sealed class =!=[A, B]
Inherited from
TypeInequalityCompat
object =!=
Inherited from
TypeInequalityCompat

Types

type ::[H, T <: HList] = HCons[H, T]
type HNil = HNil