Wer hat das Proxy-Passing erfunden und wann?

Es scheint, dass bis vor einigen Jahren die übliche Art, einen zusätzlichen Typ an eine Funktion zu übergeben, darin bestand, etwas wie @ zu tu

f (undefined :: T)

Kiselyov und Shan verwendeten diesen Ansatz sogar in ihrem klassischen Artikel über klassenbasierte Reflexion, der die @ inspiriertreflection package. Sie entschuldigten die offensichtliche Hässlichkeit, indem sie feststellten, dass der falsche Wert niemals überprüft wird. Und eine nur etwas weniger hässliche Inkarnation erscheint inData.Bits.finiteBitSize, das einen Wert annimmt, den es ignoriert, um seinen Typ zu erhalten.

Dannjeman fand die Proxy-Sprache heraus und alles änderte sich. Jetzt sehen wir immer die viel befriedigender

f (Proxy :: Proxy T)

(im Standardcode - GHC-Typ-Anwendung ist eine andere Geschichte).

Wer hat es herausgefunden? Ist dies zum ersten Mal irgendwo im Code oder in einer Zeitung aufgetaucht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage