История языка: источник переменной 'это' в read-eval-print цикле?

Некоторые интерактивные системы, включая Стандарт ML Нью-Джерси и GHC, предлагают интерактивный цикл верхнего уровня, где можно ввести выражения и видеть результаты. Миленькое удобство состоит в том, что результат нового выражения связывается с переменной it. Вот пример от GHCi:

Prelude> 3 + 5
8
Prelude> it
8
Prelude> 2 * it
16
Prelude> it + 1
17

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

8
задан Norman Ramsey 24 July 2010 в 20:45
поделиться

4 ответа

Не REPL, но hypertalk (язык гиперкарты) позволял "это" в некоторых контекстах. Я не уверен в точном случае использования, так как никогда не пользовался hypercard, но, похоже, это похожая идея. Это датируется 1986 годом или около того.

1
ответ дан 6 December 2019 в 00:54
поделиться

Ruby предоставляет ту же удобную переменную, что и _ :

>> 3 + 5
=> 8
>> _
=> 8
>> 2 * _
=> 16
>> _ + 1
=> 17

Интересно, что глобальная переменная $ _ также доступна: это последний вход, прочитанный из , получает или строка чтения .

1
ответ дан 6 December 2019 в 00:54
поделиться

Многие распространенные лингвистические языки используют '*' для обозначения предыдущих результатов. EG '*' - это последний результат, '**' - результат перед последним и т.д.:

* 5
5
* 6
6
* 7
7
* (+ * ** ***)
18

В Python есть '_', который является последним результатом:

>>> 5
5
>>> _
5   

В Erlang есть функция 'v()':

1> 5.
5
2> 6.
6
3> 7.
7
4> v(1) + v(2) + v(3).
18
1
ответ дан 6 December 2019 в 00:54
поделиться

] Похоже, что первым экземпляром REPL с функцией списка истории был BBN LISP, ок. 1972.

«В BBN-LISP каждый ввод, вводимый пользователем, и значение соответствующей операции автоматически сохраняются АП в глобальной структуре данных, называемой списком истории.«Я не смог найти никакой документации о том, как на самом деле получить доступ к этим значениям, только о том, как повторить предыдущие события с помощью REDO. (См. http://www.softwarepreservation.org/projects/LISP/interlisp/Teitelman-FCJJ1972. pdf )

Я также не смог найти ни одного ключевого слова для доступа к последнему значению истории в его преемнике Interlisp, возможно, из-за отсутствия Google-Fu.

0
ответ дан 6 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: