オプショナルな値の配列を配列のオプショナルに変えたいことはよくある。(たぶん) [Int?] を [Int]? にしたい。 Haskellを例にだす。 [Just 1, Just 2, Nothing, Just 3] :: [Maybe Int] sequence [Just 1, Just 2, Nothing, Just 3] :: Maybe [Int] -- => Nothing sequence [Just 1, Just 2, Just 3] :: Maybe [Int] -- => Just [1,2,3] func sequence<T>(xs: [T?]) -> [T]? { var result: [T]? = [] for optX in xs { if let x = optX { result?.append(x) } else { return nil } }