This doesn't seem to do it, same type error... Maybe I need to use some kind of witness type -- to inform the compiler
of the type of a @ runtime?

Daniel Fischer wrote:
Am Donnerstag, 5. März 2009 19:48 schrieb Joseph Fredette:
    getFilterMain :: Deliverable a => FilePath -> Interpreter (Filter
a)
    getFilterMain fMainLoc =
do
            loadModules [fMainLoc]; setTopLevelModules [(takeWhile
(/='.') fMainLoc)]
            fMain  <- (interpret "(filterMain)" (as :: Deliverable a =>
Filter a))

Without looking at more code, the type variable a here is a fresh type variable, not the one from getFilterMain's signature.

            return
(fMain)


Maybe bringing the type variable a into scope in the function body by

{-# LANGUAGE ScopedTypeVariables #-}

getFilterMain :: forall a. Deliverable a => FilePath -> Interpreter (Filter, a)

would suffice.


However, when I try to compile this, I get the type error:

    Hackmain.hs:70:43:
        Ambiguous type variable `a' in the constraint:
          `Deliverable a'
            arising from a use of `getFilterMainStuff' at
Hackmain.hs:70:43-60
        Probable fix: add a type signature that fixes these type
variable(s)

My understanding is that a type like "Foo a => Bar a" (where Foo is a
class and Bar is a datatype) would simply restrict
the values of a to only those implementing Foo. But evidently I'm wrong.
Is there a good (read, easy... :) ) fix to this?

Any help would be greatly appreciated.

/Joe

PS. All the actual code is on patch-tag, here
http://patch-tag.com/repo/Hackmail/home -- if anyone prefers to look at
that directly, the relevant files are in Src, namely, Hackmain.hs,
Filter.hs, and Deliverable.hs


begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:[email protected]
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to