haskellfoundation / haskellfoundation/haskell-2010-revised-report

Mutually Recursive Modules

Open
#52 3 comments 1 reaction 0 assignees View on GitHub
feature: language report
Dominant language
Typst
Stars
20
Forks
5
Avg merge
4d 18h
Merged PRs (30d)
6

Description

In section 5, the report says that mutually recursive modules must be supported:

> Modules may be mutually recursive

but then doesn't say how to use it:

> separate compilation of mutually recursive modules may require that imported modules contain additional information so that they may be referenced before they are compiled

Saying that a feature must be supported but not explaining how to use it is bizarre and probably should be changed. Here's three different options on how this could be changed:

* A) Change the wording to say that implementations, may but are not required to support mutually recursive modules
* B) Codify GHC's `.hs-boot` files into the report
* C) Say that implementations must fully support mutually recursive modules and say that GHC's implementation is buggy

In [Hazy](https://github.com/superstar64/hazy), I currently fully support mutual recursive modules without any additional hassle and completely ignore `.hs-boot` files, so I would prefer to avoid B.

Contributor guide

Open the contributing guide

Research direction

Start with section 5 of the report and review the wording about mutually recursive modules alongside the discussion of separate compilation and GHC's .hs-boot files. Determine which of options A, B, or C the report should adopt, then update the relevant report text so the support requirement and usage expectations are explicit.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
documentation
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.