Je trouve peu pratique que les cartes F# ne signalent pas la clé dans les KeyNotFoundExceptions :
let m = Map.empty<int,string>
m.[2]
>> KeyNotFoundException: The given key was not present in the dictionary. // ok, and which key?
Le problème ne se pose certainement pas dans cet exemple où la clé est présente, mais lorsque l'exception provient d'un programme en cours d'exécution. J'ai essayé d'étendre Item, mais les extensions ne remplacent pas ( https://stackoverflow.com/a/46251858/857848 )
module Ext =
type Map<'k, 'v when 'k : comparison> with
member o.Item k = // with better exception
match o.TryGetValue k with
| true, value -> value
| false,_ -> failwithf "key not found in map: %A" k
open Ext
Je vais envelopper Map, pour que ce soit fait, mais je me demande s'il y a une alternative plus simple.