Warum ist "map insertionsort" nicht gleich "map mergesort"?

8

In der Typentheorie Podcast ep. 3 , Dan Licata behauptet, dass die Tatsache, dass Insertionsort und Mergesort für jede Eingabe das gleiche Ergebnis liefern, nicht bedeutet, dass das Ergebnis gleich wäre, wenn es als Funktionen höherer Ordnung als Argumente für eine dritte Funktion verwendet würde, dh map insertionsortnicht gleich sein muss map mergesort.

Er erklärt dies mit "weil Sie nicht wissen, dass Insertionsort und Mergesort gleich sind, da Funktionen gleich sind", aber ich verstehe es immer noch nicht.

Warum ist das so? Ein Gegenbeispiel wäre toll!

Filip Haglund
quelle

Antworten:

10

Es hat mit dem Axiom der Extensionalität zu tun , dh ob Sie es für Funktionen akzeptieren oder nicht.

f,g:AB, ((x:A, f x=g x)f=g).

map f=map g

(x:A, f x=g x)xs:list A, map f xs=map g xs.
map f=map g
Anton Trunov
quelle
1
Ich möchte dies noch einmal positiv bewerten.
Filip Haglund