Metody realizacji języków programowania/MRJP Wykład 12
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Implementacja języków funkcyjnych
Specyficzne cechy języków funkcyjnych
Języki funkcyjne posiadają pewne specyficzne cechy, które sprawiają, że metody ich implementacji różnią się znacząco od języków imperatywnych.
Funkcje są pełnoprawnymi obywatelami (ang. first-class citizens):
1. Mogą być argumentami funkcji
2. Mogą być wynikami funkcji
3. Mogą być częściowo aplikowane
4. Mogą być tworzone anonimowo
Spójrzmy na prosty przykład ilustrujący te cechy:
map :: (a->b) -> [a] -> [b] map f [] = [] map f (x:xs) = (f x):(map f xs) increaseAll :: [Int] -> [Int] increaseAll = map (\x->x+1)
Funkcja map bierze jako argumenty funkcję typu (a->b) i listę elementów typu a, dając w wyniku listę elementów typu b. Zauważmy jednak, że typ funkcji map można odczytać inaczej: argumentem jest funkcja typu (a->b), zaś wynikiem...funkcja typu [a]->[b]