Rozróżnienie między pierwotnymi wyrażeniami, środkami kombinacji i środkami abstrakcji jest użyteczne przy modelowaniu języków programowania. Zauważ, że nie jest to nieodłączna właściwość języka: nie możesz wskazać żadnej definicji języka i powiedzieć „ta cecha jest jednoznacznie pierwotnym wyrażeniem, ta cecha jest jednoznacznie środkiem kombinacji”. To rozróżnienie jest właściwością modelu, a złożone modele mogą opierać się klasyfikacji.
Przykładem tych trzech pojęć jest rachunek lambda , który ma dokładnie jedno z nich:
- Zmienne x , y ,… są jedynymi prymitywnymi wyrażeniami.
- Zastosowanie funkcji MN jest jedynym sposobem łączenia.
- Abstrakcja lambda λx.M jest jedynym sposobem abstrakcji.
Gdy przejdziesz do języków z większą liczbą funkcji, modelowanie może stać się bardziej niejednoznaczne. Mówiąc ogólnie, prymitywne wyrażenie to takie, którego nie można lub nie można podzielić na prymitywne składniki. Ale jest jak atom : jest prymitywny, dopóki nauka nie ruszy. Na przykład istnieje wariant rachunku lambda, w którym zmienne używają liczb, a nie nazw ( wskaźników de Bruijna ), co jest szczególnie wygodne przy modelowaniu terminów lambda dla proofów komputerowych; a w dowodach komputerowych liczby całkowite są podzielone na części składowe . W tych modelach zmienne nie są jednak prymitywnymi wyrażeniami.
W (typowym modelu) Javy pierwotne wyrażenia są przede wszystkim stałymi i zmiennymi. Sposoby kombinacji obejmują liczne operatory; Dokładniej, „Dodatek ekspresyjny” jest środkiem kombinacji dwie szczeliny (z lewej strony, a po prawej stronie), albo w trzy szczeliny (obu stronach plus operatora), jeśli zawierają zarówno A +
B i A -
B pod tą nazwą (w takim przypadku operatory +
i -
konstrukcje prymitywne same w sobie). Inne sposoby łączenia obejmują sekwencje instrukcji I ;
J , konstrukty pętlowewhile (…) {…}
, i tak dalej. Następnie masz konstrukcje, takie jak deklaracje zmiennych, definicje funkcji, definicje klas i tak dalej, które są zarówno środkami kombinacji (łączą nazwy i typy parametrów, ciała, inicjalizatory, ...) i środkami abstrakcji (ponieważ definiują nazwy do ponownego użycia). W rzeczywistości dość powszechne jest to, że środki abstrakcji są również środkami łączenia: łączą nazwę z jej definicją.