#4148: improve new recursive do syntax
---------------------------------+------------------------------------------
Reporter: guest | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.12.3
Keywords: | Difficulty:
Os: Unknown/Multiple | Testcase:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
Comment(by guest):
I believe both requirements can be satisfied, restating the requirements:
- simple syntax for mdo with automatic segmentation
- user control of segmentation
at first look the two requirements appear to be contradictory, however if
we observe that there are two syntactically distinguished use cases for
"rec"
then perhaps there is room for satisfying both requirements.
== Proposal ==
- as per suggestion made here, a translation could be applied,
when a rec {...} block is the last statement in a do.
In this case a and only in this case is a dependency analysis
on the statements done in the mdo to apply mfix to the
shortest possible subsegments of statements.
- In the case when the rec appears within the body of a do and
not in the above final position, follow the original idea of rec
as stated by Ross.
the loop/mfix combinators would go wherever the programmer put the rec
what this achieves is
- do rec {...} is recognised syntactically, and becomes a drop in
replacement
for mdo.
- when do { ...; rec { ... } ...; } is used it follows the conventions
stated
by Ross, thereby providing the programmer with the desired control.
cons
- the cons are that some added complexity in tracking the application of
said translation
John.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4148#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs