It is indeed a very minimalistic language, kind of like the smaller Schemes out there. It has very little syntactic sugar and encourages you to get by with just the core ideas of the language, i.e. plain types and plain prefix function application syntax.
If you have a background from any of the languages with ML syntax you can pick it up in an afternoon easily.
You could say that it's more similar to the ML's and to F# than to Haskell. It does not have Haskell's HKT's and support for generics/operator overloading, the latter being intentional. However, it does take type-safety really seriously and while the typing is less expressive for operator overloading/generics, in terms of safety the typing discipline is stronger. The standard library functions do not have runtime exceptions, and instead have return types tagged with Maybe or Either if they can fail so you get warnings at compile time.
Like for example, "head" in Haskell when applied to a list of Ints will return an Int, and throw a runtime exception for empty lists. Elm's "List.head" would return a Maybe Int and as such won't compile unless you handle the exceptional case somehow.