Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 29th, 2012  |  syntax: None  |  size: 0.98 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. reduce a list of functions to a boolean
  2. let ones = [1;1;1;1]
  3. let twos = [2;2;2;2]
  4. let bad = [1;2;3]
  5.  
  6. let isAllOnes = List.forall (fun op -> op = 1)
  7. let isAllTwos = List.forall (fun op -> op = 2)  
  8.  
  9. let isOneOrTwo ops = isAllOnes ops || isAllTwos ops
  10.  
  11. isOneOrTwo ones |> should be True
  12. isOneOrTwo twos |> should be True
  13. isOneOrTwo bad |> should be False
  14.        
  15. let isOneOrTwo ops = [isAllOnes; isAllTwos] |> List.tryFind (fun acc -> acc ops)
  16.  
  17. (isOneOrTwo ones).IsSome |> should be True
  18. (isOneOrTwo twos).IsSome |> should be True
  19. (isOneOrTwo bad).IsSome |> should be False
  20.        
  21. isOneOrTwo ones |> should be True
  22. isOneOrTwo twos |> should be True
  23. isOneOrTwo bad |> should be False
  24.        
  25. let ones = [1;1;1;1]
  26. let twos = [2;2;2;2]
  27. let bad = [1;2;3]
  28.  
  29. let allOnes = List.forall ((=) 1)
  30. let allTwos = List.forall ((=) 2)
  31.  
  32. let isOneOrTwo l = [allOnes; allTwos] |> List.exists (fun f -> f l)
  33.  
  34. printfn "%A " (isOneOrTwo ones) // true
  35. printfn "%A " (isOneOrTwo twos) // true
  36. printfn "%A " (isOneOrTwo bad)  // false