As dragonwriter points out (<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=11690914" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=11690914</a>), Haskell best practice in naming includes things like `head (x:xs) = x`, and I think that one would not accuse this definition of involving an ad hoc reinvention of half a type system.