GithubHelp home page GithubHelp logo

asynchronous-rattus's Introduction

Introduciton

Asynchronous Rattus is a programming language embedded into GHC. It is built on top of Rattus by utilizing the Async RaTT calculus.

Usage

Asynchronous Rattus has been tested with GHC version 9.2.5. To get started with Asynchronous Rattus two different examples are included; a simple spreadsheet and a text writer. They can be accessed through following commands:

cd examples/simple-sheet
cabal run

and

cd examples/textwriter
cabal run

To run the test-suite of Asynchronous Rattus, simply run the the command cabal test

asynchronous-rattus's People

Contributors

pa-ba avatar gregerssr avatar emiloh avatar

asynchronous-rattus's Issues

Standard library: O

Implement relevant standard library functionality for manipulating plain O values.

Clock inference

We would like to implement the following.
When we're in a delay, find the clock of the delay. For adv v, this is equal to cl(v). For select x y, this is equal to the union of cl(x) and cl(y). For context: later, cl will be used at runtime.

Code example usage

Should clearly demonstrate the async nature. And it would also be nice if the concept of clocks is easily explained from the program.

Ideas:

  • Tom&Jerry
  • Text editor
  • Spreadsheet app

Ensure Rattus guarantees hold

For instance:

  • does stable checking and strictness checking still hold?
  • do we check that non-stable types are not in scope under delay?

Standard library: Future

Implement a Future value and accompanying standard library. A Future value is one that can have a value now or any point later in the future, not restricted to next time step. If we implement streams on top of this, we can allow filtering on streams.

Scope checking is broken

It turns out that CheckSingleTick has limited scope checking compared to ScopeCheck. That means that the more restrictive scope rules of Rattus and Async Rattus are not enforced. We have 3 options:

  1. leave it be. Explain in the report what's not working
  2. re-enable ScopeCheck. This requires making ScopeCheck understand select
  3. Implement scope checking in CheckSingleTick (checkExpr)

Rebranding

Make it clear that this is Async Rattus, not Rattus.

Standard library: streams

Adjust existing library and implement new functions to create a nice standard library for Asynchronous Rattus.

Should we test memory leaks somehow?

Currently, the memory leak tests are disabled, since they cannot be reproduced in Asynchronous Rattus. Do we want to port them to Asynchronous Rattus?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.