Проблемы с компиляцией libapreq2

Эта функция присутствует и в других интерпретаторах, которые предлагают то, что называетсяreadevalprintloop. LISP — довольно старый язык с такой возможностью, и в Common LISP есть функция read, которая будет читать здесь выражение (+ 2 2), которое затем может быть передано в evalдля оценки (, хотя в реальном коде вы можете не хочу делать это таким образом по различным соображениям безопасности):

% sbcl
* (defparameter sexp (read))
(+ 2 2)

SEXP
* (print (eval sexp))

4
4

мы также можем определить наш собственный очень простой REPL без особых функций, отладки или почти чего-либо еще, но здесь показаны части REPL:

* (defun yarepl () (loop (print (eval (read))) (force-output) (fresh-line)))

YAREPL
* (yarepl)
(* 4 2)

8
(print "hi")

"hi"
"hi"

В основном, как указано на паспортной табличке, данные считываются, оцениваются, распечатываются, а затем (при условии, что ничего не сломалось, и есть электричество или что-то еще, питающее устройство )он возвращается к считыванию Нет необходимости в сборке AST заранее. (SBCL нуждается в дополнениях force-outputи fresh-lineдля отображения, другие реализации Common LISP могут или не могут.)

Другие вещи с REPL включают TCL («оболочку, укушенную радиоактивным LISP» ), которая включает графические элементы с Tk

% wish
wish> set msg "hello"
hello
wish> pack [label.msg -textvariable msg]
wish> wm geometry. 500x500
wish> exit

Или ВПЕРЕД здесь, чтобы определить функцию f>cдля преобразования температуры ("ok" добавляетсяgforth):

% gforth
Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
: f>c ( f -- c ) 32 - 5 9 */ cr. cr ;  ok
-40 f>c
-40
 ok
100 f>c
37
 ok
bye
0
14.05.2020, 19:57
0 ответов

Теги

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