Jaki jest odpowiednik funkcji map w języku C # w Haskell
80
funkcja map w Haskell ma dwa parametry wejściowe. Pierwszy parametr to funkcja, a drugi to lista. Funkcja map stosuje funkcję przekazaną jako parametr wejściowy do wszystkich elementów na liście i zwraca nową listę.
Nie wspominając już o tym, że wszystkie języki z rodziny ML (w tym F # i Haskell) mają prawdopodobnie więcej wspólnego ze sobą niż z jakimkolwiek językiem z rodziny C; każdy, kto potrafi obsłużyć F #, prawdopodobnie poradzi sobie również z Haskell lub OCaml.
Ponieważ Selecti SelectManyjuż zostało wspomniane, odpowiem na dodatkowe pytanie, którego nie zadałeś: foldjest znalezione jako agregowane .
Teraz wszyscy, którzy to czytają, powinni być w pełni wyposażeni, aby zostać tym facetem, który pisze język X przy użyciu idiomów języka Y ... więc dla dobra innych programistów C # nie dajcie się zbytnio ponieść emocjom.
Teraz camccann, nie ma nic złego w wrzuceniu funkcjonalnego klucza do skrzynki narzędziowej, nawet jeśli bezwzględnie wbijasz gwoździe. Być może będziesz musiał dokręcić kilka śrub.
@camccan Functional C # jest naprawdę całkiem niezłe. To, że język nie jest ściśle funkcjonalny, nie oznacza, że większość programistów .net nie skorzystałaby na budowaniu dużo bardziej funkcjonalnych rzeczy .
4
Korzystanie z funkcji programowania funkcjonalnego, które oferuje C #, to świetny pomysł. Zmuszanie C # do funkcjonalnych idiomów, których nie obsługuje dobrze (powiedzmy, częściowa aplikacja curry, tak popularna w Haskell), z drugiej strony prawdopodobnie przyprawi cię o ból głowy, zaciemni twój kod i zirytuje każdego, kto musi pracować z tym.
Aby odpowiedzieć na pytanie, którego nie zadałeś, odpowiednik Haskella wiązania monady „sekwencji” nazywa się SelectMany w C #. Szczegółowe informacje można znaleźć w świetnym artykule Wesa Dyera:
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.