reasonml / reasonml/reason

Long term solution for printing "Outcome Values" in the top level.

Open
#226 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Housecleaning
Dominant language
OCaml
Stars
10.3k
Forks
438
PR merge metrics
No merged PRs in 30d

Description

For now, @kayceesrk found that it will be very easy to write our own outcome printer by simply forking the upstream ML one. (Or at least we can get it to a very usable state quickly). Longer term, we decided the best approach is to create a general purpose converter from "outcome tree" to "parse tree", where certain nodes in the parse tree would have some kind of placeholder to represent nodes in the outcome tree which could not be represented in a parse tree. (Things like ... for large objects). For those, we could chose to convert them as ppx extension points [%largeObject].

The benefit here, is that the top level printer will always be kept in sync with your parser/printer. The downside is that it will take longer to do it this way, so we are making this issue to track the implementation long term.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files or tests; start by locating the existing upstream ML outcome printer and this project's parser/printer. Trace how outcome trees and parse trees are represented, then define the general-purpose conversion boundary. Done means the top-level printer stays in sync and unrepresentable outcome nodes can use placeholders such as ppx extension points.

Written by the indexing model from the issue text.

Assessment

Tech stack
ocaml
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.