class BoolLike a where
instance BoolLike
Bool where
instance BoolLike [a] where
(&.&) :: BoolLike a => a -> a -> a
x &.& y
| isTrue x = y
(|.|) :: BoolLike a => a -> a -> a
x |.| y
| isTrue x = x
main = do
Y2xhc3MgQm9vbExpa2UgYSB3aGVyZQogIGlzVHJ1ZSA6OiBhIC0+IEJvb2wKCmluc3RhbmNlIEJvb2xMaWtlIEJvb2wgd2hlcmUKICBpc1RydWUgPSBpZAoKaW5zdGFuY2UgQm9vbExpa2UgW2FdIHdoZXJlCiAgaXNUcnVlID0gbm90IC4gbnVsbAoKKCYuJikgOjogQm9vbExpa2UgYSA9PiBhIC0+IGEgLT4gYQp4ICYuJiB5CiAgfCBpc1RydWUgeCA9IHkKICB8IG90aGVyd2lzZSA9IHgKCih8LnwpIDo6IEJvb2xMaWtlIGEgPT4gYSAtPiBhIC0+IGEKeCB8LnwgeQogIHwgaXNUcnVlIHggPSB4CiAgfCBvdGhlcndpc2UgPSB5CgptYWluID0gZG8KICBwcmludCAkIFtdIHwufCBbMSwgMiAsM10KICBwcmludCAkIFtdICYuJiBbMSwgMiAsM10K