&gt; don&#x27;t want to waste my time with something that has a major fundamental flaw.<p>It&#x27;s not a fundamental flaw it&#x27;s a change. Basically in the early days of Haskell they decided to make much of the prelude (the builtins) work on the concrete type &quot;list&quot; rather than on more abstract types for beginner simplicity, with more abstract &quot;interfaces&quot; like Foldable not shown upfront, with the attendant duplication as each function of the prelude now has a more abstract duplicate somewhere else.<p>The FTP change reverses this and alters the prelude to operate on abstract types rather than concrete ones, this somewhat increases the initial learning experience[0] but it doesn&#x27;t really change the language itself.<p>For C# equivalence, imagine if all the most easily accessible functions operated on the concrete `List` to avoid having to introduce interfaces and all had duplicates taking an IEnumerable instead (that doesn&#x27;t quite work as C# uses methods but there you are).<p>And surely if that&#x27;s a &quot;fundamental flaw&quot; of Haskell, you&#x27;ve wasted your time with C# and its fundamental flaw of non-generic System.Collections<p>[0] for complete beginners with no concept of abstract types I guess? For Haskell beginners coming from other languages it doesn&#x27;t seem like a big issue, just a matter of how abstract types which is already an issue between languages anyway e.g. where Haskell has Foldable C# has IEnumerable, Ruby has Enumerable, Java and Python have Iterable, ...