Czytam o LISP.
Rozumiem, jak działa notacja prefiksowa na pewnym poziomie, ale zastanawiałem się, czy są jakieś sztuczki, aby uczynić ją intuicyjną.
Czytam o LISP.
Rozumiem, jak działa notacja prefiksowa na pewnym poziomie, ale zastanawiałem się, czy są jakieś sztuczki, aby uczynić ją intuicyjną.
Odpowiedzi:
Pomocne może być czytanie mentalne od lewej do prawej jako język mówiony z odpowiednimi czasownikami. Na przykład (+ 3 2) może oznaczać „dodaj trzy i dwa”. W bardziej ogólnym przypadku możesz powiedzieć „wykonaj operację $ na operandach $”. Zastosowano w tym samym przypadku: „Wykonaj operację dodawania dla trzech i dwóch”.
( = 1 2 )
i( > 4 2 )
Wydziwianie? Po co?
Nie wydaje ci się to intuicyjne, ponieważ parser mentalny nie jest do tego przyzwyczajony. Będzie lepiej, jeśli będziesz go używać i czytać w kółko.
Możesz myśleć o tym jako o rodzaju wywołania funkcji:
(operator operand1 operand2 ...)
Nie ma w tym nic specjalnego. Jeśli przeciążasz operatorów w C ++ (i wielu innych językach, które na to pozwalają), często musisz dokładnie zdefiniować ten rodzaj funkcji:
MyClass operator+(MyClass const& x, MyClass const& y);
Wiele języków używa kombinacji przedrostka, przyrostka, a nawet postfiksa.
Lisp używa tylko prefiksu - domyślnie. Jeśli sin (x) jest intuicyjny w matematyce, to (sin x) nie jest daleko. Jeśli przeprowadzka (pies, dom) jest tradycyjnym wezwaniem na zabieg, to w Lisp jest to po prostu (przeprowadzka pies do domu).
Lisp nie robi żadnego wyjątku dla matematyki i traktuje +, -, * i inne jak zwykłe wywołania funkcji.