即时尝试加载sxml文件...我设法在方案中执行此操作。现在我想通过使用递归和找到我想要的项目来完成它。我的代码是这样的,
(define file (read(open-input-file "test1.sxml")))
(define myfunc
(lambda (S)
(if (eq? "foo" (car S))
(display "found\n")
(display "not found\n")
)
(if (null? (cdr S))
(display "\n")
(myfunc(cdr S)))))
但它似乎只通过sxml文件的第一行。我怎么能让它通过所有文件直到结束?
答案 0 :(得分:0)
1)您需要搜索结构的所有子列表。您的代码现在只查看最顶层的元素。
2)您通常不希望连续多个语句(如两个if
语句)
3)您可能希望在SXML文件中查找符号而不是字符串。无论如何,您必须使用equal?
来比较字符串。
因此,您的功能变为
(define myfunc
(lambda (S)
(cond
((null? S) #f)
((pair? (car S)) (or (myfunc (car S)) (myfunc (cdr S)))) ; search on sublists
((equal? "foo" (car S)) #t) ; if found, return true
(else (myfunc (cdr S))))))