Haskell语言练习

Monad

inc n = Just (n + 1)

add1 n = [n + 1]

main = do
    print $ Nothing >> (Just 0)                     -- Nothing
    print $ (Just 0) >> (Nothing :: Maybe Int)      -- Nothing
    print $ (Just 0) >> Nothing >> (Just 1)         -- Nothing
    print $ (Just 0) >> (Just 1) >> (Just 2)        -- Just 2

    print $ Nothing >>= inc >>= inc >>= inc         -- Nothing
    print $ (Just 0) >>= inc >>= inc >>= inc        -- Just 3

    print $ [] >> [1, 2]                            -- []
    print $ [1, 2] >> ([] :: [Int])                 -- []
    print $ [1] >> [3, 4, 5]                        -- [3,4,5]
    print $ [1, 2] >> [3, 4, 5]                     -- [3,4,5,3,4,5]
    print $ [1, 2, 3] >> [3, 4, 5]                  -- [3,4,5,3,4,5,3,4,5]

    print $ [] >>= add1 >>= add1 >>= add1           -- []
    print $ [1, 2, 3] >>= add1                      -- [2,3,4]
    print $ [1, 2, 3] >>= add1 >>= add1             -- [3,4,5]
    print $ [1, 2, 3] >>= add1 >>= add1 >>= add1    -- [4,5,6]

猜你喜欢

转载自www.cnblogs.com/zwvista/p/9208815.html