Po nauce języka Haskell i innych niezbyt czystych języków FP postanowiłem przeczytać o teorii kategorii. Po dobrym zrozumieniu teorii kategorii zacząłem myśleć o tym, jak pojęcia teorii kategorii można wykorzystać do projektowania programów, ale bez względu na to, jak bardzo się starałem, nie jest to dobra droga.
Po wielu nieudanych próbach powiązania teorii kategorii z projektowaniem programów doszedłem do wniosku, że:
- Teoria kategorii jest przydatna przy projektowaniu języka programowania .
- Teoria kategorii nie jest czymś, czego używasz podczas projektowania programów (nawet jeśli używasz języka, który został zaprojektowany w oparciu o zasady kategorii). Na przykład: Podczas programowania w Haskell będziesz używać typów, konstruktorów typów, funkcji, funkcji wyższego rzędu itp. Do projektowania programu, a nie pojęć teorii kategorii.
Podsumowując, mamy system warstwowy (kolejność od niskiej do wysokiej):
Teoria kategorii -> Język programowania -> Program
Na konkretnej warstwie korzystasz z koncepcji bezpośredniej warstwy podstawowej .
Czy to zrozumienie jest prawidłowe? Jeśli nie, a uważasz, że przy projektowaniu programów możemy bezpośrednio korzystać z koncepcji teorii kategorii, zapoznaj się z niektórymi artykułami lub postami na blogu, gdzie są one demonstrowane.
UWAGA: Projektując programy, mam na myśli projektowanie programów opartych na różnych koncepcjach, takich jak współbieżność, równoległość, reaktywność, przekazywanie wiadomości itp.