Jak podejść do poważnego projektu F # bez znajomości C #?

11

Zasadniczo projekt, który chciałbym podjąć, to edytor SVG. Wolałbym używać WPF, ponieważ wtedy mogę wykorzystać XAML dla mojego układu aplikacji (ten projektant jest taki sprytny). Niestety, używam frameworku .NET tylko od kilku miesięcy i nadal nie znam większości nazw klas.

Celem było użycie F #, ponieważ jest to funkcjonalny język programowania, a rekursja F # i wspaniałe operacje na listach w połączeniu z krotkami będą działać dobrze dla tego, co próbuję osiągnąć. Celem jest wykorzystanie .NET ze względu na ogromną bibliotekę dostępnych i udokumentowanych klas z przykładami.

Już spojrzałem na to pytanie. /software/3129/is-there-a-canonical-book-on-f Ale odpowiedzi są tylko dla F # i zakładają, że znasz już C #, co nie jest szczególnie przydatne dla mnie .

Najlepsza książka jako odpowiedź na powyższe pytanie brzmiała: programowanie funkcjonalne w świecie rzeczywistym: z przykładami w języku F # i C #. Jednak trzygwiazdkowa recenzja Amazon na temat tej książki, choć dość ostra i być może przesadzona, poprawnie ilustruje mój problem.

Jeśli interesujesz się programowaniem funkcjonalnym, ale nie jesteś C #, który chce nauczyć się F #, możesz bezpiecznie pominąć tę książkę.

Szukałem w Internecie przykładów WPF F #, tu i tam są różne fragmenty kodu, ale nic znaczącego ani demonstrującego, że jest używany poza pojedynczym skryptem pliku .fsx, i nic tak naprawdę na poziomie przedsiębiorstwa, a nawet przynajmniej profesjonalnej.

Więc nawet Microsoft nie ma zbyt wielu przykładów, jak robić rzeczy .NET w F #. Przykłady, które znalazłem, są zwykle tylko cechami unikalnymi dla F #. Rzuć okiem na podstawowe i zaawansowane sekcje F #, a przekonasz się, że są winni jedynie nauczania składni. Na przykład MSDN na WPF dla klasy Line nie ma żadnych przykładów kodu w F #.

Kiedy przewijasz w dół kartę przykładowego kodu dla F #, to po prostu mówi

No code example is currently available or this language may not be supported.

Przy tak niewielu dostępnych przykładach kodu trudno mi podjąć się tego projektu.

Moje pytanie
byłbym wdzięczny za pomoc w zrozumieniu, jak powinienem podejść do tego projektu przy użyciu F #, gdy nie znam C # aż tak dobrze.

Alexander Ryan Baggett
źródło

Odpowiedzi:

10

Podziel problem na dwie części.

  1. Naucz się podstaw języka F #, wyłączając korzystanie z WPF. Naucz się pisać bez korzystania z funkcji mutablesi while statementsi korzystania function composition. Gdy to zrobisz, dowiedz się, jak korzystać ze zmiennych, aby zaktualizować stan.

  2. Dowiedz się, jak korzystać z WPF w F #, czytając Learning WPF do F # i odwrotnie , John Liao.

Jeśli nie możesz znaleźć kodu, który ci się podoba w F #, pamiętaj, że F # jest potomkiem OCaml, więc Google dla OCaml i SVG, i możesz znaleźć coś interesującego. Chociaż F # nie może skompilować OCaml, jest bardzo blisko i nie powinno zająć dużo czasu na konwersję. Przekształciłem dużą liczbę OCaml na F # i wszystko przekonwertowałem.

Guy Coder
źródło