gpt4 book ai didi

lisp - 你能在没有 REPL 的情况下在 Lisp 上编程吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:58 25 4
gpt4 key购买 nike

所以我刚拿到 Land of Lisp 就开始做第一个程序。我有几个问题。

有没有办法只编写一些代码并通过编译器或解释器运行它,而不使用 REPL 东西?我不太喜欢它。如果我搞砸了,我似乎无法回去。它只是说“你搞砸了吗,重新输入整个函数。”

我也想知道REPL的意义是什么。

最佳答案

非 REPL 工作流程

  1. 编辑您的文件
  2. 使用 compile-file 编译文件;修复错误和警告;重复一遍。
  3. 使用 load 加载文件;评估您想要的形式;重复

例子

$ cat > f.lisp <<EOF
(defun f (x) (if (zerop x) 1 (* (f (1- x)) x)))
EOF
$ clisp -q -norc -c f.lisp
;; Compiling file /home/sds/f.lisp ...
;; Wrote file /home/sds/f.fas
0 errors, 0 warnings
$ clisp -q -norc -i f.fas -x '(f 10)'
;; Loading file f.fas ...
;; Loaded file f.fas
3628800
$

正确的方法

使用 IDE,例如 Emacs with SLIME .

这样,您就可以在支持自动缩进并显示每个标准符号帮助的编辑器中编辑代码。

您在编写功能后立即进行编译和测试,从而使您的开发周期非常短。在幕后,这是通过 IDE 与 REPL 交互完成的(这回答了你的最后一个问题)。

什么是 REPL?

Read-Eval-Print 循环是 Edit-Compile-Run 循环的一种更快、更通用的版本。

您不是根据整个程序进行操作(编译速度可能很慢,而且执行过程中导航到被测试的特定位置可能很乏味),而是根据您所处理的特定功能进行操作。

例如,在 gdb 中,您可以使用 print my_func(123) 执行函数,但是如果您更改 my_func,则必须重新编译文件并重新链接整个可执行文件,然后将其重新加载到 gdb 中,然后重新启动进程。

使用 Lisp 风格的 REPL,您需要做的就是重新eval (defun my-func ...) 然后您可以执行 ( my-func 123) 在提示符处。

关于lisp - 你能在没有 REPL 的情况下在 Lisp 上编程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15708911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com