scalaz/scalaz — pull request #693 by puffnfresh (2014-04-11 03:58:01+00:00)
Title: Lossless tags

New type is `@@@` - which is defined to be:

type Tagged[T] = {type Tag = T}
type @@@[+T, Tag] = Tagged[Tag]

Usage is:

scala> Tags.MinVal.unwrap(Tags.MinVal.lossless(1) |+|
Tags.MinVal.lossless(2))
res0: Int = 1

scala> Tags.MinVal.lossless(1) * Tags.MinVal.lossless(2)
:14: error: value * is not a member of
scalaz.@@@[Int,scalaz.Tags.MinVal]
Tags.MinVal.lossless(1) * Tags.MinVal.lossless(2)