There is a function with bunch of a redundant lets and ←s inside a list monad.
example ∷ (Int, Int, Int, Int, Int)
example = head $ do
let list1 = [0,1]
e1 ← list1
let list2 = φ list1 e1
e2 ← list2
let list3 = φ list2 e2
e3 ← list3
let list4 = φ list3 e3
e4 ← list4
let list5 = φ list4 e4
e5 ← list5
return (e1,e2,e3,e4,e5)
where φ ∷ [Int] → Int → [Int]
So, all list# values are unusable. How can example could be rewritten with >>= or maybe with something else to get (e1,e2,e3,e4,e5) without any lets?