Ich versuche mein Gehirn um Haskells existenzielle Typen zu wickeln, und mein erstes Beispiel ist eine heterogene Liste von Dingen, die gezeigt werden können:
%Vor%Nun scheint es mir, dass ich das nächste, was ich tun möchte Showable eine Instanz von Show machen soll, damit zum Beispiel meine showableList im repl angezeigt werden kann:
%Vor%Das Problem, das ich habe, ist, dass ich hier die a Implementierung aufrufen möchte. Aber ich habe Probleme, sich darauf zu beziehen:
%Vor%wählt die show-Methode Showable auf der RHS aus, die in Kreisen läuft. Ich habe es versucht, Show automatisch abzuleiten, aber das funktioniert nicht:
%Vor%gibt mir:
%Vor%Ich suche nach einer Möglichkeit, die zugrunde liegende Show :: show-Implementierung aufzurufen, damit Showable das Rad nicht neu erfinden muss.
show a = show a
funktioniert nicht so, wie du es erkannt hast, weil es unendlich recusiert. Wenn wir dies ohne existentielle Typen versuchen, können wir dasselbe Problem und dieselbe Lösung sehen.
Tags und Links haskell existential-type