Skip to content

Instantly share code, notes, and snippets.

@lmatt-bit
Last active August 29, 2015 14:19
Show Gist options
  • Save lmatt-bit/ed632e481f7a3844c902 to your computer and use it in GitHub Desktop.
Save lmatt-bit/ed632e481f7a3844c902 to your computer and use it in GitHub Desktop.
Seq related functions
//below line read all lines until eof reach
let lines = Seq.initInfinite (fun _ -> System.Console.In.ReadLine()) |> Seq.takeWhile(fun line -> line <> null)
//below code read all lines and parse as int and print
Seq.initInfinite (fun _ -> System.Console.In.ReadLine()) |> Seq.takeWhile(fun line -> line <> null) |> Seq.map(fun v -> System.Int32.Parse(v)) |> Seq.iter(fun v -> printfn "%i" v)
//iter, iteri, iter2
let seq1 = [1; 2; 3]
let seq2 = [4; 5; 6]
Seq.iter (fun x -> printfn "Seq.iter: element is %d" x) seq1
Seq.iteri(fun i x -> printfn "Seq.iteri: element %d is %d" i x) seq1
Seq.iter2 (fun x y -> printfn "Seq.iter2: elements are %d %d" x y) seq1 seq2
//output
//Seq.iter: element is 1
//Seq.iter: element is 2
//Seq.iter: element is 3
//Seq.iteri: element 0 is 1
//Seq.iteri: element 1 is 2
//Seq.iteri: element 2 is 3
//Seq.iter2: elements are 1 4
//Seq.iter2: elements are 2 5
//Seq.iter2: elements are 3 6
// As Seq.filter but provide i as a parameter to the filter function.
let filteri f s =
s
|> Seq.mapi (fun i elem -> i, elem)
|> Seq.filter (fun (i, elem) -> f i elem)
|> Seq.map (fun (_, elem) -> elem)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment