title: Multiple Just data constructors to wrap a value
body: <p>Is <code>Just 5</code> same as <code>Just (Just 5)</code>. Theoretically, i am sure the answer is no but does in real life, do we use values like <code>Just (Just (Just ..... (Just 5)))</code></p>
  
  <p>At least one example i encountered is in <a href="https://github.com/cyga/real-world-haskell/blob/master/ch15/MovieReview.hs#L34" rel="nofollow">real world haskell</a> as,</p>
  
  <pre><code>maybeReview alist = do
  title &lt;- lookup1 "title" alist
  return (MovieReview title)'
  
  lookup1 key alist = case lookup key alist of
                        Just (Just s@(_:_)) -&gt; Just s
                        _ -&gt; Nothing
  </code></pre>
  
  <p>Why do we need the outer <code>Just</code> data constructor in this line, </p>
  
  <pre><code>Just (Just s@(_:_)) -&gt; Just s
  </code></pre>