Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001771OCamlstandard librarypublic2003-07-24 19:412017-02-20 12:28
ReporterBoris Yakobowski 
Assigned Tofrisch 
PrioritynormalSeverityfeatureReproducibilityalways
StatusresolvedResolutionduplicate 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0001771: Add Map.{alter,alter_add}
DescriptionFull_Name: Boris Yakobowski
Version: 3.07+beta 1
OS: Linux
Submission from: lcultra.macs.hw.ac.uk (137.195.27.64)


(C'est un wish, pas un bug)

Serait-il envisageable de rajouter la fonction suivante, ou une autre
approchante, dans le foncteur Map.Make ?
    val alter_add : ('a option -> 'a) -> key -> 'a t -> 'a t
    (** [alter_add f x m] returns a map containing the same bindings as
       [m], except for the binding of [x], which is [f None)] if [x] was
       not previously bound, and [f (Some y)] if [x] was previously
       bound to [y]. *),
qui est plus ou moins équivalent à un find suivi d'un add conditionnel, mais en
une seule traversée. C'est particulièrement utile quand on utilise des
dictionnaires de dictionnaires, et qu'on veut ajouter une valeur au dictionnaire
référencé par la 1ère clé.

Une alternative (ou plutôt une fonction complémentaire) serait
    val alter: ('a -> 'a) -> key -> 'a t -> 'a t
    (** [alter f x m] returns a map containing the same bindings as
       [m], except for the binding of [x] which becames [f x] if x
       was present in [m] *)

En plus mineur, serait-il possible d'avoir une interface non fonctorielle pour
Map et Set, qui utilise Pervasives.compare par défaut (comme Hashtbl pour hash)
? Évidemment c'est beaucoup de duplication de code, mais je ne me rappelle pas
avoir utilisé une fonction de comparaison autre que Pervasives.compare...

--
Boris

TagsNo tags attached.
Attached Files

- Relationships
duplicate of 0007309resolved provides a `update` function for map 
related to 0000340closedfrisch Implementer dans Map les memes operations que dans Set 

-  Notes
There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
2005-11-18 10:13 administrator New Issue
2008-02-19 15:08 doligez Relationship added related to 0000340
2016-12-07 17:29 shinwell Category OCaml general => OCaml standard library
2016-12-07 17:29 shinwell Description Updated View Revisions
2017-02-20 12:04 frisch Reporter administrator => Boris Yakobowski
2017-02-20 12:04 frisch Summary Amélioration dans le module Map => Add Map.{alter,alter_add}
2017-02-20 12:27 frisch Relationship added duplicate of 0007309
2017-02-20 12:28 frisch Status acknowledged => resolved
2017-02-20 12:28 frisch Resolution open => duplicate
2017-02-20 12:28 frisch Assigned To => frisch
2017-02-23 16:43 doligez Category OCaml standard library => standard library


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker