F#でargparseぽいことをする方法
F#でコマンドライン引数をうまく使いたかったので。
let ParseArguments options argv = let key = ref "" in argv |> Seq.groupBy( fun s -> match Seq.exists(fun t -> String.Compare(t, s) = 0) options with | true -> key := s; !key | false -> !key ) |> Seq.map(fun (e1, e2) -> let new_e2 = e2 |> Seq.skip 1 |> Seq.toList in (e1, new_e2)) |> dict
optionsはオプション。argvは与えられたコマンドライン引数。戻り値は辞書型。
使い方
[<EntryPoint>] let main argv = let options = ["-a"; "-b"] in let args = ParseArguments options argv in printfn "%A" args.["-a"].[0]