<div dir="ltr">Hi,<div><br></div><div style>All very good questions. Here&#39;s my current thinking on the matter:</div><div style><br></div><div style>`a` and `!a` are compatible types. The compiler will insert the `seq`s where needed. I don&#39;t think this is useless.</div>

<div style><br></div><div style>First, it serves as good documentation. Documenting strictness properties, e.g. as we do in the container library today, is awkward. Strictness annotations on types would make the documentation precise and succinct.</div>

<div style><br></div><div style>Second, it&#39;s a bit more declarative than having put manually put bang patterns at the right places in the function definition and having to remember (and teach beginners) how to do that correctly..</div>

<div style><br></div><div style>Third, it might help use generate better code, especially if we also implement Strict Core.</div><div style><br></div><div style>I believe this is analogous to what Scala does for their by-value parameters, which types are preceded with a =&gt; annotation.</div>

<div style><br></div><div style>Cheers,</div><div style>Johan</div><div style><br></div><div class="gmail_extra"><br></div></div>