PureScript noob question, plus not defined in repl

I am completely new to PureScript and am doing chapter 3 of the Freeman book.

When I run spago repl
and type

> 1 + 3
Error found:
in module $PSCI
at :1:3 - 1:4 (line 1, column 3 - line 1, column 4)

  Unknown operator (+)

See https://github.com/purescript/documentation/blob/master/errors/UnknownName.md for more information,
or to contribute content related to this error.

Seriously? If I run the repl in another directory, it works as expected.

What is going on?

1 Like

Hello and welcome to PureScript.

It’s a bit strange I guess but you have to import the prelude:

import Prelude

PureScript itself is a rather slim language and most things come with packages - and it happens that + is only defined in one as well.
Luckily most of this basic stuff is packaged together in Prelude but you have to import it as there is no auto-import of this.

EDIT: well I guess there is some auto-import now (just noticed it :smile: ) - if you see the import Prelude after starting you are good to go.
I’m sure someone here knows exactly when this is used … cannot find it right now but I’ll keep looking :wink:

Ok I think when you do spago init it should generate a .purs-repl file that get’s loaded and this should include the import Prelude part.
If you have no such file a default is used include the import.

So in the directory where it is not working for you is there such a file and what is it’s content?

There is no such file. And you’re right, the import Prelude did it.

I just cloned the book repo.

Funny thing it works in other directories with no such file…

if you want you can add it (just add a single line import Prelude) so that you don’t have to retype it.

I guess spago will assume some default outside a project directory (spago.dhall etc. present).

That might be the case.

Thanks for the help, appreciate the swift response.

It might be nice to add a .purs-repl file with the same content inside the book repo, as (+) probably would have just worked without needing to be imported in that case.


So if that file is in the root of the repo, it will be found no matter were I start spago repl ?

1 Like

I think it needs to be in the same directory, so perhaps we could add one to each directory that you’re likely to be running the repl from?