Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0007491OCaml~DO NOT USE (was: OCaml general)public2017-02-22 16:412017-02-22 16:57
Reportergasche 
Assigned Togasche 
PrioritylowSeverityfeatureReproducibilityN/A
StatusresolvedResolutionsuspended 
PlatformOSOS Version
Product Version 
Target VersionundecidedFixed in Version 
Summary0007491: Deep record field replacement
DescriptionDeep record field replacement extends the record-replacement construction { r with f1 = e1; f2 = e2 } to support nested field accesses { r with p1 = e1; p2 = e2 }, where the ps are field paths (f.g.h). For example

  { r with f.g = e1; f.h = e2; i = e3 }

Conflicting assignments should be rejected statically. Two paths p1, p2 are in conflict when one is a prefix of the other (in particular if they are equal).

There an uncertainty on whether there should be a specified evaluation order on the values; the implementation should probably be consistent with the behavior of the non-extended construction.
Additional InformationThis feature was proposed by Romain Bardou in

  https://github.com/ocaml/ocaml/pull/291 [^]

with an unsatisfying implementation and some uncertainties about the specification. Alain Frisch pointed out that Lexifi's dialect used to have this extension, and that he would be interested in having it again. See the discussion in GPR#291: the general feedback on the feature is positive, but it was pointed out that a robust implementation would require playing with the record-typechecking code, and is expected to be difficult.
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0017397)
gasche (developer)
2017-02-22 16:42
edited on: 2017-02-22 16:42

Following the consensus in GPR#291, I am marking this issue as "suspended", which means that it is not a priority but people that would be able to propose a satisfying implementation should feel free to ask to reopen it.


- Issue History
Date Modified Username Field Change
2017-02-22 16:41 gasche New Issue
2017-02-22 16:42 gasche Note Added: 0017397
2017-02-22 16:42 gasche Status new => resolved
2017-02-22 16:42 gasche Resolution open => suspended
2017-02-22 16:42 gasche Assigned To => gasche
2017-02-22 16:42 gasche Note Edited: 0017397 View Revisions
2017-02-22 16:43 gasche Description Updated View Revisions
2017-02-23 16:36 doligez Category OCaml general => -OCaml general
2017-03-03 17:55 doligez Category -OCaml general => -(deprecated) general
2017-03-03 18:01 doligez Category -(deprecated) general => ~deprecated (was: OCaml general)
2017-03-06 17:04 doligez Category ~deprecated (was: OCaml general) => ~DO NOT USE (was: OCaml general)


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker