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.
Zakładając, że mam listę z ogromną liczbą pozycji. l = [ 1, 4, 6, 30, 2, ... ] Chcę uzyskać liczbę pozycji z tej listy, dla których pozycja powinna spełniać określony warunek. Moją pierwszą myślą było: count = len([i for i in l if my_condition(l)]) Ale jeśli lista filtrowana my_condition …
Dużo czytałem o zamknięciach i myślę, że je rozumiem, ale bez zaciemniania obrazu sobie i innym mam nadzieję, że ktoś może wyjaśnić zamknięcia tak zwięźle i jasno, jak to tylko możliwe. Szukam prostego wyjaśnienia, które pomoże mi zrozumieć, gdzie i dlaczego chciałbym ich używać.
Dwa warunki definiujące funkcję puresą następujące: Brak skutków ubocznych (tj. Dozwolone są tylko zmiany w zakresie lokalnym) Zawsze zwracaj to samo wyjście, mając te same dane wejściowe Jeśli pierwszy warunek jest zawsze prawdziwy, czy zdarza się, że drugi warunek nie jest prawdziwy? Czy naprawdę jest to konieczne tylko w przypadku …
Jaka jest motywacja przypisania Scali do oceny Jednostki, a nie przypisanej wartości? Typowy wzorzec w programowaniu we / wy polega na wykonywaniu następujących czynności: while ((bytesRead = in.read(buffer)) != -1) { ... Ale w Scali nie jest to możliwe, ponieważ ... bytesRead = in.read(buffer) .. zwraca Unit, a nie nową …
Czy ktoś może mi wyjaśnić pisanie na klawiaturze zależnej? Mam niewielkie doświadczenie w języku Haskell, Cayenne, Epigram lub innych językach funkcjonalnych, więc im prostszych terminów użyjesz, tym bardziej to docenię!
Nie jestem w stanie zrozumieć sensu Option[T]zajęć w Scali. To znaczy, nie jestem w stanie dostrzec żadnych zalet Noneponad null. Na przykład rozważ kod: object Main{ class Person(name: String, var age: int){ def display = println(name+" "+age) } def getPerson1: Person = { // returns a Person instance or null …
Szukam naprawdę prostych, łatwych do zrozumienia wyjaśnień schematów rekurencyjnych i korekturalnych (katamorfizmów, anamorfizmów, hylomorfizmów itp.), Które nie wymagają podążania za wieloma linkami ani otwierania podręcznika teorii kategorii. Jestem pewien, że wymyśliłem wiele z tych schematów nieświadomie i "zastosowałem" je w swojej głowie podczas procesu kodowania (jestem pewien, że wielu z …
Zdaję sobie sprawę, że jest tu kilka pytań o to, czym są funkcje curry i częściowo stosowane, ale pytam, czym się różnią. Jako prosty przykład, oto funkcja curry do znajdowania liczb parzystych: def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: filter(xs.tail, …
Często czytam ten termin na blogach o haskell i programowaniu funkcjonalnym (szczególnie na blogu sigfpe ), ale nie mam pojęcia, co to znaczy. Przez większość czasu udaje mi się nie wiedzieć, ale prawdopodobnie zrozumiałbym teksty dużo lepiej, gdybym wiedział. Google mi nie pomogło. Gubię się w sprawach technicznych. Również nietechniczne …
flatMapjest niesamowicie przydatny w przypadku kolekcji, ale javascript nie udostępnia go podczas posiadania Array.prototype.map. Czemu? Czy istnieje sposób na emulację flatMapw javascript zarówno w łatwy, jak i efektywny sposób bez flatMapręcznego definiowania ?
Dlaczego dostawcy wspierają tylko konstruktorów bez argonu? Jeśli obecny jest domyślny konstruktor, mogę to zrobić: create(Foo::new) Ale jeśli jedyny konstruktor przyjmuje String, muszę to zrobić: create(() -> new Foo("hello"))
Czy ktoś mógłby mi wyjaśnić funkcjonalne soczewki? To zaskakująco trudny temat do wygooglowania i nie poczyniłem żadnych postępów. Wiem tylko, że zapewniają podobną funkcjonalność get / set niż w OO.
Według mojego zrozumienia, funkcje częściowe są funkcjami, które otrzymujemy, przekazując do funkcji mniej parametrów niż oczekiwano. Na przykład, jeśli byłoby to bezpośrednio poprawne w Pythonie: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 W powyższym fragmencie new_functionznajduje się funkcja częściowa. Jednak według Haskell Wiki …
Obecnie pracuję nad prostym tłumaczem dla języka programowania i mam taki typ danych: data Expr = Variable String | Number Int | Add [Expr] | Sub Expr Expr I mam wiele funkcji, które wykonują proste rzeczy, takie jak: -- Substitute a value for a variable substituteName :: String -> Int …
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.