帮助学习Lisp编程
我想学习如何编写一些lisp程序,我有一些编程数控机床的经验。不仅仅是M和G代码编程,而是使用高级编程和参数编程的真正精细的程序。因此,我知道如何为CNC编写一个程序,该程序表示“如果参数1000大于或等于perameter1001,则大于goto…”或者如何调用子程序和其他类似的东西。所以我想知道的是,这里是否有人可以帮助我弥合CNC和Lisp编程之间的差距。那么Lisp与下面这样的语句等价于什么呢。。。。
(如果(P1000 GE P1001)转到N100)----
(如果(p1000 GE P1001)P1002=P1003+P1004)------
(PCALL 300)-调用子程序300-----
(IF(P1000 GE P1001)PCALL 300 ELSE PCALL 200)
这对我来说只是一个开始,但我想如果我能把它和我已经知道的东西联系起来,可能会更容易。因此,任何帮助都将不胜感激。谢谢你的帮助。 如果LISP编程中仍使用语句,例如:
(if (this is true)
.. do this...
.. else do this...
)
或使用progn包装多个语句:
(if (this is true)
(progn
.. do this..
.. and this..
); end Progn
.. else do this..
); end If
或具有多个程序:
(if (this is true)
(progn
.. do this..
.. and this..
); end Progn
(progn
.. else do this..
.. and this..
.. and this..
) ; end progn
); end If
对于调用子函数:
子函数定义如下:
(defun mysub (arg1 arg2 / var1 var2)
.. do something..
)
使用“defun”而不是“defun c:”,其中arg1和arg2是运行它所需的参数,var1和var2是局部变量。
可以这么说:
(mysub x y)
其中x和y是参数arg1和arg2的值。
希望这对你有意义,如果我错过了什么,尽管问
李 好的,谢谢你。
所以在CNC,我只想说
(P100=5)
用LISP我会说。。。
(setq(P=5)对吗? 如果使用P作为变量名,5作为其值,则在LISP中:
Tbh,有了这样的问题,你最好去一个教程网站去学习-更多内容将被涵盖。
查看Jeffery Sanders-只需谷歌Jeffery P Sanders LISP>
我说,跳过教程网站,去读SICP的书;在开始的时候花一个月,在结束的时候节省你自己一年的时间——当你学习不同风格的高级语言并在以后尝试解释方法和手段时,阅读这本书将节省你很多时间。
相信我!
[ http://mitpress.mit.edu/sicp/full-text/book/book.html ] 美好的一本在线书。我一定会读到的。谢谢你的帮助。(我简直不敢相信你编写acad才9个月。)太棒了!当心。 那本书是为Scheme语言而不是AutoLisp编写的。它的意思是作为教学辅助工具。
然而,Scheme语言与AutoLisp方言非常相似,因此从Scheme切换到AutoLisp将很容易。 哦好啊但是jeffery sanders的网站是关于lisp的。正当我还从那个网站上找到了一个lisp程序,它会根据你对一些问题的回答为你编写一个lisp,但我无法让它工作。你熟悉这样的Lisp程序吗?我想我可以用它来制作一些简单的lisp程序,然后我可以查看代码并从中学习。该程序称为Make\u lsp。lsp听说过吗? 我还没有听说过,但我建议您从下到上学习LISP,不要使用LISP为您生成LISP。
只要看看这个网站上的例子,再看看Se7en推荐的书,我也能从中学到很多 *眨眼眨眼**gack*不(我甚至不想看到那样的东西……听起来很可怕!)。请相信我,不可能有“Make\u lsp”。你想要的lsp。像这样的事情是编程的厌恶,只会伤害你。
说真的,听起来你想马上开始编码。在这种情况下,让我试试另一种策略。我也处在你的地位。经过很长一段时间,我现在可以在脑海里写一个程序,然后把它打出来,第一次就可以完美地工作了。我提到这一点,因为它听起来有点令人印象深刻,但为了做到这一点,我花了数年的时间进行黑客攻击。然而,如果你读了那本书,你将在几个月而不是几年内完成同样的事情(这一壮举对你来说也不会令人印象深刻,因为你也能做到)!
页:
[1]
2