Re: The build is broken (Solaris/x86, FreeBSD/{i386,amd64})

2014-04-14 Thread Jan Stolarek
> I think Simon Marlow is even more conservative, and
> does his validate builds in a separate tree so he catches missing files.
I thought everyone is doing that.

Janek
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Folding in base, integer-{gmp, single}, ghc-prim, and haskell-template into ghc.git

2014-04-14 Thread 山本和彦
Hi Herbert,

> After a short conversion with Austin and Edward it appears that the
> sensible course of action with respect towards moving to a proper Git
> submodule set-up is to fold-in the 5 Git repos listed below (which btw
> are all GHC wired-in packages) directly into ghc.git (the same way
> testsuite.git was a few months ago):

This is just a confirmation. I have no opinion on this.

Recalling the discussion in the last summer, I understood GHC project
will start using git subtree, not git submodule. But it seems to me
this is my misunderstanding.

What was the conclusion of that discussion? And would you tell me why
submodule was chosen?

--Kazu
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Git problem

2014-04-14 Thread Edward Z . Yang
Hey Simon,

If you have no Haddock changes, try cd'ing into the haddock directory
and doing a hard reset to the remote origin (so something like
git reset --hard origin/master *INSIDE HADDOCK*), and then changing
back to the main directory and git add'ing the directory.

Edward

Excerpts from Simon Peyton Jones's message of 2014-04-14 02:13:02 -0700:
> Friends
> I'm stuck with Git. Help please!
> Simon
> 
> I tried to do a 'git stash pop', having just done a 'git pull' from the 
> master repo.  I got this:
> 
> simonpj@cam-05-unx:~/code/HEAD-2$ git stash pop
> 
> warning: Failed to merge submodule utils/haddock (commits don't follow 
> merge-base)
> 
> Auto-merging utils/haddock
> 
> CONFLICT (submodule): Merge conflict in utils/haddock
> 
> Auto-merging compiler/typecheck/TcRnMonad.lhs
> Now git status says
> 
> simonpj@cam-05-unx:~/code/HEAD-2$ git status
> 
> # On branch master
> 
> # Your branch is ahead of 'origin/master' by 2 commits.
> 
> #
> 
> # Changes to be committed:
> 
> #   (use "git reset HEAD ..." to unstage)
> 
> #
> 
> #modified:   compiler/typecheck/TcMType.lhs
> 
> #modified:   compiler/typecheck/TcRnMonad.lhs
> 
> #modified:   compiler/typecheck/TcSimplify.lhs
> 
> #modified:   compiler/typecheck/TcUnify.lhs
> 
> #
> 
> # Unmerged paths:
> 
> #   (use "git reset HEAD ..." to unstage)
> 
> #   (use "git add/rm ..." as appropriate to mark resolution)
> 
> #
> 
> #both modified:  utils/haddock
> The modified files are right.  It's the "both modified utils/haddock" that is 
> messing me up.
> I'm not modifying haddock!  I just want to say "take the master haddock", but 
> I don't know how.  I tried 'git checkout utils/haddock' but that just led do 
> `git status' saying
> 
> #modified:   utils/haddock (new commits)
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: The build is broken (Solaris/x86, FreeBSD/{i386,amd64})

2014-04-14 Thread Edward Z . Yang
Hey Gergo,

It looks like this failure came from one of your commits, which didn't
include a submodule update.

One trick that I find very useful for making sure that I haven't missed
any files when submitting a patch is to always run 'git status' before I
push, and carefully look at all the output, especially staged but not
committed changes.  I think Simon Marlow is even more conservative, and
does his validate builds in a separate tree so he catches missing files.

Edward

Excerpts from Herbert Valerio Riedel's message of 2014-04-14 00:17:51 -0700:
> Hi,
> 
> (probably) fixed by
> 
>  
> http://git.haskell.org/ghc.git/commitdiff/b4a820f97e48199a92f5ce7216731500f9a841c9
> 
> 
> 
> On 2014-04-14 at 09:15:42 +0200, Páli Gábor János wrote:
> 
> [...]
> 
> > utils/haddock/src/Haddock/Interface/Create.hs:367:44:
> > Couldn't match type 'GenLocated SrcSpan (HsBindLR Name Name)'
> >   with '(a1, Located (HsBind id))'
> > Expected type: TyClDecl Name -> Bag (a1, Located (HsBind id))
> >   Actual type: TyClDecl Name -> LHsBinds Name
> > Relevant bindings include
> >   defs :: [Located (HsDecl id)]
> > (bound at utils/haddock/src/Haddock/Interface/Create.hs:367:5)
> > In the second argument of '(.)', namely 'tcdMeths'
> > In the second argument of '(.)', namely 'bagToList . tcdMeths'
> > utils/haddock/src/Haddock/Interface/Create.hs:393:22:
> > Couldn't match type 'GenLocated SrcSpan (HsBindLR Name Name)'
> >   with '(a0, Located (HsBind Name))'
> > Expected type: HsValBindsLR Name Name
> >-> [(a0, Located (HsBind Name))]
> >   Actual type: HsValBindsLR Name Name -> [LHsBindLR Name Name]
> > In the first argument of '(.)', namely 'valbinds'
> > In the second argument of '(.)', namely 'valbinds . hs_valds'
> > gmake[1]: *** [utils/haddock/dist/build/Haddock/Interface/Create.dyn_o] 
> > Error 1
> > gmake: *** [all] Error 2
> >
> > Please consult the details at
> >
> > http://haskell.inf.elte.hu/builders/solaris-x86-head/28/10.html
> 
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Help with coercion & roles?

2014-04-14 Thread Conal Elliott
This explanation-with-example is very helpful. Thanks, Richard! I'll noodle
some more. A fairly simple & robust solution may be to add `Cast` to my
expression GADT.

-- Conal


On Mon, Apr 14, 2014 at 2:02 PM, Richard Eisenberg wrote:

> So what do you think? Is there a sound coercion I can build for `co'`?
>
>
> In a word, "no". The problem is that E, as you describe, is a GADT.
> Therefore, it cares exactly which types it is parameterized by. We can see
> this in evidence in the dump, which labels E's second parameter as nominal.
> To draw out the problem, let's look at a simpler example:
>
> > newtype Age = MkAge Int
> > data G a where
> >   MkGInt :: G Int
> >   MkGAge :: G Age
>
> Here, `G` would similarly get a nominal role, because we can't lift
> representational coercions (such as NTCo:Age :: Age ~R Int) through the `G`
> type constructor. If we could, we could then have (MkGAge |> ...) :: G Int,
> which goes against our definition of G -- the only value inhabitant of G
> Int should be MkGInt.
>
> The best you can do here is to try to raise the inner coercion to be
> nominal, by unSubCo_maybe. If that fails, I think you've gone beyond the
> ability of GHC's type system.
>
> Of course, I would like to help you with a way forward -- let me know if
> there's a way I can.
>
> Richard
>
> On Apr 14, 2014, at 4:12 PM, Conal Elliott  wrote:
>
> Hi Richard,
>
> I'm working on compiling Haskell to hardware, as outlined at
> https://github.com/conal/lambda-ccc/blob/master/doc/notes.md (with links
> to a few recent blog posts). The first step is to convert Core into other
> Core that evaluates to a reified form, represented as a type-parametrized
> GADT. This GADT (in `LambdaCCC.Lambda`):
>
> > data E :: (* -> *) -> (* -> *) where ...
>
> The parameter is also type-parametrized, and is for the primitives. I have
> such a type designed for hardware generation (in `LambdaCCC.Prim`)
>
> > data Prim :: * -> * where ...
>
> and then the combination of the two:
>
> > type EP = E Prim
>
> So that's what `EP` is.
>
> With `-ddump-tc`, I get
>
> > TYPE CONSTRUCTORS
> >   ...
> >   E :: (* -> *) -> * -> *
> >   data E ($a::* -> *) $b
> > No C type associated
> > Roles: [representational, nominal]
> > RecFlag NonRecursive, Not promotable
> > = ...
> >   EP :: * -> *
> >   type EP = E Prim
>
> The use of `EP` rather than the more general `E` is only temporary, while
> I'm learning more details of Core (and of HERMIT which I'm using to
> manipulate Core).
>
> I'm now working on reification in the presence of casts. The rule I'm
> trying to implement is
>
> > evalEP e |> co  -->  evalEP (e |> co').
>
> Here, `evalEP :: EP a -> a` and `co :: a ~ b`, so `co' :: EP a ~ EP b`.
>
> I'm trying to build `co'` from `co`, which led to these questions.
>
> So what do you think? Is there a sound coercion I can build for `co'`?
>
> -- Conal
>
>
> On Mon, Apr 14, 2014 at 11:54 AM, Richard Eisenberg wrote:
>
>> Hi Conal,
>>
>> In your case, the `_N` on the argument to NTCo:HasIf[0] is correct -- the
>> `HasIf` class indeed has a nominal parameter. So, it seems that this part,
>> at least, is OK.
>>
>> What's the -ddump-tc on EP? Is EP's role nominal? (I think so, given what
>> you're saying.) If that's the case, you won't be able to pass the result of
>> NTCo:HasIf[0] to a coercion built from EP.
>>
>> Popping up a level, what are you trying to do here? If EP's role is
>> indeed nominal, then I don't believe there's a fix here, as the coercion it
>> seems you're trying to build may be unsound. (It looks to me like you want
>> something proving `EP (Bool -> Bool -> Bool -> Bool) ~R EP (HasIf Bool)`,
>> but if EP's role is nominal, then this is indeed bogus.)
>>
>> Richard
>>
>> On Apr 14, 2014, at 2:23 PM, Conal Elliott  wrote:
>>
>> Thanks for the pointers! I don't quite know how to get to the form you
>> recommend from the existing coercion, which is `Simple.NTCo:HasIf[0]
>> _N`. (Note the `_N`.) I got that coercion in GHC 7.8.2 from
>> the following code:
>>
>> > class HasIf a where
>> >   ifThenElse :: Bool -> a -> a -> a
>> >
>> > instance HasIf Bool where
>> >   ifThenElse i t e = (i && t) || (not i && e)
>>
>> With `--dump-tc`, I see
>>
>> > TYPE SIGNATURES
>> > TYPE CONSTRUCTORS
>> >   HasIf :: * -> Constraint
>> >   class HasIf a
>> > Roles: [nominal]
>> > RecFlag NonRecursive
>> > ifThenElse :: Bool -> a -> a -> a
>> > COERCION AXIOMS
>> >   axiom Main.NTCo:HasIf :: HasIf a = Bool -> a -> a -> a
>> > INSTANCES
>> >   instance HasIf Bool -- Defined at ../test/HasIf.hs:4:10
>>
>> Do I need to convert the nominal coercion I got from GHC
>> (`Simple.NTCo:HasIf[0] _N` in this case) to a
>> representational one? If so, how?
>> My current formulation (tweaked to use `mkSubCo` and `mkAppCo`) is to
>> apply `mkAppCo (mkSubCo (Refl Nominal ep))` to the given coercion, which
>> then produces
>>
>> > (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R
>>
>> And still I get "Role incompatibility: expected no

Re: Help with coercion & roles?

2014-04-14 Thread Richard Eisenberg
> So what do you think? Is there a sound coercion I can build for `co'`?


In a word, "no". The problem is that E, as you describe, is a GADT. Therefore, 
it cares exactly which types it is parameterized by. We can see this in 
evidence in the dump, which labels E's second parameter as nominal. To draw out 
the problem, let's look at a simpler example:

> newtype Age = MkAge Int
> data G a where
>   MkGInt :: G Int
>   MkGAge :: G Age

Here, `G` would similarly get a nominal role, because we can't lift 
representational coercions (such as NTCo:Age :: Age ~R Int) through the `G` 
type constructor. If we could, we could then have (MkGAge |> ...) :: G Int, 
which goes against our definition of G -- the only value inhabitant of G Int 
should be MkGInt.

The best you can do here is to try to raise the inner coercion to be nominal, 
by unSubCo_maybe. If that fails, I think you've gone beyond the ability of 
GHC's type system.

Of course, I would like to help you with a way forward -- let me know if 
there's a way I can.

Richard

On Apr 14, 2014, at 4:12 PM, Conal Elliott  wrote:

> Hi Richard,
> 
> I'm working on compiling Haskell to hardware, as outlined at 
> https://github.com/conal/lambda-ccc/blob/master/doc/notes.md (with links to a 
> few recent blog posts). The first step is to convert Core into other Core 
> that evaluates to a reified form, represented as a type-parametrized GADT. 
> This GADT (in `LambdaCCC.Lambda`):
> 
> > data E :: (* -> *) -> (* -> *) where ...
> 
> The parameter is also type-parametrized, and is for the primitives. I have 
> such a type designed for hardware generation (in `LambdaCCC.Prim`)
> 
> > data Prim :: * -> * where ...
> 
> and then the combination of the two:
> 
> > type EP = E Prim
> 
> So that's what `EP` is.
> 
> With `-ddump-tc`, I get
> 
> > TYPE CONSTRUCTORS
> >   ...
> >   E :: (* -> *) -> * -> *
> >   data E ($a::* -> *) $b
> > No C type associated
> > Roles: [representational, nominal]
> > RecFlag NonRecursive, Not promotable
> > = ...
> >   EP :: * -> *
> >   type EP = E Prim
> 
> The use of `EP` rather than the more general `E` is only temporary, while I'm 
> learning more details of Core (and of HERMIT which I'm using to manipulate 
> Core).
> 
> I'm now working on reification in the presence of casts. The rule I'm trying 
> to implement is
> 
> > evalEP e |> co  -->  evalEP (e |> co').
> 
> Here, `evalEP :: EP a -> a` and `co :: a ~ b`, so `co' :: EP a ~ EP b`.
> 
> I'm trying to build `co'` from `co`, which led to these questions.
> 
> So what do you think? Is there a sound coercion I can build for `co'`?
> 
> -- Conal
> 
> 
> On Mon, Apr 14, 2014 at 11:54 AM, Richard Eisenberg  
> wrote:
> Hi Conal,
> 
> In your case, the `_N` on the argument to NTCo:HasIf[0] is correct -- the 
> `HasIf` class indeed has a nominal parameter. So, it seems that this part, at 
> least, is OK.
> 
> What's the -ddump-tc on EP? Is EP's role nominal? (I think so, given what 
> you're saying.) If that's the case, you won't be able to pass the result of 
> NTCo:HasIf[0] to a coercion built from EP.
> 
> Popping up a level, what are you trying to do here? If EP's role is indeed 
> nominal, then I don't believe there's a fix here, as the coercion it seems 
> you're trying to build may be unsound. (It looks to me like you want 
> something proving `EP (Bool -> Bool -> Bool -> Bool) ~R EP (HasIf Bool)`, but 
> if EP's role is nominal, then this is indeed bogus.)
> 
> Richard
> 
> On Apr 14, 2014, at 2:23 PM, Conal Elliott  wrote:
> 
>> Thanks for the pointers! I don't quite know how to get to the form you 
>> recommend from the existing coercion, which is `Simple.NTCo:HasIf[0] 
>> _N`. (Note the `_N`.) I got that coercion in GHC 7.8.2 from 
>> the following code:
>> 
>> > class HasIf a where
>> >   ifThenElse :: Bool -> a -> a -> a
>> >
>> > instance HasIf Bool where
>> >   ifThenElse i t e = (i && t) || (not i && e)
>> 
>> With `--dump-tc`, I see
>> 
>> > TYPE SIGNATURES
>> > TYPE CONSTRUCTORS
>> >   HasIf :: * -> Constraint
>> >   class HasIf a
>> > Roles: [nominal]
>> > RecFlag NonRecursive
>> > ifThenElse :: Bool -> a -> a -> a
>> > COERCION AXIOMS
>> >   axiom Main.NTCo:HasIf :: HasIf a = Bool -> a -> a -> a
>> > INSTANCES
>> >   instance HasIf Bool -- Defined at ../test/HasIf.hs:4:10
>> 
>> Do I need to convert the nominal coercion I got from GHC 
>> (`Simple.NTCo:HasIf[0] _N` in this case) to a 
>> representational one? If so, how?
>> My current formulation (tweaked to use `mkSubCo` and `mkAppCo`) is to apply 
>> `mkAppCo (mkSubCo (Refl Nominal ep))` to the given coercion, which then 
>> produces
>> 
>> > (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R
>> 
>> And still I get "Role incompatibility: expected nominal, got 
>> representational in `Sym (Simple.NTCo:HasIf[0] _N)`".
>> 
>> I also tried wrapping `mkSubCo` around the entire coercion (applying 
>> `mkSubCo . mkAppCo (Refl Nominal ep)`), and I see the same result:
>> 
>> > (LambdaCCC.Lamb

Re: Help with coercion & roles?

2014-04-14 Thread Conal Elliott
Hi Richard,

I'm working on compiling Haskell to hardware, as outlined at
https://github.com/conal/lambda-ccc/blob/master/doc/notes.md (with links to
a few recent blog posts). The first step is to convert Core into other Core
that evaluates to a reified form, represented as a type-parametrized GADT.
This GADT (in `LambdaCCC.Lambda`):

> data E :: (* -> *) -> (* -> *) where ...

The parameter is also type-parametrized, and is for the primitives. I have
such a type designed for hardware generation (in `LambdaCCC.Prim`)

> data Prim :: * -> * where ...

and then the combination of the two:

> type EP = E Prim

So that's what `EP` is.

With `-ddump-tc`, I get

> TYPE CONSTRUCTORS
>   ...
>   E :: (* -> *) -> * -> *
>   data E ($a::* -> *) $b
> No C type associated
> Roles: [representational, nominal]
> RecFlag NonRecursive, Not promotable
> = ...
>   EP :: * -> *
>   type EP = E Prim

The use of `EP` rather than the more general `E` is only temporary, while
I'm learning more details of Core (and of HERMIT which I'm using to
manipulate Core).

I'm now working on reification in the presence of casts. The rule I'm
trying to implement is

> evalEP e |> co  -->  evalEP (e |> co').

Here, `evalEP :: EP a -> a` and `co :: a ~ b`, so `co' :: EP a ~ EP b`.

I'm trying to build `co'` from `co`, which led to these questions.

So what do you think? Is there a sound coercion I can build for `co'`?

-- Conal


On Mon, Apr 14, 2014 at 11:54 AM, Richard Eisenberg wrote:

> Hi Conal,
>
> In your case, the `_N` on the argument to NTCo:HasIf[0] is correct -- the
> `HasIf` class indeed has a nominal parameter. So, it seems that this part,
> at least, is OK.
>
> What's the -ddump-tc on EP? Is EP's role nominal? (I think so, given what
> you're saying.) If that's the case, you won't be able to pass the result of
> NTCo:HasIf[0] to a coercion built from EP.
>
> Popping up a level, what are you trying to do here? If EP's role is indeed
> nominal, then I don't believe there's a fix here, as the coercion it seems
> you're trying to build may be unsound. (It looks to me like you want
> something proving `EP (Bool -> Bool -> Bool -> Bool) ~R EP (HasIf Bool)`,
> but if EP's role is nominal, then this is indeed bogus.)
>
> Richard
>
> On Apr 14, 2014, at 2:23 PM, Conal Elliott  wrote:
>
> Thanks for the pointers! I don't quite know how to get to the form you
> recommend from the existing coercion, which is `Simple.NTCo:HasIf[0]
> _N`. (Note the `_N`.) I got that coercion in GHC 7.8.2 from
> the following code:
>
> > class HasIf a where
> >   ifThenElse :: Bool -> a -> a -> a
> >
> > instance HasIf Bool where
> >   ifThenElse i t e = (i && t) || (not i && e)
>
> With `--dump-tc`, I see
>
> > TYPE SIGNATURES
> > TYPE CONSTRUCTORS
> >   HasIf :: * -> Constraint
> >   class HasIf a
> > Roles: [nominal]
> > RecFlag NonRecursive
> > ifThenElse :: Bool -> a -> a -> a
> > COERCION AXIOMS
> >   axiom Main.NTCo:HasIf :: HasIf a = Bool -> a -> a -> a
> > INSTANCES
> >   instance HasIf Bool -- Defined at ../test/HasIf.hs:4:10
>
> Do I need to convert the nominal coercion I got from GHC
> (`Simple.NTCo:HasIf[0] _N` in this case) to a
> representational one? If so, how?
> My current formulation (tweaked to use `mkSubCo` and `mkAppCo`) is to
> apply `mkAppCo (mkSubCo (Refl Nominal ep))` to the given coercion, which
> then produces
>
> > (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R
>
> And still I get "Role incompatibility: expected nominal, got
> representational in `Sym (Simple.NTCo:HasIf[0] _N)`".
>
> I also tried wrapping `mkSubCo` around the entire coercion (applying
> `mkSubCo . mkAppCo (Refl Nominal ep)`), and I see the same result:
>
> > (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R
>
> -- Conal
>
>
>
> On Mon, Apr 14, 2014 at 4:39 AM, Richard Eisenberg wrote:
>
>> I agree with Simon, but just `Sub` the `_N`, not the
>> whole coercion.
>>
>> There are actually two problems here. The one Simon identified, and also
>> the fact that Simple.NTCo:HasIf[0] produces a representational coercion.
>> How do I know? Because of the `NT` -- it's a newtype axiom and must produce
>> representational coercions. Furthermore, unless the newtype definition is
>> inferred to require a nominal parameter, the newtype would expect a
>> representational coercion, not the nominal one you are passing. Check the
>> dump (using -ddump-tc) of the newtype axiom to be sure.
>>
>> Though putting a `Sub` on `` and changing the Refl constructor on
>> `` would work, you would then be violating an invariant of GHC's
>> Coercion type: that we prefer `TyConAppCo tc ...` over `AppCo (Refl
>> (TyConApp tc [])) ...`.
>>
>> In sum, here is the coercion I think you want:
>>
>> (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _R)))_R
>>
>> This is one of the problems with roles -- they are *very* fiddly within
>> GHC, and it's hard for a non-expert in roles to get them right.
>>
>> Have you seen docs/core-spec/core-spec.pdf? That is updated w.

Re: Help with coercion & roles?

2014-04-14 Thread Richard Eisenberg
Hi Conal,

In your case, the `_N` on the argument to NTCo:HasIf[0] is correct -- the 
`HasIf` class indeed has a nominal parameter. So, it seems that this part, at 
least, is OK.

What's the -ddump-tc on EP? Is EP's role nominal? (I think so, given what 
you're saying.) If that's the case, you won't be able to pass the result of 
NTCo:HasIf[0] to a coercion built from EP.

Popping up a level, what are you trying to do here? If EP's role is indeed 
nominal, then I don't believe there's a fix here, as the coercion it seems 
you're trying to build may be unsound. (It looks to me like you want something 
proving `EP (Bool -> Bool -> Bool -> Bool) ~R EP (HasIf Bool)`, but if EP's 
role is nominal, then this is indeed bogus.)

Richard

On Apr 14, 2014, at 2:23 PM, Conal Elliott  wrote:

> Thanks for the pointers! I don't quite know how to get to the form you 
> recommend from the existing coercion, which is `Simple.NTCo:HasIf[0] 
> _N`. (Note the `_N`.) I got that coercion in GHC 7.8.2 from 
> the following code:
> 
> > class HasIf a where
> >   ifThenElse :: Bool -> a -> a -> a
> >
> > instance HasIf Bool where
> >   ifThenElse i t e = (i && t) || (not i && e)
> 
> With `--dump-tc`, I see
> 
> > TYPE SIGNATURES
> > TYPE CONSTRUCTORS
> >   HasIf :: * -> Constraint
> >   class HasIf a
> > Roles: [nominal]
> > RecFlag NonRecursive
> > ifThenElse :: Bool -> a -> a -> a
> > COERCION AXIOMS
> >   axiom Main.NTCo:HasIf :: HasIf a = Bool -> a -> a -> a
> > INSTANCES
> >   instance HasIf Bool -- Defined at ../test/HasIf.hs:4:10
> 
> Do I need to convert the nominal coercion I got from GHC 
> (`Simple.NTCo:HasIf[0] _N` in this case) to a 
> representational one? If so, how?
> My current formulation (tweaked to use `mkSubCo` and `mkAppCo`) is to apply 
> `mkAppCo (mkSubCo (Refl Nominal ep))` to the given coercion, which then 
> produces
> 
> > (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R
> 
> And still I get "Role incompatibility: expected nominal, got representational 
> in `Sym (Simple.NTCo:HasIf[0] _N)`".
> 
> I also tried wrapping `mkSubCo` around the entire coercion (applying `mkSubCo 
> . mkAppCo (Refl Nominal ep)`), and I see the same result:
> 
> > (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R
> 
> -- Conal
> 
> 
> On Mon, Apr 14, 2014 at 4:39 AM, Richard Eisenberg  wrote:
> I agree with Simon, but just `Sub` the `_N`, not the 
> whole coercion.
> 
> There are actually two problems here. The one Simon identified, and also the 
> fact that Simple.NTCo:HasIf[0] produces a representational coercion. How do I 
> know? Because of the `NT` -- it's a newtype axiom and must produce 
> representational coercions. Furthermore, unless the newtype definition is 
> inferred to require a nominal parameter, the newtype would expect a 
> representational coercion, not the nominal one you are passing. Check the 
> dump (using -ddump-tc) of the newtype axiom to be sure.
> 
> Though putting a `Sub` on `` and changing the Refl constructor on 
> `` would work, you would then be violating an invariant of GHC's 
> Coercion type: that we prefer `TyConAppCo tc ...` over `AppCo (Refl (TyConApp 
> tc [])) ...`.
> 
> In sum, here is the coercion I think you want:
> 
> (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _R)))_R
> 
> This is one of the problems with roles -- they are *very* fiddly within GHC, 
> and it's hard for a non-expert in roles to get them right.
> 
> Have you seen docs/core-spec/core-spec.pdf? That is updated w.r.t. roles and 
> may be of help.
> 
> Let me know if I can help further!
> Richard
> 
> On Apr 14, 2014, at 5:45 AM, Simon Peyton Jones  wrote:
> 
>> I think you need a ‘Sub’.
>>  
>> A cast  (e `cast` g) requires a representational coercion.  I think you have 
>> given it a (stronger) nominal one.  Sub gets from one to t’other.
>>  
>> Simon
>>  
>> From: Glasgow-haskell-users 
>> [mailto:glasgow-haskell-users-boun...@haskell.org] On Behalf Of Conal Elliott
>> Sent: 14 April 2014 06:00
>> To: ghc-devs@haskell.org; glasgow-haskell-us...@haskell.org
>> Subject: Help with coercion & roles?
>>  
>> I’m working on a GHC plugin (as part of my Haskell-to-hardware work) and 
>> running into trouble with coercions & roles. Error message from Core Lint:
>> 
>> Warning: In the expression:
>> 
>>  
>>   LambdaCCC.Lambda.lamvP#
>> @ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>> @ (Simple.HasIf GHC.Types.Bool)
>> 
>> "tpl"#
>> ((LambdaCCC.Lambda.varP#
>> @ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>> "tpl"#)
>> 
>>  `cast` (_N (Sym (Simple.NTCo:HasIf[0] 
>> _N))
>> 
>>  ∷ LambdaCCC.Lambda.EP
>>   (GHC.Types.Bool
>> 
>>→ GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>> 
>>   ~#
>> LambdaCCC.Lambda.EP (Simple.HasIf GHC.Types.Bool)))
>>  
>> 
>> Role incompatibility: expected nominal, got representational
>> 
>> in _N (Sym (Simple

Re: Help with coercion & roles?

2014-04-14 Thread Conal Elliott
Thanks for the pointers! I don't quite know how to get to the form you
recommend from the existing coercion, which is `Simple.NTCo:HasIf[0]
_N`. (Note the `_N`.) I got that coercion in GHC 7.8.2 from
the following code:

> class HasIf a where
>   ifThenElse :: Bool -> a -> a -> a
>
> instance HasIf Bool where
>   ifThenElse i t e = (i && t) || (not i && e)

With `--dump-tc`, I see

> TYPE SIGNATURES
> TYPE CONSTRUCTORS
>   HasIf :: * -> Constraint
>   class HasIf a
> Roles: [nominal]
> RecFlag NonRecursive
> ifThenElse :: Bool -> a -> a -> a
> COERCION AXIOMS
>   axiom Main.NTCo:HasIf :: HasIf a = Bool -> a -> a -> a
> INSTANCES
>   instance HasIf Bool -- Defined at ../test/HasIf.hs:4:10

Do I need to convert the nominal coercion I got from GHC
(`Simple.NTCo:HasIf[0] _N` in this case) to a
representational one? If so, how?
My current formulation (tweaked to use `mkSubCo` and `mkAppCo`) is to apply
`mkAppCo (mkSubCo (Refl Nominal ep))` to the given coercion, which then
produces

> (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R

And still I get "Role incompatibility: expected nominal, got
representational in `Sym (Simple.NTCo:HasIf[0] _N)`".

I also tried wrapping `mkSubCo` around the entire coercion (applying
`mkSubCo . mkAppCo (Refl Nominal ep)`), and I see the same result:

> (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _N)))_R

-- Conal



On Mon, Apr 14, 2014 at 4:39 AM, Richard Eisenberg wrote:

> I agree with Simon, but just `Sub` the `_N`, not the
> whole coercion.
>
> There are actually two problems here. The one Simon identified, and also
> the fact that Simple.NTCo:HasIf[0] produces a representational coercion.
> How do I know? Because of the `NT` -- it's a newtype axiom and must produce
> representational coercions. Furthermore, unless the newtype definition is
> inferred to require a nominal parameter, the newtype would expect a
> representational coercion, not the nominal one you are passing. Check the
> dump (using -ddump-tc) of the newtype axiom to be sure.
>
> Though putting a `Sub` on `` and changing the Refl constructor on
> `` would work, you would then be violating an invariant of GHC's
> Coercion type: that we prefer `TyConAppCo tc ...` over `AppCo (Refl
> (TyConApp tc [])) ...`.
>
> In sum, here is the coercion I think you want:
>
> (LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _R)))_R
>
> This is one of the problems with roles -- they are *very* fiddly within
> GHC, and it's hard for a non-expert in roles to get them right.
>
> Have you seen docs/core-spec/core-spec.pdf? That is updated w.r.t. roles
> and may be of help.
>
> Let me know if I can help further!
> Richard
>
> On Apr 14, 2014, at 5:45 AM, Simon Peyton Jones 
> wrote:
>
> I think you need a ‘Sub’.
>
> A cast  (e `cast` g) requires a representational coercion.  I think you
> have given it a (stronger) nominal one.  Sub gets from one to t’other.
>
> Simon
>
>  *From:* Glasgow-haskell-users [mailto:glasgow-
> haskell-users-boun...@haskell.org] *On Behalf Of *Conal Elliott
> *Sent:* 14 April 2014 06:00
> *To:* ghc-devs@haskell.org; glasgow-haskell-us...@haskell.org
> *Subject:* Help with coercion & roles?
>
>
> I’m working on a GHC plugin (as part of my Haskell-to-hardware work) and
> running into trouble with coercions & roles. Error message from Core Lint:
>
> Warning: In the expression:
>
>
>
>   LambdaCCC.Lambda.lamvP#
>
> @ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>
> @ (Simple.HasIf GHC.Types.Bool)
>
> "tpl"#
>
> ((LambdaCCC.Lambda.varP#
>
> @ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>
> "tpl"#)
>
>  `cast` (_N (Sym (Simple.NTCo:HasIf[0] 
> _N))
>
>  ∷ LambdaCCC.Lambda.EP
>
>   (GHC.Types.Bool
>
>→ GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>
>   ~#
>
> LambdaCCC.Lambda.EP (Simple.HasIf GHC.Types.Bool)))
>
>  Role incompatibility: expected nominal, got representational
>
> in _N (Sym (Simple.NTCo:HasIf[0] _N))
>
> Do you see anything inconsistent/incompatible in the coercions or roles
> above? I constructed the nominal EP Refl coercion, and applied it (AppCo)
> an existing coercion of a simpler type.
>
> Thanks,
> -- Conal
> ___
> Glasgow-haskell-users mailing list
> glasgow-haskell-us...@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
>
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Help with coercion & roles?

2014-04-14 Thread Richard Eisenberg
I agree with Simon, but just `Sub` the `_N`, not the whole 
coercion.

There are actually two problems here. The one Simon identified, and also the 
fact that Simple.NTCo:HasIf[0] produces a representational coercion. How do I 
know? Because of the `NT` -- it's a newtype axiom and must produce 
representational coercions. Furthermore, unless the newtype definition is 
inferred to require a nominal parameter, the newtype would expect a 
representational coercion, not the nominal one you are passing. Check the dump 
(using -ddump-tc) of the newtype axiom to be sure.

Though putting a `Sub` on `` and changing the Refl constructor on `` 
would work, you would then be violating an invariant of GHC's Coercion type: 
that we prefer `TyConAppCo tc ...` over `AppCo (Refl (TyConApp tc [])) ...`.

In sum, here is the coercion I think you want:

(LambdaCCC.Lambda.EP (Sym (Simple.NTCo:HasIf[0] _R)))_R

This is one of the problems with roles -- they are *very* fiddly within GHC, 
and it's hard for a non-expert in roles to get them right.

Have you seen docs/core-spec/core-spec.pdf? That is updated w.r.t. roles and 
may be of help.

Let me know if I can help further!
Richard

On Apr 14, 2014, at 5:45 AM, Simon Peyton Jones  wrote:

> I think you need a ‘Sub’.
>  
> A cast  (e `cast` g) requires a representational coercion.  I think you have 
> given it a (stronger) nominal one.  Sub gets from one to t’other.
>  
> Simon
>  
> From: Glasgow-haskell-users 
> [mailto:glasgow-haskell-users-boun...@haskell.org] On Behalf Of Conal Elliott
> Sent: 14 April 2014 06:00
> To: ghc-devs@haskell.org; glasgow-haskell-us...@haskell.org
> Subject: Help with coercion & roles?
>  
> I’m working on a GHC plugin (as part of my Haskell-to-hardware work) and 
> running into trouble with coercions & roles. Error message from Core Lint:
> 
> Warning: In the expression:
>  
>   LambdaCCC.Lambda.lamvP#
> @ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
> @ (Simple.HasIf GHC.Types.Bool)
> "tpl"#
> ((LambdaCCC.Lambda.varP#
> @ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
> "tpl"#)
>  `cast` (_N (Sym (Simple.NTCo:HasIf[0] 
> _N))
>  ∷ LambdaCCC.Lambda.EP
>   (GHC.Types.Bool
>→ GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)
>   ~#
> LambdaCCC.Lambda.EP (Simple.HasIf GHC.Types.Bool)))
>  
> Role incompatibility: expected nominal, got representational
> in _N (Sym (Simple.NTCo:HasIf[0] _N))
> Do you see anything inconsistent/incompatible in the coercions or roles 
> above? I constructed the nominal EP Refl coercion, and applied it (AppCo) an 
> existing coercion of a simpler type.
> 
> Thanks,
> 
> -- Conal
> ___
> Glasgow-haskell-users mailing list
> glasgow-haskell-us...@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Git problem

2014-04-14 Thread Herbert Valerio Riedel
On 2014-04-14 at 11:13:02 +0200, Simon Peyton Jones wrote:

[...]

> #both modified:  utils/haddock

> The modified files are right.  It's the "both modified utils/haddock" that is 
> messing me up.
> I'm not modifying haddock!  I just want to say "take the master haddock", but 
> I don't know how.  I tried 'git checkout utils/haddock' but that just led do 
> `git status' saying
>
> #modified:   utils/haddock (new commits)

Fyi, the git equivalent of saying "take the master haddock" (where
'master' refers to 'master' of 'haddock.git'):

  # checkout master of haddock.git:
  git submodule update --remote utils/haddock

  # register state (= submod commit-id) of utils/haddock for next commit
  git add utils/haddock

HTH, hvr
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: Help with coercion & roles?

2014-04-14 Thread Simon Peyton Jones
I think you need a ‘Sub’.

A cast  (e `cast` g) requires a representational coercion.  I think you have 
given it a (stronger) nominal one.  Sub gets from one to t’other.

Simon

From: Glasgow-haskell-users [mailto:glasgow-haskell-users-boun...@haskell.org] 
On Behalf Of Conal Elliott
Sent: 14 April 2014 06:00
To: ghc-devs@haskell.org; glasgow-haskell-us...@haskell.org
Subject: Help with coercion & roles?

I’m working on a GHC plugin (as part of my Haskell-to-hardware work) and 
running into trouble with coercions & roles. Error message from Core Lint:

Warning: In the expression:



  LambdaCCC.Lambda.lamvP#

@ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)

@ (Simple.HasIf GHC.Types.Bool)

"tpl"#

((LambdaCCC.Lambda.varP#

@ (GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)

"tpl"#)

 `cast` (_N (Sym (Simple.NTCo:HasIf[0] 
_N))

 ∷ LambdaCCC.Lambda.EP

  (GHC.Types.Bool

   → GHC.Types.Bool → GHC.Types.Bool → GHC.Types.Bool)

  ~#

LambdaCCC.Lambda.EP (Simple.HasIf GHC.Types.Bool)))



Role incompatibility: expected nominal, got representational

in _N (Sym (Simple.NTCo:HasIf[0] _N))

Do you see anything inconsistent/incompatible in the coercions or roles above? 
I constructed the nominal EP Refl coercion, and applied it (AppCo) an existing 
coercion of a simpler type.

Thanks,
-- Conal
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Git problem

2014-04-14 Thread Simon Peyton Jones
Friends
I'm stuck with Git. Help please!
Simon

I tried to do a 'git stash pop', having just done a 'git pull' from the master 
repo.  I got this:

simonpj@cam-05-unx:~/code/HEAD-2$ git stash pop

warning: Failed to merge submodule utils/haddock (commits don't follow 
merge-base)

Auto-merging utils/haddock

CONFLICT (submodule): Merge conflict in utils/haddock

Auto-merging compiler/typecheck/TcRnMonad.lhs
Now git status says

simonpj@cam-05-unx:~/code/HEAD-2$ git status

# On branch master

# Your branch is ahead of 'origin/master' by 2 commits.

#

# Changes to be committed:

#   (use "git reset HEAD ..." to unstage)

#

#modified:   compiler/typecheck/TcMType.lhs

#modified:   compiler/typecheck/TcRnMonad.lhs

#modified:   compiler/typecheck/TcSimplify.lhs

#modified:   compiler/typecheck/TcUnify.lhs

#

# Unmerged paths:

#   (use "git reset HEAD ..." to unstage)

#   (use "git add/rm ..." as appropriate to mark resolution)

#

#both modified:  utils/haddock
The modified files are right.  It's the "both modified utils/haddock" that is 
messing me up.
I'm not modifying haddock!  I just want to say "take the master haddock", but I 
don't know how.  I tried 'git checkout utils/haddock' but that just led do `git 
status' saying

#modified:   utils/haddock (new commits)



___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Folding in base, integer-{gmp, single}, ghc-prim, and haskell-template into ghc.git

2014-04-14 Thread Johan Tibell
Sounds good to me too.


On Mon, Apr 14, 2014 at 10:22 AM, Simon Peyton Jones
wrote:

> OK with me!  Sounds simpler.
>
> Simon
>
> | -Original Message-
> | From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
> | Herbert Valerio Riedel
> | Sent: 13 April 2014 08:59
> | To: ghc-devs
> | Cc: Austin Seipp
> | Subject: Folding in base, integer-{gmp, single}, ghc-prim, and haskell-
> | template into ghc.git
> |
> | Hello *,
> |
> | Now that GHC 7.8.[12] is out of the door, the Git reorganization can be
> | tackled further...
> |
> | After a short conversion with Austin and Edward it appears that the
> | sensible course of action with respect towards moving to a proper Git
> | submodule set-up is to fold-in the 5 Git repos listed below (which btw
> | are all GHC wired-in packages) directly into ghc.git (the same way
> | testsuite.git was a few months ago):
> |
> |  - base
> |  - ghc-prim
> |  - integer-gmp
> |  - integer-simple
> |  - template-haskell
> |
> | IMO, the benefit/cost ratio of simplifying the workflow outweighs the
> | benefit/cost ratio of turning those into proper Git submodules.
> |
> | This incremental step towards a fully git-bisect-able ghc.git does
> | already allow bisecting to work on a larger time-range than it does
> | now, as those wired-in packages are the most likely to break
> | compilation if out-of-sync with ghc.git.
> |
> | If no objections are raised, I'm planning to implement this change next
> | weekend (April 19th/20th).
> |
> | Any comments/questions/...?
> |
> | Cheers,
> |   hvr
> |
> |
> |
> | PS: After this step, the next remaining step would be to turn the
> | remaining not-yet-submodule Git repos into proper submodule Repos
> | (like haddock.git) and figure out how to get the sync-all
> | convenience-tooling a bit more submodule friendly...
> | ___
> | ghc-devs mailing list
> | ghc-devs@haskell.org
> | http://www.haskell.org/mailman/listinfo/ghc-devs
> ___
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: Folding in base, integer-{gmp, single}, ghc-prim, and haskell-template into ghc.git

2014-04-14 Thread Simon Peyton Jones
OK with me!  Sounds simpler.

Simon

| -Original Message-
| From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
| Herbert Valerio Riedel
| Sent: 13 April 2014 08:59
| To: ghc-devs
| Cc: Austin Seipp
| Subject: Folding in base, integer-{gmp, single}, ghc-prim, and haskell-
| template into ghc.git
| 
| Hello *,
| 
| Now that GHC 7.8.[12] is out of the door, the Git reorganization can be
| tackled further...
| 
| After a short conversion with Austin and Edward it appears that the
| sensible course of action with respect towards moving to a proper Git
| submodule set-up is to fold-in the 5 Git repos listed below (which btw
| are all GHC wired-in packages) directly into ghc.git (the same way
| testsuite.git was a few months ago):
| 
|  - base
|  - ghc-prim
|  - integer-gmp
|  - integer-simple
|  - template-haskell
| 
| IMO, the benefit/cost ratio of simplifying the workflow outweighs the
| benefit/cost ratio of turning those into proper Git submodules.
| 
| This incremental step towards a fully git-bisect-able ghc.git does
| already allow bisecting to work on a larger time-range than it does
| now, as those wired-in packages are the most likely to break
| compilation if out-of-sync with ghc.git.
| 
| If no objections are raised, I'm planning to implement this change next
| weekend (April 19th/20th).
| 
| Any comments/questions/...?
| 
| Cheers,
|   hvr
| 
| 
| 
| PS: After this step, the next remaining step would be to turn the
| remaining not-yet-submodule Git repos into proper submodule Repos
| (like haddock.git) and figure out how to get the sync-all
| convenience-tooling a bit more submodule friendly...
| ___
| ghc-devs mailing list
| ghc-devs@haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: [commit: ghc] master: Fix linked list manipulation code (buggy on consecutive deletion) (e3938f3)

2014-04-14 Thread Simon Marlow

Thanks Edward.  Austin, can you cherry-pick this for 7.8.3 please?

Cheers,
Simon

On 13/04/2014 07:37, g...@git.haskell.org wrote:

Repository : ssh://g...@git.haskell.org/ghc

On branch  : master
Link   : 
http://ghc.haskell.org/trac/ghc/changeset/e3938f3adac0093b23694fd347774244ce121478/ghc


---


commit e3938f3adac0093b23694fd347774244ce121478
Author: Edward Z. Yang 
Date:   Sat Apr 12 23:02:13 2014 -0700

 Fix linked list manipulation code (buggy on consecutive deletion)

 Signed-off-by: Edward Z. Yang 



---


e3938f3adac0093b23694fd347774244ce121478
  rts/CheckUnload.c |3 ++-
  rts/Linker.c  |6 --
  2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/rts/CheckUnload.c b/rts/CheckUnload.c
index f1f454c..98f184b 100644
--- a/rts/CheckUnload.c
+++ b/rts/CheckUnload.c
@@ -298,7 +298,7 @@ void checkUnload (StgClosure *static_objects)
// marked as unreferenced can be physically unloaded, because we
// have no references to it.
prev = NULL;
-  for (oc = unloaded_objects; oc; prev = oc, oc = next) {
+  for (oc = unloaded_objects; oc; oc = next) {
next = oc->next;
if (oc->referenced == 0) {
if (prev == NULL) {
@@ -312,6 +312,7 @@ void checkUnload (StgClosure *static_objects)
} else {
IF_DEBUG(linker, debugBelch("Object file still in use: %"
PATH_FMT "\n", oc->fileName));
+  prev = oc;
}
}

diff --git a/rts/Linker.c b/rts/Linker.c
index af26d74..ab235e9 100644
--- a/rts/Linker.c
+++ b/rts/Linker.c
@@ -3016,8 +3016,8 @@ unloadObj( pathchar *path )
  IF_DEBUG(linker, debugBelch("unloadObj: %" PATH_FMT "\n", path));

  prev = NULL;
-for (oc = objects; oc; prev = oc, oc = next) {
-next = oc->next;
+for (oc = objects; oc; oc = next) {
+next = oc->next; // oc might be freed

  if (!pathcmp(oc->fileName,path)) {

@@ -3075,6 +3075,8 @@ unloadObj( pathchar *path )
  /* This could be a member of an archive so continue
   * unloading other members. */
  unloadedAnyObj = HS_BOOL_TRUE;
+} else {
+prev = oc;
  }
  }


___
ghc-commits mailing list
ghc-comm...@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-commits


___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: 7.8.2 bugs and beyond

2014-04-14 Thread Luke Iannini
Hi Austin,

Here are the iOS builds:
https://github.com/ghc-ios/ghc-ios-scripts/releases/download/7.8.2-device/ghc-7.8.2-arm-apple-ios.tar.bz2
SHA1 2160c203ed641e38e1306a722727105db97ea7d7
https://github.com/ghc-ios/ghc-ios-scripts/releases/download/7.8.2-simulator/ghc-7.8.2-i386-apple-ios.tar.bz2
SHA1 c855877d2b77a8c401da804373a3334e0dea43d4

& README https://github.com/ghc-ios/ghc-ios-scripts/blob/master/README.md



On Fri, Apr 11, 2014 at 11:39 PM, Kazu Yamamoto  wrote:

> Helo,
>
> > The 7.8.2 source tarball is here. I actually have most of the binaries
> > ready, but I forgot to send this in advance:
> >
> > http://www.haskell.org/ghc/dist/7.8.2/
> >
> > Please build when you get a chance. I'll probably go ahead and
> > announce shortly to get the bugfix into peoples hands, and we can
> > incrementally add new tarballs.
>
> Now I can build yesod with GHC 7.8.2 on my Mac. Thanks.
>
> --Kazu
> ___
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: The build is broken (Solaris/x86, FreeBSD/{i386,amd64})

2014-04-14 Thread Herbert Valerio Riedel
Hi,

(probably) fixed by

 
http://git.haskell.org/ghc.git/commitdiff/b4a820f97e48199a92f5ce7216731500f9a841c9



On 2014-04-14 at 09:15:42 +0200, Páli Gábor János wrote:

[...]

> utils/haddock/src/Haddock/Interface/Create.hs:367:44:
> Couldn't match type 'GenLocated SrcSpan (HsBindLR Name Name)'
>   with '(a1, Located (HsBind id))'
> Expected type: TyClDecl Name -> Bag (a1, Located (HsBind id))
>   Actual type: TyClDecl Name -> LHsBinds Name
> Relevant bindings include
>   defs :: [Located (HsDecl id)]
> (bound at utils/haddock/src/Haddock/Interface/Create.hs:367:5)
> In the second argument of '(.)', namely 'tcdMeths'
> In the second argument of '(.)', namely 'bagToList . tcdMeths'
> utils/haddock/src/Haddock/Interface/Create.hs:393:22:
> Couldn't match type 'GenLocated SrcSpan (HsBindLR Name Name)'
>   with '(a0, Located (HsBind Name))'
> Expected type: HsValBindsLR Name Name
>-> [(a0, Located (HsBind Name))]
>   Actual type: HsValBindsLR Name Name -> [LHsBindLR Name Name]
> In the first argument of '(.)', namely 'valbinds'
> In the second argument of '(.)', namely 'valbinds . hs_valds'
> gmake[1]: *** [utils/haddock/dist/build/Haddock/Interface/Create.dyn_o] Error 
> 1
> gmake: *** [all] Error 2
>
> Please consult the details at
>
> http://haskell.inf.elte.hu/builders/solaris-x86-head/28/10.html

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


The build is broken (Solaris/x86, FreeBSD/{i386,amd64})

2014-04-14 Thread Páli Gábor János
The failing command:

"inplace/bin/ghc-stage2" -hisuf dyn_hi -osuf  dyn_o -hcsuf dyn_hc
-fPIC -dynamic  -H32m -O-hide-all-packages -i
-iutils/haddock/driver -iutils/haddock/src
-iutils/haddock/vendor/attoparsec-0.10.4.0 -iutils/haddock/dist/build
-iutils/haddock/dist/build/autogen -Iutils/haddock/dist/build
-Iutils/haddock/dist/build/autogen-optP-DIN_GHC_TREE -optP-include
-optPutils/haddock/dist/build/autogen/cabal_macros.h -package
Cabal-1.18.1.3 -package array-0.5.0.0 -package base-4.7.0.0 -package
bytestring-0.10.4.0 -package containers-0.5.5.1 -package
deepseq-1.3.0.2 -package directory-1.2.1.0 -package filepath-1.3.0.2
-package ghc-7.9.20140414 -package xhtml-3000.2.1
-funbox-strict-fields -Wall -fwarn-tabs -O2 -XHaskell2010
-no-user-package-db -rtsopts  -odir utils/haddock/dist/build
-hidir utils/haddock/dist/build -stubdir utils/haddock/dist/build   -c
utils/haddock/src/Haddock/Interface/Create.hs -o
utils/haddock/dist/build/Haddock/Interface/Create.dyn_o
utils/haddock/src/Haddock/Interface/Create.hs:367:44:
Couldn't match type 'GenLocated SrcSpan (HsBindLR Name Name)'
  with '(a1, Located (HsBind id))'
Expected type: TyClDecl Name -> Bag (a1, Located (HsBind id))
  Actual type: TyClDecl Name -> LHsBinds Name
Relevant bindings include
  defs :: [Located (HsDecl id)]
(bound at utils/haddock/src/Haddock/Interface/Create.hs:367:5)
In the second argument of '(.)', namely 'tcdMeths'
In the second argument of '(.)', namely 'bagToList . tcdMeths'
utils/haddock/src/Haddock/Interface/Create.hs:393:22:
Couldn't match type 'GenLocated SrcSpan (HsBindLR Name Name)'
  with '(a0, Located (HsBind Name))'
Expected type: HsValBindsLR Name Name
   -> [(a0, Located (HsBind Name))]
  Actual type: HsValBindsLR Name Name -> [LHsBindLR Name Name]
In the first argument of '(.)', namely 'valbinds'
In the second argument of '(.)', namely 'valbinds . hs_valds'
gmake[1]: *** [utils/haddock/dist/build/Haddock/Interface/Create.dyn_o] Error 1
gmake: *** [all] Error 2

Please consult the details at

http://haskell.inf.elte.hu/builders/solaris-x86-head/28/10.html
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs