Skip to content

Instantly share code, notes, and snippets.

View faultyserver's full-sized avatar

Jon faultyserver

View GitHub Profile
@faultyserver
faultyserver / interpreter.md
Last active February 5, 2018 19:44
An in-depth introduction to the Interpreter class for the Myst programming language: http://myst-lang.org.

Myst Interpreter Walkthrough

This guide attempts to walk through the structure of the Interpreter class of the Myst language.

The source code for the Interpreter is split into multiple files. The main file is src/myst/interpreter.cr, but most of the actual implementation lives under the src/myst/interpreter directory.

This guide is split into various sections to help gradually build a full understanding, and to simplify explanations further on in the guide. In order, we'll cover:

  1. Primitives - basic value types and the differences between them.
  2. Scopes - value containers, closures, and nesting.
@faultyserver
faultyserver / roadmap.md
Last active February 25, 2018 21:10
Myst 0.5.0 Roadmap

Myst 0.5.0 Roadmap

These are the features I'd like to see for Myst 0.5.0 (ideally releasing 2018-02-28). This list will be updated as new ideas and suggestions come in.

  1. Make IO a Type rather than a Module.
  2. Consider adding Type inheritance (see #142).
  3. Work on a protocol/implementation system.
  4. Improve Spec to provide better failure output and continue execution after a failure (see #139, #140, #141).
  5. Work on a soft matching construct (see #96)
  6. Re-implement File on top of IO.
@faultyserver
faultyserver / Default (OS X).sublime-keymap
Last active April 12, 2018 13:32
faulty's Sublime preferences
[
// Refresh Folders the standard way
{ "keys": ["super+r"], "command": "refresh_folder_list" },
// Rename file with keyboard shortcut
{ "keys": ["super+ctrl+r"], "command": "rename_file", "args": {"paths": ["$file"]} },
// Alternate binding for "expand to brackets"
{ "keys": ["super+shift+m"], "command": "expand_selection", "args": {"to": "brackets"} },