Czytałem o kombinatorach i widziałem, jak użyteczne są one (na przykład w Paraskach Haskella). Moim problemem jest to, że nie jestem całkiem pewien, jak z nich korzystać praktycznie.Nie wiem, jak zaprojektować użyteczną bibliotekę przy użyciu kombinatorów
Oto zarys problemu: dystrybucje można generować, filtrować i modyfikować. Dystrybucje można łączyć, tworząc nowe dystrybucje.
Podstawowe interfejsy (w rodzaju pseudo-Haskell terminologii):
generator:: parameters -> distribution
selector:: parameters -> (distribution -> distribution)
modifier:: parameters -> (distribution -> distribution)
Teraz myślę, że widzę trzy kombinatorów:
combine:: generator -> generator -> generator
filter:: generator -> selector -> generator
modify:: generator -> modifier -> generator
są te faktycznie kombinatorów? Czy kombinatory mają sens? Czy są jakieś inne oczywiste kombinatory, których mi brakuje?
Dzięki za radę.
Postaraj się ograniczyć swoje pytanie do jego esencji, aby uzyskać dobre odpowiedzi. – Pindatjuh
Czym jest - oprócz nazwy - zasadnicza różnica między "filtrem" a "modyfikacją"? – fuz
"Selektor" usuwa niektóre punkty z rozkładu; modyfikator dostosowuje położenie niektórych punktów w rozkładzie. Tak więc moim zamysłem z "filtrem" jest połączenie generatora i selektora z nowym generatorem, który utworzy podzbiór rozkładu oryginalnego generatora. I dla "modyfikuj" - zrób generator z modyfikatora generatora +. –