Kezdőoldal » Számítástechnika » Programozás » Haskellhez programozó környezet?

Haskellhez programozó környezet?

Figyelt kérdés
A Haskell programozásba szeretnék belefogni de nem tudom,hogy milyen környezetben/hogyan tudnék programokat írni ezen a nyelven. Leszedtem valami GHCi -t hozzá de ez csak fordító??

2013. febr. 4. 17:38
 1/3 anonim ***** válasza:

Az csak a fordító.

A Geany állítólag ismeri.

[link]

[link]

Leksah

[link]

2013. febr. 4. 18:34
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

A ghc a legelterjedtebb fordító. A ghci pedig ennek az interpreter-es ,,üzemmódja'' (bár úgy tudom, a részletek bonyolultak, de én mindenesetre a ghci-t mindig csak afféle gyors interpreteres ellenőrzési dolgokra használtam).


Futtatható állományt a ghc (Glasgow Haskell Compiler) készít, a legtipikusabb parancssori alkalmazás:


ghc --make -o futtathatoallomanykivantneve Main.hs


A Main.hs állományban az alábbiak vannak


module Main where


main = print (fibonacci 7)


Ahogy a példa mutatja, ebben az esetben a Haskell programban van egy főfüggvény (main), ez tartja a külvilággal az I/O kapcsolatot (legalább olyan szinten, hogy a program fő számításának, céljának eredményét valamilyen formában kiírja, esetleg az ehhez szükséges adatokat a felhasználótól bekérve).


A main főfüggvéy meg persze futtatja a kívánt konrét feldattal kapcsolatos függvényeket, aszerint, ahogy Te ezt a main függvényt definiálod. Itt a példában azt írtam le, hogy a fibonacci függvényt alkalmazza a 7-es számra. De persze a main csinálhat ennél többet is, akár egy egész összetett problémával kapcsolatos függvényeket is meghívhatja. A main maga leginkább a futtató könryezettel való kapcsolattartást intézi.


A Haskell tanulásnak van más módja is. Nem kell feltétlenül futtatható állományokat készítened, sőt kihagyhatod ezeket a fenti részleteket is, nem kell törődnöd a futtatási környezettel kapcsolatos részleteket. Használhatod gyakorlásra, sőt egész komoly munkára a Haskellt olyan módon is, ahogy a LISP-et lehet: afféle read-eval-print ciklusban egy értelmező programba rendre beírogatva a kívánt számításokat, figyelve a kiírt eredményeket.


Ebben a másféle használati módban a ghc fordító helyett inkább a ghci által nyújtott interpreteres üzemmódot érdemes használni.


Az a hátránya a ghci interpreternek (a LISP és a különböző szkriptnyelvek interreteihez képest), hogy ugyan beírhatja az ember, hogy fibonacci 7, és a ghci afféle read-eval-print ciklusban ki is írja szépen a begépelt dolgok kiértékelését, eredményeit, de függvénydefiníciókat nem lehet az interpreterbe beírni. De még ha lehetne is, a ghci nem nyúj t olyan kényelmes szerkesztési, javítási, mentési lehetőségeket, hogy érdemes legyen közvetlen az intereterbe írni a függvénydefiníciókat. Csak a már előre egy fájlban külön megírt függvények alkalmazását érdemes vele kipróbálni.


Tehát a ghci használata:


Csinálok egy akarmilyen nevű állományt, nevezzük mondjuk Gyakorlas.hs -nak. (Úgy tudom, nagybetűvel kell kezdődnie, és hs kiterjesztásűnek lennie.


Na most a Gyakorlas.hs-be szövegszerkesztővel előre beírom a gyakorlás alapját képező függvénydefiníciókat. Tehát megírok önállóan vagy könyvből tanulva mindenféle érdekes függvénydefiníciókat. Számból másik számot csinál, listákat átalakít, listában keres valamilyen szempontból, stb:


Pl legyen Gyakorlas.hs tartalma:


maximum x y = if x > y then x else y


szokoztelenit :: String -> String -- (megjegyzés: a típusdeklaráció, tehát ez a sor elhagyható)

szokoztelenit "" = ""

szokoztelenit (x : xs) = if x == ' ' then szokoztelenit xs else x : szokoztelenit xs


Szóval legyen mondjuk ez a Gyakorlo.hs nevű fájlban. Lehet több függvény is, sőt lehet benne annyi függvénydefiníció is, amik egy egész komoly munkaprojekt számításának elvégzését végzik. Más nem kell a fájlba, úgy értem, nem kell sem fejléc, semmi ilyesmi. Csak maguk a függvénydefiníciók, adattípusok, amiket ki szeretnél próbálni.


Na most ha kész a fájl a kívánt függvényekkel, akkor egyszerűen beírom:


ghci Gyakorlas.hs


Ekkor a ghci betölt, és ha valami hiba van, panaszkodik.


És persze kiír egy promptjelet is:


>


na ide beírom:


:quit


(a kezdő kettőspont fontos, innen tudja a ghci, hogy nem a függvényekkel akarok gyakorlatozni, és nem épp véletlenül egy quit nevű függvényt akarok kipróbálni, hanem közvetlenül neki mint futó alkalmazásnak adok parancsot, hogy (jelen esetben) lépjen ki.


Ha kiléptem, módosítom a file-t egy szüövegszerkeztőben, és újra kipróbálom ghci-vel.


Ha a ghci hibajelzés nélkül elfogadta a file-ot, akkor akármit begépelhetek a > promptjel után, ami a függvények kipróbálásával kapcsolatos:


> szokoztelenit "Java Class Declarations"


erre ő visszaírja


"JavaClassDeclarations"


és így tovább:


> maximum 3 7


7


Ha megunom, itt is :quit paranccsal búcszúzhatok el. A file-ot pedig a ghci-től függetlenül bárhogy javíthatom, bővíthetem egy szerkesztőben, a ghci-vel pedig bármikor kipróbálhatom.


Erre a használati módra szorítkozva is sikerült egy szakdolgozati projekt lényegét megírnom (egy kis saját mini-programnyelv interpreterét önállóan kifejlesztenem). Egyre összetettebbek lettek a gyakorlófile függvényei, egyre több függvény hívott meg további segédfüggvényeket, végül elértem oda, hogy megvalósult maga a teljes projektalkalmazásom, amit kívántam (egy lambda-kalkulus-szerű programnyelv értelmezőjét valósítottam meg). Mindehez nem kellett más, csak egy szövegszerkesztő és a hugs (a hugs egy a ghci-hoz hasonló, de annál egyszerűbb szolgáltatású haskell-interpreter volt)


Amikor itt tartottam, akkor egy egész vékony triviális kis módosítással átírtam az egészet olyan alakba, mint amit a legelső pontban írtam (futtatható file, a külvilággal explicit módon kapcsolatot tartó main függvénnyel)


Egyszóval nem feltétlenül kell azonnal ismerned a Haskell I/O-val, main függvénnyel, futtatható állománygenerálással kapcsolatos részleteit ahhoz, hogy akár nagyobb projekteket is megvalósíthass.

2013. febr. 4. 23:34
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

Végre megtaláltam, szóval itt van részletesen leírva, hogyan is érdemes elindulni a dologgal konrétan a gyakorlatban:


[link]


maga a teljes könyv is érdekes az egész tanulás során, és ahogy megvan az egész online ingyen:


[link]

2013. febr. 4. 23:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!