converting Maybe type1 in type1 after filtering












0















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?










share|improve this question



























    0















    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?










    share|improve this question

























      0












      0








      0








      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?










      share|improve this question














      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?







      haskell






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 2 at 8:14









      Damien MatteiDamien Mattei

      164




      164
























          1 Answer
          1






          active

          oldest

          votes


















          6














          You can use catMaybes from Data.Maybe.



          catMaybes :: [Maybe a] -> [a] 


          PS: It also filter out Nothing so you do't need to do it yourself.






          share|improve this answer
























          • i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

            – Damien Mattei
            Jan 2 at 8:37













          • Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

            – talex
            Jan 2 at 8:58











          • bd_rows_WDS is with Only, fltWDS2 has no type specified

            – Damien Mattei
            Jan 2 at 13:44











          • What is Only? I'm unable to find definition in hoogle.

            – talex
            Jan 3 at 2:32











          • i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

            – Damien Mattei
            Jan 4 at 7:24













          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54003147%2fconverting-maybe-type1-in-type1-after-filtering%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          6














          You can use catMaybes from Data.Maybe.



          catMaybes :: [Maybe a] -> [a] 


          PS: It also filter out Nothing so you do't need to do it yourself.






          share|improve this answer
























          • i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

            – Damien Mattei
            Jan 2 at 8:37













          • Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

            – talex
            Jan 2 at 8:58











          • bd_rows_WDS is with Only, fltWDS2 has no type specified

            – Damien Mattei
            Jan 2 at 13:44











          • What is Only? I'm unable to find definition in hoogle.

            – talex
            Jan 3 at 2:32











          • i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

            – Damien Mattei
            Jan 4 at 7:24


















          6














          You can use catMaybes from Data.Maybe.



          catMaybes :: [Maybe a] -> [a] 


          PS: It also filter out Nothing so you do't need to do it yourself.






          share|improve this answer
























          • i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

            – Damien Mattei
            Jan 2 at 8:37













          • Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

            – talex
            Jan 2 at 8:58











          • bd_rows_WDS is with Only, fltWDS2 has no type specified

            – Damien Mattei
            Jan 2 at 13:44











          • What is Only? I'm unable to find definition in hoogle.

            – talex
            Jan 3 at 2:32











          • i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

            – Damien Mattei
            Jan 4 at 7:24
















          6












          6








          6







          You can use catMaybes from Data.Maybe.



          catMaybes :: [Maybe a] -> [a] 


          PS: It also filter out Nothing so you do't need to do it yourself.






          share|improve this answer













          You can use catMaybes from Data.Maybe.



          catMaybes :: [Maybe a] -> [a] 


          PS: It also filter out Nothing so you do't need to do it yourself.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 2 at 8:16









          talextalex

          11.5k11648




          11.5k11648













          • i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

            – Damien Mattei
            Jan 2 at 8:37













          • Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

            – talex
            Jan 2 at 8:58











          • bd_rows_WDS is with Only, fltWDS2 has no type specified

            – Damien Mattei
            Jan 2 at 13:44











          • What is Only? I'm unable to find definition in hoogle.

            – talex
            Jan 3 at 2:32











          • i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

            – Damien Mattei
            Jan 4 at 7:24





















          • i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

            – Damien Mattei
            Jan 2 at 8:37













          • Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

            – talex
            Jan 2 at 8:58











          • bd_rows_WDS is with Only, fltWDS2 has no type specified

            – Damien Mattei
            Jan 2 at 13:44











          • What is Only? I'm unable to find definition in hoogle.

            – talex
            Jan 3 at 2:32











          • i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

            – Damien Mattei
            Jan 4 at 7:24



















          i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

          – Damien Mattei
          Jan 2 at 8:37







          i try your answer in my code inserting this let fltWDS2 = catMaybes bd_rows_WDS but get the same error : Couldn't match type ‘Only (Maybe Text)’ with ‘Maybe a’

          – Damien Mattei
          Jan 2 at 8:37















          Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

          – talex
          Jan 2 at 8:58





          Are you sure error exactly same? I notice that your type not [Maybe Text], but [Only (Maybe Text)] what is Only?

          – talex
          Jan 2 at 8:58













          bd_rows_WDS is with Only, fltWDS2 has no type specified

          – Damien Mattei
          Jan 2 at 13:44





          bd_rows_WDS is with Only, fltWDS2 has no type specified

          – Damien Mattei
          Jan 2 at 13:44













          What is Only? I'm unable to find definition in hoogle.

          – talex
          Jan 3 at 2:32





          What is Only? I'm unable to find definition in hoogle.

          – talex
          Jan 3 at 2:32













          i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

          – Damien Mattei
          Jan 4 at 7:24







          i'm new to haskell i had to use Only for 1-tuple type with database when there is Only one argument or Only one column result i suppose when i used examples about database query, here is the package: hackage.haskell.org/package/Only

          – Damien Mattei
          Jan 4 at 7:24






















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54003147%2fconverting-maybe-type1-in-type1-after-filtering%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith