Do czego właściwie służy Haskell? [zamknięte]

Na przykład, jeśli zacznę uczyć się Haskella, do czego mogę go używać. Jakie są typowe zastosowania tego języka, które słyszałem, że jest funkcjonalny ?

Author: MaxB, 2009-10-22

10 answers

Jakie są typowe zastosowania tego język?

Szybkie tworzenie aplikacji.

Jeśli chcesz wiedzieć " dlaczego Haskell?", następnie należy wziąć pod uwagę zalety funkcjonalnych języków programowania (zaczerpnięte z http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):
  • Programy funkcjonalne wydają się być znacznie bardziej zwięzłe niż ich imperatywne odpowiedniki językowe. Często prowadzi to do zwiększenia programista wydajność

  • FP zachęca do szybkiego prototypowania. Jako taki, myślę, że jest to najlepszy paradygmat projektowania oprogramowania dla ExtremeProgrammers... ale co ja wiem?

  • FP jest modularny w wymiarze funkcjonalności, gdzie ObjectOrientedProgramming jest modularny w wymiarze różnych komponenty.

  • Możliwość zjedzenia ciasta. Wyobraź sobie, że masz złożony system oo przetwarzający wiadomości - każdy komponent może tworzyć stan zmienia się w zależności od wiadomości, a następnie przekazuje wiadomość do niektórych obiekty, do których ma linki. Czy nie byłoby po prostu zbyt fajne, aby móc łatwo cofać każdą zmianę, jeśli jakiś obiekt głęboko w wywołaniu hierarchia uznała, że wiadomość jest wadliwa? Co powiesz na historię różne stany?

  • Wiele zadań porządkowych wykonanych dla Ciebie: dekonstruowanie struktur danych( Pattern Matching), przechowywanie wiązań zmiennych (LexicalScope z zamknięcia), silne typowanie (TypeInference), Garbagecolection, storage alokacja, czy użyć boxed (wskaźnik do wartości) lub unboxed (wartość bezpośrednio)...

  • Bezpieczne wielowątkowość! Niezmienne struktury danych nie podlegają warunkom wyścigu danych, a co za tym idzie nie muszą być chronione przez zamki. Jeśli zawsze przydzielasz nowe obiekty, a nie destrukcyjnie manipulując istniejącymi, blokada może być ukryta w system alokacji i zbierania odpadów.

Poza tym Haskell ma swoje zalety, takie jak:

  • przejrzysta, intuicyjna składnia inspirowana notacją matematyczną.
  • składanie List w celu utworzenia listy na podstawie istniejących list.
  • wyrażenia Lambda: tworzenie funkcji bez podawania im jawnych nazw. Więc łatwiej jest obsługiwać duże formuły.
  • Haskell jest całkowicie referencyjnie przezroczysty . Każdy kod wykorzystujący wejścia/wyjścia musi być oznaczony jako taki. W ten sposób zachęca do aby oddzielić kod z efektami ubocznymi (np. umieszczenie tekstu na ekranie) od kodu bez (obliczenia).
  • leniwa ocena to naprawdę fajna funkcja:
    • nawet jeśli coś Zwykle spowoduje błąd, będzie działać tak długo, dopóki nie użyjesz wyniku. Na przykład, możesz umieścić 1 / 0 jako pierwszy element listy i nadal będzie działać, jeśli użyjesz tylko drugiego elementu.
    • łatwiej jest pisać takie programy jak ten sudoku solver ponieważ nie ładuje każdej kombinacji na raz-po prostu generuje je w miarę upływu czasu. Można to zrobić w innych językach, ale tylko Haskell robi to domyślnie .

Możesz sprawdzić następujące linki:

 275
Author: Xinus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-04 08:27:35

Myślę, że ludziom w tym poście brakuje najważniejszego punktu dla każdego, kto nigdy nie używał funkcjonalnego języka programowania: Rozszerzanie umysłu. Jeśli jesteś nowy w programowaniu funkcyjnym, Haskell sprawi, że pomyślisz w sposób, o którym nigdy wcześniej nie myślałeś. W rezultacie twoje programowanie w innych obszarach i innych językach ulegnie poprawie. Ile? Trudno określić ilościowo.

 197
Author: wheaties,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-22 14:33:01

Jest jedna dobra odpowiedź na to, do czego jest dobry język ogólnego przeznaczenia, taki jak Haskell: pisanie programów w ogóle.

Do czego służy w praktyce, mam trzy podejścia do ustalenia, że:

Wskazuje, że jest dobry do grafiki, sieci, programowania systemów, struktur danych, baz danych, rozwoju, przetwarzania tekstu ...

I wreszcie moja opinia na temat tego w czym jest naprawdę mocny:

Mam nadzieję, że to daje poczucie, jak szerokie jest twoje pytanie, jeśli ma być odpowiedział z jakąkolwiek konkretnością.

 78
Author: Don Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-15 10:44:30

Przykładem działania Haskell jest xmonad , "featureful window manager in less than 1200 linijek kodu".

 27
Author: unutbu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-23 10:58:33

From the Haskell Wiki :

Haskell ma zróżnicowany zakres zastosowań komercyjnie, z przemysłu lotniczego i obrona, Finanse, startupy internetowe, firmy projektujące sprzęt i Kosiarki producentów. Ta strona zbiera środki na przemysłowe wykorzystanie Haskell.

Według Wikipedii, Haskell Język powstał z potrzeby konsolidacji istniejących języków funkcyjnych w wspólny, który mógłby być wykorzystany do przyszłych badań w projekt funkcjonalno-językowy.

Jest oczywiste na podstawie dostępnych informacji, że przerosła swój pierwotny cel i jest używana znacznie więcej niż do badań. Obecnie jest uważany za język programowania funkcyjnego ogólnego przeznaczenia.

Jeśli wciąż zadajesz sobie pytanie: "Dlaczego mam go używać?", następnie przeczytaj Po co go używać? Sekcja wstępu Haskell Wiki.

 16
Author: Robert Groves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-22 04:11:09

Haskell jest językiem programowania ogólnego przeznaczenia. Może być używany do wszystkiego, czego używasz w dowolnym innym języku. Nie ogranicza cię nic poza własną wyobraźnią. A do czego się Nadaje? Prawie wszystko. Istnieje kilka zadań, w których język funkcjonalny nie wyróżnia się.

I tak, jestem Rayne z Dreamincode. :)

Chciałbym również wspomnieć, że w przypadku, gdy nie czytałeś strony Wikipedii, Programowanie funkcyjne jest paradygmatem podobnym do obiektu Programowanie zorientowane jest paradygmatem. Na wypadek, gdybyś nie wiedział. Haskell jest również funkcjonalny w tym sensie, że działa; działa w tym całkiem dobrze.

To, że język nie jest językiem zorientowanym obiektowo, nie oznacza, że język jest ograniczony przez cokolwiek. Haskell jest językiem programowania ogólnego przeznaczenia i jest tak samo uniwersalny jak Java.

 11
Author: Rayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-22 14:31:50

Mam fajną, facebook stworzył automatyczne narzędzie do przepisywania kodu PHP. Przetwarzają źródło w abstrakcyjne drzewo składni, dokonują pewnych przekształceń:

if ($f == false) -> if (false == $f)
Nie wiem dlaczego, ale wydaje się, że to ich szczególny styl, a potem ładnie go drukują.

Https://github.com/facebook/lex-pass

Używamy haskell do tworzenia małych domen specyficznych języków. Ogromne ilości przetwarzania danych. Tworzenie stron www. Pająki sieciowe. Testowanie aplikacji. Pisanie Skrypty administracji systemem. Skrypty zaplecza, które komunikują się z innymi stronami. Skrypty monitorujące (mamy DSL, który dobrze współpracuje z munin, znacznie ułatwia pisanie poprawnego kodu monitora dla Twoich aplikacji.)

Właściwie to wszystko. Jest to po prostu codzienny język ogólnego przeznaczenia z kilkoma bardzo potężnymi i przydatnymi funkcjami, jeśli jesteś nieco matematycznie skłonny.
 9
Author: Edgar Klerks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-11 13:31:56

From Haskell :

Haskell jest ustandaryzowane, ogólnego przeznaczenia czysto funkcjonalne język programowania, z niekonsekwentna semantyka i silna statyczna pisanie. Nazwa pochodzi od logican Haskell Curry.

Zasadniczo Haskell może być używany do tworzenia prawie wszystkiego, co normalnie tworzysz przy użyciu innych języków ogólnego przeznaczenia(np. C#, Java, C, C++, itp.).

 5
Author: Andrew Hare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-22 03:05:54

Na przykład do tworzenia interaktywnych aplikacji internetowych HTML5 w czasie rzeczywistym. Zobacz Elm , którego kompilator jest zaimplementowany w Haskell i którego składnia wiele zapożycza od Haskella.

 5
Author: thSoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-13 17:16:27

To całkiem dobre źródło informacji o Haskell i jego zastosowaniach:

Uwolnienia Open Source Haskell i rozwój

 3
Author: Robert Harvey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-23 10:52:32