Welches Wörterbuch wählt GHC aus, wenn mehr als ein Wörterbuch im Geltungsbereich ist?

Betrachten Sie das folgende Beispiel:

import Data.Constraint

class Bar a where
  bar :: a -> a

foo :: (Bar a) => Dict (Bar a) -> a -> a
foo Dict = bar

GHC bietet zwei Auswahlmöglichkeiten für das Wörterbuch, wenn ein @ ausgewählt wirBar Instanz infoo: es könnte das Wörterbuch aus dem @ verwendBar a Einschränkung auffoo, oder es könnte die Laufzeit verwendenDict, um ein Wörterbuch zu erhalten. Sehendiese Frag für ein Beispiel, in dem die Wörterbücher @ entsprechander Instanzen.

Welches Wörterbuch verwendet GHC und warum ist es die "richtige" Wahl?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage