Haskell'de bir ağacı veya listeyi cebirsel veri türlerini kullanarak temsil etmek yeterince kolaydır. Ama bir grafiği tipografik olarak nasıl temsil edersiniz? Görünüşe göre işaretçilerin olması gerekiyor. Sanırım böyle bir şeye sahip olabilirsin
type Nodetag = String
type Neighbours = [Nodetag]
data Node a = Node a Nodetag Neighbours
Ve bu uygulanabilir olacaktır. Ancak biraz ayrışmış hissediyor; Yapıdaki farklı düğümler arasındaki bağlantılar, bir listedeki mevcut önceki ve sonraki öğeler veya bir ağaçtaki bir düğümün üst ve alt öğeleri arasındaki bağlantılar kadar sağlam "hissettirmiyor". Tanımladığım gibi grafik üzerinde cebirsel manipülasyonlar yapmanın, etiket sistemi aracılığıyla sunulan dolaylı yönlendirme seviyesi tarafından bir şekilde engelleneceğine dair bir önsezim var.
Bu soruyu sormama neden olan şey öncelikle bu şüphe duygusu ve hoşgörüsüzlük algısıdır. Haskell'de grafikleri tanımlamanın daha iyi / matematiksel olarak daha zarif bir yolu var mı? Yoksa doğası gereği sert / temel bir şeye rastladım mı? Özyinelemeli veri yapıları tatlıdır, ancak bu başka bir şey gibi görünüyor. Ağaçların ve listelerin kendine referanslı olduklarından farklı bir anlamda kendine referanslı veri yapısı. Tıpkı listeler ve ağaçların tür düzeyinde kendine referans vermesi gibi, ancak grafikler değer düzeyinde kendi kendine referanslıdır.
Peki gerçekten neler oluyor?
fgl
Paket bu işten geliştirdi.