1. Nauka
  2. /
  3. Kursy
  4. /
  5. Funkcyjne programowanie średnio zaawansowane z purrr

Connected

ćwiczenie

Rozpoznawanie czystych funkcji

Czysta funkcja spełnia dwa warunki:

  • Jej wynik zależy wyłącznie od argumentów wejściowych – dla tych samych danych wejściowych zawsze zwraca ten sam wynik.
  • Nie ma efektów ubocznych, tzn. nie wpływa na nic poza samą funkcją.

Wiele funkcji w R nie jest czystych, a mimo to są niezbędne w codziennej pracy: podczas analizy trzeba pobierać pliki, tworzyć wykresy, zapisywać wyniki…

Pisząc kod, warto dążyć do tego, żeby funkcje były albo jak najbardziej czyste, albo jak najbardziej „nieczyste" (na przykład funkcja pobierająca plik powinna robić tylko to i nic więcej). Żeby jednak to osiągnąć, musisz najpierw umieć odróżnić czystą funkcję od nieczystej.

Właśnie to zrobimy w tym ćwiczeniu: uruchomimy kilka funkcji – czystych i nieczystych – i zobaczymy, jakie zwracają wyniki.

Instrukcje 1/4

undefined XP
  • 1

    Uruchom Sys.time(), następnie Sys.sleep(1), a potem znowu Sys.time() – przekonaj się, jak dwa wywołania tej samej funkcji mogą zwracać różne wyniki.

  • 2

    Uruchom nrow(iris), następnie Sys.sleep(1), a potem znowu nrow(iris) – sprawdź, że oba wywołania zwracają ten sam wynik, niezależnie od upływu czasu.

  • 3

    Uruchom ls(), które wyświetla obiekty w środowisku. Utwórz nowy obiekt o nazwie this zawierający wartość 12, a następnie uruchom ls() ponownie.

  • 4

    Uruchom plot(iris), które tworzy podstawowy wykres dla zbioru danych iris. Zwróć uwagę, że nic nie zostaje wypisane w konsoli – efektem jest wyłącznie efekt uboczny w postaci wykresu.