Effect CommunityEC
Effect Community3y ago
48 replies
Patrick Roza

Alternative Modeling of Assignability with Brands

is there a better way to model assignability, apart from having all brands in the chain?
type NonEmptyString = string & Brand<"NonEmptyString">
type NonEmptyString2k = string & Brand<"NonEmptyString2k"> & NonEmptyString
type NonEmptyString255 = string & Brand<"NonEmptyString255"> & NonEmptyString2k
// type NonEmptyString255: string & Brand<"NonEmptyString255"> & Brand<"NonEmptyString2k"> & Brand<"NonEmptyString">


I did this with another Brand implementation before, which makes it also nice and tidy (opaque), but it won't work with effect's brand:
interface NonEmptyStringBrand extends Brand<"NonEmptyString"> {}
interface NonEmptyString2kBrand extends Brand<"NonEmptyString2k">, NonEmptyStringBrand {}
interface NonEmptyString255Brand extends Brand<"NonEmptyString255">, NonEmptyString2kBrand {}
Was this page helpful?