
Type all the things - lmm
http://jto.github.io/articles/type-all-the-things/
======
greydius
Haskell has newtype for this purpose, with the benefit that the compiler
removes the added overhead of the additional data type.

~~~
wickedshimmy
Value classes serve this purpose in Scala: `case class Id(id: Long) extends
AnyVal` will have long-typed values at runtime (*mostly).

~~~
Psyonic
Is *mostly even true?

Given the list of restrictions here: [http://docs.scala-
lang.org/overviews/core/value-classes.html](http://docs.scala-
lang.org/overviews/core/value-classes.html)

It seems to me that you'd have to be fairly careful to have any confidence
your not instantiating classes for them.

Do you know if there are any compiler flags or other way to know if your value
classes are working as expected?

------
sonicrocketman
> [Re: Type Safety] It may not feel like much, but it is huge. Here I can only
> ask you to believe me.

That was the part I agreed with you the most.

