学习Windows/C++程序员的常见Lisp技巧

dav*_*esw 7 lisp emacs slime

我是一位经验丰富的C++/.NET/Java Windows/Web程序员,正在尝试学习(Common)Lisp.我正在阅读Practical Common Lisp并使用SLIME.

我很容易获得Lisp语言,但是我很难理解开发的机制.我的一个问题是处理Emacs.我没有经验,发现它一般令人困惑,很难找到/弄清楚命令.

具体问题:

  • 我得到了REPL,但我不知道如何有效地使用它.当我需要更改一个函数时,我必须重新键入defun并进行更改(繁琐且容易出错).我怎么能做得更好?
  • 如何从REPL中输入代码到实际拥有程序?我已经习惯了C模型,你可以在那里查看,编辑和重新编译代码文件.我知道Lisp有类似的东西(通过加载函数),但是如何获得我刚刚定义并测试到要保存的文件的函数?我希望有一种比我目前的选择+复制+粘贴更好的方法.
  • 你如何调试错误?是否有能力像其他语言一样进入代码?
  • 只要S表达式有效,输入时我就不会出现任何错误(defun ...).直到我尝试使用它,我发现它无效.有没有办法尽快得到错误(即编译代码)?
  • 是否有一些IDE对我更熟悉或允许我更容易使用该语言?
  • 我应该改用学习计划吗?

任何提示将非常感谢!

Pau*_*han 5

- 我得到了REPL,但是我不太了解如何有效地使用它.当我需要更改一个函数时,我必须重新键入defun并进行更改(繁琐且容易出错).我怎么能做得更好?

- 如何从REPL中输入代码到实际拥有程序?我已经习惯了C模型,你可以在那里查看,编辑和重新编译代码文件.我知道lisp有类似的东西(通过加载函数),但是如何获得我刚刚定义并测试到要保存的文件的函数?我希望有一种比我目前的选择+复制+粘贴更好的方法.

加载SLIME.在.lisp文件中输入代码,然后运行slime-eval-buffer以将所有代码加载到Lisp中.然后,对于一个特定的函数,你正在攻击Ce,Cj在你运行的Lisp中重新定义它.

- 你如何调试错误?是否有能力像其他语言一样进入代码?

是.(trace 'my-function) - 或者其中的一些变体 - 当my-function被调用时,它将进入调试器.

- 只要S表达式有效,输入(defun ...)时就不会出现任何错误.直到我尝试使用它,我发现它无效.有没有办法尽快得到错误(即编译代码)?

在某种程度上,这是动态语言(Python,Perl,Ruby,Lisp等)的特征.尝试使用SBCL进行更好的错误检查.

- 有些IDE对我来说比较熟悉,或者让我更容易使用这种语言?

Emacs是Lisp 免费IDE.Allegro有一个免费版我相信; 我从来没试过过..

- 我应该改用学习计划吗?

不,Scheme不是一种实用的语言.