Rachunek Lambda + Obiektowość część 1. – motywacja

1 Rachunek Lambda + Obiektowość część 1. – motywacjana po...
Author: Natalia Kowalewska
0 downloads 3 Views

1 Rachunek Lambda + Obiektowość część 1. – motywacjana podstawie: [1] A Lambda Calculus of Objects and Method Specialization [2] Matching [for] the Lambda Calculus of Objects

2 Plan Prezentacji Przykłady motywująceFormalizm: Rachunek Lambda z Obiektami System Typów dla powyższego

3 Przykłady motywujące

4 JavaScript, Przykład 1. Metody niezdefiniowane w obiekcie (message-not-understood)

5 JavaScript, Przykład 2. Specjalizacja metod klasowych (method specialization)cp:

6 Cele 1. papieru zamodelować rozszerzanie obiektów...… pamiętając o specjalizacji metod zrozumieć jak zmienia się znaczenie metody w zależności od zmiany this / self przy dziedziczeniu analiza znaczenia metody w oderwaniu od miejsca deklaracji

7 Cel: formalizm – abstrakcja obiektowościŚrodek: rachunek lambda rozszerzony o obiekty

8 Klasy vs Prototypy obiektowośćtworzenie obiektów wg klas (class-based) Java, Python, Smalltalk, ... tworzenie obiektów wg instancji (delegation-based, prototype-based) JavaScript, Self, ...

9 Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)

10 Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects) Przykład

11 Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)Funkcyjna forma rozszerzania obiektów: : Object → Method → Object

12 Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)Modelowanie self za pomocą λ-abstrakcji (funkcji):

13 obserwacje na temat Rachunku Lambda z Obiektami

14 Wzajemnie rekursywne metody (mutually recursive methods)chcemy wykrywać takie błędy: x niezdefiniowane!: ok: problem gdy 2 metody: m() {n()}, n() {m()} są wzajemnie rekursywne

15 Rachunku Lambda z ObiektowościąSystem typów dla Rachunku Lambda z Obiektowością Przykład wyprowadzenia

16

17

18 Reguły typowania obiektówczyli specjalizacja raz jeszcze (ale teraz formalniej)

19 Java, Przykład 2. Specjalizacja metod klasowych (method specialization)cp:

20 Reguły typowania obiektów

21 Interpretacja metody poza kontekstem jej definicji

22 Specjalizacja metod klasowych – inne pracelike Current zaproponowane do języka Eiffel Przykład 2.: nie trzeba rzutować cp.move() z Point na ColoredPoint W.R. Cook. A proposal for making Eiffel type- safe. W European Conf. on Object-Oriented Programming, strony 57–72, 1989.

23 Specjalizację metod opisano także w:J.C. Mitchell. Toward a typed foundation for method specialization and inheritance. W Proc. 17th ACM Symp. on Principles of Programming Languages, strony 109–124, Styczeń 1990.

24 obserwacje na temat Systemu Typów dla Rachunku Lambda z Obiektami

25 [1] pokazuje poprawność systemu typów[1]: problem "czy typowalne termy są równe" jest nierozstrzygalny w tym systemie typów

26 pytania?

27 Bibliografia [1] Kathleen Fisher, Furio Honsell, John C. Mitchell. A Lambda Calculus of Objects and Method Specialization W Nordic Journal of Computing, 1(1):3–37 1994 [2] Viviana Bono, Michele Bugliesi. Matching [for] the Lambda Calculus of Objects W Theoretical Computer Science, 212(1-2):101–140 1999