Daniel,

BTW, if i comment out the version of PutIn that calls HF{L,R}Val and put in the unit, instead, i see the complaint you're seeing. i'll upgrade ghc.

Best wishes,

--greg

On Mon, Dec 15, 2008 at 2:49 PM, Greg Meredith <lgreg.meredith@biosimilarity.com> wrote:
Daniel,

Thanks. i'm using

GHCi, version 6.8.2: http://www.haskell.org/ghc/  :? for help
Loading package base ... linking ... done.
Prelude> :l monoidal.hs
[1 of 1] Compiling Monoidal         ( monoidal.hs, interpreted )
  C-c C-cInterrupted.
> :q

Best wishes,

--greg


On Mon, Dec 15, 2008 at 2:50 PM, Daniel Fischer <daniel.is.fischer@web.de> wrote:
Am Montag, 15. Dezember 2008 23:16 schrieb Greg Meredith:
> Haskellians,
>
> An even simpler version <http://paste.pocoo.org/show/95518/> that reveals
> the issue. i'm astounded that the compiler literally just hangs.
>
> Best wishes,
>
> --greg
>
> On Mon, Dec 15, 2008 at 12:23 PM, Greg Meredith <
>
> lgreg.meredith@biosimilarity.com> wrote:
> > Haskellians,
> >
> > The simple-minded and smallish code sample at this
> > link<http://paste.pocoo.org/show/95503/>causes the compiler to go off
> > into never-never land. Any clues would be greatly appreciated.
> >
> > Best wishes,
> >
> > --greg

I can't confirm it, with 6.8.3:

$ ghc -O2 --make Monoidal.hs
[1 of 1] Compiling Monoidal         ( Monoidal.hs, Monoidal.o )

Monoidal.hs:110:11:
   Couldn't match expected type `i1'
          against inferred type `Isomorpism (HFTensorExpr a i) a'
     `i1' is a rigid type variable bound by
          the instance declaration at Monoidal.hs:103:42
   In the expression: (PutIn (\ a -> (HFTLVal a)))
   In the third argument of `HFTExpr', namely
       `[(PutIn (\ a -> (HFTLVal a)))]'
   In the expression:
       (HFTExpr
          (HFTLVal a)
          (HFTRVal b)
          [(PutIn (\ a -> (HFTLVal a)))]
          [(PutIn (\ b -> (HFTRVal b)))])
$

and the earlier version:

$ ghc -O2 --make Monoidal2.hs
[1 of 1] Compiling Monoidal2        ( Monoidal2.hs, Monoidal2.o )

Monoidal2.hs:105:18:
   Couldn't match expected type `HFTensorExpr a i'
          against inferred type `[i1] -> [i1] -> HFTensorExpr a i1'
   In the expression: HFTExpr (HFTLVal a) (HFTRVal b)
   In the definition of `tMult':
       a tMult b = HFTExpr (HFTLVal a) (HFTRVal b)
   In the definition for method `tMult'

Monoidal2.hs:122:10:
   Couldn't match expected type `[]' against inferred type `++ msa'
     Expected type: [i]
     Inferred type: ++ msa msb
   In the third argument of `HFTExpr', namely
       `((Shuffle
            (\ (HFTExpr (HFTExpr u v msu msv) w msuv msw)
                 -> (tAssoc (HFTExpr (HFTExpr u v msu msv) w msuv msw)))) ::
           msa ++ msb)'
   In the expression:
       (HFTExpr
          (HFTExpr a b msa msb)
          c
          ((Shuffle
              (\ (HFTExpr (HFTExpr u v msu msv) w msuv msw)
                   -> (tAssoc (HFTExpr (HFTExpr u v msu msv) w msuv msw))))
::
             msa ++ msb)
          msc)

Monoidal2.hs:139:10:
   Couldn't match expected type `[]' against inferred type `++ msl'
     Expected type: [i]
     Inferred type: ++ msl msr
   In the third argument of `HFTExpr', namely
       `((Shuffle
            (\ (HFTExpr (HFTExpr a b msa msb) c msab msc)
                 -> (tAssoc (HFTExpr (HFTExpr a b msa msb) c msab msc)))) ::
           msl ++ msr)'
   In the expression:
       (HFTExpr
          (HFTExpr l r msl msr)
          (HFTRVal b)
          ((Shuffle
              (\ (HFTExpr (HFTExpr a b msa msb) c msab msc)
                   -> (tAssoc (HFTExpr (HFTExpr a b msa msb) c msab msc))))
::
             msl ++ msr)
          [(PutIn (\ b -> (HFTRVal b)))])

Monoidal2.hs:150:11:
   Couldn't match expected type `i1'
          against inferred type `Isomorpism (HFTensorExpr a i) a'
     `i1' is a rigid type variable bound by
          the instance declaration at Monoidal2.hs:103:42
   In the expression: (PutIn (\ a -> (HFTRVal a)))
   In the third argument of `HFTExpr', namely
       `[(PutIn (\ a -> (HFTRVal a)))]'
   In the expression:
       (HFTExpr
          (HFTLVal a)
          (HFTRVal b)
          [(PutIn (\ a -> (HFTRVal a)))]
          [(PutIn (\ b -> (HFTRVal b)))])
$

No hang, which compiler version did you use?



--
L.G. Meredith
Managing Partner
Biosimilarity LLC
806 55th St NE
Seattle, WA 98105

+1 206.650.3740

http://biosimilarity.blogspot.com



--
L.G. Meredith
Managing Partner
Biosimilarity LLC
806 55th St NE
Seattle, WA 98105

+1 206.650.3740

http://biosimilarity.blogspot.com