集合論において代数的データ型と等価なものとして直和がある。この集合の各元はタグ（コンストラクタと等価）とそのタグに対応する型のオブジェクト（コンストラクタの引数と等価）で構成される。一般に代数的データ型は直積型の総和であり、再帰的に定義されることもある。各コンストラクタは直積型のタグとなって他と区別されるか、1つしかコンストラクタがない場合は、そのデータ型自体が直積型となる。さらにコンストラクタの引数の型が直積型の要素となる。引数のないコンストラクタは空に対応する。データ型が再帰的であるなら、その直積型の総和は再帰データ型となり、各コンストラクタによって再帰データ型が構成される。例えば、以下のような Haskell のデータ型  data List a = Nil | Cons a (List a)を型理論的に表すと次のようになる。コンストラクタは次のようになる。この Haskell の List 型を型理論の別の形式で表すと、次のようになる。 と  が2つの定義で順序が入れ替わっている点に注意されたい。前者の形式は再帰型を本体とする型関数の定義であり、後者は型の再帰関数定義である。型変数  は、これが  のような基本型ではなく関数型であることを示している（ はギリシャ文字で "f" に相当する）。また、型本体の中の引数型  に関数  を適用しなければならない。List の例の用途から考えると、これら2つの定式化に大きな違いはないが、後者の形式は「入れ子データ型; nested data type」と呼ばれる表現を可能とする。入れ子データ型とは、オリジナルとパラメータ的に異なる再帰型を派生させるものである。詳しくは、 Richard Bird、Lambert Meertens、Ross Paterson らの研究を参照されたい。
OCamlではヴァリアント型と言い、前述の二分木と同等のデータ型は、次のように書く。 type node = Leaf of int | Branch of node * nodeまた、伝統的なMLではdatatypeというキーワードを使う。いずれも、ofの後に1個しか型を指定できないので、Branchのように組み込みの直積型であるタプルを併用する必要がある。MLでもコンストラクタの先頭は大文字だが、型名の先頭は小文字である。Haskellの場合と同様にして、インタプリタ上で値を作る例と深さを返す関数の例を示す。# Leaf 1;;- : node = Leaf 1# Branch (Branch (Leaf 1, Leaf 2), Branch (Leaf 3, Leaf 4));;- : node = Branch (Branch (Leaf 1, Leaf 2), Branch (Leaf 3, Leaf 4))let rec depth tree = match tree with  Leaf _        -> 1| Branch (a, b) -> 1 + max (depth a) (depth b)Visual Prologでは次のように書く。 domains tree = empty(); leaf(integer Leaf); node(tree Left, tree Right).この例では、leafとnodeの他に、空の木を示すemptyがある。
基本的な代数データ型としては、多くの関数型言語において、言語組み込みのリスト型が用意されており、空リストのためのコンストラクタに相当するリテラルと、追加したい要素と残りのリストを引数に取るコンストラクタ（Lispのen:cons）に相当する、中置演算子風のコンストラクタ（ ":" など）が言語組み込みで用意されている。代数的データ型の特殊な例として、直積型（1つのコンストラクタだけを持つ）と列挙型（引数なしの多くのコンストラクタを持つ）がある。前述の二分木の例において、コンストラクタLeafは Integer -> Node という型を、コンストラクタBranchは Node -> Node -> Node という型を持つ。型のみを見た場合、関数と同じ型をしている。しかし、関数とは違いコンストラクタは単にそこにあるだけのものであり、評価（実行）されるものではなく、オブジェクト指向言語におけるコンストラクタとは異なる。式として見た場合、関数に引数を適用する式は簡約可能だが、コンストラクタによる式は全体としてはそれ以上簡約できない、値をあらわす式である。関数型言語で抽象データ型を実現する手法のひとつに、モジュールシステムによるスコープ制限を利用して、コンストラクタを掩蔽し、型のみを公開する、という手法がある。データコンストラクタそのものの代わりに、相当する引数をとって、目的の型の値を返すような、コンストラクタを抽象化した関数を定義し、そちらの関数を公開する。この関数が、オブジェクト指向言語におけるコンストラクタに相当する。
『失われた時を求めて』の文体は、複雑な構文と多くの隠喩を持った非常に息の長い文章に特徴づけられている。このようなプルーストの長い文章は、ある観念やイメージが喚起する一切のものを記述しようとする作家の姿勢に基づくものである。例えば、文章の中で1つの対象が登場すると、その語に対して何行にも渡って修飾が加えられ、その後ふたたび元の語が引用されてまた修飾が始まり、その後でようやく述語動詞が登場して1つの文が完結する、というような形のものがしばしば表れる。このような展開法は、パラグラフのレベルにも見られ、1つのパラグラフの冒頭に置かれた主の観念が、次のパラグラフの冒頭にも繰り返されて、脱線したものが再び立ち戻りながら拡がって物語っていくという叙述方法となっている。これらは、草稿やゲラを何度も読み返しながら、そのたびに新たに喚起された記述が加えられていった結果でもあると考えられている。また、このような長い文章は、文章が結論部分に至るのをいつまでも引き延ばしておくことで、読者の期待を宙吊りにしておく冒険小説の技法をも思わせる。ただし、こうした長い文章は、実際には作品全体の三分の一程度を占めるに過ぎず、作品全体を通じて常に用いられているわけではない。また、長文が用いられる場面も語り手の分析的な独白を記述する場面に限られており、状況に合わせて適宜短い文も使われている。実際、文章の平均的な単語数は標準的なフランス語文の二倍程度である。また、使用されている語彙も極端に多いわけではなく、ある統計によればジロドゥのそれよりも少ないという。プルーストは、その文章表現において、特に隠喩（メタファー）を重視していた。『失われた時を求めて』の最終巻などにも、隠喩と印象を巡る一節が一種の文学論の形で記されている箇所がある。そこでは、隠喩によって〈二つの感覚に共通の性質を思い、その二つの感覚をお互いに結び付けることによって、二つの感覚のエッセンスを引き出し、時間のもつ偶然性から感覚を解放するようにして、一つのメタファーの中に二つの対象を含ませる〉と述べている。また、このメタファーの多用が持つ「比較されるもの（comparé）」が「比較するもの（comparant）」を喚起する関係は、『失われた時を求めて』のモチーフである「無意志的記憶」の構造、すなわちある現実の体感（五感など）が、過去の類似した記憶やそれにまつわる全てを引き起こすという機能と同じ構造を持っている。そのため、こうしたメタファーは、「無意志的記憶」のモチーフのいわば文体レベルでの実行と見なすこともできる。