Functional Programming & Proofs


Trees and languages

  1. (filter)
    How to select the element of a stream having a property p ?
let rec filter p s = 
  match s with 
  | End        -> End
  | Add (v,s1) -> if (p v) then Add (v,filter p s1) else filter p s1;;

filter ((>) 8) s;;

let str s = "[ "+(reduce "" (fun v s->(string v)+" "+s) s)+"]";;
str (filter ((>) 8) s);;

let (|>) x f = f x;;
s |> (filter ((>) 8)) |> str |> printfn "%s";;

8 - 10