Fun thing - list comprehensions could be seen as map/filter and so on but they could also be seen as syntax sugar for monads:
[ x + y
for x in xs
for y in ys]
foo = do
x <- xs
y <- ys
return (x + y)
Just that this is overloaded in haskell so that it works with lists but also as async/await, as the `?` operator that propagates errors in rust and so on.
So maybe it isn't the basic concepts of haskell that are hard to get but that they are so general.
So maybe it isn't the basic concepts of haskell that are hard to get but that they are so general.