[Template-haskell] Can I reify types?
Alfonso Acosta
alfonso.acosta at gmail.com
Sun May 25 11:57:49 EDT 2008
On Sun, May 25, 2008 at 5:19 PM, Marc Weber <marco-oweber at gmx.de> 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
> template-haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/template-haskell
>
More information about the template-haskell
mailing list