title: Time complexity of multiple string concatenation (join) in functional programming languages
body: <p>Am I right that the only algorithm that can be implemented in functional programming languages like Haskell to concatenate multiple strings (i.e. implement <code>join</code> that transforms list of lines <code>["one", "two", "three"]</code> into one line <code>"onetwothree"</code>) has time complexity of order O(n^2), like described in <a href="https://www.joelonsoftware.com/2001/12/11/back-to-basics/" rel="nofollow noreferrer">this well-known post</a>?</p>
  
  <p>E.g. if I work with immutable strings, for example, in Python, and try to implement <code>join</code>, I'll get something like</p>
  
  <pre><code>def myjoin(list_of_strings):
     return list_of_strings[0] + myjoin(list_of_strings[1:])
  </code></pre>
  
  <p>Is it true that it is not possible to make it faster, for example, in Haskell?</p>