title: Using a lens over something that isn't a functor
body: <p>I have a lens(')</p>
  
  <pre><code>myLens' :: (Functor f) =&gt; (a -&gt; f a) -&gt; (s -&gt; f s)
  </code></pre>
  
  <p>And I need a function</p>
  
  <pre><code>lensWithoutFunctor' :: ((a -&gt; b) -&gt; (f a -&gt; f b)) -&gt; (a -&gt; f a) -&gt; (s -&gt; f s)
  </code></pre>
  
  <p>(The particular type I'm interested in is </p>
  
  <pre><code>type PopType x a = x -&gt; Maybe (a, x)
  </code></pre>
  
  <p>which could be made into a Functor if I wanted)</p>
  
  <p>Is there a better way to do this other than create a Functor-implementing newtype and then doing something involving "ala"?</p>