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.
Czytając ten klasyczny artykuł , utknąłem na paramorfizmach. Niestety sekcja jest dość cienka, a strona Wikipedii nic nie mówi. Moje tłumaczenie Haskell to: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) …
Biorąc pod uwagę następującą listę Scala: val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3")) Jak mogę zdobyć: List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3")) Ponieważ zip może być używany tylko do łączenia dwóch list, myślę, że musiałbyś jakoś powtórzyć / zmniejszyć główną listę. Nic …
Ten kod działa (pobrany w Javadoc): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); Tego nie można skompilować: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers = Arrays.stream(numbers) .map((Integer i) -> i.toString()) .collect(Collectors.joining(", ")); IDEA mówi mi, że mam „niezgodny ciąg …
Widzę tutaj kilka interesujących dyskusji na temat pisania statycznego i dynamicznego. Generalnie wolę wpisywanie statyczne, ze względu na sprawdzanie typów kompilacji, lepiej udokumentowany kod itp. Zgadzam się jednak, że zaśmiecają one kod, jeśli są robione tak, jak robi to na przykład Java. Więc zaraz zacznę budować własny funkcjonalny język stylów, …
Co to jest kombinator? Czy jest to „funkcja lub definicja bez wolnych zmiennych” (zgodnie z definicją w SO)? A co powiesz na to: według Johna Hughesa w jego dobrze znanym artykule na temat strzałek „kombinator to funkcja, która buduje fragmenty programu z fragmentów programu” , co jest korzystne, ponieważ „… …
Niedawno dwukrotnie refaktoryzowałem kod, aby zmienić kolejność parametrów, ponieważ było zbyt dużo kodu, w którym hacki takie jak fliplub \x -> foo bar x 42miały miejsce. Jakie zasady pomogą mi jak najlepiej wykorzystać curry podczas projektowania podpisu funkcji?
W Pythonie chciałbym napisać funkcję, make_cylinder_volume(r)która zwraca inną funkcję. Ta zwrócona funkcja powinna być wywoływalna za pomocą parametru hi zwracać objętość walca wraz z wysokością hi promieniem r. Wiem, jak zwrócić wartości z funkcji w Pythonie, ale jak zwrócić inną funkcję ?
Jeśli funkcjonalne języki programowania nie mogą zapisać żadnego stanu, w jaki sposób robią proste rzeczy, takie jak czytanie danych wejściowych od użytkownika? W jaki sposób „przechowują” dane wejściowe (lub przechowują jakiekolwiek dane?) Na przykład: w jaki sposób ta prosta rzecz w C mogłaby przełożyć się na funkcjonalny język programowania, taki …
Od jakiegoś czasu obserwuję rosnącą widoczność funkcjonalnych języków programowania i funkcji. Zajrzałem do nich i nie widziałem powodu odwołania. Niedawno byłem na prezentacji Kevina Smitha „Basics of Erlang” w Codemash . Podobała mi się prezentacja i dowiedziałem się, że wiele atrybutów programowania funkcjonalnego znacznie ułatwia unikanie problemów z wątkami / …
Języki funkcjonalne prowadzą do wykorzystania rekurencji do rozwiązywania wielu problemów, dlatego wiele z nich wykonuje Tail Call Optimization (TCO). TCO powoduje, że wywołania funkcji z innej funkcji (lub samej siebie, w którym to przypadku ta funkcja jest również znana jako eliminacja rekurencji ogona, która jest podzbiorem TCO), jako ostatni krok …
Chcę spakować następującą listę list: >>> zip([[1,2], [3,4], [5,6]]) [[1,3,5], [2,4,6]] Można to osiągnąć przy obecnej zipimplementacji tylko wtedy, gdy lista jest podzielona na poszczególne komponenty: >>> zip([1,2], [3,4], [5,6]) (1, 3, 5), (2, 4, 6)] Nie mogę dowiedzieć się, jak podzielić listę i przekazać jej poszczególne elementy zip. Preferowane …
Przeczytałem kilka artykułów na temat polimorfizmu, które mogłem znaleźć w Internecie . Ale myślę, że nie mogłem do końca pojąć jego znaczenia i wagi. Większość artykułów nie mówi, dlaczego jest to ważne i jak mogę osiągnąć polimorficzne zachowanie w OOP (oczywiście w JavaScript). Nie mogę podać żadnego przykładu kodu, ponieważ …
Mam rekurencyjny algorytm znajdowania ścieżki ogona, który zaimplementowałem w JavaScript i chciałbym wiedzieć, czy którakolwiek (wszystkie?) Przeglądarki prawdopodobnie otrzymają wyjątki przepełnienia stosu.
Próbuję wyobrazić sobie kilka prostych, automatycznych układów fizycznych (takich jak wahadło, ramiona robotów itp.) W Haskell. Często systemy te można opisać równaniami takimi jak df/dt = c*f(t) + u(t) gdzie u(t)reprezentuje rodzaj „inteligentnej kontroli”. Systemy te bardzo dobrze pasują do paradygmatu programowania funkcjonalnego reaktywnego. Więc złapałem książkę „Haskell Szkołę wyrażenie” …
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.