以下代码的mzscheme等价物是什么?
蟒:
python import sys, vim
python sys.path.append(vim.eval("var"))
<...>
python sys.path.remove(vim.eval("var"))
perl的:
perl push @INC, [VIM::Eval("var")]->[1];
<...>
perl @INC=(grep {$_ ne VIM::Eval("var")} @INC);
LUA:
let str=';'.var.'/?.lua;'.var.'/?/init.lua'
lua package.path=package.path..vim.eval("str")
<...>
let ppath=[]
lua vim.eval("add(ppath,"..string.format("%q", package.path)..")")
let importidx=stridx(ppath[0], str)
let importendidx=importidx+len(str)
let ppath[0]=((importidx>0)?(ppath[0][:(importidx-1)]):("")).
\ppath[0][(importendidx+1):]
lua package.path=vim.eval("ppath[0]")
红宝石:
ruby $LOAD_PATH << VIM::evaluate("var")
<...>
ruby $LOAD_PATH.delete(VIM::evaluate("var"))
TCL:
silent tcl lappend auto_path [::vim::expr "dir"]
<...>
silent tcl set auto_path
\ [lreplace $auto_path
\ {*}[lrepeat 2
\ [lsearch -exact $auto_path
\ [::vim::expr "a:fdict.imported"]]]]
答案 0 :(得分:2)
这取决于您要对脚本执行的操作。 Racket(它现在已经很长时间没有被称为“mzscheme”)与模块一起使用,所以你很少使用“添加动态加载路径的路径”这种工作流程。相反,模块是使用核心库集合中的require
表单或您安装的软件包导入的。
如果确实需要动态加载内容,则可以选择设置current-directory
参数,然后使用dynamic-require
。
(require (prefix-in vim- vimext))
(parameterize ([current-directory (vim-eval "var")])
(define add (dynamic-require "add.rkt" 'add)))
dynamic-require
将从提供的目录中的add
文件中提取add.rkt
函数。注意:我没有测试过这段代码,因为我找不到编译了Racket支持的vim版本。