Thanks! I'll analyze what you've done here. One thing that jumps out at me is that you're using flop twice. I think this violates an invariant that I was trying(/"hoping") to maintain by not exporting Skolem. I'll let you know once I look at it longer.
Thanks for taking the time to do this. On Tue, Apr 17, 2012 at 1:40 PM, Dimitrios Vytiniotis <dimit...@microsoft.com> wrote: > > Hi Nick, I cannot say that I understand very well what you have in your mind, > nor the > signatures of the classes you have in your module, but as you expected your > program > is unsafe (and I've probably attached one of the most obfuscated ways to show > it, many > apologies for this! At least my code can offer a good laugh to people :-)) > > Because I do not understand what you are doing in this module, I also do not > understand > how to make it safer -- I just can safely tell you that using your forall_S > one can create a > Leibniz equality: > > forall a c. c Skolem -> c a > > which (by a free theorem) means that ALL types must be equal to Skolem, and > my code > exploits exactly this to equate Char to Skolem to Int -> Int. The fact that > you can't name > Skolem in the new module because it is not exported is kind of irrelevant ... > > Regarding impredicativity in GHC, we are still unfortunately on the > whiteboard ... > > Hope this helps! > > d- > > > > >> -----Original Message----- >> From: glasgow-haskell-users-boun...@haskell.org [mailto:glasgow-haskell- >> users-boun...@haskell.org] On Behalf Of Nicolas Frisby >> Sent: Monday, April 16, 2012 11:58 PM >> To: glasgow-haskell-users >> Subject: faking universal quantification in constraints >> >> I'm simulating skolem variables in order to fake universal quantification in >> constraints via unsafeCoerce. >> >> http://hpaste.org/67121 >> >> I'm not familiar with various categories of types from the run-time's >> perspective, but I'd be surprised if there were NOT a way to use this code to >> create run-time errors. >> >> Is there a way to make it safer? Perhaps by making Skolem act more like >> GHC's Any type? Or perhaps like the -> type? I'd like to learn about the >> varieties of types from the run-time's perspective. >> >> I know Dimitrios Vytiniotis is trying to implement these legitimately in GHC, >> but I don't know much about that project's status, nor any documentation >> indicating how to try it out in GHC HEAD (e.g. what's the syntax?). Is there >> a >> page on the GHC wiki or something to check that sort of thing? >> >> I wonder how far this Forall_S trick can take me in the interim towards >> Vytiniotis' objective functionality when paired with a (totally safe) class >> for >> implication. >> >> > class Implies (ante :: Constraint) (conc :: Constraint) where >> > impliesD :: Dict ante -> Dict conc >> >> Thanks, >> Nick >> >> _______________________________________________ >> Glasgow-haskell-users mailing list >> Glasgow-haskell-users@haskell.org >> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users > _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users