[Haskell-cafe] Maybe type filtered

Damien Mattei damien.mattei at gmail.com
Wed Jan 2 08:17:03 UTC 2019


i repost because it seems that the first post of the year in haskell cafe
ailing list has been lost! i cant't see in the archive of january neither
december....
so here it is again:

On Tue, Jan 1, 2019 at 10:25 AM Damien Mattei <damien.mattei at gmail.com>
wrote:

> i had filtered a [Maybe Text] type to remove Nothing from the list and now
> i want to put the result in a [Text] type but the compiler complains about
> the incompatible type :
>
>  (bd_rows_WDS :: [Only (Maybe Text)]) <- query conn qry_head_WDS (Only
> (name::String))
>
> -- remove the records having N°BD NULL
>     let fltWDS :: [Only Text] = Prelude.filter (\(Only a) ->
>                                     case a of
>                                       Nothing -> False
>                                       Just a -> True)
>                  bd_rows_WDS
>
> Prelude> :load UpdateSidonie
> [1 of 1] Compiling Main             ( UpdateSidonie.hs, interpreted )
>
> UpdateSidonie.hs:282:33: error:
>     • Couldn't match type ‘Maybe Text’ with ‘Text’
>       Expected type: [Only Text]
>         Actual type: [Only (Maybe Text)]
>     • In the expression:
>         Prelude.filter
>           (\ (Only a)
>              -> case a of
>                   Nothing -> False
>                   Just a -> True)
>           bd_rows_WDS
>       In a pattern binding:
>         fltWDS :: [Only Text]
>           = Prelude.filter
>               (\ (Only a)
>                  -> case a of
>                       Nothing -> False
>                       Just a -> True)
>               bd_rows_WDS
>       In the expression:
>         do conn <- connect
>                      defaultConnectInfo
>                        {connectHost = "moita", connectUser = "mattei",
>                         connectPassword = "sidonie2", connectDatabase =
> "sidonie"}
>            (rows :: [(Text, Double)]) <- query_
>                                            conn
>                                            "SELECT Nom,distance FROM
> AngularDistance WHERE distance > 0.000278"
>            (names :: [Only Text]) <- query_
>                                        conn
>                                        "SELECT Nom FROM AngularDistance
> WHERE distance > 0.000278"
>            let resLstNames = Prelude.map fromOnly names
>            ....
>     |
> 282 |     let fltWDS :: [Only Text] = Prelude.filter (\(Only a) ->
>     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
> Failed, no modules loaded.
>
> how can id do the type conversion,now i'm sure there is no more Nothing
> values?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20190102/5d9f73b3/attachment.html>


More information about the Haskell-Cafe mailing list