Yes, I’ve looked through this file, but it seems to me that I can't use 
anything there in my function.

> 22 мая 2018 г., в 18:52, Nicolas Frisby <[email protected]> написал(а):
> 
> Hi Alice.
> 
> I'm having trouble following your question -- I'm not familiar with the 
> internals of fingerprint generation.
> 
> But, have you scoured the compiler/typecheck/TcTypeable.hs file? It seems 
> likely to have similar logic to what you seem to be seeking.
> 
> HTH. -Nick
> 
> On Tue, May 22, 2018, 06:38 alice <[email protected] 
> <mailto:[email protected]>> wrote:
> Hello again. I’m trying to make a function in a type-checking plugin that 
> takes TyCoRep#Type and makes its fingerprint that matches `typeRepFingerprint 
> (typeRep :: TypeRep (type))`. As I understood the type’s fingerprint is made 
> in DsBinds#dsEvTypeable by generating a code that makes the fingerprint, so I 
> can’t reuse functions which are already written.
> 
> My goal is to write a function that makes fingerprints of types which are not 
> type variables such as Int, Maybe Int, ‘[Int] etc. So I tried to follow 
> `mkTrCon` and `mkTrApp` style, and I think I managed to process simple types 
> like Int, Maybe Int — right now I’m processing TyConApp only. But when I 
> tried to make promoted data fingerprint like ‘[Int] I faced some problems. 
> 
> For example, for making `’Just Int` fingerprint first I have to compute 'Just 
> fingerprint by computing  'Just tyCon’s and * fingerprints, then combining 
> them into one fingerprint. Then I have to apply ‘Just to Int. But when I try 
> to do something like that while type checking I cannot separate two cases 
> that match runtime’s`TypeRep (a b)` (a representation for a type application) 
> and `TypeRep a` (a representation for a type constructor) because they are 
> represented by TyConApp. Also I can’t separate tyCon kinds and types for type 
> application because they are merged into one list which is stored in 
> `TyConApp _ [KindOrType]`. [KindOrType] list for `’Just Int` is `[*, Int]`. 
> Is there any way to separate this two cases and kinds/types?
> 
> Probably there is an easier way to make this function? If not, does type 
> fingerprint function seem possible to make?
> 
> Any help would be appreciated,
> 
> Alice.
> _______________________________________________
> ghc-devs mailing list
> [email protected] <mailto:[email protected]>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs 
> <http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs>

_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to