[Haskell-cafe] Read Instance for UArray won't port to linux
Bulat Ziganshin
bulat.ziganshin at gmail.com
Wed Mar 14 16:45:37 EDT 2007
Hello SevenThunders,
Wednesday, March 14, 2007, 10:32:23 PM, you wrote:
the type variables are dark side of GHC, and you need to have at least
1 mlOleg of brain to understand them. it will be great if someone will
ever write reasonable introduction into this. meanwhile, you can look
into ghc docs
> You guys are awesome! I post this not 12 hours ago and I already have a
> complete treatise on the subject. Yeah to clarify things putting an
> ellipsis between b and c would help. But also clarify the meaning of
> distinct type variables. Does this mean the type variable must not be
> parameterized?
> I ran into this because I decided during my port that I would try to learn
> some of the better build tools on linux. So now I'm acquainted with Cmake,
> which is a great tool and cabal which is also very impressive. My problem
> boiled down to the fact that I didn't know how to set the correct compiler
> flags within cabal. I figured out the FFI flags and now I suppose the gch
> extensions can be set with Ghc-options: -fglasgow-exts in my .cabal file. Is
> there a type in the Extensions field that corresponds to this?
> Spencer Janssen-2 wrote:
>>
>> It looks like you forgot to pass a compiler flag, namely -fglasgow-exts.
>>
>>
>> Cheers,
>> Spencer Janssen
>>
>> On Tue, 13 Mar 2007 22:20:20 -0700 (PDT)
>> SevenThunders <mattcbro at earthlink.net> wrote:
>>
>>>
>>> I have the pleasure of porting a good sized Haskell application to
>>> linux. So far the Haskell code has compiled without incident, however
>>> some code that I hacked
>>> to implement a Read instance for Unboxed Arrays does not compile on
>>> linux even though it compiles just fine on Windows XP in Haskell 6.6.
>>>
>>> The code reads as,
>>>
>>> instance Read (UArray Int Double) where
>>> readsPrec p = readParen (p > 9)
>>> (\r -> [(array b as :: UArray Int Double, u) | ("array",s)
>>> <- lex r,
>>> (b,t) <- reads s,
>>> (as,u) <- reads t ])
>>>
>>>
>>> The error in linux is:
>>> Illegal instance declaration for `Read (UArray Int Double)'
>>> (The instance type must be of form (T a b c)
>>> where T is not a synonym, and a,b,c are distinct type
>>> variables) In the instance declaration for `Read (UArray Int Double)'
>>>
>>> Why does it want three parameters for the instance type? I am
>>> baffled by this.
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list