W Clojure,W clojure, dlaczego assoc wymaga argumentów oprócz mapy, ale nie dissoc nie?
(assoc {})
zgłasza wyjątek Arity, ale
(dissoc {})
nie. Czemu? Spodziewałbym się, że obaj wyrzucą wyjątek, lub oba, aby nie wprowadzać żadnych zmian, gdy nie zostaną podane żadne klucze ani wartości.
EDYTOWANIE: Widzę uzasadnienie dla dopuszczenia tych formularzy; oznacza to, że możemy zastosować assoc lub dissoc do możliwie pustej listy argumentów. Po prostu nie rozumiem, dlaczego ktoś miałby być dopuszczony, a drugi nie, i jestem ciekawy, czy istnieje ku temu dobry powód.
'(doc {})' nie ma sensu, dlatego nie jest dozwolone. – dsm
Należy zauważyć, że '(dissoc {})' również nie. – dsm
Mój argument jest taki, że oba mają sens, albo nie mają sensu; ale jeden jest dozwolony, a drugi nie (przynajmniej na clojure 1.5.1). Jestem ciekawy, dlaczego. –