Io операторы, кажется, не могут создать их в файле - PullRequest
5 голосов
/ 02 декабря 2010

Я экспериментирую с операторами на языке Io.В cli все работает нормально, но как только я помещаю свой код в файлы, у меня возникают проблемы.

Вот небольшой пример (создание оператора +++, который делает то же самое, что и +)

OperatorTable addOperator("+++", 3)      # Say that +++ should be an operator
Number +++ := method(v, call target + v) # Define the slot +++ on numbers
(30 +++ 40) println                      # Try it out!

Как уже упоминалось, это отлично работает в Cli, но не работает, когда я пытаюсь запустить его в файле.Я предполагаю, что это как-то связано с тем, что файл был предварительно обработан до определения оператора, но как мне обойти это?

1 Ответ

4 голосов
/ 05 декабря 2010

Это ограничение оператора shuffler в Io. Что происходит примерно так:

  1. Исходный файл загружен, разбит на токены (на данном этапе операторы не известны)
  2. Оператор шаффлера работает
  3. Код оценивается

К сожалению, вы манипулируете оператором shuffler после того, как он уже запущен.

...