haskellghcimultiline-repl-definition

Multi-line commands in GHCi


I am having problem in entering multi-line commands in ghci.

The following 2-line code works from a file:

addTwo :: Int -> Int -> Int
addTwo x y = x + y

But when I enter in ghci, I get an error:

<interactive>:1:1: error:
    Variable not in scope: addTwo :: Int -> Int -> Int

I also tried putting the code inside :{ ... :}, but they are also not working for this example, because this is just appending the lines into one line, which should not be the case.

I am using WinGHCi, version 2011.2.0.1


Solution

  • Most of the time, you can rely on type inference to work out a signature for you. In your example, the following is sufficient:

    Prelude> let addTwo x y = x + y
    

    If you really want a definition with a type signature, or your definition spans over multiple lines, you can do this in ghci:

    Prelude> :{
    Prelude| let addTwo :: Int -> Int -> Int
    Prelude|     addTwo x y = x + y 
    Prelude| :}
    Prelude> addTwo 4 7
    11
    

    Note that you can also squeeze this onto one line:

    Prelude> let addTwo :: Int -> Int -> Int ; addTwo x y = x + y
    

    You can find out more about interacting with ghci on the Interactive evaluation at the prompt section of the documentation.