title: Scala, cats - how to do not use Applicative[F] explicity?
body: <p>I would like to use <code>Applicative[F]</code> in some other way then explicity. Currently I have a simple code:</p>
  
  <pre><code>class BettingServiceMock[F[_] : Async] extends BettingService[F] {    
        override def put(bet: Bet): F[Bet] = {
          for {
            created &lt;- Bet(Some(BetId(randomUUID().toString)), bet.stake, bet.name).pure
          } yield created
        }
      }
  </code></pre>
  
  <p><code>Bet</code> is just a simple <code>case class</code>. I use method <code>pure</code> explicity to return <code>F[Bet]</code>. Is there some way to do not it like this way (to do not call <code>pure</code> method explicity)?
  I tried to do something like this:</p>
  
  <pre><code>class BettingServiceMock[F[_] : Async] (implicit a:Applicative[F]) extends BettingService[F] {
  
    override def put(bet: Bet): F[Bet] = {
      for {
        created &lt;- Bet(Some(BetId(randomUUID().toString)), bet.stake, bet.name)
      } yield created
    }
  }
  </code></pre>
  
  <p>It did not help, because I got an error: 
  <code>value map is not a member of model.Bet &lt;- (Some(BetId(randomUUID().toString)), bet.stake, bet.name)</code></p>
  
  <p>I would like to discover some good practise in <code>Cats</code> that's way I'm asking about it. I do not thnik so that explicity call methids like <code>pure</code> is  good practise. Could you help me with that?</p>