<div dir="ltr"><div>In this passage, after the seq call, :sprint reveals x and y to be evaluated:</div><div><span class="" style="white-space:pre"> </span>let x = 1 + 2 :: Int</div><div><span class="" style="white-space:pre">       </span>let y = x + 1</div><div><span class="" style="white-space:pre">      </span>:sprint x</div><div><span class="" style="white-space:pre">  </span>:sprint y</div><div><span class="" style="white-space:pre">  </span>seq y ()</div><div><span class="" style="white-space:pre">   </span>:sprint x</div><div><span class="" style="white-space:pre">  </span>:sprint y</div><div><br></div><div>The above is a verbatim quote of Marlow's Concurrency book, chapter 2. </div><div><br></div><div>In the below, however, :sprint shows them unevaluated both before and after the seq call.</div><div><span class="" style="white-space:pre">     </span>let x = 1 + 2</div><div><span class="" style="white-space:pre">      </span>let y = x + 1</div><div><span class="" style="white-space:pre">      </span>:sprint x</div><div><span class="" style="white-space:pre">  </span>:sprint y</div><div><span class="" style="white-space:pre">  </span>seq y ()</div><div><span class="" style="white-space:pre">   </span>:sprint x</div><div><span class="" style="white-space:pre">  </span>:sprint y</div><div><br></div><div>Why?</div></div>