4 ms·
Opaque types absolutely provide something of value. They're different types. You can't pass an Integer to a function that requires a PrimeNumber. It's a compile
by chowells 4y ago
Opaque types absolutely provide something of value. They're different types. You can't pass an Integer to a function that requires a PrimeNumber. It's a compile error.
- crabbone 4y agoNot in this context they don't. They are useless if you want to ensure that a given number is a prime number.
- ParetoOptimal 4y ago> Not in this context they don't. What context is it exactly where they don't matter? I can tell you in practice, in the real world, they very much do. > They are useless if you want to ensure that a given number is a prime number. It's not useless. The point is that once you have type `PrimeNumber` that can only be constructed after being validated, you then can write functions exist in a reality where only PrimeNumber exists.
- ParetoOptimal 4y agoI wrote an example with prime numbers that you can run in the Haskell playground: https://play.haskell.org/saved/gRsNcCGo https://play.haskell.org/saved/gRsNcCGo > They are useless if you want to ensure that a given number is a prime number. This is wrong. In the example above `addPrimes` will only take prime numbers. As such if I make a Jira story that says "add multiply/subtract functions using the PrimeNumber type" I'll know that implementation is simplified by only being able to concern itself with prime numbers.