[Haskell-cafe] More concise code using phantom types

Brandon Allbery allbery.b at gmail.com
Sat Aug 8 03:02:59 UTC 2015


On Fri, Aug 7, 2015 at 7:28 PM, Nikita Kartashov <snailandmail at gmail.com>
wrote:

> Is it possible to use something instead extractA function here? For
> example, substitute "extractA u” with “undefined :: a”?
> GHC disallows it, so is there a way to explain that I only need a token
> with type a?
>

It needs a function type there. That said, `const undefined' might work, or
even just `undefined', if it can infer the type correctly.

I don't *think* you can use 'a' as a type there meaningfully; IIRC it
doesn't scope over the method definition, so `a' would be referring to a
new type, not the one in the instance header. The ScopedTypeVariables
extension would help, along with InstanceSigs so you can specify a
signature for `show` with a `forall' in it to activate the scope. See the
example at
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/type-class-extensions.html#instance-sigs
for how to do it.

-- 
brandon s allbery kf8nh                               sine nomine associates
allbery.b at gmail.com                                  ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150807/c2e012e3/attachment.html>


More information about the Haskell-Cafe mailing list