[Haskell-cafe] Getting an attribute of an object
Cale Gibbard
cgibbard at gmail.com
Sat Feb 12 15:35:20 EST 2005
Perhaps try:
do ...
ciwd <- sequence classifiedImagesWithData
let allImages = (getImages ciwd)
...
as it seems like you're trying to gave getImages act on a value of
type [IO (ClassifiedImage, Image)]. Applying sequence to
classifiedImagesWithData will turn it into an IO [(ClassifiedImage,
Image)] by doing the natural thing, from which you can pull out the
list to apply getImages to.
- Cale
On Sat, 12 Feb 2005 21:10:31 +0100, Dmitri Pissarenko
<mailing-lists at dapissarenko.com> wrote:
> Hello!
>
> Sorry that I bother you again with my problem.
>
> > It may be you'd profit from reading some of the Monad tutorials out there.
>
> I followed your advice and read the "All about monads" tutorial. After I've
> done
> that I could fix one problem.
>
> But now there is another one.
>
> In the main program, there is following piece of code
>
> <code-snippet>
> let classifiedImagesWithData = ((return trainingSet) >>= readClassifiedImages)
>
> let allImages = (getImages classifiedImagesWithData)
> </code-snippet>
>
> Signatures of readClassifiedImages and getImages are
>
> readClassifiedImages :: [ClassifiedImage] -> [IO (ClassifiedImage, Image)]
> getImages :: [(ClassifiedImage, Image)] -> [Image]
>
> readClassifiedImages does some file I/O, so it is OK when its result is in the
> IO monad.
>
> getImages does not do any IO related stuff, so I declared it without the IO
> monad.
>
> The line
>
> let allImages = (getImages classifiedImagesWithData)
>
> of the above code snippet leads to following error:
>
> <error>
> ExperimentalYaleFaceDb.hs:43:
> Couldn't match
> `(ClassifiedImage, Image)' against `IO (ClassifiedImage, Image)'
> Expected type: [(ClassifiedImage, Image)]
> Inferred type: [IO (ClassifiedImage, Image)]
> In the first argument of `getImages', namely
> `classifiedImagesWithData'
> In the definition of `allImages':
> allImages = (getImages classifiedImagesWithData)
> Failed, modules loaded: TestLik, Lik, HUnit, HUnitText, HUnitBase, HUnitLang.
> </error>
>
> Is there a way to fix this problem apart from changing signature of getImage?
>
> Thanks in advance
>
> Dmitri Pissarenko
> --
> Dmitri Pissarenko
> Software Engineer
> http://dapissarenko.com
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list