[Haskell-cafe] Fwd: [Yesod] Type issue when migrating to new yesod

Magicloud Magiclouds magicloud.magiclouds at gmail.com
Wed Apr 3 07:45:55 CEST 2013


Hi,
  I have a yesod project that used to be compilable. Now when I migrate it
to latest yesod, it failed compiling.

---------- Forwarded message ----------
From: Magicloud Magiclouds <magicloud.magiclouds at gmail.com>
Date: Tue, Apr 2, 2013 at 9:32 PM
Subject: Re: [Yesod] Type issue in new yesod
To: "yesodweb at googlegroups.com" <yesodweb at googlegroups.com>


Sure.
The error message is as following. And the new code is here:
http://pastebin.com/sqCkeY2q

[12 of 13] Compiling Handler.FetchProcessPathRollup (
Handler/FetchProcessPathRollup.hs,
dist/build/Handler/FetchProcessPathRollup.o )

Handler/FetchProcessPathRollup.hs:43:16:
    No instance for (PersistUnique
                       (Data.Conduit.Internal.ConduitM
                          (containers-0.5.0.0:Data.Map.Base.Map Text Text)
                          ProcessPathRollup
                          (ResourceT
                             (Database.Persist.GenericSql.Raw.SqlPersist
(GHandler App App)))))
      arising from a use of `getKey'
    Possible fix:
      add an instance declaration for
      (PersistUnique
         (Data.Conduit.Internal.ConduitM
            (containers-0.5.0.0:Data.Map.Base.Map Text Text)
            ProcessPathRollup
            (ResourceT
               (Database.Persist.GenericSql.Raw.SqlPersist (GHandler App
App)))))
    In a stmt of a 'do' block:
      reportKey <- getKey
                     (UniqueReport (t "Report")) (Report (t "Report"))
    In the expression:
      do { let t = (!) r
               d = liftM fst . double . t
               ....;
           reportKey <- getKey
                          (UniqueReport (t "Report")) (Report (t "Report"));
           lineitemKey <- getKey
                            (UniqueLineitem (t "LineItem Name") (t
"LineItem Id"))
                            (Lineitem (t "LineItem Id") (t "LineItem
Name"));
           mainProcessKey <- getKey
                               (UniqueMainProcess (t "Main Process"))
                               (MainProcess (t "Main Process"));
           .... }
    In the second argument of `($)', namely
      `\ r
         -> do { let ...;
                 reportKey <- getKey
                                (UniqueReport (t "Report")) (Report (t
"Report"));
                 .... }'



On Tue, Apr 2, 2013 at 7:32 PM, Michael Snoyman <michael at snoyman.com> wrote:

> Can you provide the new source code and the new compiler error message?
>
>
> On Tue, Apr 2, 2013 at 11:18 AM, Magicloud Magiclouds <
> magicloud.magiclouds at gmail.com> wrote:
>
>> Sorry, the first error about CSV was due to parsePPR's type. If I set it
>> type, then CSV error was gone. And the error of PersistUnique reported on
>> first getKey call, instead of processPPR call.
>>
>>
>> On Tue, Apr 2, 2013 at 2:50 PM, Michael Snoyman <michael at snoyman.com>wrote:
>>
>>> This doesn't look like it's anything to do with Yesod; it looks like a
>>> problem with the usage of conduit and csv-conduit. Did you try following
>>> the GHC recommendation and adding a type signature to parsePPR?
>>>
>>>
>>> On Tue, Apr 2, 2013 at 8:09 AM, Magicloud Magiclouds <
>>> magicloud.magiclouds at gmail.com> wrote:
>>>
>>>> Hi,
>>>>   I have a yesod project that used to be compilable. Now when I migrate
>>>> it to latest yesod, it failed compiling.
>>>>
>>>>   The failed part is here: http://pastebin.com/pWn5FdeS .
>>>>   And the error message is:
>>>>
>>>> Handler/FetchProcessPathRollup.hs:27:30:
>>>>     No instance for (Data.CSV.Conduit.CSV
>>>>                        Data.ByteString.Internal.ByteString
>>>>                        (containers-0.5.0.0:Data.Map.Base.Map a0 Text))
>>>>       arising from a use of `intoCSV'
>>>>     The type variable `a0' is ambiguous
>>>>     Possible fix: add a type signature that fixes these type variable(s)
>>>>     Note: there is a potential instance available:
>>>>       instance (Data.CSV.Conduit.CSV
>>>>                   s (csv-conduit-0.5.1:Data.CSV.Conduit.Types.Row s'),
>>>>                 Ord s', Data.String.IsString s) =>
>>>>                Data.CSV.Conduit.CSV s (MapRow s')
>>>>         -- Defined in `Data.CSV.Conduit'
>>>>     Possible fix:
>>>>       add an instance declaration for
>>>>       (Data.CSV.Conduit.CSV
>>>>          Data.ByteString.Internal.ByteString
>>>>          (containers-0.5.0.0:Data.Map.Base.Map a0 Text))
>>>>     In the first argument of `(=$=)', namely `intoCSV defCSVSettings'
>>>>     In the second argument of `($$+-)', namely
>>>>       `(intoCSV defCSVSettings
>>>>         =$= parsePPR (zonedTimeToUTC day) k =$ sinkPersist)'
>>>>     In a stmt of a 'do' block:
>>>>       responseBody src
>>>>       $$+-
>>>>         (intoCSV defCSVSettings
>>>>          =$= parsePPR (zonedTimeToUTC day) k =$ sinkPersist)
>>>>
>>>> Handler/FetchProcessPathRollup.hs:27:57:
>>>>     No instance for (PersistUnique
>>>>                        (Data.Conduit.Internal.ConduitM
>>>>                           (containers-0.5.0.0:Data.Map.Base.Map a0 Text)
>>>>                           ProcessPathRollup
>>>>                           (ResourceT
>>>>
>>>>  (Database.Persist.GenericSql.Raw.SqlPersist (GHandler App App)))))
>>>>       arising from a use of `parsePPR'
>>>>     Possible fix:
>>>>       add an instance declaration for
>>>>       (PersistUnique
>>>>          (Data.Conduit.Internal.ConduitM
>>>>             (containers-0.5.0.0:Data.Map.Base.Map a0 Text)
>>>>             ProcessPathRollup
>>>>             (ResourceT
>>>>                (Database.Persist.GenericSql.Raw.SqlPersist (GHandler
>>>> App App)))))
>>>>     In the first argument of `(=$)', namely
>>>>       `parsePPR (zonedTimeToUTC day) k'
>>>>     In the second argument of `(=$=)', namely
>>>>       `parsePPR (zonedTimeToUTC day) k =$ sinkPersist'
>>>>     In the second argument of `($$+-)', namely
>>>>       `(intoCSV defCSVSettings
>>>>         =$= parsePPR (zonedTimeToUTC day) k =$ sinkPersist)'
>>>>
>>>> --
>>>> 竹密岂妨流水过
>>>> 山高哪阻野云飞
>>>>
>>>> And for G+, please use magiclouds#gmail.com.
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Yesod Web Framework" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to yesodweb+unsubscribe at googlegroups.com.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>>
>>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Yesod Web Framework" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to yesodweb+unsubscribe at googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>
>>
>> --
>> 竹密岂妨流水过
>> 山高哪阻野云飞
>>
>> And for G+, please use magiclouds#gmail.com.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Yesod Web Framework" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to yesodweb+unsubscribe at googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Yesod Web Framework" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to yesodweb+unsubscribe at googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
竹密岂妨流水过
山高哪阻野云飞

And for G+, please use magiclouds#gmail.com.



-- 
竹密岂妨流水过
山高哪阻野云飞

And for G+, please use magiclouds#gmail.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130403/9006384b/attachment.htm>


More information about the Haskell-Cafe mailing list