[Haskell-cafe] TH: quoting name and value
Richard Eisenberg
rae at richarde.dev
Mon Feb 1 17:06:14 UTC 2021
Hi Sylvain,
I think you're after https://gitlab.haskell.org/ghc/ghc/-/issues/14474. There is some real work to do there, but it should be quite possible.
Richard
> On Feb 1, 2021, at 4:51 AM, Sylvain Henry <sylvain at haskus.fr> wrote:
>
> Hi,
>
> I have the following kind of template haskell code:
>
> module Foo where
> foo :: String -> Name -> Q [Dec]
> foo str name = return []
>
> module Bar where
> bar :: String
> bar = "whatever"
>
> module FooBar where
> import Foo
> import Bar
> foo bar 'bar
> It works great as in `foo` I can use both bar's Name and bar's value computed at compile time.
>
> But it's unsafe for my purpose because a user could call: `foo "fakeBarValue" 'bar`
>
> So the question is: is there a way to write `foo` so that it can only be used safely?
>
>
> If not, I guess it could be possible to add a new kind of quote to TH, something like:
>
> data Named a = Named Name a -- constructor not exported so that Named values can't be forged by users.
>
> [namedValue||bar||] :: Named String -- new quote
>
> What do you think?
> Thanks,
> Sylvain
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20210201/3d6986d6/attachment.html>
More information about the Haskell-Cafe
mailing list