Powoli przebijam się przez Category Theory for Programmers Bartosza Milewskiego i mam wrażenie, że omawiane są podstawy teoretyczne dla konstruktów udostępnianych przez funkcyjne języki programowania. Dzięki temu wiemy jak dany konstrukt się zachowuje i dlaczego tak jest.
a) Czy w rozwoju języków funkcyjnych jest tak, że są rozważane jakieś struktury algebraiczne, a na tej podstawie powstają nowe funkcjonalności języka? Innymi słowy, skąd się biorą nowe języki funkcyjne? W OOP raczej nic nowego nie wymyślono (pomijając argumenty padające we flame wars). W przypadku funkcyjnych wydaje mi się, że rozwój teorii matematycznej jest takim czynnikiem warunkującym rozwój języka. Ale może nie jest to prawda i jest zupełnie inaczej?
b) Czy czytając jakiś kod źródłowy macie obserwacje typu 'o k**a, przecież to profunktor i dlatego XYZ nie będzie się komponować z ABC, muszę zrewidować rozwiązanie'? Czy raczej z perspektywy użytkownika języka (ale nie będącego projektantem języka) nie ma miejsca na takie rozważania? ;)
c) Pytanie do osób, które tworzą bibliotek w językach funkcyjnych. Na ile teoria kategorii/algebra jest przydatna, do tworzenia ogólnych rozwiązań? Mam na myśli przejście z rozwiązania z jakiegoś konkretnego problemu (używając analogii z OOP i np. C++ - mamy klasę
), do poziomu powiedzmy "średniego", gdzie uogólniamy pewne rzeczy (klasa
-> szablon
) , na poziom "wyższy", gdzie jest już totalna abstrakcja (klasa
-> template
-> template of template
- tu nie wiem czy C++ wspiera takie pomysły, ale idea mam nadzieję zrozumiała).