データ構造の中でのループ

B木の挿入を書いてて、あれ?とつまったのでメモ。
データ構造内でループがあるようがものって定義できるの?っていう疑問。
例えば、双方向リストを考えて、

data TwinList a = Null | Node a (TwinList a) (TwinList a)

みたいに宣言する。右辺の一つ目のTwinListがNextで二つ目のがPrevなつもりだとする。このとき、ふたつのノードからなるTwinListを具体的に書こうとすると、

Node 3 (Node 4 Null ???) Null --???はNode 3 (Node 4 Null ???) Null を指したい

となって???の部分が書けなくね?という疑問。やり方があるのか、データ構造の定義を変えればいけるのか、そもそもこういうことをやるのがナンセンスなのか、どうなんだろ?