Reasoning about whether inheritance (or any single feature, really) is necessary or not without also considering the rest of the language's semantics is pointless; you're arguing in a vacuum.
What you need is a consistent language design philosophy; the language needs to be able to elegantly solve the problems that it's designed for. The model to achieve this may or may not require inheritance, but it's hard to judge this without the big picture.
If, for example, your language has first-class functions, partial function application, polymorphic data types, type variables and generic types, you have pretty much covered the same bases as you would have with classic OOP inheritance, but using a different paradigm.
If you have late binding, dynamic typing, methods-as-properties, flexible function arguments, and first-class functions, you also cover the same grounds, but again, using a different paradigm.
(Finding examples for the two paradigms outlined is left as an exercise for the reader.)
So, think about the kind of semantics you want, play around with them and see if they are sufficient without inheritance. If they are not, you may either decide to throw inheritance into the mix, or you may decide that something else is missing.