为什么parenscript函数改为全小写?

时间:2009-10-20 21:14:25

标签: lisp case

如果我执行

,则使用parenscript
(parenscript:ps 
 (slot-value ($ "#mytextarea") 'selectionStart))

它生成javascript

$('#mytextarea').selectionstart;

请注意,selectionStart现在是selectionstart。它丢失了Start上的大写字母S! 如何保持大写字母S?

2 个答案:

答案 0 :(得分:7)

Parenscript会自动从lisp命名约定(破折号分隔单词)转换为CamelCase,所以:

(parenscript:ps 
 (slot-value ($ "#mytextarea") 'selection-start))

结果

"$('#mytextarea').selectionStart;"

答案 1 :(得分:1)

正如Pillsy所说,当Lisp编译器读取所有符号时,所有符号都是默认的。但是有一种方法可以解决这个问题。有关详细信息,请参阅CLHS, 23.1.2 (Effect of Readtable Case on the Lisp Reader),和访问者readtable-case的说明。例如,您可以通过将以下内容放入Lisp源文件中来启用“反转”模式(可以说这是唯一区分大小写的实用设置):

#.(setf (readtable-case *readtable*) :invert)

不幸的是,ParenScript似乎没有充分利用自定义可读表格设置,即使它可以(并且在我看来应该)这样做。