Lisp 为什么parenscript函数都改为小写?

Lisp 为什么parenscript函数都改为小写?,lisp,case,Lisp,Case,当使用parenscript时,如果我执行 (parenscript:ps (slot-value ($ "#mytextarea") 'selectionStart)) (附件:ps) (插槽值($“#mytextarea”)'selectionStart)) 它生成javascript $('#mytextarea').selectionstart; $(“#mytextarea”)。选择开始; 请注意,selectionStart现在是selectionStart。它在开始上丢失了大写

当使用parenscript时,如果我执行

(parenscript:ps (slot-value ($ "#mytextarea") 'selectionStart)) (附件:ps) (插槽值($“#mytextarea”)'selectionStart)) 它生成javascript

$('#mytextarea').selectionstart; $(“#mytextarea”)。选择开始; 请注意,
selectionStart
现在是
selectionStart
。它在
开始
上丢失了大写字母S!
如何保留大写字母?

Parenscript将自动从lisp命名约定(用破折号分隔单词)转换为CamelCase,因此:

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

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

正如Pillsy所说,当Lisp编译器读取所有符号时,它们默认都是大写的。不过,有一种方法可以将其关闭。有关详细信息,请参见和访问器的说明。例如,您可以通过将以下内容放入Lisp源文件中来启用“反转”模式(这可以说是唯一也区分大小写的实用设置):

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

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

如果您的符号中需要首字母大写,则需要在名称前面加一个星号。默认情况下,通用Lisp表单(ParenScript将其作为输入)是大小写折叠的(大写)读者阅读。
selectionStart
将成为
selectionStart
,Parenscript可能会在生成JavaScript输出时将其关闭。您认为Parenscript如何充分利用可读大小写?Parenscript编译器将代码作为带有符号的s表达式获取,因此它不知道符号名称是如何重新命名的ad in。现在有一个编译文件函数,您可以在其中自定义读取器,但这不适用于所有PS代码。@vsedach这是真的。不过,在我看来,如何处理大小写混合符号还是很清楚的(保持原样就行了),所以剩下的唯一问题是如何处理所有大写和小写符号。就我个人而言,我建议要么假设:默认情况下反转,要么简单地将所有此类符号下框(为了向后兼容),并将其设置为与可读大小写相同的设置。