Po krótkim spojrzeniu na Haskella, jakie byłoby krótkie, zwięzłe i praktyczne wyjaśnienie, czym właściwie jest monada? Odkryłem, że większość wyjaśnień jest dość niedostępna i pozbawiona praktycznych szczegółów.
W kategoriach zrozumiałych dla programisty OOP (bez żadnego funkcjonalnego tła programowania), czym jest monada? Jaki problem rozwiązuje i jakie są najczęściej używane miejsca? EDYTOWAĆ: Aby wyjaśnić rodzaj zrozumienia, którego szukałem, załóżmy, że konwertujesz aplikację FP, która miała monady, na aplikację OOP. Co byś zrobił, aby przenieść obowiązki monad na aplikację …
Kto pierwszy powiedział, co następuje? Monada to po prostu monoid w kategorii endofunkorów, na czym polega problem? A w mniej ważnej sprawie, czy to prawda, a jeśli tak, to czy mógłbyś podać wyjaśnienie (mam nadzieję, że może to być zrozumiałe dla kogoś, kto nie ma dużego doświadczenia Haskell)?
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Zamknięte 3 lata temu . Zablokowana . To pytanie i odpowiedzi są zablokowane, ponieważ pytanie jest nie na temat, ale ma znaczenie historyczne. Obecnie nie akceptuje nowych odpowiedzi ani interakcji. Jaki jest dobry sposób projektowania / struktury …
Jeśli mam EnumeratorTodpowiedni odpowiednik IterateeT, mogę je uruchomić razem: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT.length (it &= en).run : Task[Int] Jeśli monada modułu wyliczającego jest „większa” niż monada iteracyjna, mogę użyć uplub, bardziej ogólnie, Hoist„podnieść” iterat, aby dopasować: val en: EnumeratorT[String, …
Widziałem termin Monada bezpłatny pojawiają się za każdym teraz i potem przez jakiś czas, ale wszyscy po prostu wydaje się używać / omówić je bez podania wyjaśnienia, jakie są. Czym są darmowe monady? (Powiedziałbym, że jestem zaznajomiony z monadami i podstawami Haskella, ale mam tylko bardzo przybliżoną wiedzę na temat …
Moim skromnym zdaniem odpowiedzi na słynne pytanie „Co to jest monada?” , zwłaszcza tych najczęściej głosowanych, spróbuj wyjaśnić, co to jest monada, bez wyraźnego wyjaśnienia, dlaczego monady są naprawdę potrzebne . Czy można je wyjaśnić jako rozwiązanie problemu?
Wyjaśniając komuś, czym jest klasa X, staram się znaleźć dobre przykłady struktur danych, które są dokładnie X. Proszę o przykłady: Konstruktor typów, który nie jest Functorem. Konstruktor typów, który jest Functorem, ale nie ma zastosowania. Konstruktor typów, który jest aplikacyjny, ale nie jest monadą. Konstruktor typów, który jest Monadą. Myślę, …
Obecnie dużo mówi się o monadach. Przeczytałem kilka artykułów / postów na blogu, ale nie mogę posunąć się za daleko z ich przykładami, aby w pełni zrozumieć tę koncepcję. Powodem jest to, że monady są pojęciem języka funkcjonalnego, a zatem przykłady są w językach, z którymi nie pracowałem (ponieważ nie …
Czy ktokolwiek mógłby podać kilka wskazówek, dlaczego nieczyste obliczenia w Haskell są modelowane jako monady? Chodzi mi o to, że monada to tylko interfejs z 4 operacjami, więc jaki był powód modelowania w niej efektów ubocznych?
Monada czytelnicza jest tak złożona i wydaje się bezużyteczna. W języku imperatywnym, takim jak Java czy C ++, nie ma odpowiednika koncepcji monady czytelnika, jeśli się nie mylę. Czy możesz podać mi prosty przykład i trochę to wyjaśnić?
Rozważ sytuację, w której mam trzy (lub więcej) sposoby wykonywania obliczeń, z których każdy może zawieść z wyjątkiem. Aby spróbować każdego obliczenia, aż znajdziemy taki, który się powiedzie, wykonałem następujące czynności: double val; try { val = calc1(); } catch (Calc1Exception e1) { try { val = calc2(); } catch …
Zamknięte. To pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było na temat przepełnienia stosu. Zamknięte 4 lata temu . Popraw to pytanie Istnieje wiele funkcjonalnych idiomów: monady, aplikacje, strzałki itp. Są one udokumentowane w różnych artykułach, ale niestety …
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Dlaczego mamy trzy różne funkcje, które zasadniczo robią to samo?
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.