Introduction

“Why should I use PureScript?”

I will guess that you want to learn something where

  • You can actually refactor programs without them breaking
  • You want the computer to do more things that you shouldn’t have to do
  • You want to use tools that help you learn more and do more meaningful work in less time
  • You want to do things as you see fit, not just as some thoughtleader has dictated

In that case, welcome. If not, maybe you’ll still want to just poke around and look at some of the things here.

“How do I manage my dependencies?” / “Ew, do I have to use BOWER?”

You can just use Spago if you want some solution based on package sets: https://github.com/spacchetti/spago

I use Psc-Package for everything at work and at home for project dependency management. See the docs for Psc-Package https://psc-package.readthedocs.io/en/latest/ and the new package-sets https://github.com/purescript/package-sets

For Bower criticisms, you should read and understand http://harry.garrood.me/blog/purescript-why-bower/. Then you can start using Psc-Package for projects like a normal person.

“Why can’t I just use NPM”?

Read the link above to read why npm-style dependencies don’t work for PureScript.

However, yes, almost everyone uses npm for their JavaScript dependencies. It is essential to how PureScript interops with existing JavaScript libraries.

“Where do I find some general documentation on PureScript?”

Documentation is here https://github.com/purescript/documentation

Some of these pages are outdated or stale, so you might ask people to consider updating them in various channels.

“Where do I find libraries?”

Pursuit https://pursuit.purescript.org/

“Where do I find docs for libraries?”

Pursuit https://pursuit.purescript.org/

“What is the purescript-contrib org on Github?”

Various donated libraries to be maintained by contributors of purescript-contrib, to varying degrees. Use these if you want, don’t use them if you don’t want.

What is the difference between row type of Type (# Type) and Records ({}/Record ())?

Read here: https://pursuit.purescript.org/builtins/docs/Prim#t:Record

Note the parens vs curly brace