Documentation for the PureScript language, compiler, and tools.
![PureScript](https://github.com/purescript/purescript/raw/master/logo.png)

Welcome to the PureScript documentation repository!

PureScript is a small, strongly typed programming language that compiles to JavaScript.
To get a better overview of PureScript, visit [The PureScript Website](http://purescript.org).

This repository is a collaborative effort, so please feel free to make a pull request to add/edit content or create an issue to discuss it. PureScript is a big project used by people coming from a variety of backgrounds. Making documentation useful to a wide variety of people is really hard to do well, requiring readers like you to point out and add documentation you feel is missing. Thanks for helping!

## Directory

### Getting Started

- [Getting Started](guides/Getting-Started.md): Download PureScript and build your first project
- [Try PureScript](http://try.purescript.org): Try PureScript in your browser

### Community

- [Discourse](https://discourse.purescript.org/): Discuss PureScript in a forum setting
- [Discord](https://purescript.org/chat): Chat about PureScript and attend video / audio meetups

### Learning

- The [PureScript Book](https://book.purescript.org) is the recommended approach to learning the language, since it covers more material in greater depth.
- The [Functional Programming Made Easier](https://leanpub.com/fp-made-easier) will start you at the very beginning with the basics. The book assumes that you know nothing about Functional Programming, and teaches you functional concept with Purescript and in the final few chapters it will build a Full-Stack web server and browser-based front end written in PureScript.
- [Language Reference](language/README.md)
- [PureScript: Jordan's Reference](https://github.com/JordanMartinez/purescript-jordans-reference): An up-to-date project covering Getting Started, Build Tools, PureScript's syntax with examples, FP design patterns, and PureScript's ecosystem.
- [PureScript Cookbook](https://github.com/JordanMartinez/purescript-cookbook): An unofficial cookbook for PureScript.
- [A guide to the PureScript numeric hierarchy](https://a-guide-to-the-purescript-numeric-hierarchy.readthedocs.io/en/latest/index.html): An introduction to the mathematics behind the numeric hierarchy of type classes in PureScript’s Prelude. (See also [PureScript numeric hierarchy overview](https://harry.garrood.me/numeric-hierarchy-overview/).)
- [PureScript Resources](https://purescript-resources.readthedocs.io/): A collection of notes and links to resources to learn and use PureScript.

### Guides

- [Common Operators](guides/Common-Operators.md)
- [The Foreign Function Interface (FFI)](guides/FFI.md)
- [FFI Tips](guides/FFI-Tips.md)
- [Custom Type Errors](guides/Custom-Type-Errors.md)
- [PureScript Without Node](guides/PureScript-Without-Node.md)
- [Contrib Library Guidelines](guides/Contrib-Guidelines.md)
- [Error Suggestions](guides/Error-Suggestions.md)
- [psc-ide FAQ](guides/psc-ide-FAQ.md)
- [Try PureScript Help](https://github.com/purescript/trypurescript/blob/gh-pages/README.md)


### Tools

- [Editor and tool support](ecosystem/Editor-and-tool-support.md): Editor plugins, build tools, and other development tools
- [`easy-purescript-nix`](https://github.com/justinwoo/easy-purescript-nix): Set up PureScript and development environment with [Nix](https://nixos.org/)
- [PSCi](guides/PSCi.md): An interactive development tool for PureScript

### Ecosystem

- [Maintained Packages](ecosystem/Maintained-Packages.md)
- [Style Guide](guides/Style-Guide.md)
- [Alternate Backends](https://github.com/purescript/documentation/blob/master/ecosystem/Alternate-backends.md): PureScript can compile to other languages as well!
- [Recommended tooling for PureScript in 2020](https://discourse.purescript.org/t/recommended-tooling-for-purescript-in-2020/1615)

### Articles

- [24 Days of PureScript 2016](https://github.com/paf31/24-days-of-purescript-2016)

### Talks/Meetups

- [PureScript Presentations](ecosystem/PureScript-Presentations.md)
- [PureScript Meetups](ecosystem/PureScript-Meetups.md)

### Related Languages

- [Related Projects](Related-Projects.md)
- [Differences from Haskell](language/Differences-from-Haskell.md)

## Project Scope

Topics currently in this repository's scope:

- PureScript language reference documentation
- Its compiler errors
- Core concepts on which the language is based
- Comparison with similar languages
- An introduction to other sources of documentation

Topics currently *not* in scope:

- Using PureScript libraries (those docs belong with the corresponding libraries)
- A PureScript language teaching course (use the [PureScript by Example](https://book.purescript.org) book or other resources)
- Introduction to package managers and dependency management

Feel free to make an issue to discuss amending the scope.

## License

<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.
