Programowanie funkcjonalne to paradygmat programowania oparty na budowaniu abstrakcji za pomocą funkcji, unikaniu skutków ubocznych i zmianie stanu. Czyste funkcjonalne programowanie jest bezpieczne dla wątków.
Klasycznym ćwiczeniem programistycznym jest napisanie interpretera Lisp / Scheme w Lisp / Scheme. Możliwości pełnego języka można wykorzystać do stworzenia tłumacza dla podzbioru języka. Czy jest podobne ćwiczenie dla Haskella? Chciałbym zaimplementować podzbiór Haskell, używając Haskella jako silnika. Oczywiście można to zrobić, ale czy są dostępne do obejrzenia jakieś zasoby …
W jakich sytuacjach powinienem wybrać funkcjonalny język programowania zamiast bardziej rozwlekłego języka zorientowanego obiektowo, takiego jak C ++, C # czy Java? Rozumiem, co to jest programowanie funkcjonalne, czego tak naprawdę nie rozumiem, dla jakiego rodzaju problemów jest to idealne rozwiązanie?
Po prostu przez pomyłkę zrobiłem coś takiego w C ++ i to działa. Dlaczego mogę to zrobić? int main(int argc, char** argv) { struct MyStruct { int somevalue; }; MyStruct s; s.somevalue = 5; } Po zrobieniu tego trochę przypomniałem sobie, że czytałem o tej sztuczce gdzieś, dawno temu, jako …
Chciałbym przefiltrować tablicę elementów za pomocą map()funkcji. Oto fragment kodu: var filteredItems = items.map(function(item) { if( ...some condition... ) { return item; } }); Problem polega na tym, że odfiltrowane elementy nadal zajmują miejsce w tablicy i chciałbym je całkowicie usunąć. Dowolny pomysł? EDIT: Dzięki, zapomniałem o filter()to, co chciałem …
Zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 2 lata temu . Popraw to pytanie Bardzo długo myślałem o tym pytaniu, ale naprawdę nie …
Zamknięte . To pytanie wymaga szczegółów lub jasności . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Dodaj szczegóły i wyjaśnij problem, edytując ten post . Zamknięte 21 dni temu . Popraw to pytanie Ostatnio widziałem wiele na temat programowania funkcjonalnego, a Clojure wygląda szczególnie interesująco. Chociaż `` rozumiem '' …
Jaki jest najlepszy sposób na wcześniejsze zakończenie spasowania? Jako uproszczony przykład wyobraź sobie, że chcę zsumować liczby w an Iterable, ale jeśli napotkam coś, czego się nie spodziewam (powiedzmy nieparzystą liczbę), mogę chcieć zakończyć. To jest pierwsze przybliżenie def sumEvenNumbers(nums: Iterable[Int]): Option[Int] = { nums.foldLeft (Some(0): Option[Int]) { case (Some(s), …
Mam listę Strings np. var moviesTitles = ['Inception', 'Heat', 'Spider Man']; i chciałem użyć moviesTitles.mapdo konwersji ich na listę Tab Widgetsw Flutter.
Niedawno ukończyłem kurs uniwersytecki, na którym występowali Haskell i Agda (zależny funkcjonalny język programowania typizowanego) i zastanawiałem się, czy jest możliwe zastąpienie w nich rachunku lambda logiką kombinacyjną. W przypadku Haskella wydaje się to możliwe przy użyciu kombinatorów S i K, dzięki czemu jest to bezcelowe. Zastanawiałem się, jaki jest …
Szukam algorytmu do generowania permutacji zestawu w taki sposób, żebym mógł zrobić leniwą ich listę w Clojure. tj. chciałbym powtórzyć listę permutacji, w przypadku której każda permutacja nie jest obliczana, dopóki o nią nie poproszę, a wszystkie permutacje nie muszą być przechowywane w pamięci naraz. Alternatywnie szukam algorytmu, w którym …
W R (dzięki magrittr ) możesz teraz wykonywać operacje z bardziej funkcjonalną składnią potoków za pośrednictwem %>%. Oznacza to, że zamiast kodować to: > as.Date("2014-01-01") > as.character((sqrt(12)^2) Możesz też to zrobić: > "2014-01-01" %>% as.Date > 12 %>% sqrt %>% .^2 %>% as.character Dla mnie jest to bardziej czytelne i …
Zastanawiam się, jaka jest różnica między tymi operacjami w Scheme. Widziałem podobne pytania w Stack Overflow, ale dotyczą Lispa i nie ma porównania między trzema z tych operatorów. Piszę różne typy poleceń w schemacie i otrzymuję następujące dane wyjściowe: (eq? 5 5) -->#t (eq? 2.5 2.5) -->#f (equal? 2.5 2.5) …
Średnia Biblioteka Haskell typeclasses MonadPlus, Alternativei Monoidkażdy zapewniają dwie metody z zasadniczo tą samą składnię: Pusta wartość: mzero, empty, lub mempty. Operator a -> a -> a, który łączy wartości w typeclass razem: mplus, <|>, lub mappend. Wszystkie trzy określają te prawa, których powinny przestrzegać instancje: mempty `mappend` x = …
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.