dt0, dt1, dt2
とかなりreduce/fold
でname age gender
------------------------------
kohei 32 Male
taro 28 Male
tomoko 31 Female
module create_2Dtable =
// data
let Name = ["kohei" ; "taro" ; "tomoko"]
let Age = [32;28;31]
let Gender = ["Male" ; "Male" ; "Female"]
let Index = ["name" ; "age" ; "gender"]
let Age' = Age |> List.map ( fun x -> string x)
// ここが不恰好、、、な気がします。。。
let dt0 = [Name.Item 0; Age'.Item 0; Gender.Item 0]
let dt1 = [Name.Item 1; Age'.Item 1; Gender.Item 1]
let dt2 = [Name.Item 2; Age'.Item 2; Gender.Item 2]
let prettyPrint idx dt =
Index |> List.iter ( printf "%-10s" )
let dashline =
List.replicate 30 "-"
|> List.reduce (+)
|> printfn "\n%s"
dt
|> List.map ( List.map (sprintf "%-10s") )
|> List.map ( List.reduce (+) )
|> List.iter ( printfn "%s" )
[dt0; dt1; dt2] |> prettyPrint Index
[("kohei", 32, "Male"); ("taro", 28, "Male"); ("tomoko", 31, "Female")]
char
が表すのは1文字ですので、足して2文字になったりはしませんよ
(* 最近流行ったアレ *)
char(int('生') &&& int('死'))
ブレイスさん!おおお。なるほどです!
> ['a'..'d'] |> System.String.Concat;;
val it : string = "abcd"
IndexerName
属性が付いてますね