Programowanie funkcjonalne jest paradygmatem programowania, który wykorzystuje funkcje głównie jako środki do tworzenia abstrakcji i wyrażania obliczeń składających się na program komputerowy.
Pracuję nad językiem genealogicznym ML opartym na wyrażeniach, więc oczywiście wymaga wnioskowania typu> :) Teraz próbuję rozszerzyć oparte na ograniczeniach rozwiązanie problemu wnioskowania typów, oparte na prostej implementacji w EOPL (Friedman i Wand), ale są to eleganckie algebraiczne typy danych. To, co mam do tej pory, działa płynnie; Jeśli wyrażenie …
Zwrócono mi uwagę, że koszt wnioskowania o typ w funkcjonalnym języku, takim jak OCaml, może być bardzo wysoki. Twierdzenie jest takie, że istnieje ciąg wyrażeń taki, że dla każdego wyrażenia długość odpowiedniego typu jest wykładnicza względem długości wyrażenia. Wymyśliłem sekwencję poniżej. Moje pytanie brzmi: czy znasz sekwencję z bardziej zwięzłymi …
Nie znam poprawnej terminologii do zadawania tego pytania, dlatego opiszę to wieloma słowami, proszę o wyrozumiałość. Tło , więc jesteśmy na tej samej stronie: programy często zawierają pamięci podręczne - kompromis czas / pamięć. Częstym błędem programisty jest zapomnienie o aktualizacji pamięci podręcznej po zmianie jednego z jej źródeł / …
Chcę przedstawić dowody dla części programu Haskell, który piszę w ramach mojej pracy magisterskiej. Jednak jak dotąd nie udało mi się znaleźć dobrej pracy referencyjnej. Książka wprowadzająca Grahama Huttona Programowanie w Haskell ( Google Books ) - którą czytam podczas nauki Haskell - porusza kilka technik rozumowania programów, takich jak …
Typy własne są rozszerzeniem Rachunku konstrukcji [1], które pozwalają językowi wyrażać algebraiczne typy danych zakodowane za pomocą kodowania Scott. Kodowanie Scott daje możliwość dopasowania do wzorca O(1), który jest jednym z głównych czynników motywujących do włączenia definicji indukcyjnych do CC. Jednak typy własne tworzą znacznie prostszą i elegancką teorię podstawową …
Co to są funkcje anonimowe (lambda)? Jaka jest formalna definicja anonimowej funkcji w funkcjonalnym języku programowania? Mówiąc najprościej, kiedy programuję w schemacie / lisp, powiedziałbym, że funkcja anonimowa (lambda) jest funkcją niezwiązaną z identyfikatorem. Czy to wszystko, co możesz formalnie powiedzieć o funkcji lambda? Myślę, że do tej prostej definicji …
Chciałbym porównać wydajność struktur danych zakodowanych funkcyjnie (Church / Scott) i klasycznie zakodowanych (asembler / C). Ale zanim to zrobię, muszę wiedzieć, jak wydajna jest / może być reprezentacja funkcji w pamięci. Funkcję tę można oczywiście częściowo zastosować (inaczej zamknięcie). Interesuję się zarówno obecnym algorytmem kodowania, popularnymi językami funkcjonalnymi (Haskell, …
Chcę wiedzieć, na ile system typów w języku programowania może być korzystny. Na przykład wiem, że w języku programowania o typie zależnym możemy stworzyć Vectorklasę uwzględniającą rozmiar wektora w podpisie typu. To jest jak faktyczny przykład. Możemy również napisać funkcję appendprzy użyciu tych podpisów, aby kompilator udowodnił, że rozmiar listy …
Istnieje więc algorytm konwertujący warunki rachunku lambda na logikę kombinatoryczną za pomocą kombinatorów SK. Produkuje rzeczy, które eksplodują wielkością. Chciałbym dowiedzieć się więcej o tej eksplozji w rozmiarze. Nie mogę jednak wymyślić lepszego algorytmu. Słyszałem, że języki funkcjonalne są praktycznie kompilowane z kombinatorami, więc wydaje się, że musi istnieć lepszy …
Chociaż pracuję jako programista w swoim codziennym życiu i używam wszystkich modnych języków (Python, Java, C itp.), Nadal nie mam jasnego obrazu tego, czym jest programowanie funkcjonalne. Z tego, co przeczytałem, jedną właściwością języków funkcjonalnych jest to, że struktury danych są niezmienne . Dla mnie to samo rodzi wiele pytań. …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.