
Thanks, Simon!
Yes I have a branch, and it works! A bunch of things is still missing
(notably record selectors), but I have a proof-of-concept with a gdiff
library hooked up to GHC.Generics, and by appealing to type-level
reasoning I can obtain a difference tree from True to False (which
looks good) by using the reflection (i.e. class Generic) only, no need
for TH or hand-coding. Comparing bigger trees (and then 'patch'ing
them) appears to be SMOP from here.
My current obstacle is that for each
instance Datatype (Dat "MyModule" "Foo") ...
I get an 'orphan instance' warning. I believe that these are harmless,
so is there a way to suppress them? Since I never insert tyvars in the
instance head, there should never be any overlap too.
Cheers,
Gabor
On 6/30/14, Simon Peyton Jones
You'll need to give a lot more info than this before I can help Gabor. Currently I have only the vaguest idea about what you are trying to accomplish. Is there a wiki page that describes the design (user's eye view) in detail?
I see you have a branch. If you are stuck, and give me repro instructions, I can attempt to help.
Simon
| -----Original Message----- | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Gabor | Greif | Sent: 27 June 2014 17:51 | To: ghc-devs | Subject: Resolved+new Q: TypeLits question, how to build a Type | Application with Symbol index | | I succeeded to solve all of them :-) | | But now I am blocked on on a panic | | "not in scope during type checking, but it passed the renamer". | | I suspect that while "deriving Generic" some instances are defined in | some empty TcEnv, which does not contain my definition in context. | | Is there a way to inject some type constructor into the TcEnv? | | Thanks, | | Gabor | | On 6/27/14, Gabor Greif
wrote: | > Hello devs, | > | > I have | > | > {{{ | > data D (n :: Symbol) | > }}} | > | > in my module, and I want to obtain a type | > | > {{{ | > D "YAY!" | > }}} | > | > programmatically. Where can I find code that performs this (or | > something similar)? | > | > 1) I have to look up |D| in the current TyEnv (what if it is in a | > specific module?), | > 2) I have to build the type index (of kind Symbol), this involves | > FastString, looks non-trivial, | > 3) Apply 1) on 2), this is easy. | > | > Any hints welcome! | > | > Thanks and cheers, | > | > Gabor | > | > | > PS: some morsels I have so far: | > | > for 1) | > compiler/prelude/PrelNames.lhs:gHC_GENERICS = mkBaseModule (fsLit | > "GHC.Generics") | > | _______________________________________________ | ghc-devs mailing list | ghc-devs@haskell.org | http://www.haskell.org/mailman/listinfo/ghc-devs