[Haskell-cafe] Unique Ordered Types
Will Yager
will.yager at gmail.com
Thu Aug 13 00:58:31 UTC 2015
What kind of units are these? dimensional normalizes units by representing them like Foo Int Int Int. (Those are type-level "ints".)
So if length is Foo 1 0 0 and time is Foo 0 1 0, then length* time = Foo 1 1 0 = time* length.
Does this work for your application?
--Will
> On Aug 12, 2015, at 14:20, Silvio Frischknecht <silvio.frischi at gmail.com> wrote:
>
> Hi I'm experimenting with a unit system in haskell where users can add
> "base units". I want to reduce units after multiplication and bring it
> into a canonical form. The problem is what kind of types can the units have.
>
> 1)
>
> data UnitA
> data UnitB
>
> Problem: They can't be ordered so UnitA * UnitB can be compared to UnitB
> * UnitA, but I can't make a canonical form, which would make type
> inference a lot better.
>
> 2)
>
> type UnitA = Zero
> type UnitB = Suc Zero
>
> Problem: Now they can be ordered. But users can create conflicting
> "basic units"
>
>
>
> Silvio
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
More information about the Haskell-Cafe
mailing list