如果我有如下列表:
(((X)))
我想得到X
并且没有得到括号
在LISP中,如果我CAR
,我仍会得到括号。
有什么功能可以帮我吗?
答案 0 :(得分:5)
在Common Lisp中,( some-value )
是一个包含单个元素的列表,由some-value
给出。
列表的经典图形表示显示,实际上单个值列表是指向some-value
和nil
的指针的“缺点”(对):
因此,获取car
some-value
会产生cdr
,而nil
会产生((x))
。
那么,这个s-expression的含义是什么:some-value
?如果您使用(x)
替换第一个示例中的x
,则可以获得此结果。也就是说,这不是一个“多括号列表”,而只是一个包含单个元素的列表,它本身就是一个包含单个元素的列表(换句话说,就是汽车是单元素列表的列表)。这可以用图形显示,如下图所示:
因此,这次得到car
你必须使用(car (car list))
两次,写(caar list))
(实际上这可以在Common-Lisp中用(((x)))
缩写(参见reference)。
我留给您完成练习,绘制与x
对应的图表,并找到如何从此列表中提取(function( $ ) {
'use strict';
$(function() {
var trigger = $("#billing_continue");
console.log(trigger);
$(trigger).on("click", function() { shippingScript() } );
function shippingScript() {
console.log("ShippingScript");
var select = $("#shipping_country")[0];
var shipping = $("#shipping_option_select select")[0];
//international shipping option
var world = $(shipping).children("option[value='woocommerce_flatrate_percountry']")[0];
// domestic shipping options
var shipOpts = $(shipping).children("option:not([value='woocommerce_flatrate_percountry'])");
shipOpts = $.makeArray(shipOpts);
function showDomestics() {
console.log("showDomestics");
$(shipOpts).show();
}
function hideDomestics() {
console.log("hideDomestics");
var _select = $("#shipping_country")[0];
$(shipOpts).hide();
var selected = $(_select).children("option:selected")[0];
if ( $.inArray(selected, shipOpts) ) {
$(selected).removeAttr("selected");
$(world).attr("selected", "selected");
} else {
console.log("not in array");
}
}
$(select).on("change", function() {
console.log("changing to a different country")
var selected = $(this).children("option:selected");
$(selected).val() === 'US' ? showDomestics() : hideDomestics();
});
}
});
})( jQuery );
。
答案 1 :(得分:0)
像这样的东西,例如:
(defun first-atom (c)
(if (consp c)
(first-atom (first c))
c)))
这有点错误,因为(first-atom 1)
不是错误,它可能应该是:它需要外部检查cons,它调用递归本地fn来完成工作。有点你明白了。
对于可能出现压痕的缩进感到抱歉:很难在电话上使用。