I get an error in ghci when I try to define a new type:
Prelude> data Point = Pt Int Int <interactive>:1:0: parse error on input `data' Prelude> let data Point = Pt Int Int <interactive>:1:4: parse error on input `data'
What am I doing wrong?
I get an error in ghci when I try to define a new type:
Prelude> data Point = Pt Int Int <interactive>:1:0: parse error on input `data' Prelude> let data Point = Pt Int Int <interactive>:1:4: parse error on input `data'
What am I doing wrong?
titaniumdecoy
, I remember being helped with this sort of GHCi mystery when I learned the frequently made point that writing things like 'let square x = x * x' inside the GHCi is like writinglet a = f b
withdo
notation in theIO
monad -- say in this sort of example:Similarly, when you redefine an expression in the GHCi, it's sort of like doing the following in
do
notation, which is perfectly legitimate:No one would declare a data type in the middle of such a sequence, but would do it elsewhere in the module. I might have guessed that there was some sort of theoretical objection, but Don S.'s remark suggests there isn't one.
ghci does not allow you to define types from interactive input - instead, you need to put your type definition in a file and
:load
the file into ghci.It is possible since GHC 7.4.1.
Just for historical reference, the HBI Haskell interactive environment allows for full Haskell at the command line, including types, classes and so on. There's no a priori GHCi can't operate similarly, and users could write a front-end to GHC-API that supported this...