5109637319

5109637319



Komentarz: Istnieje wiele rozwiązań tego problemu, żadne jednak nie jest eleganckie. Konserwatywne rozszerzenie systemu Damasa-Milnera wymaga wprowadzenia dodatkowych zmiennych typowych (tzw. słabych typów) i mało intuicyjnych reguł typowania. Prostsze rozwiązanie (Andrew Wrighta) uszkadza system typów tak, że przestaje być dla niego słuszne twierdzenie o subject reduction dla reguły 77. W Haskellu problem znika, bo nie ma skutków ubocznych (choć pojawia się dla funkcji unsaf ePerf ormIO i nie jest dla niej w żaden sposób rozwiązany — funkcja ta pozwala zdefiniować funkcję cast : a —► f3).

Zadanie 6. Pokaż, że w języku z poprzedniego zadania można przywrócić niesprzecz-ność jeśli wprowadzimy nowy rodzaj zmiennych, nazwijmy je słabymi i oznaczmy ich zbiór przez W. Zmienne te nie mogą wystąpić w schemacie typu po kwantyfikatorze, tj. nie wolno ich generalizować w regule let nawet, jeśli nie występują w T. Warunek w regule let ma więc postać a — FV(ti) \ (FV(r) U X). Przyjmij, że typy mają teraz postać

(Weak a\,..., Weak an) => r w której prefiks wskazuje, które zmienne są słabe.

Zadanie 7. Zauważ, że rekonstrukcja typów z polimorfizmem parametrycznym „kłóci się” z przeciążaniem operatorów — pokaż że w następującym języku:

t ::= x | t\t2 | Ax.t | let x = t\ in \ n \ r \ t\ + t2 r ::= o. | T\ —> r2 | Int | Float er ::= Va.r

z regułami typowania

r, x : Va.T b x : rfa/f']

r b ti : n r,x : Wf.Ti h <2 : T2


r h t : Ti —> T2 rhs:r2 T \~ ts : T2


T, x : Ti h t : T2 r h Ax.t : Ti —» T2


let x = t\ in t2 : T2

T h t\ : Int rbt2 : Int


a = FV(n) \ FV(r)


r\-t1+t2: Int


r b n : Int

r b t\ : Float r b t2 : Float r b t\ + t2 : Float


istnieją programy nie posiadające typu głównego. Jaki wpływ ma brak typu głównego na efektywność rekonstrukcji typów i możliwość rozdzielnej kompilacji?

Zadanie 8. Pokaż, że w języku z poprzedniego zadania można przywrócić istnienie typów głównych, jeżeli wprowadzimy dodatkowy rodzaj zmiennych, nazwijmy je numerycznymi, a ich zbiór oznaczmy przez Af. Pod zmienne te wolno podstawić jedynie stałe Int oraz Float. Przyjmij, że typy mają teraz postać

(Num a\,..., Num an) =3- r

w której prefiks wskazuje, które zmienne są numeryczne. Zauważ, że jesteśmy o krok od wynalezienia haskellowych klas typów.

3



Wyszukiwarka

Podobne podstrony:
0000007 4 nych modeli działania enzymów. Jakkolwiek wiele elementów już wyjaśniono, to jednak nie je
4.1. DYNAMICZNA ALOKACJA PAMIĘCI Rozwiązanie tego problemu może być jednak bardzo czytelnie zapisane
140 Krzysztof Jajuga, Tadeusz Kufel, Marek Walesiak zaprezentowano propozycję rozwiązania tego probl
HWScan00253 zabezpieczać przed chwilowymi przeciążeniami. Nad rozwiązaniem tego problemu prowadzone
CCF20090303026 56 Determinizm „naukowy” ny) zastąpić ścisłe rozwiązanie tego problemu jego przybliż
lastscan12 W celu rozwiązania tego problemu zdyskontujemy kwotę 1000 zł na dzień wcześniejszy o I ro
Władysław Kobyliński Poszukując sposobów rozwiązania tego problemu coraz częściej odwoływano się do
Rozwiązanie tego problemu upatruje się w działaniach organizatorskich zmierzających do wzbogacenia t
można je dowolnie orientować w przestrzeni 3D. Rozwiązaniem tego problemu w programie Al są
80749 IMG 85 (4) a. ROZWIĄZANIA KONSTRUKCYJNE STACJI Istnieje wiele rozwiązań konstrukcyjnych rozdzi
074 pcx 74 Bezprzewodowe sieci komputerowe cym sposobem rozwiązania tego problemu jest tworzenie sie
Każdy z każdym •    Rozwiązanie takie oferuje spore możliwości, nie jest jednak
Opracowanie własne. Rys. 2. Kluczowa infrastruktura państwa Problem tkwi jednak nie w nazewnictwie
P1000325 1. Istnieje wiele definicji projektowania. Jedna z nich brzmi: projektowanie jest koncepcją
71483 skanuj0011 (392) Istnieje wiele klasyfikacji kosztów. Jednym z kryteriów podziału kosztów jest

więcej podobnych podstron