Jak czytać zasady pisania?


18

Zacząłem czytać coraz więcej prac naukowych dotyczących języków. Uważam to za bardzo interesujące i dobry sposób, aby dowiedzieć się więcej o programowaniu w ogóle. Zazwyczaj jednak pojawia się sekcja, z którą zawsze się zmagam (na przykład część trzecia tego ), ponieważ brakuje mi teoretycznego zaplecza informatycznego: Typ reguł.

Czy są dostępne jakieś dobre książki lub zasoby online, aby zacząć w tej dziedzinie? Wikipedia jest niesamowicie niejasna i tak naprawdę nie pomaga początkującym.


1
Czy czytałeś link do artykułu o regułach wnioskowania ?
— Raphael

2
TAPL Benjamina Pierce'a jest naprawdę dobry.
— Gilles „SO- przestań być zły”

Odpowiedzi:


25

W większości systemów typów reguły typów współpracują ze sobą w celu zdefiniowania ocen formy:

Γ⊢mi:τ

Oznacza to, że w kontekście wyrażenie e ma typ τ . Γ jest odwzorowaniem wolnych zmiennych e na ich typy.Γmiτ
Γmi

System typów będzie się składał z zestawu aksjomatów i reguł (formalny system reguł wnioskowania , jak podkreśla Raphael).

Aksjomat ma postać

Γ⊢mi:τ

Stwierdza on, że wyrok Uznaje (zawsze).Γ⊢mi:τ

Przykładem jest

x:τ⊢x:τ

który stwierdza, że ​​przy założeniu, że typem zmiennej jest τ , wówczas wyrażenie x ma typ τ .xτxτ

Reguły wnioskowania pobierają ustalone wcześniej fakty i budują z nich większe fakty. Na przykład reguła wnioskowania

Γ⊢mi1:τ→τ′Γ⊢mi2):τΓ⊢mi1 mi2):τ′

mówi, że jeśli mam wyprowadzenie faktu i wyprowadzenie z faktu Tt ⊢ e 2 : τ , to mogę otrzymać wyprowadzenie faktu Tt ⊢ e 1 e 2 : τ ' . W takim przypadku jest to reguła dla aplikacji funkcji pisania na klawiaturze.Γ⊢mi1:τ→τ′Γ⊢mi2):τΓ⊢mi1 mi2):τ′

Istnieją dwa sposoby czytania tej zasady:

  • z góry na dół - biorąc pod uwagę dwa wyrażenia (funkcję i inne wyrażenie) oraz pewne ograniczenia dotyczące ich typu, możemy skonstruować inne wyrażenie (zastosowanie funkcji do wyrażenia) z danym typem.
  • bottom-up - biorąc pod uwagę wyrażenie, które w tym przypadku jest zastosowaniem funkcji do jakiegoś wyrażenia, sposób ten jest wpisywany najpierw poprzez wpisanie dwóch wyrażeń, upewniając się, że ich typy spełniają pewne ograniczenia, a mianowicie, że pierwsze jest typ funkcji, a drugi ma typ argumentu funkcji.

Γλ

Γx:τ⊢mi:τ′Γ⊢λx.mi:τ→τ′

Reguły wnioskowania są stosowane indukcyjnie w oparciu o składnię wyrażenia uznawanego za drzewo genealogiczne. Na liściach drzewa (u góry) będą znajdować się aksjomaty, a gałęzie zostaną utworzone przez zastosowanie reguł wnioskowania. Na samym dole drzewa znajduje się wyrażenie, które chcesz wpisać.

λfa.λx.fa x

fa:τ→τ′,x:τ⊢fa:τ→τ′fa:τ→τ′,x:τ⊢x:τfa:τ→τ′,x:τ⊢fa x:τ′fa:τ→τ′⊢λx.fa x:τ′⊢λfa.λx.fa x:τ′

Obie książki są bardzo obszerne, ale zaczynają się powoli, tworząc solidny fundament.



5

Na tej stronie w Wikipedii zaleca się „ Type Systems, Luca Cardelli, ACM Computing Surveys ”, która jest 2-stronicową ankietą, która pomoże ci zrozumieć, jak czytać regułę. W każdym razie sposób czytania reguły jest doskonale wyjaśniony na tej stronie Wikipedii (lub jeszcze lepiej w ankiecie na 2 stronach). Jednak, aby zrozumieć całość, musisz zrozumieć, co to jest system pisania (złożony z kilku reguł), dla którego artykuł w Wikipedii „ System typów ” jest dobrym początkiem (i masz kilka książek w dziale „Materiały referencyjne ” tego stronę, jeśli chcesz iść dalej).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.