Downloads of v 0.12.0:


Last Update:

29 Jun 2018

Package Maintainer(s):

Software Author(s):

  • The Purescript community


purescript haskell javascript typed-language alt-js


This is not the latest version of purescript available.

  • 1
  • 2
  • 3

0.12.0 | Updated: 29 Jun 2018



Downloads of v 0.12.0:


Software Author(s):

  • The Purescript community

  • 1
  • 2
  • 3
purescript 0.12.0

This is not the latest version of purescript available.

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests

Validation Testing Passed

Verification Testing Passed


Scan Testing Successful:

No detections found in any package files


To install purescript, run the following command from the command line or from PowerShell:


To upgrade purescript, run the following command from the command line or from PowerShell:


To uninstall purescript, run the following command from the command line or from PowerShell:


NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Enter your internal repository url

(this should look similar to

4. Choose your deployment method:

choco upgrade purescript -y --source="'STEP 3 URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:

choco upgrade purescript -y --source="'STEP 3 URL'"

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0

Exit $exitCode

- name: Ensure purescript installed
    name: purescript
    state: present
    version: 0.12.0
    source: STEP 3 URL

See docs at

chocolatey_package 'purescript' do
  action    :install
  version  '0.12.0'
  source   'STEP 3 URL'

See docs at

    Name: purescript,
    Version: 0.12.0,
    Source: STEP 3 URL

Requires Otter Chocolatey Extension. See docs at

cChocoPackageInstaller purescript
   Name     = 'purescript'
   Ensure   = 'Present'
   Version  = '0.12.0'
   Source   = 'STEP 3 URL'

Requires cChoco DSC Resource. See docs at

package { 'purescript':
  provider => 'chocolatey',
  ensure   => '0.12.0',
  source   => 'STEP 3 URL',

Requires Puppet Chocolatey Provider module. See docs at

salt '*' chocolatey.install purescript version="0.12.0" source="STEP 3 URL"

See docs at

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Private CDN cached downloads available for licensed customers. Never experience 404 breakages again! Learn more...

This package was approved by moderator gep13 on 17 Jul 2018.


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

$ErrorActionPreference = 'Stop';

$version     = $env:chocolateyPackageVersion
$packageName = $env:chocolateyPackageName
$url64       = ("{0}/win64.tar.gz" -f $version)

$packageArgs = @{
    packageName    = $packageName
    unzipLocation  = Split-Path $MyInvocation.MyCommand.Definition
    url64bit       = $url64
    checksum64     = "594c41bf9090bd01dfce32a0d29c6b700f06cf5b"
    checksumType64 = "sha1"

Install-ChocolateyZipPackage @packageArgs
$File = Get-ChildItem -File -Path $env:ChocolateyInstall\lib\$packageName\tools\ -Filter *.tar
Get-ChocolateyUnzip -fileFullPath $File.FullName -destination $env:ChocolateyInstall\lib\$packageName\tools\

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Version Downloads Last Updated Status
purescript 0.14.2 32 Monday, June 14, 2021 Approved
purescript 0.14.1 43 Tuesday, April 20, 2021 Approved
purescript 0.14.0 46 Monday, March 1, 2021 Approved
purescript 0.13.8 195 Wednesday, May 27, 2020 Approved
purescript 0.13.6 314 Monday, January 20, 2020 Approved
purescript 0.13.5 106 Thursday, November 14, 2019 Approved
purescript 0.13.4 105 Monday, October 21, 2019 Approved
purescript 0.13.3 96 Monday, August 19, 2019 Approved
purescript 0.12.5 274 Monday, April 15, 2019 Approved

Breaking changes

  • Added applicative-do notation; ado is now a keyword. An full explanation of the behaviour and usage of ado is available in a comment on the issue. (#2889, @rightfold)

  • Removed wrapper scripts for the old binary names (psc, psci, etc.) (#2993, @hdgarrood)

  • Removed compiler support for deriving purescript-generics. purescript-generics-rep is still supported. (#3007, @paf31)

  • Instances with just one method now require the method to be indented (bug fix, but potentially breaking) (#2947, @quesebifurcan)

  • Overlapping instances are now an error rather than a warning, but can be resolved with the new instance chain groups feature (#2315, @LiamGoodacre)

  • Reworked the CoreFn json representation. This change enables use of the Zephyr tree shaking tool for PureScript. (#3049, #3342, @coot)

  • It is no longer possible to export a type class that has superclasses that are not also exported (bug fix, but potentially breaking) (#3132, @parsonsmatt)

  • Eq and Ord deriving will now rely on Eq1 and Ord1 constraints as necessary where sometimes previously Eq (f _) would be required. Eq1 and Ord1 instances can also be derived. (#3207, @garyb)

  • Some Prim type classes have been renamed/moved, so will require explicit importing (#3176, @parsonsmatt):

    • RowCons is now Prim.Row.Cons

    • Union is now Prim.Row.Union

    • Fail is now Prim.TypeError.Fail

    • Warn is now Prim.TypeError.Warn

  • Users can no longer specify modules under the Prim namespace (#3291, @parsonsmatt)

  • TypeConcat and TypeString have been replaced because they were in kind Symbol but weren't literals. The Prim.TypeError.Doc kind and related constructors (Text, Quote, Beside, Above) have been added in their place. The Fail and Warn type classes now accept a Doc instead of a Symbol.

(#3134, @LiamGoodacre)

  • In simple cases instance overlaps are now checked at declaration time rather than being deferred until an attempt is made to use them. (#3129, @LiamGoodacre)

  • Chaining non-associative or mixed associativity operators of the same precedence is no longer allowed (#3315, @garyb)

  • The --dump-corefn and --source-maps arguments to purs compile have been removed. There is now a --codegen argument that allows the specific codegen targets to be specified - for example, --codegen corefn will not produce JS files, --codgen js,corefn will produce both. If the sourcemaps target is used js will be implied, so there's no difference between --codegen js,sourcemaps and --codegen sourcemaps). If no targets are specified the default is js. (#3196, @garyb, @gabejohnson)

  • Exported types that use foreign kinds now require the foreign kinds to be exported too (bug fix, but potentially breaking) (#3331, @garyb)

  • The pursuit commands were removed from purs ide due to lack of use and editor tooling implementing the features instead (#3355, @kRITZCREEK)


  • Added Cons compiler-solved type class for Symbol (#3054, @kcsongor)

  • The Append compiler-solved type class for Symbol can now be run in reverse (#3025, @paf31)

  • Find Usages for values and constructors in purs ide (#3206, @kRITZCREEK)

  • purs ide treats hiding imports the same as open imports when sorting (#3069, @kRITZCREEK)

  • Added inlining for fully saturated usages of runEffFn/mkEffFn (#3026, @nwolverson)

  • Improved explanation of UnusableDeclaration error (#3088, #3304, @i-am-tom)

  • Improved rendering of comments in generated JavaScript by removing additional newlines (#3096, @brandonhamilton)

  • Instance chain support. (#2315, @LiamGoodacre)

    > We can now express an explicit ordering on instances that would previously have been overlapping.

    > For example we could now write an IsEqual type class to compute if two types are equal or apart:

    > ```

    > class IsEqual (l :: Type) (r :: Type) (o :: Boolean) | l r -> o

    > instance isEqualRefl :: IsEqual x x True

    > else instance isEqualContra :: IsEqual l r False

    > ```

    > Note the else keyword that links the two instances together.

    > The isEqualContra will only be up for selection once the compiler knows it couldn't possible select isEqualRefl - i.e that l and r are definitely not equal.

  • Improved orphan instance error to include locations where the instance would be valid (#3106, @i-am-tom)

  • Added an explicit error for better explanation of duplicate type class or instance declarations (#3093, @LiamGoodacre)

  • purs ide now provide documentation comments (#2349, @nwolverson)

  • Clarified meaning of duplicate labels in a Record row (#3143, @paf31)

  • Explicit import suggestions consistently use (..) for constructors now (#3142, @nwolverson)

  • Improved tab completion in purs repl (#3227, @rndnoise)

  • Large compiler perfomance improvement in some cases by skipping source spans in Eq, Ord for binders (#3265, @bitemyapp)

  • Added support for error/warning messages to carry multiple source spans (#3255, @garyb)

  • Improved tab completion in purs repl when parens and brackets are involved (#3236, @rndnoise)

  • Improved completion in purs repl after :kind and :type (#3237, @rndnoise)

  • Added the "magic do" optimisation for the new simplified Effect type (Control.Monad.Eff is still supported) (#3289, @kRITZCREEK, #3301, @garyb)

  • Improvide build startup times when resuming a build with incremental results (#3270, @kRITZCREEK)

  • Added compiler-solved Prim.Row.Nub type class (#3293, @natefaubion)

  • Improved docs for Prim.Row.Cons and Prim.Row.Union (#3292, @vladciobanu)

  • Functor can now be derived when quantifiers are used in constructors (#3232, @i-am-tom)

  • purs repl will now complete types after :: (#3239, @rndnoise)

  • Added compiler-solved Prim.Row.Lacks type class (#3305, @natefaubion)

  • Added current output path to missing output error message from purs ide (#3311, @rgrinberg)

  • Improved parser error messages for .purs-repl (#3248, @rndnoise)

  • require in generated JavaScript now includes full index.js file paths (#2621, @chexxor)

  • Added more compiler-solved type classes and supporting types and kinds to Prim:

    • Prim.Ordering module with kind Ordering, type LT, type EQ, type GT

    • Prim.RowList module with class RowToList, kind RowList, type Nil, type Cons

    • Prim.Symbol module with class Compare, class Append, class Cons

    (#3312, @LiamGoodacre, @kRITZCREEK)

  • Generated code for closed records now explicitly reconstructs the record rather than looping (#1493, @fehrenbach, blog post with more details)

  • Enhanced purs --help message to include hint about using --help with commands (#3344, @hdgarrood)

  • IncorrectConstructorArity error message now includes a hint of how many arguments are expected for the constructor (#3353, @joneshf)

  • purs ide now uses absolute locations for file paths for better experience in some editors (#3363, @kRITZCREEK)

Bug fixes

  • Fixed a bug with names cause by Prim always being imported unqualified (#2197, @LightAndLight)

  • Fixed overlapping instances error message to reflect its new status as an error (#3084, @drets)

  • Added source position to TypeClassDeclaration errors (#3109, @b123400)

  • Fixed entailment issues with skolems and matches in the typechecker (#3121, @LiamGoodacre)

  • Fixed multiple parentheses around a type causing a crash (#3085, @MonoidMusician)

  • Fixed purs ide inserting conflicting imports for types (#3131, @nwolverson)

  • Fixed constraints being inferred differently for lambda expressions compared with equational declarations (#3125, @LiamGoodacre)

  • Updated glob handling to prevent excessive memory usage (#3055, @hdgarrood)

  • Added position information to warnings in type declarations (#3174, @b123400)

  • Fixed documentation generated for Pursuit rendering functional dependency variables as identifier links (#3180, @houli)

  • Naming a function argument __unused no longer breaks codegen (#3187, @matthewleon)

  • Added position information to ShadowedName warning (#3213, @garyb)

  • Added position information to UnusedTypeVar warning (#3214, @garyb)

  • Added position information to MissingClassMember, ExtraneousClassMember, ExpectedWildcard errors (#3216, @garyb)

  • Added position information to ExportConflict errors (#3217, @garyb)

  • Fixed ctags and etags generation when explicit exports are involved (#3204, @matthewleon)

  • Added position information to ScopeShadowing warning (#3219, @garyb)

  • Added position information for various FFI related errors and warnings (#3276, @garyb)

  • Added all available positions to CycleInModule and DuplicateModule errors (#3273, @garyb)

  • Added position information for IntOutOfRange errors (#3277, @garyb, @kRITZCREEK)

  • Warnings are now raised when a module re-exports a qualified module with implicit import (#2726, @garyb)

  • purs repl now shows results for :browse Prim (#2672, @rndnoise)

  • Added position information to ErrorParsingFFIModule (#3307, @nwolverson)

  • Added position information for ScopeConflict cause by exports (#3318, @garyb)

  • Added position information to errors that occur in binding groups and data binding groups (#3275, @garyb)

  • Fixed a scoping issue when resolving operators (#2803, @kRITZCREEK, @LightAndLight)

  • Type synonyms are now desugared earlier when newtype deriving (#3325, @LiamGoodacre)

  • Fixed subgoals of compiler-solved type classes being ignored (#3333, @LiamGoodacre)

  • Added position information to type operator associativity errors (#3337, @garyb)

  • Updated description of purs docs command (#3343, @hdgarrood)

  • Fixed purs docs issue with re-exporting from Prim submodules (#3347, @hdgarrood)

  • Enabled purs ide imports for Prim submodules (#3352, @kRITZCREEK)

  • Fixed purs bundle failing to bundle in the 0.12-rc1 (#3359, @garyb)

  • Enabled :browse for Prim submodules in purs repl (#3364, @kRITZCREEK)


  • Updated installation information to include details about prebuild binaries (#3167, @MiracleBlue)

  • Test suite now prints output when failing cases are encountered (#3181, @parsonsmatt)

  • Updated test suite to use tasty (#2848, @kRITZCREEK)

  • Improved performance of repl test suite (#3234, @rndnoise)

  • Refactored let pattern desugaring to be less brittle (#3268, @kRITZCREEK)

  • Added makefile with common tasks for contributors (#3266, @bitemyapp)

  • Added ghcid and testing commands to makefile (#3290, @parsonsmatt)

  • Removed old unused MultipleFFIModules error (#3308, @nwolverson)

  • mod and div for Int are no longer inlined as their definition has changed in a way that makes their implementation more complicated - purescript/purescript-prelude#161 (#3309, @garyb)

  • The test suite now checks warnings and errors have position information (#3211, @garyb)

  • The AST was updated to be able to differentiate between let and where clauses (#3317, @joneshf)

  • Support for an optimization pass on CoreFn was added (#3319, @matthewleon)

  • Clarified note in the purs ide docs about the behaviour of --editor-mode (#3350, @chexxor)

  • Updated bundle/install docs for 0.12 (#3357, @hdgarrood)

  • Removed old readme for psc-bundle (a leftover from before the unified purs binary) (#3356, @Cmdv)

This package has no dependencies.

Discussion for the purescript Package

Ground Rules:

  • This discussion is only about purescript and the purescript package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or purescript, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus