Last active
October 9, 2015 13:05
-
-
Save vbedegi/f311795948e70cdc8f5f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open System | |
let rec queryForNonNegativeInt msg = | |
printf msg | |
let parsed, number = Int32.TryParse(Console.ReadLine()); | |
if parsed then | |
if number < 0 then queryForNonNegativeInt msg | |
else number | |
else queryForNonNegativeInt msg | |
let queryForNumberOfPeople () = | |
queryForNonNegativeInt "number of people: " | |
let queryForName () = | |
printf "name: " | |
Console.ReadLine() | |
let queryForAge () = | |
queryForNonNegativeInt "age: " | |
let queryForPerson num = | |
printfn "person #%A" (num + 1) | |
let name = queryForName() | |
let age = queryForAge() | |
(name, age) | |
let queryForPeoples numberOfPeople = | |
let rec queryForPeoples num acc = | |
if num = numberOfPeople then acc | |
else queryForPerson num :: queryForPeoples (num+1) acc | |
queryForPeoples 0 [] | |
let verdict person = | |
let name, age = person | |
if age >= 20 then | |
name + " is no longer a teenager" | |
elif age > 13 then | |
name + " is a teenager" | |
else | |
name + " is a child" | |
[<EntryPoint>] | |
let main argv = | |
let num = queryForNumberOfPeople() | |
let xs = queryForPeoples num | |
xs |> List.map verdict |> List.iter (printfn "%s") |> ignore | |
Console.ReadLine() |> ignore | |
0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment