I think you’re confusing some things together. But that’s alright, we can explain.
unnecessarily advanced language features like type classes, type level programming, etc.
Type classes has nothing to do with functional programming in general. They are way to define ad hoc polymorphism. Also calling it as unnecessarily seems a bit confusing to me. Some type of higher polymoprhism is needed and elm has it as well in things like comparable or number it’s just that such concepts are hardcoded to compiler and not user definable (similar approach was used by many other statically typed languages like Java for insance). In my optinion user definable ad hoc polymorphism is much nicer solution anyway it introduces concept that might be hard for beginers. In the end I think it’s possible to write application without type clasess and Elm is designed in this way we should either accept this or change language. I’m not pushing type classes to elm in any way (yet I still have a right to say it’s more elegant solution in my opinion).
I recently use the word “type safe configuration language”
I think this is missleading. First language can’t really be type safe. it can only support type safety. Also I’m not sure what configuration means. Language is turing complete, based on lambda calculus, ML and system F. I’m not sure what can be more functional that this.
In functional language like Haskell, the most difficult and interesting part of programming is how to handle IO related operations in pure functions, but Elm does not need to handle such operations because The Elm Architecture handles it by receiving configurations from your Elm code.
First, in Haskell IO works in very similar way in this regard. A Program produces “side-effects” as data and these data are turned into real side-effects by runtime. Second, it’s not true that in Elm “the architecture” receives configuration. Elm program is composed from functions. Those functions takes data and produces different data. This is called program not configuration.
Elm is just a subset of imperative language rather than a “functional language”
This is definitely not true. In my opinion Haskell is maybe even more imperative then Elm or at least do notation gives Haskell more imperative feel when you work with IO.
Frankly I think that stop calling it functional language is very bad idea. I understand where ideas like this comes from and frankly I think it’s maybe starting to get out of hands. Personally I hope we will never get to the point where Evan would seriously start to consider to stop using terms like functional. For sure there is some psichology in adopting laguage but it sholdn’t be the only thing to consider. I would like to keep programming more closer to exact science then to astrology.
I know I’ve used some terms you’re probably not familar with but don’t be affraid. Have a look on wikipedia and even if that doesn’t help don’t worry. From my experience it’s good to know about existence of concepts you don’t understand yet. One day it will all click and you’ll realize how simple it all in fact is. I’m definitely for being beginer friendly. I’m just also against hiding those amazing concepts from people who might be interested in learing it.