58

I'm going through the 'Learn you a Haskell' tutorial and I am at this part:

lucky :: (Integral a) => a -> String

When I try to execute this line I get:

<interactive>:1:1: Not in scope: `lucky'

What am I doing wrong?

  • Possible duplicate of [Multi-line commands in GHCi](http://stackoverflow.com/questions/8443035/multi-line-commands-in-ghci) – Andrew Grimm May 12 '17 at 00:07

2 Answers2

63

This is not a function code, it's function signature which can only be saved in a module along with function definition and the be loaded to GHCi.

This signature means that you're going to define a function lucky which gets an Integer and returns a String.

However if you're composing your functions using GHCi as interactive interpreter, you can let Haskell infer your function's type, e. g.:

ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String
YasirA
  • 9,531
  • 2
  • 40
  • 61
17

If you want to try in the GHCI you could use multi-line command block

:{
lucky :: Int -> String
lucky a = show(a)
:}

:type lucky 
lucky :: Int -> String
Maqbool
  • 197
  • 2
  • 9