木構造だとか関数処理とか怪しい概念は窓から放り投げて定義の展開と代入、簡約で考えよう
その辺はRWHよかIntroduction to Functional Programming using Haskellの方が詳しいyp

andやorが右結合なのは無限リスト食わせるとわかる
foldlで定義したら食わせるリストの頭に零因子であるものがあってもスタック食いつぶす

Maybeに関しての短絡はNothing >> forever (Just 1)とかするとわかる
これが木構造とやらを切除しないとなるとサイズが無限である木がメモリ上に存在してスタックオーバーフロー起こす事になる