[]と[[]]でboolean

と[]がfalseとtrueに対応するようなandとor作れないかなぁ >>=とかうまく使って」 @itchyny

ルール

  1. 短いこと
  2. 綺麗であること
  3. 途中でエラーが生じないこと
Prelude> --
Prelude> -- []: false, [[]]: true
Prelude> -- リストでBoolean計算!?
Prelude> 
Prelude> --
Prelude> -- and計算は(>>)
Prelude> let andl x y = x >> y
Prelude> [] `andl` [] -- false and false
[]
Prelude> [] `andl` [[]] -- false and true
[]
Prelude> [[]] `andl` [] -- true and false
[]
Prelude> [[]] `andl` [[]] -- true and true
[[]]
Prelude> --
Prelude> --
Prelude> -- or計算は(++)とtake 1
Prelude> let orl x y = take 1 (x ++ y)
Prelude> [] `orl` [] -- false or false
[]
Prelude> [] `orl` [[]] -- false or true
[[]]
Prelude> [[]] `orl` [] -- true or false
[[]]
Prelude> [[]] `orl` [[]] -- true or true
[[]]
Prelude> --
Prelude> --
Prelude> -- notは短くかけなさそう...
Prelude>