Bardzo lubię Haskella, szczególnie silny system typów. Kiedy otrzymuję programy Haskella do kompilacji, są one generalnie wolne od błędów lub przynajmniej bardzo blisko.Bezpieczne korzystanie z przestrzeni typu Haskell
Jednak głównym problemem z Haskell jest jego nieznane wykorzystanie przestrzeni. Przynajmniej powiedzmy, C++, możesz być dość pewny co do wykorzystania przestrzeni programu. Jest całkiem jasne, kiedy konstruujesz i dekonstruujesz obiekty.
W Haskell rzeczy tak proste, jak fałdy, mogą wykorzystać ogromną ilość miejsca w puntach, jeśli nie zapisujesz ich poprawnie. Awaria programu spowodowana brakiem pamięci nie jest dużo lepsza niż jakiś inny błąd, prawdopodobnie gorszy.
Wiem, że istnieją sposoby na uniknięcie tych wycieków przestrzeni kosmicznej, ale szukam bezpiecznych sposobów na uniknięcie tych wycieków przestrzeni kosmicznej. Jak w przypadku, jeśli zrobię to źle, dostanę jakiś błąd kompilacji, nie tylko mam nadzieję, że mój program wywróci pamięć podczas jego produkcji. Cieszę się, na przykład, zastąpić standardowe funkcje biblioteki (może, powiedzmy, że krotnie, który ma błąd kompilacji, jeśli na przykład akumulator nie jest ścisły).
Czy coś takiego istnieje w Haskell?
Zakładając to zoo http://blog.ezyang.com/2011/05/space-leak-zoo/ które powinny kontrolować typy systemów typu przecieki? Do streamingu nieszczelności są wystarczające. –
Na przykład wycieki Thunk. Czy możesz również wyjaśnić, jak przewody pracują z czystym kodem, aby kontrolować wykorzystanie przestrzeni (np. Coś, co wycieka z listą, ale nie ma kanału? – Clinton
Istnieje wiele konstrukcji, takich jak przewody, które są zaprojektowane tak, aby umożliwić przetwarzanie strumieni danych w czasie Są to iteracje, przewody, potoki i strumienie io, a także niektóre biblioteki do wysokowydajnych obliczeń, które dokonują optymalizacji zwanej fuzją strumieniową: –