PŁYWAM - ISWIM
Paradygmat | Niezbędne , funkcjonalne |
---|---|
Zaprojektowany przez | Piotr Landin |
Po raz pierwszy pojawiły się | 1966 |
Wpływem | |
ALGOL 60 , Lisp | |
Pod wpływem | |
SASL , Miranda , ML , Haskell , Clean , Lucid |
ISWIM ( akronim od If you See What I Mean ) to abstrakcyjny język programowania komputerowego (lub rodzina języków) opracowany przez Petera Landina i po raz pierwszy opisany w jego artykule „The Next 700 Programming Languages”, opublikowanym w Communications of the ACM w 1966.
Chociaż nie został zaimplementowany, okazał się bardzo wpływowy w rozwoju języków programowania, zwłaszcza funkcjonalnych języków programowania , takich jak SASL , Miranda , ML , Haskell i ich następcy oraz języków programowania przepływu danych , takich jak Lucid .
Projekt
ISWIM jest konieczne programowania język z rdzeniem funkcjonalnej składającej się z składniowej słodzenie z rachunku lambda , do którego dodawane są zmienne zmienny i przyporządkowanie i potężny mechanizm kontrolny: punkt programu operatora . Opierając się na rachunku lambda, ISWIM posiada funkcje wyższego rzędu i zmienne o zasięgu leksykalnym .
Semantyka operacyjna ISWIM jest definiowana za pomocą maszyny SECD Landina i wykorzystuje call-by-value, czyli chętną ocenę . Celem ISWIM było upodobnienie się bardziej do notacji matematycznej, więc Landin porzucił średniki ALGOL między wypowiedziami a begin
... end
blokami i zastąpił je regułą off-side i scopingiem opartym na wcięciach .
Notacyjnie wyróżniającą cechą ISWIM jest stosowanie where
klauzul. Program ISWIM jest pojedynczym wyrazem zakwalifikowane przez gdzie klauzule (definicje pomocnicze, w tym równań między zmiennymi), wyrażeń warunkowych i definicji funkcji. Wraz z CPL ISWIM był jednym z pierwszych języków programowania, w których używano klauzul where .
Godną uwagi cechą semantyczną była możliwość definiowania nowych typów danych, jako (ewentualnie rekurencyjnej) sumy produktów. Dokonano tego za pomocą nieco rozwlekłego opisu stylu języka naturalnego, ale poza notacją sprowadza się dokładnie do algebraicznych typów danych występujących we współczesnych językach funkcjonalnych. Zmienne ISWIM nie miały wyraźnych deklaracji typu i wydaje się prawdopodobne (chociaż nie zostało to wyraźnie określone w artykule z 1966), że Landin chciał, aby język był typowany dynamicznie, jak LISP, a w przeciwieństwie do ALGOL ; ale jest też możliwe, że zamierzał opracować jakąś formę wnioskowania o typie .
Wdrożenia i pochodne
Nie podjęto żadnej bezpośredniej implementacji ISWIM, ale język PAL Arta Evana i język Gedanken Johna C. Reynoldsa uchwycił większość koncepcji Landina, w tym potężne operacje przekazywania kontroli. Oba zostały wpisane dynamicznie . ML Milnera może być uważany za równoważny I PŁYWANIE bez operatora J iz wnioskowaniem o typie .
Inną linią wywodzącą się z ISWIM jest usunięcie cech imperatywnych (przypisania i operatora J), pozostawiając język czysto funkcjonalny. Możliwe staje się wtedy przejście na leniwą ocenę . Ta ścieżka doprowadziła do języków programowania SASL , Kent Recursive Calculator (KRC), Hope , Miranda , Haskell i Clean .