Sök…


Anmärkningar

GHCI är den interaktiva REPL som levereras med GHC.

Starta GHCi

Skriv ghci vid en skalprompt för att starta GHCI.

$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Prelude> 

Ändra GHCi-standardprompt

Som standard visar GHCIs prompt alla moduler du har laddat i din interaktiva session. Om du har många moduler laddade kan det bli långt:

Prelude Data.List Control.Monad> -- etc

Kommandot :set prompt ändrar prompten för den interaktiva sessionen.

Prelude Data.List Control.Monad> :set prompt "foo> "
foo> 

Om du vill ändra prompten permanent lägger du till :set prompt "foo> " i GHCi-konfigurationsfilen .

GHCi-konfigurationsfilen

GHCi använder en konfigurationsfil i ~/.ghci . En konfigurationsfil består av en sekvens med kommandon som GHCi kommer att köra vid start.

$ echo ":set prompt \"foo> \"" > ~/.ghci
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from ~/.ghci
foo> 

Laddar en fil

Kommandotypen :l eller :load kontrollerar och laddar en fil.

$ echo "f = putStrLn \"example\"" > example.hs
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
ghci> :l example.hs
[1 of 1] Compiling Main               ( example.hs, interpreted )
Ok, modules loaded: Main.
ghci> f
example

Avsluta GHCi

Du kan avsluta GHCi helt enkelt med :q eller :quit

ghci> :q
Leaving GHCi.

ghci> :quit
Leaving GHCi.

Alternativt har genvägen CTRL + D ( Cmd + D för OSX) samma effekt som :q .

Ladda om en redan laddad fil

Om du har laddat en fil i GHCi (t.ex. med :l filename.hs ) och du har ändrat filen i en redaktör utanför GHCi måste du ladda om filen med :r eller :reload om du vill använda ändringarna. du behöver inte skriva igen filnamnet.

ghci> :r
OK, modules loaded: Main.

ghci> :reload
OK, modules loaded: Main.

Breakpoints med GHCi

GHCi stöder viktiga stil brytpunkter ur rutan med tolkad kod (kod som har :loaded ).

Med följande program:

-- mySum.hs
doSum n = do
  putStrLn ("Counting to " ++ (show n))
  let v = sum [1..n]
  putStrLn ("sum to " ++ (show n) ++ " = " ++ (show v))

laddad i GHCi:

Prelude> :load mySum.hs 
[1 of 1] Compiling Main             ( mySum.hs, interpreted )
Ok, modules loaded: Main.
*Main> 

Vi kan nu ställa in brytpunkter med linjenummer:

*Main> :break 2
Breakpoint 0 activated at mySum.hs:2:3-39

och GHCi kommer att stanna vid relevant linje när vi kör funktionen:

*Main> doSum 12
Stopped at mySum.hs:2:3-39
_result :: IO () = _
n :: Integer = 12
[mySum.hs:2:3-39] *Main> 

Det kan vara förvirrande var vi är i programmet, så vi kan använda :list att förtydliga:

[mySum.hs:2:3-39] *Main> :list
1  doSum n = do
2    putStrLn ("Counting to " ++ (show n))   -- GHCi will emphasise this line, as that's where we've stopped
3    let v = sum [1..n]

Vi kan skriva ut variabler och fortsätta körningen också:

[mySum.hs:2:3-39] *Main> n
12
:continue 
Counting to 12
sum to 12 = 78
*Main> 

Uttalanden med flera linjer

:{ Instruktionen påbörjar flera linjer och :} avslutar den. I flerlinjeläge kommer GHCi att tolka nya linjer som semikolon, inte som slutet på en instruktion.

ghci> :{
ghci| myFoldr f z [] = z
ghci| myFoldr f z (y:ys) = f y (myFoldr f z ys)
ghci| :}
ghci> :t myFoldr
myFoldr :: (a -> b -> b) -> b -> [a] -> b


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow