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.
Oglądałem wykład Jima Weiricha zatytułowany „ Przygody w programowaniu funkcjonalnym ”. W tym wykładzie wprowadza pojęcie kombinatorów Y, które zasadniczo znajduje punkt stały dla funkcji wyższego rzędu. Jedną z motywów, jak wspomina, jest możliwość wyrażenia funkcji rekurencyjnych za pomocą rachunku lambda, tak aby teoria Kościoła (wszystko, co można skutecznie obliczyć, …
Nasz profesor poprosił nas o przemyślenie funkcji w OCaml, która ma ten typ 'a -> 'b tj. funkcja jednego argumentu, który może być czymkolwiek, i który może zwrócić coś innego. Myślałem o użyciu raisefunkcji, która ignoruje jej argument: let f x = raise Exit Ale profesor powiedział, że istnieje rozwiązanie, …
Zgodnie z tym artykułem następujący wiersz kodu Lisp wypisuje „Hello world” na standardowe wyjście. (format t "hello, world") Lisp, który jest językiem homoiconic , może traktować kod jako dane w następujący sposób: Teraz wyobraź sobie, że napisaliśmy następujące makro: (defmacro backwards (expr) (reverse expr)) wstecz to nazwa makra, która przyjmuje …
Ostatnio bardzo się zainteresowałem zrozumieniem i sprawdzeniem aspektów (funkcjonalnych) języków programowania. Jednak gdy zagłębiam się głębiej, rzeczy takie jak rachunek , teoria kategorii i semantyka denotacyjna są nieco trudne do odczytania bez odpowiedniego wyjaśnienia.λλ\lambda Czytam SICP (całkiem pouczającą książkę), ale chcę zagłębić się w teorię programowania funkcjonalnego. Czy są jakieś …
W artykule Philipa Wadlera na temat Twierdzeń za darmo stwierdza w części 2, że parametryczność, że nie ma naiwnych teoretycznych modeli polimorficznego rachunku lambda W naiwnym modelu teoretycznym zestawu typy są zestawami, a funkcje są funkcjami zestawu teoretycznego, co wydaje się rozsądne. Dlaczego więc mówi, że nie ma naiwnych modeli …
Procesory są w pewnym stopniu zaprojektowane z myślą o oprogramowaniu, które ludzie będą dla niego pisać, w sposób dorozumiany lub jawny. Wydaje mi się, że jeśli spojrzysz na projekt architektury zestawów instrukcji, są one bardzo „imperatywne”, w tym sensie, że każda instrukcja koduje polecenie stylu imperatywnego. Wydaje mi się również, …
Czy ktoś może skierować mnie do recenzowanych artykułów badających zalety lub wady pisania kodu w funkcjonalnym stylu? Czy są artykuły omawiające zastosowania Lambda Calculus w takich dziedzinach, jak uczenie maszynowe, projektowanie języków itp.?
Programowanie funkcjonalne ma bardzo elegancki rachunek lambda i jego warianty jako teorię kopii zapasowej. Czy istnieje coś takiego dla OOP? Czym jest abstrakcja dla modelu obiektowego?
Zadałem podobne pytanie na cstheory.SE . Zgodnie z tą odpowiedzią na Stackoverflow istnieje algorytm, który w nieliniowym czystym funkcjonalnym języku programowania ma złożoność , podczas gdy tym samym algorytmem w programowaniu imperatywnym jest Ω ( n ) . Dodanie lenistwa do języka FP spowodowałoby, że algorytm Ω ( n ) …
Czy są jakieś zmiany, które można wprowadzić w procesorach, aby działały lepiej w przypadku równoczesnych środowisk uruchomieniowych, takich jak Rust? Na przykład, czy są jakieś zmiany w implementacjach przewidywania gałęzi lub rozmiarach pamięci podręcznej, które pomogłyby w jednoczesnych uruchomieniach? Mam wrażenie, że obecne konstrukcje procesorów mogą być bardziej zoptymalizowane pod …
Na wiki haskell znajduje się następujący przykład warunkowego użycia monady IO (patrz tutaj) . when :: Bool -> IO () -> IO () when condition action world = if condition then action world else ((), world) Zauważ, że w tym przykładzie IO aprzyjęto definicję, RealWorld -> (a, RealWorld)aby wszystko było …
Myślę, że rozumiem, w jaki sposób wylesianie zużywa i tworzy listę w tym samym czasie (z funkcji składania i rozwijania - zobacz tę dobrą odpowiedź na CodeReview tutaj ), ale kiedy porównałem to z wpisem wikipedia o technice , o której mówił „usuwanie” drzewa ”z programu. Rozumiem, w jaki sposób …
Załóżmy, że ktoś chce argumentować o właściwościach kodu wykraczających poza takie rzeczy, jak totalność i czystość funkcjonalna - dba się również o zużycie pamięci lub złożoność algorytmiczną funkcji. Czy można tego dokonać za pomocą zależnych systemów pisania i efektów?
Szukam trwałej struktury danych podobnej do tablicy (ale niezmiennej), umożliwiającej szybkie indeksowanie, dołączanie, dodawanie i iterację (dobra lokalizacja). Clojure zapewnia trwały Vector, ale służy tylko do szybkiego dołączania. Vector Scali ma efektywnie dołączanie i dodawanie w czasie stałym, ale nie mogę zrozumieć, jak jest zaimplementowany, ponieważ jest oparty na tej …
W komentarzu do Nauka F #: Jakie książki w innych językach programowania można przetłumaczyć na F #, aby nauczyć się funkcjonalnych koncepcji? Makarius stwierdził: Zauważ, że podejście „CPS” wyrządziło wielką szkodę wydajności w SML / NJ. Jego model oceny fizycznej narusza zbyt wiele założeń wbudowanych w sprzęt. Jeśli weźmiesz duże …
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.