>>400
代数データ型やdiscriminated unionのようなキーワードでぐぐるとよい
以下はF#の例
type Foo =
 | Int of int
 | Char of char
 | String of str

let xs = [ Int 1; Char 'c'; String "xyz ] # Fooのリスト

関数型言語では、このような型をパターンマッチとともに用いる
パターン漏れに対してはコンパイラが警告を出してくれるので
isinstanceのようなもので泥臭く分岐するより楽な上に安全