2014-05-06 17 views
5

Miałem wrażenie, że są ludzie, którzy piszą czyste aplikacje za pomocą Scalaza, ale na podstawie tego przykładu: [stacking StateT in scalaz], wygląda na to, że wszystko, co prawdziwe, byłoby niemożliwie owłosione.Pure FP in Scala?

Czy są jakieś wskazówki lub przykłady rzeczywistych, modułowych, luźno powiązanych, czystych aplikacji w Scali? Spodziewam się, że oznacza to scalaz.effect.SafeApp i RWST ponad IO, ale chciałbym usłyszeć od ludzi, którzy to zrobili.

Dzięki.

Edycja: w przypadku braku odpowiedzi, zacząłem zbierać zasoby jako odpowiedź poniżej. Jeśli masz jakieś przykłady lub powiązane linki do współtworzenia, proszę.

Odpowiedz

1

Myślę, że mieszacie dwie różne rzeczy. jeden to programowanie funkcjonalne, a drugi to system typu scala. możesz robić "czyste" programowanie w dowolnym języku, nawet w java. jeśli język jest funvtional, niż będziesz miał czyste funkcjonalne programowanie.

  • Czy to sprawia, że ​​Twoje programy działają szybciej? zależy od programu - lepiej się skaluje, ale w przypadku pojedynczych gwintowanych części wolisz stracić wydajność.
  • czy to "zapisz swoje poznanie"? zależy to od tego, jak dobry jesteś w tym, co robisz. jeśli pracujesz z FP, monadami, strzałkami itp. codziennie, zakładam, że może to znacznie pomóc. jeśli pokażesz kod programistce OO, prawdopodobnie nic nie zrozumiesz.
  • czy to pozwala zaoszczędzić czas programowania? tak jak wcześniej, myślę, że może, ale szczerze mówiąc, nie ma to większego znaczenia. częściej czytasz kod, niż go zapisujesz:
  • czy możesz robić przydatne rzeczy w PFP? tak, niektóre firmy zarabiają na haskell

, a teraz, czy można to zrobić w scala? na pewno. czy ktoś to zrobi w scala? prawdopodobnie nie dlatego, że zbyt łatwo jest złamać czystość, ponieważ system typu jest zbyt słaby i dlatego, że istnieją lepsze, "bardziej czyste" narzędzia (ale obecnie nie jest na jvm).

+0

Dzięki - kilka pytań: 1) Brzmi to tak, jak mówisz, że ludzie nie używają PFP w Scali, ponieważ nie jest to praktyczne, pomimo istnienia Scalaza: czystość nie jest gwarantowana, a narzut syntaktyczny jest wysoki ze względu na gorsze wnioskowanie typu. Czy to jest poprawne? 2) Re "ratowanie poznania"/czas rozwoju, nie podążyłem za twoim znaczeniem. Czytanie kodu jest prawdopodobnie również częścią rozwoju i nikt nie zrozumie nawet OO, zanim zostaną nim naświetleni. Nie sądzę, żebyś miał na myśli to, że PFP jest użyteczny tylko dla ludzi, którzy już robią PFP; więc nie byłem pewien, co z tego zrobić. – arya

+0

1) Nie mówię "to nie jest praktyczne. reszta jest poprawna. 2) procedura i OO są rodzajem podejścia "domyślnego". zwykle to właśnie ludzie uczą się w pierwszej kolejności.więc później musisz nauczyć się programowania - funkcjonalny sposób – piotrek

+0

Myślałem, że w ostatnim akapicie po liście wypunktowanej mówisz, że nie było to praktyczne w scala. Jeśli źle zrozumiałem, czy mógłbyś wyjaśnić ostatni akapit? – arya