On Fri, Jan 30, 2015 at 7:05 PM, adam vogt <vogt.a...@gmail.com> wrote:
> Hi Greg, > > Perhaps a less-invasive way to implement the -XSafe part of your > proposal would be to provide a module like: > > module Language.Haskell.TH.Safe ( > module Language.Haskell.TH, > reifyWithoutNameG, > ) where > import Language.Haskell.TH hiding (runIO, reify*) > > where reifyWithoutNameG is the same as reify, except definitions that > are out of scope are either missing or modified such that they use > NameQ instead of NameG for out-of-scope names. > Thanks, I added this concept to the wiki. > That way there is no new syntax needed, and safe TH can be called by > unsafe TH without any conversions. > > I think defining another monad like Q that can do less is too > inconvenient because you have to disambiguate between Safe.listE and > Unsafe.listE, or make those functions more polymorphic (which makes > type errors worse). Another option would be if there were > Oh, you are getting into more concrete details now than I have even thought about! For the restricted monad route, we might look into a more capable method of using capabilities that would end up looking like this: reify :: Name -> Restrict (TH :+: Reify) Info runIO :: IO a -> Restrict (TH :+: RunIO) a There are still a lot of details to work out, thanks for getting things started.
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users