Dom's PureScript Tips and Reference Wiki
I'm going to treat this page as a sort of wiki for PureScript tips and reference.
Searching for Special Character Operators
You can search Pursuit for special character operators by wrapping them in parenthesis, e.g you can search for (<$) if you don't know that <$
is the same as voidRight
, or you can search for (<|>) if you don't know that <|>
is the same as alt
.
Package Sets Organized By Project Type
The idea of this section is to determine which packages should be the starting point for a particular project type, and of those packages, which functions should be compiled into a more easily usable Prelude.
- Front End Single Page App
- purescript-halogen
- purescript-routing
- purescript-dom
- Any Project
- Eff, log, logShow, CONSOLE, Maybe, Either, Tuple
Deriving Types
You can derive a Generic instance for simple types by doing derive instance someName :: Generic SomeType
Deriving Newtypes without Type Parameters
Sometimes Newtypes for Records don't have a type parameter, in which case you will need to derive the instance using a typed hole, e.g. derive instance newtypeMyNewType :: Newtype MyNewType _
Importing
Data Constructors of Abstract Data Types (ADT) are imported using import Module (Type(..))
, e.g. if you want to import the Constructors of this ADT...
module Routes where
data Location
= Home
| Login
You would import Routes (Location(..))
. Note that this is different than saying import Routes(Location)
. The first import says to import the constructors of the Location type. The second is saying to import the Location type itself.