Type constructors are functors. Polymorphic functions are natural transformations. Kinds are the simply-typed lambda calculus one level up. The category theory behind F[_], explained with Scala 3.
A more human explanation of type constructors, kinds, and higher-kinded types in Scala 3. What F[_] really means, and why List is sometimes not a type.
How to use T <: CriteriaTag as a hexagonal port so your domain layer never imports a dialect. The database becomes a deployment decision.
How to use T <: CriteriaTag as a hexagonal port so your domain layer never imports a dialect. The database becomes a deployment decision.
How to teach criteria4s a backend it has never heard of. Build a dialect from scratch in thirty lines, or inherit one in five.
How to teach criteria4s a backend it has never heard of. Build a dialect from scratch in thirty lines, or inherit one in five.
A walkthrough of the actual criteria4s source code to see how phantom types and type classes enforce dialect safety with zero runtime cost.
A walkthrough of the actual criteria4s source code to see how phantom types and type classes enforce dialect safety with zero runtime cost.