Re: Can I reify types?
"Alfonso Acosta" <[email protected]> Sun, 25 May 2008 17:57:49 +0200
| Newsgroups | gmane.comp.lang.haskell.template |
|---|---|
| Message-ID | <[email protected]> |
On Sun, May 25, 2008 at 5:19 PM, Marc Weber <[email protected]> wrote: > This doesn't work: > $(do > a <- reify $ mkName "C" > report False $ show a > return [] > ) Whenever you can avoid using mkName and provide the Name directly using single quotes, in this case ... $(do a <- reify ''C report False $ show a return [] ) ... would do. Note that a preceeding souble single quote is ('') used for type constructors whereas a single quote (') is used for data constructors. > main = print "" > > > || [1 of 1] Compiling Main ( test.hs, test.o ) > || > test.hs|1| `C' is not in scope at a reify > > Using mkName "A" results in > test.hs|1 error| > || DataConI Main.A (ForallT [a_1627391370] [] (AppT (AppT ArrowT (VarT a_1627391370)) (AppT (ConT Main.A) (VarT a_1627391370)))) Main.A (Fixity 9 InfixL) > as expected > > Why do I need it? > I'd like to implement kind of very basic relational data representation > the way IxSet is doing it but without dynamics.. > > It will look like this: > > type CDs = Table (Autoinc, Artist, Title, Year) -- col types > (Artist, Title, Year) -- keys > () -- is detail of > type Tracks = Table (Autoinc, Title, RecordingDate) > (Title, RecordingDate) > (CDs) > $(mkDB ["CDs","Tracks"]) > > To be able to automatically derive > insert{CDs,Tracks} > delete{CDs,Tracks} > update{CDs,Tracks} > functions I need to get information about those types.. Is this > possible? > > Thanks > Marc Weber > _______________________________________________ > template-haskell mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/template-haskell >