They are specifically there so that you can write zero-cost abstractions. Yes, people who are hardcore C programmers may not have experience with more advanced type system features, but it&#x27;s all in service to the goal of writing expressive code that goes as fast and as safely as possible.<p>As a practical example of higher kinded types, you can&#x27;t say &quot;this function takes an Rc&lt;T&gt; or an Arc&lt;T&gt;. I just want something refcounted, but I don&#x27;t care about how.&quot; HKT would get you there.<p>Another common problem it would solve is &quot;I don&#x27;t want to write both a &amp;T and &amp;mut T version of my function.&quot;