Skip to content
/ purescm Public
forked from purescm/purescm

Scheme backend for PureScript (a small strongly, statically typed programming language with expressive types, inspired by Haskell).

License

Notifications You must be signed in to change notification settings

anttih/purescm

 
 

Repository files navigation

purs-backend-chez

Vendored Dependencies

In order to represent Array and record types in purescm, the backend has a runtime dependency on implementations of SRFI 214 (Flexvectors) and SRFI 125 (Intermediate hash tables). This is due in part to how vectors are more like "arrays" than "array lists" and hashtables' canonical accessor, hashtable-ref, takes a default value rather than raising an exception.

We vendor chez-srfi using the following steps:

  1. Clone chez-srfi at the project root.

  2. Navigate to chez-srfi and run ./install.chezscheme.sps ../vendor. This should produce an srfi folder inside of vendor.

  3. Copy the desired SRFIs from vendor/srfi into vendor/purs/runtime/srfi. Make sure to also copy the SRFIs and other scheme files (e.g. the ones in the private folder) that they depend on. The library-requirements function can aid in this process.

  4. Modify the copied scheme files such that the library names align with the folder structure. sd makes this easy!

sd "\(srfi " "(purs runtime srfi " vendor/purs/**/*.sls
  1. To verify, simply invoke the Scheme REPL:
$ scheme --libdirs ./vendor:
Chez Scheme Version 9.5.8
Copyright 1984-2022 Cisco Systems, Inc.

> (import (purs runtime srfi :125))
>

Snapshots

To run snapshots, run npm run test. To overwrite old snapshots with the latest output, run npm run test -- -a "--accept". To add a new snapshot, create a file called Snapshot.X.purs where X indicates what is being tested. If a snapshot needs a dependency, install it by running spago -x test-snapshots/spago.dhall install <packages...>. The snapshots have their own spago.dhall file so as not to pollute the purs-backend-chez binary with unneeded dependencies.

About

Scheme backend for PureScript (a small strongly, statically typed programming language with expressive types, inspired by Haskell).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PureScript 38.6%
  • Scheme 33.7%
  • Haskell 23.4%
  • Dhall 2.2%
  • Nix 1.4%
  • Python 0.7%