2013-02-06 15 views
19

Skończyłem czytać książki o F # i zrobiłem większość ćwiczeń w książce, które były trochę podstawowe. Teraz szukam bardziej zaawansowanych ćwiczeń, aby poprawić swoje umiejętności z ogólną koncepcją programowania językowego i funkcjonalnego.F # zaawansowane ćwiczenia

Czy jest miejsce lub książka, w której mogę ćwiczyć F # ze specjalnie zaprojektowanymi ćwiczeniami, aby nauczyć się funkcji językowych? W tej chwili udało mi się znaleźć tylko wstępne i ogólne strony z problemami z programowaniem (na przykład Project Euler).

Moim celem jest nauczyć się myśleć w sposób funkcjonalny i przyzwyczaić się do takich rzeczy jak dopasowywanie wzorców, częściowo stosowana funkcja, monady/przepływy pracy, rekurencja ogona i tak dalej. Chcę nauczyć się rozwiązywać problemy za pomocą konstruktów funkcjonalnych.

Byłbym także zainteresowany dobrymi ćwiczeniami, które zostały zaprojektowane dla innych języków programowania funkcjonalnego (takich jak Haskell).

+1

Cóż, są to specjalnie zaprojektowane ćwiczenia, ale można zrobić gorzej niż spróbować [tutaj] (http://stackoverflow.com/questions/tagged/f%23) :) – Benjol

+1

Szukaliście baz kodu F # w innym Q Sugeruję Foq i TickSpec jako świetne jedzenie do przemyślenia.Warto też zajrzeć do Paketa, a jeśli szukasz czegoś prostszego, ZeroToNine, FunDomain/FsUno.Prod może być interesujące. –

+0

Dzięki, (o dziwo nie mogę znaleźć tego Q, wygląda na to, że został usunięty: /) – foobarcode

Odpowiedz

18

Jeśli wierzysz w naukę poprzez praktyczne doświadczenie, Project Euler problems może być ćwiczeniem dla ciebie. Nie ograniczają się one do programowania funkcjonalnego, ale ich charakter matematyczny dobrze pasuje do F # i innych języków funkcjonalnych. Yet Another Project Euler Series to dobry zasób, aby zacząć pracę z Project Eulerem w F #.

Kiedyś uczyłem się Prologu przez 99 problems, ale widziałem, jak ludzie uczą się także Lisp, Haskell, OCaml, etc. Myślę, że te ćwiczenia są przydatnymi zasobami do nauki F #. Są to dobrze zaprojektowane problemy. Kilka pierwszych nauczy Cię pracy z listami (podstawowa struktura danych w F #). Bardziej zaawansowane problemy z logiką, drzewem i wykresem są dobrą okazją do poznania zaawansowanych funkcji F #. Oto zestawy rozwiązań w OCaml i F# na wypadek, gdyby były potrzebne w celach informacyjnych.

+0

99 problemów jest dokładnie tym typem ćwiczeń, których szukałem! Udało mi się nawet znaleźć wersję f # rozwiązań: http://fssnip.net/tags/Ninety-Nine+F%23+Problems – foobarcode

+0

Myślę, że podałem ten sam zestaw rozwiązań w mojej odpowiedzi https: // github.com/paks/99-FSharp-Problems. Wolę Githuba, ponieważ jest on bardziej zorganizowany dla wielu plików. – pad

+0

Tak, masz rację Byłem trochę chętny do kliknięcia na 99 link opublikowany problem i zapomniałem sprawdzić resztę twojej odpowiedzi;) – foobarcode

5

tryfsharp.org to doskonała strona do nauki F #. Poradniki są podzielone według poziomu umiejętności i domeny problemu. To może być właśnie to, czego szukasz.

+0

Dziękuję za odpowiedź, przeszedłem już przez tryfsharp.org. Przykłady są dobre na pierwsze wprowadzenie do języka, ale szukałem bardziej zaawansowanych rzeczy. – foobarcode

11

Zacząłem od sprawdzenia pierwszych 50 Project Euler problemów. To było świetne początkowe doświadczenie edukacyjne.

Niedługo po tym, jak zacząłem aktywnie uczestniczyć w tagu Stackoverflow F #. Dostrzeganie odpowiedzi udzielonych przez innych i posiadanie własnych odpowiedzi było bardzo pouczające (wiesz, co mówią o uczeniu się przez nauczanie, to prawda).

Następnie moje największe doświadczenie w nauce pochodziło z prac nad projektami open source w języku F #. Mianowicie FsEye i Unquote. Oba te pomysły pochodziły z refleksji na temat mojego doświadczenia z F # i sprawdzenia, jakie możliwości istnieją dla wzbogacenia ekosystemu F #. W przypadku FsEye zwiększało to doświadczenie FSI. W przypadku Unquote wykorzystywał unikatową funkcję F #. Te dwie rzeczy, uczenie się przez doświadczanie poważnych projektów, doprowadziło mnie do głębokiego zrozumienia i umiejętności w F #.

+0

FsEye jest naprawdę słodki, dzięki za udostępnienie. – foobarcode

+0

Zgadzam się z poradą typu open source. Problemy z projektem Eulera są świetne, ale są trochę "wąskie" - praca i walka z pełnowartościową aplikacją to wszystko, co naprawdę zaczęło się dla mnie kręcić. Moja pierwsza biblioteka F # była ogromną nauką i obecnie zamieniam algorytmy uczenia maszynowego z książki Pythona na F #, co uważam za bardzo pouczające. Plus, potrzebuję tych algorytmów :) – Mathias

1

zapewnia wyzwania algorytmiczne. Istnieje cała sekcja poświęcona functional programming, a kiedy tworzysz rozwiązanie, możesz wybrać F # jako swój wybrany język.

W ramach programowania funkcjonalnego można wybierać spośród różnych grup zadań: rekursja, konstruktory funkcjonalne, parsery, aby wymienić tylko kilka.