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.