parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Если «нестандартный вариант» кажется проблемой, то можно и иначе...

Sumo 06.06.2016 15:09

^h.add[
  $.new_key[value]
][
  $.before(^h.index_of[key])
# $.before[first]
# $.after[last]
# $.after($h-1)  
]
^h.delete[key]
Может быть только один параметр before или after. Если передадут два, то вываливаемся с исключением.

Параметр $.replace(true) для add не нужен — он должен заменить ключи самостоятельно.

Итого получаем:
^h.index_of[key] -> int
^h.add[...][$.before/after[int|first|last]]
^h.put[key;value;$.before/after[int|first|last]]
^h.slice(from;to) и ^h.slice(from) — второй возвращает хвост хеша.

В слайс можно вставить reverse:
^h.slice(0)[$.reverse(true)]
^h.slice(0;4)[$.reverse(true)]