Skip to content

Instantly share code, notes, and snippets.

@vbedegi
Last active October 9, 2015 13:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vbedegi/f311795948e70cdc8f5f to your computer and use it in GitHub Desktop.
Save vbedegi/f311795948e70cdc8f5f to your computer and use it in GitHub Desktop.
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