有人能告诉我这段代码中的错误吗? 我想概括成员函数以支持嵌套列表。我需要在嵌套列表中搜索内容,并在找到内容时返回列表的其余部分。我真的不明白下面的代码有什么问题。
(define (memberk thing lis)
(cond
((null? lis) #f)
((list? (car lis))
(cons (memberk thing (car lis))
(memberk thing (cdr lis))))
(else
(if (equal? (car lis) thing)
lis
(memberk thing (cdr lis))))))
Expexted输出:(memberk 3 '(1 4 (3 1) 2))
= '((3 1) 2)
上述代码的实际输出:'((3 1) . #f)
答案 0 :(得分:1)
所以我怎么看这个你想要在car
中找到密钥的顶级缺点。我想的是:
(define (memberk needle lst)
(define (found? haystack)
(or (equal? needle haystack)
(and (pair? haystack)
(or (found? (car haystack))
(found? (cdr haystack))))))
(let loop ((lst lst))
(cond ((null? lst) #f)
((found? (car lst)) lst)
(else (loop (cdr lst))))))
(memberk '(a) '(a b (b (a) c) c d)) ; ==> ((b (a) c) c d)
答案 1 :(得分:0)
这样的东西?
有点不清楚你想要什么 - 因为只有一个测试用例。
function map_path($path,$arr)
{
if (($path=='')||(isEmpty($arr)))
return array();
$start=strpos($path,'.');
if ($start>=0)
{
$prefix=substr($path,0,$start);
$suffix=substr($path,$start+1);
return array_map(function ($a) {return array(
$prefix => map_path($suffix,$a))
);},$arr);
}
else
return array($path => $array[$path]);
}