Кстати, вот тут недавно обсуждалось, что в Julia можно эмулировать вызов методов, а я этой любви никогда не понимал. Наоборот, это же так круто, когда ты к любому объекту можешь любую функцию применить. Да, конечно это делать надо аккуратно, чтобы абстракции не нарушать, но вот прямо сегодня встретился с таким примером.
Есть DataFrame и их можно сохранять в CSV с помощью команды CSV.write.
Но на самом деле CSV работает с кем угодно, кто поддерживает
Tables интерфейс. Поэтому можно например сохранять словари в CSV
d = Dict("a" => 1, "b" => 2)
CSV.write("foo.csv", d)
d2 = CSV.File("foo.csv") |> Dict
@assert d == d2По-моему это как раз очень круто, что нет отдельного dict.csv_write и data_frame.csv_write и что-нибудь ещё csv_write.
Вызов методов объектов как раз очень здорово мешает писать код, а не помогает.