2009-08-03 13 views
7

Mam problem z uzyskaniem "cześć świat" z eclipseFP i Haskell.Haskell Witaj świecie, zaćmienie IDE

Mam następujący kod,

module Main where 
    main = putStr "Hello world!" 

i kiedy go skompilować z

ghc.exe .\H1.hs -o hw.exe 

to działa dobrze, ale pod eclipseFP, gdy uruchomię go tylko widzę następujące w konsoli window:

GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer ... linking ... done. 
Loading package base ... linking ... done. 
Ok, modules loaded: Main. 
Prelude Main> 

Jakie błędy popełniam?

Odpowiedz

3

Z tego, co widziałem wcześniej w EclipseFP, jest to jedynie interfejs dla GHCi. Co oznacza, o ile mi wiadomo, że nie ma powodu, aby z niego korzystać, ponieważ dostajesz całe zło Eclipse (wzdęcia, bezdenne pragnienie pamięci, szybkość uspokojenia żółwi), absolutnie żadnego z dobre (indeksowanie, debugger, zarządzanie stosem narzędzi).

Więc co popełniłeś noob? Użyłeś Eclipse. Jest OK - łatwy błąd. Jeśli uczyłeś się Scala, Eclipse mógł być na najlepszej drodze. Ale z Haskellem lepiej jest uruchamiać GHCi z linii poleceń i używać edytora takiego jak Notepad ++ (który ma przyzwoite podświetlanie składni). Na razie kombinacja wiersza poleceń/edytora jest lepsza nie dlatego, że jest macho, ale dlatego, że jest bardziej przydatna.

Jeśli absolutnie musisz mieć IDE, teraz jest ich niewiele, ale oto, co znalazłem.

Leksah
WinGHCi

I oczywiście, każdy znalazł w odpowiedzi na this question.

nie zostały wykorzystane, ale Leksah wydaje się być najbardziej bogate w funkcje IDE do tej pory. Osobiście trzymam się Notepad ++ i wiersza poleceń.

+8

-1: Nie odpowiedziałeś na pytanie. Eclipse lub bez Eclipse, rozwiązanie byłoby takie samo, jak opisują inne odpowiedzi. –

+0

@ Jørgen: Cóż, OP zdawał się docenić moją odpowiedź, więc wezmę twój kibbitzing z przymrużeniem oka. Ale nie sądzę, żeby nie kwestionować użyteczności wtyczki, która nie jest w stanie uruchomić pliku *, gdy zostanie o to poproszony *. Problemem jest tutaj Eclipse. – rtperson

+0

Po prostu wypróbowałem to w EclipseFP. Jeśli poproszę o uruchomienie go jako programu Haskell, uruchomi i wypisze ciąg. Jeśli uruchomię go jako ghci, ładuje się w ghci. Robi to, czego się oczekuje. Problem polega na tym, że działa w ghci nie w zaćmieniu. –

4

Nigdy nie używane zaćmienie, ale to, co widzisz to ghci, GHCi jest interaktywnym środowiskiem GHC. Twój moduł został załadowany pomyślnie w ghci, możesz wpisać główny w ghci, aby uruchomić główną funkcję programu, w rzeczywistości możesz w ten sposób wywołać dowolną funkcję twojego programu.

12

Nie używam EclipseFP od lat, więc miej to na uwadze.

Wygląda na to, że EclipseFP ładuje GHCi w konsoli. GHCi to interaktywna powłoka Haskella, w której można oceniać proste wyrażenia. To również najwyraźniej załadował twój moduł Main, dzięki czemu możesz używać GHCi do wywoływania funkcji w twoim module.

Jeśli wpiszesz w konsoli :main, uruchomi on program i wydrukuje "Hello world!", Możesz również wywołać inne funkcje zdefiniowane w programie lub standardowe funkcje Haskell.

Jednak możesz chcieć ustawić EclipseFP tak, aby uruchamiał twój program i nie pamiętam, jak to zrobić, prawdopodobnie gdzieś w menu "Uruchom".

+3

Myślę, że to "główny" bez okrężnicy – yairchu

+12

Wpisanie 'main' po prostu wywoła główną funkcję (która zadziała). Jednak wpisanie ': main' pozwala przekazywać argumenty, które można odczytać za pomocą' getArgs', często przydatne w programach z poleceniami. –

+0

Sprawdź http://stackoverflow.com/a/4427689/750216, aby zobaczyć, jak automatycznie uruchamiać aplikację po uruchomieniu. –

4

W menu uruchamiania zaćmienia wybierz ustawienia konfiguracji. Na karcie Automatyzacja wprowadź główną w poleceniu, aby uruchomić po uruchomieniu, a zrobi to, czego oczekujesz.

6

W eksploratorze projektu kliknij projekt, a następnie kliknij prawym przyciskiem myszy i wybierz opcję Run As > Run Configurations > Run As Haskell Application.

Powiązane problemy