Advertisement
Guest User

Untitled

a guest
Oct 8th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. open System
  2.  
  3. let rec readAge () : int =
  4. printf "Age: "
  5. match Int32.TryParse(Console.ReadLine()) with
  6. | true, age when age > 0 -> age
  7. | _ ->
  8. printfn "Cannot read the age, please retry.."
  9. readAge ()
  10.  
  11. let readNextPerson () : (string * int) option =
  12. printf "Name (empty to stop inputs): "
  13. let name = Console.ReadLine().Trim()
  14. if name = "" then None
  15. else Some (name, readAge())
  16.  
  17. let rec readPersons () : (string * int) list =
  18. match readNextPerson() with
  19. | Some p -> p :: readPersons()
  20. | None -> []
  21.  
  22. let printPerson (name, age) =
  23. printfn "name: %s (%s)" name (if age >= 20 then "no longer a teenager" elif age >= 13 then "teenager" else "child")
  24.  
  25. [<EntryPoint>]
  26. let main argv =
  27. for p in readPersons() do
  28. printPerson p
  29. Console.ReadKey() |> ignore
  30. 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement