To zależy od tego, na którą część twojego pytania akcentujesz. Jeśli jest to w szczególności właściwość anonimowości dla funkcji anonimowych, to w rzeczywistości jedyną odpowiedzią jest to, że są to wartości niezwiązane . Jeśli mówimy o funkcjach w ogólności, funkcje anonimowe są prawdopodobnie najbardziej widocznym przejawem stosowania rachunku lambda w funkcjonalnym otoczeniu, dla języków aplikacyjnych .
W rzeczywistości, z punktu widzenia rachunku lambda, wyrażenia lambda są bardzo syntaktycznym konstruktem używanym do tworzenia powiązań. Przypomnijmy notację stosowaną w rachunku lambda:
λ f. λ x . fax
faxfax
Język zwykle oferuje sposoby, takie jak let
(ML, takie jak języki, schemat) lub define
(schemat) do tworzenia powiązań, które można wykorzystać na najwyższym poziomie (lub w konstrukcjach składniowych bardziej złożonych niż funkcje, takie jak moduły lub obiekty), ale jest to jedyne potrzebne narzędzie do wiązania są lambda na niższych poziomach.
Jeśli spojrzysz na języki takie jak dialekty schematu lub seplenienia, ich fundamentem jest rachunek lambda, a wiele specjalnych form to naprawdę lambda pokryte cukrem.
W przypadku języków konkatenatywnych historia jest nieco inna. Jagnięta nie są konieczne i faktycznie przynoszą efekt przeciwny do zamierzonego. Po co definiować anonimowe lambdy, skoro wszystko jest funkcją ?
Istnieje jakaś dwoistość między tymi dwoma rodzajami języków. Później koncentruje się na kombinacji funkcji bez punktów, a zatem próbuje przedstawić wszystko jako funkcje, podczas gdy pierwsza z nich działa na bardziej rozbudowanym rachunku różniczkowym i stara się mieć funkcje jako wartości pierwszej klasy, podobnie jak inne wartości języka. Pod tym względem można było postrzegać lambdas jako wynik tego wysiłku.
Niektóre wskazówki na temat wprowadzone (słabo) w tej odpowiedzi:
- artykuł Jona Purdy'ego na temat języków konkatenatywnych
- dyskusja, która nastąpiła na LtU