Чтобы действительно изучить и освоить мощь Haskell, вам нужно забыть все, что вы знали об императивном программировании (да, действительно, обо всем) и строить на совершенно другом фундаменте.

Как насчет:

main = do putStr "What is your name?"
          a <- readLn
          putStr "How old are you?"
          b <- readLn
          print (a,b)

Это совершенно необходимо ^^:

main = do x <- pop
          pop
          push x

То же самое ^^, и много кода на Haskell является обязательным, почему именно кто-то захочет забыть об этом и изучить его заново?

Также:

[j для i в диапазоне (2, 8) для j в диапазоне (i * 2, 50, i)]

это Python, а это Haskell:

[x+2*x+x/2 | x <- [1,2,3,4]]

Я думаю, что они очень похожи, почему я должен пытаться забыть о первом?

Возможно, вы хотели сказать, забудьте об изменчивости, забудьте об объектах и ​​шаблонах GOF, которые могут быть правдой, но не совсем. Поскольку многие люди лучше понимают, почему изменчивость неверна, столкнувшись с первой тупиковой ситуацией, многие люди понимают, как работает класс типов, потому что они знают, что делает интерфейс (черта), многие знают об дженериках из шаблонов C++ и Java или C#, и это поможет им адаптироваться к программированию типов Haskell, которое не сильно отличается.

Я пытаюсь сказать здесь, что предыдущие знания не будут обременять новичка в Haskell, это еще один неверный факт, если кто-то с опытом работы с ML или Lisp попробует Haskell, он также довольно быстро адаптируется, Haskell отличается, но опять же Brain**** отличается, и это ничего не значит, каждый может этому научиться.

PS. Извините за форматирование.