Technology moves fast! ⚑ Don't get left behind.🚢 Subscribe to our mailing list to keep up with latest and greatest in open source projects! πŸ†


Subscribe to our mailing list

purescript

A strongly-typed language that compiles to Javascript

Subscribe to updates I use purescript


Statistics on purescript

Number of watchers on Github 4550
Number of open issues 219
Average time to close an issue 5 days
Main language Haskell
Average time to merge a PR 2 days
Open pull requests 122+
Closed pull requests 61+
Last commit over 1 year ago
Repo Created over 5 years ago
Repo Last Updated over 1 year ago
Size 9.16 MB
Homepage http://purescript...
Organization / Authorpurescript
Latest Releasev0.11.7
Contributors73
Page Updated
Do you use purescript? Leave a review!
View open issues (219)
View purescript activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating purescript for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

PureScript

A small strongly typed programming language with expressive types that compiles to JavaScript, written in and inspired by Haskell.

Hackage Build Status

Language info

Resources

Help!

purescript open issues Ask a question     (View All Issues)
  • over 2 years Packaging, Plans and package-sets
  • over 2 years Noticed a strange pretty printing of forall
  • over 2 years Allow `Newtype` deriving for newtypes that use type synonyms
  • over 2 years case expression with ADTs has horrible compiler performance
  • over 2 years Explicit module imports and --dump-corefn
  • over 2 years Test suite should use latest versions of core libraries
  • over 2 years Derived newtype instances can give wrong superclass through entailment
  • over 2 years Performance regression since 0.10.1
  • over 2 years Functional dependencies do not propagate to subclasses
  • over 2 years Functional dependencies can make instances unusable
  • over 2 years Allow operator aliases for type classes
  • over 2 years Derived Newtype instances should use TypeEquals where necessary
  • over 2 years Add error message for ambiguous type variables in inferred contexts
  • over 2 years [psc-ide] Show operators for functions
  • over 2 years Warn when recursive functions cannot be optimized
  • over 2 years Unnecessary import warning includes all data constructors in suggestion
  • over 2 years Solve the IsSymbol constraint automatically
  • over 2 years [psc-ide] Find usages
  • over 2 years [psc-ide] Collect instances for a typeclass
  • over 2 years [psc-ide] Collect docstrings for identifiers
  • over 2 years Inlining
  • over 2 years Cannot use relative `require` inside of an FFI file
  • over 2 years Single consolidated executable
  • almost 3 years Instance chains
  • almost 3 years Restrict unification to monotypes
  • almost 3 years Remove duplicate rows restriction
  • almost 3 years Improve skolem escape check
  • almost 3 years Compiler should persist warnings
  • almost 3 years Special syntax for unsigned literals
  • almost 3 years Make filename, line number and compiler version available during compilation
purescript open pull requests (View All Pulls)
  • refactor PSCi code
  • [WIP] Adds psc-ide to the project
  • Eq and Ord deriving
  • Infer types in psc-{docs,publish}
  • #1846, start work on '_ - 1' syntax for sections
  • Resolve #1787. Better error when let is at end of file, and missing `in`
  • Remove meet judgment, #1719
  • etags format fix
  • Add Source Map support.
  • Make `let` optional in psci
  • Check that FFI imports match with implementations
  • Improve error message formatting for tool interop
  • Core imperative representation
  • Revise class constructor/accessor representation
  • Fix #1916
  • Unset bindings in psci
  • Upgrade optparse-applicative to >= 0.12.1 for all executables.
  • Use generic Literal in the AST
  • Infer types with class constraints (work in progress)
  • Fix indentation bug #1881
  • Language/PureScript/Ide/Types.hs: fix haddock markup
  • Add library-only flag to the cabal manifest
  • Remove qualified keyword
  • Remove --require-path completely
  • #1712, fast recompilation in psc-ide-server
  • Fix indentation bug #1881
  • Update for names in new prelude
  • NoImplicitPrelude, enable some global extensions
  • Separate the `Op` and `Ident` namespaces, add phantom type for `Op` for values/types
  • PSCi speed improvements and design changes
  • Cache last rebuild
  • marking code in error messages with backticks
  • Optimize pass-through cases
  • Work in progress: parse module header
  • Use (..) for data constructors in suggestion
  • Constraint Kinds
  • Fix #2070, typed hole errors now include environment information
  • Name resolving
  • Bundle and optimize
  • Bundle and optimize
  • [psc-ide] Parse Modules
  • [psc-ide] protolude
  • Elaborate re-exports
  • [psc-ide] multi phase load
  • [psc-ide] Goto definition
  • Typeclass codegen
  • Evaluate PSCi expressions in the browser
  • Similarlity score for types in hole errors
  • Improved error messages in the constraint solver
  • protolude 0.1.6: fix ambiguous occurrences
  • Bundle and optimize
  • remove legacy ObjectGetter and update doc
  • gitignore core-tests/.psc-ide-port
  • Do not solve for unknowns in rows during instance solving
  • [WIP][psc-ide] Force computations in worker threads
  • Added typelevel string functions
  • Unify types during instance solving
  • Add --dump-corefn command line option
  • Allow anonymous accessor chains (_.a.b)
  • Fix weird parser issue identified by @FrigoEU
  • display error hint. Fixes #2250
  • Fix scope traversal for do-notation bind.
  • Allow symbols in data contructors
  • Small cleanup to Language.PureScript.Interactive.IO
  • Pretty-print suggested types differently
  • Better error messages for bad indentation
  • Instantiate polymorphic types in record literals
  • Add paste mode, remove --multi-line option, fix #934
  • Derive Data.Generic.Rep.Generic
  • Type directed search
  • Basic sketch of psc-package
  • Support record updates on records with field named hasOwnProperty
  • Create documentation for psc-package
  • [WIP] Use Text over String
  • [WIP][psc-ide] Force polling option for psc-ide-server
  • Change NullBinder serialization to simplify parsing
  • [WIP][psc-ide] Show operators in completions for their alias
  • fixes #2434 and #2438: PureScript chars must be UTF-16 code units
  • Add support for rows in instance head under fundeps
  • [DO NOT MERGE] :info functionality for psci
  • Bump stack lts version
  • [psc-ide] Complete record accessors
  • Store more information in RenderedCode / refactoring
  • Better variable naming hygiene in TCO. Fixes #2868
  • Allow aeson 1.1
  • Disallow invalid newtype-derived instances
  • Switch test suite to use tasty
  • Add proxies
  • Eq1 & Ord1 deriving
  • Typed CoreFn WIP
  • [WIP] Annotations for ASTs
  • [WIP] InstanceSigs
  • Filter out 'unsafeCoerce' from type hole suggestions
  • [WIP][purs ide] Groups reexports in completions
  • Disallow `forall` within constraints (#2874)
  • Add applicative do notation
  • optimize away binds to wildcards in Do notation
  • Optimize inferred partial constraint fn
  • Check warnings/errors for positions
  • Allow pattern matches with guards
  • Rename prim classes
  • Check that instance declarations don't overlap
  • Option --dump-coreimp to output imperative-core to JSON
  • REPL fixes needed for Eff change
  • [WIP] Default method implementations
  • Type-level naturals
  • Allow operators shadowed by variables of the same name as the alias
  • Efficient object updates for closed records
  • Build psciEnvironment as needed for :print
  • Introduces HasName class to reduce some duplication
  • Complete type identifiers following '::' in REPL
  • Complete any number of words after :kind and :type in REPL
  • Complete after parens and brackets in REPL
  • Make REPL completion tests faster
  • Improve parse error messages for .purs-repl
  • Fix :browse Prim, it has no ExternsFile (Fix #2672)
  • Fix ScopeConflict error to include positions
  • [WIP] Fix kind error with missing span
  • Smarter make
  • Makefiles make things easier for new and regular contributors alike
  • Prevent codegen when `--dump-corefn` is supplied
  • Fix for Issue 3247: Handle exported modules when :browse comman…
purescript questions on Stackoverflow (View All Questions)
  • Testing purescript functions in jsPerf
  • Manipulating Free Monads in Purescript
  • purescript type signature fails to compile, code works fine without; suggested signature not working
  • Are constraints possible for new types in Purescript?
  • How do I convert a list of chars to a string in purescript
  • Mysterious syntax error converting a D3 vis from Javascript to Purescript
  • Use purescript-halogen (with pulp)
  • how to componentize purescript-halogen application
  • Polymorphic instruction in Free Monad in Purescript
  • Mutating state in Purescript
  • Purescript plugin system
  • How can I build a PureScript (*.purs) compiler for MeteorJS?
  • Automatically focus input element after creation in purescript-halogen
  • making purescript-blaze and purescript-jquery work together
  • Trying to use Cons function in Purescript
  • How to combine StringParser with ParserT in Purescript?
  • How do I create a foreign constant in PureScript?
  • How to use setTimeout in PureScript v0.7
  • How can I write a purescript effect handler that subracts an effect from the set
  • How to structure app in purescript
  • Purescript - Cannot unify type
  • Is the Eff-monad in purescript inspired by www.eff-lang.org?
  • Is tacit programming possible in Purescript?
  • What does the triple less-than sign (`<<<`) do in PureScript?
  • How do I combine effectful event handlers and custom EventUpdates in purescript-halogen?
  • PureScript type system name
  • Reader Monad in Purescript
  • loading external javascript file in purescript
  • Type issues with anonymous functions in Purescript
  • Getting started with purescript
purescript list of languages used
purescript latest release notes
v0.11.7 v0.11.7

Enhancements

  • Add position to type class declaration errors (@b123400)
  • Add valid location list to orphan instance errors (@i-am-tom)
  • Expand error message for UnusableDeclaration (#3088, @i-am-tom)
  • Inline Unsafe.Coerce.unsafeCoerce (@coot)

Bug Fixes

  • Correctly quote uppercased field labels in errors (@Thimoteus)
  • purs ide inserts conflicting imports for types (#3131, @nwolverson)
  • Instantiate abstraction body during inference to fix a type checking bug (@LiamGoodacre)
  • Fix a bug related to the desugaring of nested parentheses (@MonoidMusician)
  • Fix a loop in the kind checker (@paf31)
  • Fix a bug in type operator precedence parsing (@paf31)
  • Eliminate some redundant whitespace in the generated JS output (@matthewleon)
  • Only add newline before initial group of comment lines during code generation (@brandonhamilton)
  • Treat kinds as used in import warnings (@nwolverson)

purs ide

  • Add an editor mode (@kRITZCREEK)

When the editor-mode flag is specified at startup the server will not start afile watcher process any more. Instead it only reloads after successful rebuild commands. This is a lot less fragile than relying on the file system APIs, but will mean that a manual load needs to be triggered after builds that didn't go through purs ide.

  • purs ide now groups hiding imports with implicit ones (@kRITZCREEK)
  • Return documentation comments in purs ide completions (@nwolverson)
  • Add an actualFile parameter to the rebuild command (@kRITZCREEK)
  • Add qualified explicit import (@nwolverson)
  • Fixed case-splitting on local non-exported datatypes (@LightAndLight)
  • Make the filters parameter in the type command optional (@b123400)

purs docs

  • Embed CSS for HTML docs (@hdgarrood)
  • Fix source links for re-exports (@felixSchl)
  • Use order given in export list in generated docs (@hdgarrood)
  • Prevent browser from treating the title and source link as one word (@Rufflewind)
  • Fix fragment links to type constructors in HTML (@hdgarrood)

purs repl

  • Add :complete directive to purs repl to support completion in more editors (@actionshrimp)

Other

  • Add docs for duplicate labels in record types (@paf31)
  • Adds a document for the design of purs ide. (@kRITZCREEK)
  • Update PROTOCOL.md docs for purs ide (@BjornMelgaard)
  • Upgrade to GHC version 8.2 (@kRITZCREEK)
  • Allow blaze-html-0.9 (@felixonmars)
  • Bump Glob dependency (@mjhoy)
  • Use Hspec in TestDocs (@hdgarrood)
  • Fix AppVeyor deployment (#2774) (@hdgarrood)
  • Various type safety improvements to the AST (@kRITZCREEK)
  • Remove some references to old executables (@hdgarrood)
  • Update the installation documentation (@hdgarrood)
  • Update test dependencies (@hdgarrood)
  • Only build master and versioned tags in AppVeyor (@hdgarrood)
v0.11.6 v0.11.6

New Features

RowToList support

(@LiamGoodacre)

There is a new type class in typelevel-prelude called RowToList, which turns a row of types into a type-level list. This allows us to work with closed rows in more ways at the type level. The compiler will now solve these constraints automatically for closed rows of types.

Enhancements

  • Allow things to be hidden from Prim (@garyb)
  • Re-evaluate REPL globs on :reload (@hdgarrood)
  • Include comments in child declarations in HTML docs (@hdgarrood)

IDE Enhancements

  • Collect data constructors (@kRITZCREEK)
  • Adds declarations for Prim (@kRITZCREEK)
  • Repopulates the rebuild cache when populating volatile state (@kRITZCREEK)
  • Add declaration type filter (#2924) (@sectore)
  • Improve reexport bundling (@kRITZCREEK)
  • Resolve synonyms and kinds (@kRITZCREEK)

Bug Fixes

  • Replace synonyms in instance constraints (@LiamGoodacre)
  • Encode PSCI's server content as UTF-8 string (@dgendill)
  • Fix child declaration ordering in docs (@hdgarrood)
  • Improve instance ordering in HTML docs (@hdgarrood)
  • Fix links to type operators in HTML docs (@hdgarrood)

Other

  • Add source span annotations to Declaration (@garyb)
  • Add source span annotations to DeclarationRef (@garyb)
  • Remove purescript.cabal and add to .gitignore (@garyb)
  • Raise upper bound on aeson in package.yaml (@garyb)
  • Only build master and semver tags in Travis (@hdgarrood)
v0.11.5 v0.11.5

Compiler

Enhancements

Type signatures in instances

(@cdepillabout)

Type class instances can now include type signatures for class members, as documentation:

data MyType = MyType String

instance showMyType :: Show MyType where
  show :: MyType -> String
  show (MyType s) = "(MyType " <> show s <> ")"

Bug Fixes

  • Encode HTML content as UTF8 when using purs repl with --port (@dgendill)
  • Disallow some invalid newtype-derived instances (@paf31)
  • Disallow forall within constraints (#2874, @sectore)
  • Convert \r\n into \n after reading files (@kRITZCREEK)
  • Fix PSCi tests (@kRITZCREEK)
  • Better variable naming hygiene in TCO. (#2868, @houli)
  • Simplify TCO generated code (@matthewleon)
  • Remove newlines from printed custom type errors (@matthewleon)
  • Fix some purs command line help message issues (@Cmdv)
  • Apply relative paths during pretty printing of errors (@kRITZCREEK)
  • Desugar let properly when generating docs (@paf31)
  • Fix kind signature for RowCons type class in documentation (@tslawler)
  • Fix an issue with error messages for TypesDoNotUnify involving duplicate labels (#2820, @thoradam)

Other

  • Update package.yaml (@sol)
  • Parse support modules from actual test support purs (@noraesae)
  • Update build command to run tests (@sectore)
  • Bumps lower bound for directory (@kRITZCREEK)
  • Switch core-tests to psc-package (#2830, @matthewleon)
  • Small fix for the copyright dates (@seanwestfall)
  • Update CONTRIBUTING.md for new contributor label (@thoradam)

purs ide

Features

  • Add a new namespace filter (#2792, @sectore, @stefanholzmueller)

A new filter, which restricts query results to the value, type and/or kind namespaces, which allows improvements to the completion and import commands.

  • Adds a command to add qualified imports (@kRITZCREEK)

This empowers editor plugins to add imports for qualified identifiers, for example in the Emacs plugin.

  • New import formatting (@kRITZCREEK)
  • Group reexports in completions (@kRITZCREEK)

Editors can now choose to let purs ide group reexports for the same value, to reduce noise when completing values like Data.Functor.map which are reexported a lot and show up that many times in the completion list.

Enhancements

  • Parse modules in parallel (@kRITZCREEK)

This can yield significant speedups in the initial load times. For example a full load of slamdata/slamdata improves from 11 to 6 seconds

  • Introduce completion options (@kRITZCREEK)

Bug Fixes

  • Resolve synonyms and kinds (@kRITZCREEK)
  • Work around laziness when measuring command performance (@kRITZCREEK)
  • Simplify state type (@kRITZCREEK)
  • Extract namespace ADT (@kRITZCREEK)
  • Decodes source files as UTF8 when parsing out the imports (@kRITZCREEK)
  • Fix the import command for kinds (@kRITZCREEK)
  • Reads files in text mode for adding imports (@kRITZCREEK)
  • Add -h/--help to ide subcommands (@simonyangme)
Other projects in Haskell