Api api kolekcji ma kilka interesujących właściwości i zastanawiam się, jak można to zaimplementować w Haskell; lub jeśli jest to nawet możliwe (lub ogólnie dobry pomysł). Jestem trochę początkującym fanem, więc chciałbym usłyszeć twoje myśli.Czy jest możliwe utworzenie api kolekcji jak Scala 2.8 w Haskell?
Definicja scala mapa wygląda następująco:
def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That
Interesującą cechą tego rozwiązania jest to, że jeśli mapa na sznurku a funkcja map zwraca znak, wynik będzie od typu string (i nie lista znaków).
W Haskell, ciąg * jest * wykaz znaków. (To nie odpowiada na twoje pytanie w ogólnym przypadku, ale myślałem, że to nic nie warte.) – mipadi
Dobra biblioteka Scali (2.8) API rozwiązuje problemy związane z * istniejącymi * typami i jak ładnie z nimi grać. Dwa największe przykłady to 'String' i tablice. Bez wspomnianych problemów z istniejącymi typami, wierzę, że wiele domyślnych budowniczych jest niepotrzebnych (są one zaprojektowane, aby umożliwić "zwijanie" do kontenera tego samego typu, co dane wejściowe). –
pst, nie tak. Zobacz ten przykład z Martina Odersky'ego (http://stackoverflow.com/questions/1722726/is-the-scala-2-8-collections-library-a-case-of-the-the-the-suite-suicide-note-in-histo/1728140 # 1728140) gdzie problem polega na tym, że BitSet ma bardzo wydajną reprezentację, która jest kompatybilna tylko z intami, ale chcielibyśmy móc go traktować jak dowolny zestaw z mapą itp. Jeśli był to tylko problem "istniejących typów" następnie BitSet może zostać odrzucony. –