title: Ambiguous type variable ‘a0’ arising from a use of ‘param’ prevents the constraint ‘(Parsable a0)’ from being solved
body: <p>I'm having trouble understanding this error message, not too sure what I should investigate next.</p>
  
  <p>I've got the  following imports:</p>
  
  <pre><code>{-# LANGUAGE OverloadedStrings #-}
  module Main where
  
  import Web.Scotty
  
  import Control.Applicative
  import Control.Monad.IO.Class
  import Database.SQLite.Simple
  import Database.SQLite.Simple.FromRow
  import qualified Data.Text.Lazy as L
  </code></pre>
  
  <p>The code causing the error:</p>
  
  <pre><code>routes :: ScottyM ()
  routes = do
    post "/create" $ do
      f &lt;- param ("fa" :: L.Text)
      file "create.html"
  </code></pre>
  
  <p>And the error:</p>
  
  <pre><code>    • Ambiguous type variable ‘a0’ arising from a use of ‘param’
    prevents the constraint ‘(Parsable a0)’ from being solved.
    Probable fix: use a type annotation to specify what ‘a0’ should be.
    These potential instances exist:
      instance Parsable Integer
        -- Defined in ‘scotty-0.11.0:Web.Scotty.Action’
      instance Parsable L.Text
        -- Defined in ‘scotty-0.11.0:Web.Scotty.Action’
      instance Parsable ()
        -- Defined in ‘scotty-0.11.0:Web.Scotty.Action’
      ...plus 7 others
      ...plus 12 instances involving out-of-scope types
      (use -fprint-potential-instances to see them all)
  • In a stmt of a 'do' block: f &lt;- param ("f" :: L.Text)
    In the second argument of ‘($)’, namely
      ‘do { f &lt;- param ("f" :: L.Text);
            file "create.html" }’
    In a stmt of a 'do' block:
      post "/create"
      $ do { f &lt;- param ("f" :: L.Text);
             file "create.html" }
  </code></pre>