[Haskell-beginners] strange error inside a case
Sylvain Henry
sylvain at haskus.fr
Fri Nov 29 11:29:23 UTC 2019
Hello,
What is the type of hdf2mergedcbf' ?
Does it work if you write `void (hdf2mergedcbf' (head masters) 1 1)` ?
On 29/11/2019 11:55, PICCA Frederic-Emmanuel wrote:
> Hello, I aheve some code whcih look like this
>
> thumbnail' :: (MonadIO m, MonadReader Beamline m, MonadThrow m) => ThumbnailInput -> m ()
> thumbnail' (ThumbnailInput col) = do
> cwd <- toResultsPath "thumbnail" col
> let shakeFiles' = cwd </> $(mkRelDir ".shake/")
> let shakeReport' = shakeFiles' </> $(mkRelFile "report.html")
>
> liftIO $ shake shakeOptions{ shakeFiles=fromAbsDir shakeFiles'
> , shakeReport=[fromAbsFile shakeReport']
> , shakeVerbosity=Diagnostic
> } $ do
> let uploaded = fromAbsFile $ cwd </> $(mkRelFile "thumbnail.uploaded")
>
> want [uploaded]
>
> -- (Rule 1) merge the image files
> uploaded %> \_out -> do
> -- need [xml]
> masters <- liftIO $ expectedInputFiles col
> liftIO $ hdf2mergedcbf' (head masters) 1 1
> liftIO $ case col of
> (SomeDataCollection SCollect SHdf5 _) -> hdf2mergedcbf' (head masters) 1 1
> (SomeDataCollection SCollect SHdf5' _) -> undefined -- hdf2mergedcbf' (head masters) 1 1
> (SomeDataCollection SCaracterization SHdf5 _) -> undefined
> (SomeDataCollection SCaracterization SHdf5' _) -> undefined
> _ -> error "show not arrive here !!!"
>
> -- hdf2mergedcbf
> -- command [] "touch" [uploaded]
> return ()
>
>
> When I try to compile it, it give me this error
>
> • Couldn't match type ‘a0’ with ‘()’
> ‘a0’ is untouchable
> inside the constraints: f ~ 'ISPyB.DataCollection.Hdf5
> bound by a pattern with constructor:
> SHdf5 :: SCollectSourceFormat 'ISPyB.DataCollection.Hdf5,
> in a case alternative
> at src/Thumbnail.hs:180:38-42
> Expected type: IO a0
> Actual type: IO ()
> • In the expression: hdf2mergedcbf' (head masters) 1 1
> In a case alternative:
> (SomeDataCollection SCollect SHdf5 _)
> -> hdf2mergedcbf' (head masters) 1 1
> In the second argument of ‘($)’, namely
> ‘case col of
> (SomeDataCollection SCollect SHdf5 _)
> -> hdf2mergedcbf' (head masters) 1 1
> (SomeDataCollection SCollect SHdf5' _) -> undefined
> (SomeDataCollection SCaracterization SHdf5 _) -> undefined
> (SomeDataCollection SCaracterization SHdf5' _) -> undefined
> _ -> error "show not arrive here !!!"’
> |
> 180 | (SomeDataCollection SCollect SHdf5 _) -> hdf2mergedcbf' (head masters) 1 1
> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>
> What I do not understand is how to fix this since it seems that
>
> liftIO $ hdf2mergedcbf' (head masters) 1 1 works out of the case
>
> thanks for your help
>
> Frederic
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
More information about the Beginners
mailing list