我之前对python很熟悉,现在我正在尝试学习common lisp并在windows系统下使用ccl(clozure common lisp)。
我发现没有一种方便的方法可以将 lisp 文件作为 python 运行。所以我写了一个bat文件来编译和运行一个lisp文件。
@echo off
set lisp_filename=%~1
set ccl_path=D:\_play_\lispbox-0.7\ccl-1.6-windowsx86\wx86cl.exe
IF "%PROCESSOR_ARCHITECTURE%" == "x86" (
set fsl_filename=%lisp_filename:.lisp=.wx32fsl%
) ELSE (
set ccl_path=%ccl_path:wx86cl=wx86cl64%
set fsl_filename=%lisp_filename:.lisp=.wx64fsl%
)
IF NOT EXIST %fsl_filename% goto compile
for %%a in ("%lisp_filename%") do (
set lisp_timestamp=%%~ta
)
for %%a in ("%fsl_filename%") do (
set fsl_timestamp=%%~ta
)
IF "%fsl_timestamp%" LSS "%lisp_timestamp%" (
goto compile
) ELSE (
goto run
)
:compile
REM echo "compile"
%ccl_path% --eval "(progn (compile-file \"%lisp_filename:\=\\%\") (ccl:quit))"
:run
REM echo "run"
%ccl_path% --eval "(progn (load \"%fsl_filename:\=\\%\") (ccl:quit))"
:end
一切顺利,但我找不到将命令行参数传递到 lisp 脚本的方法。
我尝试了这样的脚本(test.lisp)
(defun main()
(format t "~{~a~%~}" *command-line-argument-list*)
0 ) (main)
但结果是
我知道这个输出是我的 bat 文件的结果,但我也找不到将命令行参数传递给 lisp 脚本的优雅方法。
D:\_play_\lispbox-0.7\ccl-1.6-windowsx86\wx86cl64.exe
--eval
(progn (load "D:\\_play_\\test.wx64fsl") (ccl:quit))
谁能告诉我更多关于如何传递论点的信息?我希望最好的答案可以实现类似:
test.lisp a b c
并带有输出
test.lisp
a
b
c
任何建议都非常感谢。:-)