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?