[Haskell-cafe] Re: Implementing fixed-sized vectors (using
datatype algebra?)
Alfonso Acosta
alfonso.acosta at gmail.com
Thu Feb 7 09:56:36 EST 2008
Don't expect anything astonishing yet, but an initial version of the
library can be found at
http:/code.haskell.org/type-level
To make reviewing easier I have put the haddock-generated documentation at
http://code.haskell.org/~fons/type-level/doc/
Some remarks:
* Only Positive and Natural numerals in decimal representation are
supported. It would be cool to add support for Integers though.
* The code is based on Oleg's implimentation of type-level binaries
http://okmij.org/ftp/Computation/resource-aware-prog/BinaryNumber.hs
* exponentiation/log and GCD is not implemented yet
* multiplication is not relational and thus division is broken. I
tried porting Oleg's multiplication algorithm without success.
* Aliases (in binary, octal decimal and hexadecimal form) for
type-level values and their value-level reflection functions are
generated with TH.
That implies:
* Long compilation time depending on your system
* Although errors will always be reported in decimal form, the end
user can input values using other bases (only for values in the range
of generated aliases of course)
* It would be cool to have "real" support for other bases apart from decimals
* It would imply having unlimited size of input for other bases
(right now if we want to input a value out of the alises limit,
decimal reprentation is mandatory)
* However, is it feasible? How could it be done without needing to
implement the operations for each base? WOuld it be possible to
"overload" the type-level operators so that they worked with different
representations and mixed representation arguments?
* Booleans are not implemented (Wolfgang?)
I would be happy to hear any suggestions, get code reviews and/or contributions.
Cheers,
Fons
On Feb 7, 2008 11:17 AM, Wolfgang Jeltsch <g9ks157k at acme.softbase.org> wrote:
> Am Donnerstag, 7. Februar 2008 02:47 schrieb Alfonso Acosta:
> > > The other library I use for type-level programming is HList. It has
> > > type-level booleans already so you might what to take a look at it if
> > > you're not already familiar with it.
> >
> > Thanks I'll have a look at it.
>
> I have to admit that I don't like the names HBool, HTrue and HFalse. What do
> they mean? Heterogenous booleans? Heterogenous truth? Why it's "Bool"
> instead of "Boolean" and therefore not conforming to the Prelude convention?
>
> Heterogenous lists are not directly about type level computation. A HList
> type is usually inhabited. On the other hand, types which denote type level
> naturals or type-level booleans are empty data types. So type level booleans
> should go into some type level programming library like the one Alfonso and I
> want to create. HList should then use these booleans. This is at least my
> opinion.
>
> Best wishes,
> Wolfgang
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list