Si vous êtes exposé aux langages de programmation, vous souhaiterez implémenter REPL.
Abréviation de boucle Read-eval-print Lisez, évaluez, affichez et répétez comme des lettres. Fait référence à un environnement d'évaluation interactif.
Qu'est-ce que REPL? -Hatena Keyword
Je vois.
(loop (print (eval (read))))
Lire dans l'ordre à partir de la droite, "Read-Eval-Print Loop" est certainement ** REPL **.
Si vous souhaitez exécuter le contenu de cet article et vous arrêter au milieu, utilisez Ctrl + D </ kbd> ou Ctrl + C </ kbd>.
Faisons-le avec Ruby.
% ruby -e'loop{p eval gets}'
1 + 2 * 3
7
"Pixiv".downcase
"pixiv"
Ouais, c'est parfait. «Boucle Gets-Eval-P» est ** GEPL **.
PHP est un peu plus long.
% php -r'while(1){ $code = sprintf("\$result = %s;", fgets(STDIN)); eval($code); var_dump($result); }'
1 + 2 * 3
int(7)
strtolower("Pixiv")
string(5) "pixiv"
«Vardump-Eval-Fgets While» est ** VEFW **. Qu'Est-ce que c'est?
Et Python (2.7)? Il est très difficile d'écrire avec une seule doublure.
% python -c "while True:
print(input())
"
1 + 2 * 3
7
"Pixiv".lower()
pixiv
Je ne sais pas pourquoi, mais la série Python 2 ʻinput () est identique à ʻeval (raw_input (prompt))
. Tout le monde se demandait qui l'obtiendrait ... Python 3000 ʻinput () est le même que la 2e série
raw_input () `.
«Input-Print While» est ** IPW **. Ou ** REPW ** avec "Rawinput-Eval-Print-While"!
J'ai écrit quelque chose comme ~ en Lisp, mais je n'ai pas écrit correctement Common Lisp, alors je l'ai essayé.
% sbcl
This is SBCL 1.2.16, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (loop (print (eval (read))))
(+ 1 (* 2 3))
7
debugger invoked on a END-OF-FILE in thread
#<THREAD "main thread" RUNNING {1002C74753}>:
end of file on #<SB-SYS:FD-STREAM for "standard input" {100632C013}>
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-IMPL::INPUT-CHAR/UTF-8 #<SB-SYS:FD-STREAM for "standard input" {100632C013}> T 0)
0](string-downcase "Pixiv")
"pixiv"
0] ^D
*
Je ne suis pas sûr, mais je n'ai pas reçu l'invite par défaut «*», donc j'avais l'impression que cela fonctionnait. (Peut-être que ça ne marche pas)
J'ai aussi pensé à étudier Perl, mais je ne comprenais pas le type de données, alors j'ai abandonné.
Recommended Posts