- 00 Getting Started
- 01 FP Philosophical Foundations
- 02 Build Tools
- 11 Syntax
- 21 Hello World
- 22 Projects
- 31 Design Patterns
- 41 Ecosystem
- ReadMe.md
- 01 Why Learn PureScript.md
- Why one should use Javascript to build programs...
- ...but not write Javascript to build it...
- ...and write Purescript instead of alternatives
- FAQ: Answering Miscellaneous Questions People May Have
- Is the price of the steep learning curve worth the benefits of using PureScript in code?
- If I learn PureScript, can I get a good developer job?
- Should I learn PureScript now or wait until sometime later?
- How long will it take me before I can write idiomatic code and be productive in PureScript?
- If I choose to learn PureScript, will I later regret not having spent that same time learning a different compile-to-Javascript language (e.g. TypeScript, CoffeeScript, etc.) or a "compile to WebAssembly"-capable language (e.g. Rust) instead?
- How mature is the Ecosystem? Will I need to initially spend time writing/improving/documenting libraries for this language or can I immediately use libraries that are stable and mature?
- How hard it is to use another language's libraries via bindings?
- How easy/pleasant is it to use the language's build tools (e.g. compiler, linter/type checker, dependency manager, etc.) and text editor tools (e.g. ease of setup, refactoring support, pop-up documentation, etc.)?
- How friendly, helpful, responsive, inspiring, determined, and collaborative are the people who use and contribute to this language and its ecosystem?
- What problems do developer teams typically encounter when migrating from Language X to PureScript and how hard are these to overcome?
- 02 Install Guide.md
- 03 The REPL.md
- 04 Other Important Info.md
- 01 Composition Everywhere.md
- 02 Pure vs Impure Functions.md
- 03 Data Types.md
- 04 Lazy vs Strict.md
- 05 Looping via Recursion.md
- 06 Type Classes.md
- 07 FP: The Big Picture.md
- Readme.md
- 01 Dependency Managers
- 02 Build Tools.md
- 03 CLI Programs: All Options Explained.md
- 04 Bower: Project Workflow.md
- 05 Spago: Project Workflow.md
- 06 Continuous Integration.md
- Readme.md
- 01 Basic Syntax
- ReadMe.md
- src
- 00 Comments.purs
- 01 Preliminary Concepts
- 02 Data and Functions
- 01 Defining Values and Functions.purs
- 02 Function Currying.purs
- 03 Abbreviated Function Body.purs
- 04 Keyword: Data.purs
- 05 Pattern Matching in Functions.purs
- 06 Unicode Syntax Support.purs
- 07 Some Keywords and Their Syntax
- 08 Functions and Data with Higher Kinded Types.purs
- 09 Records
- 11 Infix Notation
- 03 TypeClasses and Newtypes
- 01 Single Paramter.purs
- 02 Constraining Types Using Typeclasses.purs
- 03 Dictionaries: How Type Classes Work.purs
- 04 Typeclass Relationships.purs
- 05 Typeclasses with No Definitions.purs
- 06 Multi Paramter.purs
- 07 Functional Dependencies.purs
- 10 Keyword: Newtype.purs
- 21 Deriving Common Typeclass Instances for Custom Types.purs
- 22 Deriving Typeclass Instances for Newtyped Types.purs
- 04 Documentation.purs
- 05 Special Compiler Features
- 02 Foreign Function Interface
- 03 Type Level Programming Syntax
- 04 Module Syntax
- ReadMe.md
- src
- 05 Prelude Syntax
- Readme.md
- 02 Prelude ish
- ReadMe.md
- 01 Basic FP Data Types
- 02 Prelude
- 01 Useful Types.md
- 02 Useful Functions.md
- 03 Preludes Type Classes.md
- 04 Laws.md
- 05 Objecty: Show and Equal to Bounded.md
- 06 Arrows: Semigroupoid and Category.md
- 07 Control Flow: Functor to Monad
- 08 Appendable: Semigroup to Monoid.md
- 03 Foldable Traversable
- 03 Hello World and Effects
- Readme.md
- src
- 04 Debugging
- ReadMe.md
- src
- 01 General Debugging.md
- 02 Custom Type Errors
- 03 Debug Trace
- 04 Console Based Debugging.md
- 05 Testing
- ReadMe.md
- test
- ReadMe.md
- 01 Unit
- ReadMe.md
- 01 Spec Examples
- 01 Self Contained
- 02 Modulated
- 02 Quick Check and Laws
- 03 Property Testing Libraries Comparison.md
- 06 Benchmarking
- 07 Type Level Programming
- ReadMe.md
- src
- 08 Application Structure
- ReadMe.md
- src
- 01 Monads and Effects.md
- 02 MTL
- ReadMe.md
- 01 Implementing a Monad Transformer
- 02 Monad State
- 03 Ask and Reader
- 04 Tell and Writer
- 05 Throw and Error
- 06 Monad Cont
- 11 Using a Monad Transformer
- 12 Monad Trans
- 13 Other Monad Transformers.md
- 14 Drawbacks of MTL.md
- 15 The ReaderT Capability Design Pattern.md
- 03 Free
- ReadMe.md
- 01 What Is The Free Monad
- 02 Why Use the Free Monad
- 03 From Free to Run
- ReadMe.md
- 01 From Either to Variant.md
- 02 From Coproduct to VariantF
- 03 Explaining Run
- 04 Drawbacks of Free.md
- 11 Hello World
- 12 Number Comparison
- 21 Modern FP Architecture.md
- 11 Conclusion.md
- ReadMe.md
- benchmark
- src
- 01 Libraries
- ReadMe.md
- Halogen.md
- Http
- Node FS
- OptParser
- ReadLine and Aff
- String Parsers
- Tree
- 11 Random Number
- ReadMe.md
- 01 Design Thought Process.md
- 02 Shared Code
- 11 ReaderT: Standard
- 02 Domain.purs
- 03 API.purs
- 04 Infrastructure
- 05 Main
- 10 A Second Approach.md
- 11 Same Monad.purs
- 12 Free: Standard
- 02 Domain.purs
- 03 API.purs
- 04 Infrastructure
- 05 Main
- 13 Run: Standard
- 02 Domain.purs
- 03 API.purs
- 04 Infrastructure
- 05 Main
- 22 Free: Layered
- 23 Run: Layered
- 12 Table of Contents
- ReadMe.md
- 01 Design Thought Process.md
- 02 Shared Code
- 01 Core
- 02 Domain
- 03 API.purs
- 04 Infrastructure
- 11 ReaderT
- 12 Run
- 01 Libraries
- test
- ReadMe.md
- 11 Random Number
- ReadMe.md
- 01 Test Thought Process.md
- 02 Generators.purs
- 11 ReaderT: Standard
- 13 Run: Standard.purs
- 23 Run: Layered.purs
- 12 Table of Contents
- 01 Test Thought Process.md
- 02 Main Logic
- 03 Parser Logic
- ReadMe.md
- 01 Smart Constructors.md
- 02 Partial Functions
- 03 Phantom Types
- 04 Records: Use Type Data or Newtype.md
- 05 Data Validation via Applicative.md
- 06 Variance of Functors.md
- 07 Simulating Constraint Kinds.md
- 08 A Better TODO.md
- 09 Stack Safety.md
- 11 Zipper.md
- 12 GADTs.md
- 13 Existential Types.purs
- 14 Cursors.md
- 15 Optics.md
- 1x Recursion Schemes.md
- Readme.md
- Data Types
- Library Stacks
- Performance Related
- Type Classes
- Type Level Programming