printfn "on the %s day of christmas my true love gave to me \n%s\n" number thing
type OneDay = { number: string ; thing : string }
let first = { number = "first" ; thing = "a partridge in a pear tree"}
let second = { number = "second" ; thing = "two turtle doves"}
let third = { number = "third" ; thing = "three french hens"}
let fourth = { number = "fourth" ; thing = "four calling birds"}
let fifth = { number = "fifth" ; thing = "five gold rings"}
let sixth = { number = "sixth" ; thing = "six geese a laying"}
let allDays = [| first ; second ; third ; fourth ; fifth ; sixth ;
{number = "seventh" ; thing = "seven swans a swimming" } ;
{number = "eighth" ; thing = "eight maids a milking"} ;
{number = "ninth" ; thing = "nine ladies dancing"} ;
{number = "tenth" ; thing = "ten lords a leaping"} ;
{number = "eleventh" ; thing = "eleven pipers piping"} ;
{number = "twelth" ; thing = "twelve drummers drumming"} ;
for theDay in 0..allDays.Length-1 do
let myDay = allDays.[theDay]
let allThings = String.Join(",",allDays.[..theDay] |> Array.mapi (fun i d -> (if i=0 && theDay<> 0 then "and " else "")+d.thing)|> Array.rev )
day myDay.number allThings