Es ist einfach genug, einen Baum oder eine Liste in Haskell mithilfe algebraischer Datentypen darzustellen. Aber wie würden Sie vorgehen, um eine Grafik typografisch darzustellen? Es scheint, dass Sie Zeiger haben müssen. Ich vermute, Sie könnten so etwas haben
type Nodetag = String
type Neighbours = [Nodetag]
data Node a = Node a Nodetag Neighbours
Und das wäre machbar. Es fühlt sich jedoch etwas entkoppelt an; Die Verknüpfungen zwischen verschiedenen Knoten in der Struktur "fühlen" sich nicht so solide an wie die Verknüpfungen zwischen den aktuellen vorherigen und nächsten Elementen in einer Liste oder den Eltern und untergeordneten Elementen eines Knotens in einem Baum. Ich habe die Vermutung, dass algebraische Manipulationen am Diagramm, wie ich es definiert habe, durch die durch das Tag-System eingeführte Indirektionsebene etwas behindert würden.
Vor allem dieses Gefühl des Zweifels und die Wahrnehmung der Uneleganz veranlassen mich, diese Frage zu stellen. Gibt es eine bessere / mathematisch elegantere Möglichkeit, Diagramme in Haskell zu definieren? Oder bin ich auf etwas gestoßen, das von Natur aus hart / grundlegend ist? Rekursive Datenstrukturen sind süß, aber dies scheint etwas anderes zu sein. Eine selbstreferenzielle Datenstruktur in einem anderen Sinne als Bäume und Listen selbstreferenziell. Es ist so, als ob Listen und Bäume auf Typebene selbstreferenziell sind, aber Diagramme sind auf Wertebene selbstreferenziell.
Also, was ist wirklich los?
fgl
Paket entwickelte sich daraus.