Futhark uses unification to drive its type checker, but has different logic to produce error messages! https://futhark-lang.org/blog/2020-03-15-futhark-0.15.1-released.html This is a question I've faced on several occasions.