--pythagorejske trojice trojiceNormalne = [ (a, b, c) | a <- [1 ..], b <- [1 .. a], c <- [1 .. b], a * a == b * b + c * c ] --pomucka (interne pouzivana list-comprehensionovou syntaxi) guard True = [()] guard False = [] --pythagorejske trojice monadicky (interne to je uplne to same) trojice = do a <- [1 ..] b <- [1 .. a] c <- [1 .. b] guard $ a * a == b * b + c * c return (a, b, c) --pruhlednejsi demonstrace toho jak se aplikativne (a monadicky) chova List main = print $ [(+ 2), (* 2), negate] <*> [1, 2, 3]