<story><title>I&apos;m Betting on Call-by-Push-Value</title><url>https://thunderseethe.dev/posts/bet-on-cbpv/</url></story><parent_chain></parent_chain><comment><author>Mathnerd314</author><text>I got really excited about call-by-push-value about 15 years ago, when I first encountered it, but at this point I think it is overhyped, particularly the presentation of &amp;quot;values&amp;quot; and &amp;quot;computations&amp;quot; as duals. For example see &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.itu.dk&amp;#x2F;people&amp;#x2F;mogel&amp;#x2F;papers&amp;#x2F;eec.pdf&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.itu.dk&amp;#x2F;people&amp;#x2F;mogel&amp;#x2F;papers&amp;#x2F;eec.pdf&lt;/a&gt;, it is a CBPV-style lambda calculus except computations are a subset of values and there is no duality. Similarly in Levy&amp;#x27;s book, he discusses &amp;quot;complex values&amp;quot; like 1+2 which allow pure computations to happen inside the &amp;quot;value&amp;quot; type, more evidence that they are not duals at all.&lt;p&gt;If you squint at CBPV, there is exactly one primitive that sequences computation, `M to x. N`. In Haskell this is just the monadic bind `M &amp;gt;&amp;gt;= \x -&amp;gt; N` or `do { x &amp;lt;- M; N}`. If I had to bet, I would place my bet on monads, not CBPV.</text></comment>
<story><title>I&apos;m Betting on Call-by-Push-Value</title><url>https://thunderseethe.dev/posts/bet-on-cbpv/</url></story><parent_chain></parent_chain><comment><author>burakemir</author><text>It is nice to see CBPV on HN. It is a calculus that deal with a fundamental choice in PL of how to approach evaluation. For a different take, here is the first part of a mini series of posts on CBPV that aims at working out the connection to logic (&amp;quot;polarised natural deduction&amp;quot;): &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;burakemir.ch&amp;#x2F;post&amp;#x2F;cbpv-pt1-small-steps&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;burakemir.ch&amp;#x2F;post&amp;#x2F;cbpv-pt1-small-steps&amp;#x2F;&lt;/a&gt;</text></comment>