PrefixFreePath

org.sigilaris.core.application.support.compiletime.PrefixFreePath
See thePrefixFreePath companion trait

Companion for PrefixFreePath, providing derivation instances.

Attributes

Companion
trait
Source
Evidence.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Givens

Givens

given consPrefixFree[Path <: Tuple, Name <: String, K, V, Tail <: Tuple, Schema <: Tuple](using tailPrefixFree: PrefixFreePath[Path, Tail], uniqueNames: UniqueNames[Entry[Name, K, V] *: Tail]): PrefixFreePath[Path, Entry[Name, K, V] *: Tail]

Inductive case: if head prefix doesn't collide with tail prefixes and tail is prefix-free, then head *: tail is prefix-free.

Inductive case: if head prefix doesn't collide with tail prefixes and tail is prefix-free, then head *: tail is prefix-free.

This implementation requires UniqueNames evidence, which ensures that table names are distinct. With length-prefix encoding, distinct names guarantee prefix-free prefixes.

Attributes

Source
Evidence.scala
given emptyPrefixFree[Path <: Tuple]: PrefixFreePath[Path, EmptyTuple]

EmptyTuple trivially has no prefix collisions.

EmptyTuple trivially has no prefix collisions.

Attributes

Source
Evidence.scala
given singlePrefixFree[Path <: Tuple, Name <: String, K, V]: PrefixFreePath[Path, EntryTuple[Name, K, V]]

Single entry trivially has no prefix collisions.

Single entry trivially has no prefix collisions.

Attributes

Source
Evidence.scala