2009-04-28 16 views
7

Próbuję nauczyć się F #, ale ponieważ nigdy nie robiłem żadnego programowania funkcjonalnego ani nie brałem w tym udziału klasy, uważam, że bardzo trudno jest uogólnić trywialne Fibonacci lub przykłady frameworka na to, jak zrobiłbym coś użytecznego.Jaki prosty, nietrywialny, użyteczny kod został utworzony w F #

A więc jaki prosty, ale nietrywialny, nietrywialny i użyteczny kod F # znajduje się w sieci?

Odpowiedz

2

Lubię go używać, gdy potrzebuję wsparcia dla parsera (obecnie można go nazwać DSL) i za każdym razem, gdy wdrażam algorytmy przetwarzania symboli.

Najnowszy kod produktywny, który napisałem w F # dotyczy filtrów (używanych do filtrowania przychodzących wiadomości do usługi rejestrowania). Mam kilka podstawowych filtrów (przetwarzających temat itp.) I filtry logiczne wyższego rzędu, które łączą inne filtry z operatorami AND/OR/NOT. Realizacja upraszcza takie "wyrażeń" poprzez przekształcenie ich do CNF, zbierając według typu i przy użyciu specjalnych zasad (jak & < 10 => a < 5, itd.) Poza tym ja createt prosty parser z fsyacc, aby dać użytkownikom tej usługi prostszy sposób tworzenia filtrów.

Chyba rzeczą otwór ma w F # jak wiele linii kodu bym potrzebne w C#, aby napisać tylko uproszczenie;)

+0

Podoba mi się ten pomysł, może naprawdę pokazać zalety F # – erikkallen

+0

czy mogę zapytać, w jaki sposób dokonałeś konwersji CNF? ręcznie lub przy użyciu jakiejś biblioteki? która technika? – citykid

+1

cóż, jest to dość długi czas (prawie 5 lat - wow czas działa szybko) ... jeśli dobrze pamiętam, zrobiłem to ręcznie (nie powinno być bardzo trudne) - w zasadzie jest to opisane tutaj: http: //en.wikipedia. org/wiki/Conjunctive_normal_form ... mam nadzieję, że to pomoże – Carsten

4

Here is a great session from PDC - wykonuje dość nie banalną przykładową aplikację.

+0

Dzięki za link, to jest naprawdę świetna i wciągająca prezentacja. Imponujący! –

2

Istnieje wiele blogów z zabawnymi przykładami kodu; zacznij od http://fsharp.net i śledź różne blogi społeczności i próbki, aby wykopać trochę treści.

0

wiem, że nie jest to bezpośrednia odpowiedź, ale moja rada: port niektóre biblioteki z Haskell. Dostaniesz świetny, gwarantowany funkcjonalny kod do czytania i pisania. Zmusi cię to do innego sposobu myślenia.

Przykłady: FParsec i FsCheck. Mnóstwo kandydatów na Hacakge.

Można również przetłumaczyć książkę Real World Haskell i spróbować napisać niektóre przykłady w języku F #.

Na koniec sprawdź codeplex i znajomych na tematy oznaczone tagiem F #.

+0

Nie jestem pewien, czy facet, który nigdy nie zaprogramował Funkcjonalny styl przed dobrym startem, jeśli próbuje przenosić biblioteki z języka, którego nie potrafi odczytać w języku, którego uczy się ... – BitTickler

+0

Jesteś całkiem pesymistą, prawda? Dokładnie to zrobiłem i miałem dobre wyniki. –

+0

Analogicznie do tego, co sugerujesz, jest powiedzenie, w jaki sposób najlepiej nauczyć się języka koreańskiego jako Amerykanin, aby przepisać chińskie wiersze na koreański.;) Dlaczego podwojenie nakładu pracy byłoby pomocne? – BitTickler

Powiązane problemy