It's a function that takes a String and returns a new function which takes a String and returns a String. All functions in Haskell/Elm are arity 1.
So in order to construct functions that accept more than one argument, you actually return successive functions that apply successive arguments, known as currying.