racket / racket/rhombus

Make an RFC for the hole syntax

Open
#98 1 comment 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

surface syntax
Dominant language
Racket
Stars
601
Forks
74
Avg merge
2d 10h
Merged PRs (30d)
5

Description

Holes (unfinished expression to be filled) are natural in programming. Interactive theorem prover users use holes to fill in proofs. HtDP has been using ... x ... to mean a hole where x is available. Etc. Other languages that have holes include (but not limited to): Pyret, which uses ...; Idris, which uses ?id.

The problem with ... x ... in HtDP is that it is not syntactically correct. That is, the program that contains this syntax fragment is not runnable even if the hole will not be evaluated.

I propose that we find a syntax for holes. Here are some design choices:

  • The syntax: should it be a compound term (so that we can attach other terms inside it), or atomic, or both?
  • If the hole can be a compound term, would stuff inside need to be syntactically correct?
  • Where could the hole appear? Only expression positions? What about binding positions?
  • What's the semantics of the hole? I think the only answer that makes sense is that it should error when evaluated at run-time, but others might disagree.
  • How can DrRacket integrate with this feature?

Note that Racket already has Todo List by @david-christiansen, which is one potential solution to this issue. I hope that if this package is picked as a solution, it will be added to base, to both standardize this functionality and promote it.

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

Start by reviewing the proposed syntax, placement, runtime semantics, and DrRacket integration questions in this issue. Compare the existing Racket Todo List package as the mentioned potential solution. Done would be a settled RFC specifying the hole syntax, allowed contexts, semantics, and integration direction.

Written by the indexing model from the issue text.

Assessment

Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.