[Haskell-cafe] Maybe type filtered

Damien Mattei damien.mattei at gmail.com
Tue Jan 1 09:25:29 UTC 2019


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/20190101/7f3d2cbb/attachment.html>


More information about the Haskell-Cafe mailing list