Czy istnieje skuteczny sposób wstawienia wartości do Data.Set
przy jednoczesnym sprawdzeniu, czy ta wartość była już elementem zestawu?Wstaw do Data.Set i sprawdź, czy element istnieje w tym samym czasie.
Jeśli nie ma, czy istnieje jakiś szczególny powód, dla którego taka funkcja byłaby niemożliwa do napisania przy aktualnej implementacji zestawów w bibliotece containers
?
Czy chcesz wstawić element wtedy i tylko wtedy, gdy nie jest on jeszcze w zestawie, ale nie powtórzy pracy z przechodzeniem przez strukturę w celu wstawienia, jeśli nie jest? – bheklilr
@bheklilr Tak, to inny sposób na powiedzenie tego. Wszystko, co chcę zrobić, to '(Set.member elem set, Set.insert elem set)', tylko bardziej wydajnie (nie powtarzając pracy). Na przykład w C++ możesz porównać zwracaną wartość 'insert' z' .end() ', aby sprawdzić, czy element był już członkiem zestawu, bez konieczności osobnego połączenia w celu sprawdzenia członkostwa. – bennofs
A więc potrzebujesz funkcji 'insertIfMissing :: Ord a => a -> Set a -> (Set a, Bool)' która wskazuje, czy wstawiona wartość została faktycznie wstawiona? – bheklilr