У еліксирі у нас є Карти:
> map = %{:a => "one", :b => "two"} # = %{a: "one", b: "two"}
> map.a # = "one"
> map[:a] # = "one"
У нас також є списки ключових слів:
> kl = [a: "one", b: "two"] # = [a: "one", b: "two"]
> kl2 = [{:a, "one"},{:b, "two"}] # = [a: "one", b: "two"]
> kl == kl2 # = true
> kl[:a] # = "one"
> kl.a # = ** (ArgumentError)
Чому обидва?
Синтаксис? Це тому, що списки ключових слів мають більш гнучкий синтаксис, що дозволяє визначати їх без фігурних і навіть без дужок як останній параметр виклику функції? Тоді чому б не дати Карту цей синтаксичний цукор?
Дублікати ключів? Це тому, що у списках ключових слів можуть бути повторювані ключі? Чому ви хочете отримати доступ до стилю карти та копії ключів?
Продуктивність? Це тому, що списки ключових слів мають кращу ефективність? Тоді навіщо Карти? І чи не повинні карти виглядати ефективніше під час пошуку членів за ключем, ніж список кортежів?
JS Array і Ruby Hash люблять зовнішність? Це все?
Я розумію, що структурно це різні представлення даних. Мені здається, що списки ключових слів в еліксирі служать для ускладнення мови через винятковий синтаксис (3 різні синтаксичні варіанти), використання регістрового накладання з картами та неясного вигоди.
Яка перевага від використання списків ключових слів?