次に複数の値を持ったケースを持つ判別共用体の定義方法ですが、
// タプルで定義
type Node =
| Element of (string * (Node seq))
| Text of string
// タプルを使わずに定義
type Node =
| Element of string * Node seq
| Text of string
の2種類があって、後者の方がより効率的な型を生成します。
match
式でタプルとして受け取れない、というものがあります。
type t = Hoge of Xxx:(int * string)
int.TryParse
がコードには出てきませんが、説明には出てくるので、これはミスと思われます。
C#ポケットリファレンス
という本の202
ページにコレクションのクラス・インターフェースとして下記のlst
の分が載ってたのですが、mscorlib
から引っ張りだせません。名前が違うのでしょうか?ヒントを教えていただけると嬉しいです。
module Test =
let dotNetAPIList =
typeof<obj>.Assembly.GetTypes ()
|> Array.map ( fun t -> ( t.Namespace, t.Name ) )
|> Array.sortBy id
|> Array.distinct
let mySeek targetName =
dotNetAPIList
|> Array.filter ( fun tpl -> snd tpl = targetName )
|> Array.iter ( printfn "%A" )
let lst = ["ICollection";"List";"LinkedList"
"HashSet";"Dictionary";"Queue";"Stack"]
for v in lst do
mySeek v
結果
("System.Collections", "ICollection")
("System.Collections", "Queue")
("System.Collections", "Stack")