type MainBuilder() = member this.Return x = x |> List.map (function | _, Some names -> box names | number, None -> box number) let main = MainBuilder()
let makeFizzBuzz name condition (x : obj) = match x with | :? int as number -> number, if condition number then Some name else None | _ -> let number, names = x :?> int * string option number, if condition number then (defaultArg names "") + name |> Some else names