<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <!--[if gte mso 9]>
    <xml>
      <o:OfficeDocumentSettings>
        <o:AllowPNG/>
        <o:PixelsPerInch>96</o:PixelsPerInch>
     </o:OfficeDocumentSettings>
    </xml>
    <![endif]--> <style type="text/css">* a:hover{cursor:pointer;}</style> <style>body {-webkit-animation:bugfix infinite 1s;}@-webkit-keyframes bugfix {from {position:relative;}to {position:relative;}}</style> </head> <body style="word-wrap:normal;word-break:break-word"> <style>a {word-wrap:normal;word-break:break-word;}.background-contain {background-size:contain;}@media only screen and (max-width:600px) {.container {-webkit-text-size-adjust:none !important;}.container,.palm-one-whole {width:100% !important;min-width:100% !important;}.palm-one-half {width:50% !important;min-width:50% !important;box-sizing:border-box;}blockquote .container,blockquote .container div,blockquote .container table {width:auto !important;min-width:0 !important;position:relative !important;}img {max-width:100%;}.border-outer,.border-middle,.border-inner,.inner,[title="separator"] {width:100% !important;}.innercell {padding:8px !important;}.palm-block {display:block !important;}td.palm-one-whole {display:inline-block !important;padding:0;}td.palm-one-whole:first-child:not(:only-child) {margin-bottom:16px;}td.hostname {padding-top:3px !important;}}@media only screen and (min-width:601px) {.preview-card {max-width:600px !important;}}@media only screen and (min-device-width :320px) and (max-device-width :568px),only screen and (min-device-width :768px) and (max-device-width :1024px),only screen and (max-device-width:640px),only screen and (max-device-width:667px),only screen and (max-width:480px){.container {width:100% !important;min-width:100% !important;}.p,.small,li,font[size="2"],font[size="3"] {font-size:1em !important;}}@media only screen and (min-device-width :320px) and (max-device-width :568px),only screen and (min-device-width :768px) and (max-device-width :1024px),only screen and (min-device-width :1224px)  {.message-wrapper {padding-top:6px;}.apple-only[style] {display:block !important;max-height:none !important;line-height:normal !important;overflow:visible !important;height:auto !important;width:100% !important;position:relative !important;}.no-apple {display:none !important;}form {font-size:inherit;}input[type="text"] {height:43px;padding-left:4px !important;}button:hover {cursor:pointer;}}@media only screen and (min-device-width :1224px)  {.apple-mail-form {display:block !important;background-color:white !important;}}* [office365] .outlook-com-hidden {display:none !important;}* [office365] .outlook-com-button {display:block;}* [office365] .outlook-com-only {display:block !important;max-height:none !important;line-height:normal !important;overflow:visible !important;height:auto !important;width:100% !important;position:relative !important;}.ExternalClass {width:100%;}.ExternalClass .outlook-com-button {display:block;}.ExternalClass button {height:auto;}.ExternalClass .outlook-com-hidden {display:none !important;}.ExternalClass .outlook-com-only {display:block !important;max-height:none !important;line-height:normal !important;overflow:visible !important;height:auto !important;width:100% !important;position:relative !important;}.ExternalClass .ecxlabels {display:none !important;}.ExternalClass .ecxlabels {display:none !important;}.ExternalClass .ecxarrow {display:none !important;}.ExternalClass cite >div + div {padding:0 0 4px 0;}.ExternalClass .h1 {padding-bottom:5px;}.ExternalClass .h2 {padding-bottom:5px;}.ExternalClass .h3 {padding-bottom:5px;}.ExternalClass [lang="brand-pinterest"] {width:280px !important;}</style> <!--[if (gte mso 9)|(IE)]>
    
    <style>
      a, body {
        font-family: 'Calibri', Arial, sans-serif;
      }
    
      img {
        border: none !important;
        -ms-interpolation-mode:bicubic;
      }
    
      td {
        mso-line-height-rule:exactly !important;
      }
    
      .mso-card-inner table {
        border-collapse: collapse !important;
        mso-table-lspace:0pt;
        mso-table-rspace:0pt;
        vertical-align: top;
      }
    
      .outlook-com-only {
        display: none !important;
        font-size: 0 !important;
      }
    
      #mso-one-whole {
        width: 100% !important;
      }
    
    
    
        .border-outer,
        .border-middle,
        .border-inner {
          border: none !important;
        }
    
        .border-middle,
        .border-inner {
          width: 100% !important;
        }
    
        .mso-border-outer,
        .mso-border-middle,
        .mso-border-inner {
          padding: 1px;
        }
    
        .mso-border-outer { background-color: rgb(245, 255, 255); }
        .mso-border-middle { background-color: rgb(223, 246, 255); }
        .mso-border-inner { background-color: rgb(153, 176, 225); }
    
    </style>
    
    <![endif]--> <table class="container" lang="container" dir="ltr" border="0" cellpadding="0" cellspacing="0" valign="top" style="width:100%;margin-top:6px"> <tr> <td valign="top" class="message-wrapper" style="line-height:1.31;color:#222;font-family:arial,sans-serif"> <!--[if mso]><table  border="0" cellpadding="0" cellspacing="0" valign="top" style="border-collapse:separate;"><tr><td valign="top"><![endif]--> <table lang="container" border="0" cellpadding="0" cellspacing="0" valign="top" style="width:100%;margin-top:6px"><tbody><tr><td valign="top" style="line-height:1.31;font-family:arial,sans-serif"><div>Hi Everyone, </div><div><br></div><div>I am trying to set up a simple web application, but with all the trappings of a production app. (This is strictly for learning purposes). </div><div><br></div><div>At the moment, I am trying to get a database pool up and running that the rest of the application can use. You can see my current progress at <a href="https://github.com/StevenXL/todo/tree/07-add-database">this repository</a>. You may want to look at only the code in the back-end folder, as there is a whole front-end application.</div><div><br></div><div>So, again, my goal is to get a database pool up and running. At the moment, if I try to build the executable target, I get the following error:</div><div><br></div><div><div style="height:4px;font-size:4px"><br></div><table id="" cellpadding="0" cellspacing="0" style="border-width:1px;border-style:solid;border-color:rgb(245,255,255);border-radius:4px;width:100%;max-width:578px"><tbody><tr style="border:1px solid #d5ecff;mso-border-alt:none;display:block;border-radius:3px"><td style="display:block;padding:8px;border-radius:2px;border-width:1px;border-style:solid;border-color:rgb(153,176,225);font-size:0px;vertical-align:top;position:relative"><table cellpadding="0" cellspacing="0" valign="top" width="100%" style="width:100% !important"><tbody><tr><td valign="top" align="left" width="100%" style="padding-top:6px;padding-bottom:8px;line-height:18px;font-size:13px;font-family:proxima-nova,"Avenir Next","Segoe UI",Calibri,"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:100% !important"> Error </td></tr></tbody></table><div style="color:#333;font-size:16px;border-radius:3px"><div style="margin-bottom:1em;font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;border:1px solid #ddd;border-radius:3px;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)"><div style="width:540px;overflow-x:scroll"><div style="font-size:12px;line-height:1.4"><table cellpadding="0" cellspacing="0" width="1000" style="line-height:1.4;margin-bottom:0px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-attachment:initial;background-origin:initial;background-clip:initial;width:1000px !important"><tbody><tr><td align="left" style="padding:.5em 1em"><pre style="font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:100%;line-height:inherit;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-attachment:initial;background-origin:initial;background-clip:initial">                  <div style="font-variant-numeric:normal;font-stretch:normal;line-height:normal;font-family:Monaco,Menlo,"Ubuntu Mono",Consolas,source-code-pro,monospace;color:rgb(77,77,76)"><div style="font-stretch:normal;line-height:normal;height:16px">/Users/stevenleiva/Repos/todo/back-end/app/Main.hs:10:13: error:</div><div style="font-stretch:normal;line-height:normal;height:16px">    • Couldn't match type ‘persistent-2.7.0:Database.Persist.Class.PersistStore.BaseBackend</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span> backend0’</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span> with ‘Database.Persist.Sql.Types.Internal.SqlBackend’</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    arising from a use of ‘createPostgresqlPool’</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  The type variable ‘backend0’ is ambiguous</div><div style="font-stretch:normal;line-height:normal;height:16px">    • In a stmt of a 'do' block: pool <- createPostgresqlPool connStr 1</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  In the expression:</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    do { pool <- createPostgresqlPool connStr 1;</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span> startApp }</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  In an equation for ‘main’:</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  main</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    = do { pool <- createPostgresqlPool connStr 1;</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>   startApp }</div></div>
                </pre></td></tr></tbody></table></div></div></div></div><table width="100%" cellpadding="0" cellspacing="0" valign="top" style="border-top:1px solid rgb(221,221,238);table-layout:fixed;min-width:100% !important"><tbody><tr><td valign="top" style="padding-top:8px"><a href="https://mixmax.com/r/59ec918e83319a2a077ff18c" style="display:inline-block;vertical-align:top" target="_blank"><img src="https://emailapps.mixmax.com/img/badge_mixmax.png" align="top" height="20" style="display:block" alt="Mixmax" border="0"></a> <a style="color:rgb(170,170,187);vertical-align:top;padding-top:4px;display:inline-block;font-size:11px;line-height:16px;margin:0px;letter-spacing:1px;padding-left:6px;text-transform:uppercase;font-family:"Avenir Next","Segoe UI",Calibri,Arial,sans-serif" href="https://mixmax.com/r/59ec918e83319a2a077ff18c" target="_blank">Not using Mixmax yet?</a> </td></tr></tbody></table></td></tr></tbody></table><div style="height:4px;font-size:4px"><br></div></div><div><br></div><div>I tried helping out the compiler by adding <b>pool :: Pool Connection</b>, after importing those type constructors / constants. At that point, I got a different error:</div><div><br></div><div><div style="height:4px;font-size:4px"><br></div><table id="" cellpadding="0" cellspacing="0" style="border-width:1px;border-style:solid;border-color:rgb(245,255,255);border-radius:4px;width:100%;max-width:578px"><tbody><tr style="border:1px solid #d5ecff;mso-border-alt:none;display:block;border-radius:3px"><td style="display:block;padding:8px;border-radius:2px;border-width:1px;border-style:solid;border-color:rgb(153,176,225);font-size:0px;vertical-align:top;position:relative"><table cellpadding="0" cellspacing="0" valign="top" width="100%" style="width:100% !important"><tbody><tr><td valign="top" align="left" width="100%" style="padding-top:6px;padding-bottom:8px;line-height:18px;font-size:13px;font-family:proxima-nova,"Avenir Next","Segoe UI",Calibri,"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:100% !important"> Error 2 </td></tr></tbody></table><div style="color:#333;font-size:16px;border-radius:3px"><div style="margin-bottom:1em;font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;border:1px solid #ddd;border-radius:3px;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)"><div style="width:540px;overflow-x:scroll"><div style="font-size:12px;line-height:1.4"><table cellpadding="0" cellspacing="0" width="1000" style="line-height:1.4;margin-bottom:0px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-attachment:initial;background-origin:initial;background-clip:initial;width:1000px !important"><tbody><tr><td align="left" style="padding:.5em 1em"><pre style="font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:100%;line-height:inherit;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-attachment:initial;background-origin:initial;background-clip:initial">                  <div style="font-variant-numeric:normal;font-stretch:normal;line-height:normal;font-family:Monaco,Menlo,"Ubuntu Mono",Consolas,source-code-pro,monospace;color:rgb(77,77,76)"><div style="font-stretch:normal;line-height:normal;height:16px">/Users/stevenleiva/Repos/todo/back-end/app/Main.hs:11:32: error:</div><div style="font-stretch:normal;line-height:normal;height:16px">    • No instance for (monad-logger-0.3.25.1:Control.Monad.Logger.MonadLogger</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span> IO)</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    arising from a use of ‘createPostgresqlPool’</div><div style="font-stretch:normal;line-height:normal;height:16px">    • In a stmt of a 'do' block:</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    pool :: Pool Connection <- createPostgresqlPool connStr 1</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  In the expression:</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    do { pool :: Pool Connection <- createPostgresqlPool connStr 1;</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span> startApp }</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  In an equation for ‘main’:</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>  main</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>    = do { pool :: Pool Connection <- createPostgresqlPool connStr 1;</div><div style="font-stretch:normal;line-height:normal;height:16px"><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span><span style="font-variant-numeric:normal;font-stretch:normal;line-height:normal">    </span>   startApp }</div></div>
                </pre></td></tr></tbody></table></div></div></div></div><table width="100%" cellpadding="0" cellspacing="0" valign="top" style="border-top:1px solid rgb(221,221,238);table-layout:fixed;min-width:100% !important"><tbody><tr><td valign="top" style="padding-top:8px"><a href="https://mixmax.com/r/59ec918e83319a2a077ff18c" style="display:inline-block;vertical-align:top" target="_blank"><img src="https://emailapps.mixmax.com/img/badge_mixmax.png" align="top" height="20" style="display:block" alt="Mixmax" border="0"></a> <a style="color:rgb(170,170,187);vertical-align:top;padding-top:4px;display:inline-block;font-size:11px;line-height:16px;margin:0px;letter-spacing:1px;padding-left:6px;text-transform:uppercase;font-family:"Avenir Next","Segoe UI",Calibri,Arial,sans-serif" href="https://mixmax.com/r/59ec918e83319a2a077ff18c" target="_blank">Not using Mixmax yet?</a> </td></tr></tbody></table></td></tr></tbody></table><div style="height:4px;font-size:4px"><br></div></div><div><font face="Arial, sans-serif" color="#222222"><br></font></div><div><font face="Arial, sans-serif" color="#222222">I understand that <b>createPostgresqlPool</b> eventually gives me a value of type <b>m (Pool Connection)</b>, where there are some constraints on <b>m. </b>I also understand that at the moment I am getting back a value <b>IO (Pool Connection)</b>, and that <b>IO</b> does not have an instance of <b>MonadLogger</b>. </font></div><div><font face="Arial, sans-serif" color="#222222"><br></font></div><div><font face="Arial, sans-serif" color="#222222">From here, I am at a bit of a lose on how to proceed. I thought implementing an instance of MonadLogger for IO that would simply typecheck (and not log), but that would lead to an <b>orphaned instance</b>, correct? What's the easiest next step to make forward progress here? </font></div><div><font face="Arial, sans-serif" color="#222222"><br></font></div><div><font face="Arial, sans-serif" color="#222222">P.S. I am aware that there are a lot of advanced (for me anyway) Haskell that can be done via monad transformers, natural transformations, etc., in order to wire up a DB with Servant, but I am happy with the "next simplest step" until I learn some of those concepts better. (Then Haskell makes refactoring a breeze!).</font></div><div><br></div><div>Steven Leiva<br><span id="gc-number-0" title="Call with Google Voice"><span id="gc-number-0" class="gc-cs-link" title="Call with Google Voice">305.528.6038</span></span><br><a href="mailto:leiva.steven@gmail.com" target="_blank">leiva.steven@gmail.com</a><br><a href="http://www.linkedin.com/in/stevenleiva" target="_blank">http://www.linkedin.com/in/stevenleiva</a><br></div><img align="left" width="0" height="0" style="width:0px;height:0px" src="https://track.mixmax.com/api/track/v2/lnvyrO08QxJqHcV6q/i02bj5CbpFWbnBkblZXZ0NnLhZXalxmI/i02bj5CbpFWbnBkblZXZ0NnLhZXalxmI/ISY2lWZMBiblZXZ0NlI?sc=true" alt=""></td></tr></tbody></table><div> </div><div><br></div><div class="mixmax_signature">Steven Leiva<br><span><span id="gc-number-1" class="gc-cs-link" title="Call with Google Voice">305.528.6038</span></span><br><a href="mailto:leiva.steven@gmail.com" target="_blank">leiva.steven@gmail.com</a><br><a href="http://www.linkedin.com/in/stevenleiva" target="_blank">http://www.linkedin.com/in/stevenleiva</a><br></div><img align="left" width="0" height="0" style="border:0;width:0px;height:0px" src="https://track.mixmax.com/api/track/v2/pGsp2pniftrtWGIsg/i02bj5CbpFWbnBkblZXZ0NnLhZXalxmI/IyZy9mLsxWZrNXYoBUZmF2YtwGblt2chhmI/ISZmF2YtwGblt2chhmI?sc=false" alt=""> <!--[if mso]></td></tr></table><![endif]--> </td> </tr> </table> </body> </html>