Haskellowe klasy typów można porównać do znanych z języków obiektowych interfejsów. Definiują one funkcje, które powinny zostać zaimplementowane dla korzystających z nich typów. Przykład na start Zastanówmy się nad dostępnym w języku C# interfejsem IEquatable, pozwalającym na porównywanie implementujących go obiektów.
Read MoreMiesiąc: luty 2021
Dynamiczne modyfikowanie prologowej bazy wiedzy
Proces tworzenia prostych prologowych aplikacji przebiega zazwyczaj podobnie. Zaczynamy od stworzenia bazy wiedzy, definiujemy niezbędne predykaty (niekiedy również w tym samym pliku), a następnie odpalamy interpreter i pytamy o fakty oraz łączące je relacje. Czy oznacza to, że zdefiniowana na samym początku baza jest czymś niemodyfikowalnym z punktu widzenia programu? Czy możemy zmieniać fakty przy […]
Read MoreAlgebraiczne typy danych i haskellowe rekordy
Kiedy w językach obiektowych potrzebujemy struktury, opisującej jakieś dane, tworzymy po prostu klasę. W Haskellu mamy zaś… algebraiczne typy danych. Ale dlaczego algebraiczne? Czy kryje się tutaj jakaś czyhająca na nas komplikacja? Przyjrzyjmy się tej sprawie i rozwikłajmy zagadkę haskellowych ADT (ang. Algebraic Data Types). Dlaczego algebraiczne? Mając do dyspozycji garść podstawowych typów danych, takich […]
Read More