Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Scheme—运行多种类型的平面列表并添加字符串_List_Scheme_Racket - Fatal编程技术网

List Scheme—运行多种类型的平面列表并添加字符串

List Scheme—运行多种类型的平面列表并添加字符串,list,scheme,racket,List,Scheme,Racket,嘿,所以我得浏览一下这个列表 (define disk '("D" "main" (("F" "file1.txt" (30) ("D" "sub1" (("F" "file1.txt" (1234)) ("F" "file2.txt" (2345)) ("F" "file3.txt" (3456)))) ("D" "sub2" (("F" "file1.txt" (1234))

嘿,所以我得浏览一下这个列表

(define disk
  '("D"
    "main"
    (("F" "file1.txt"
      (30)
      ("D" "sub1"
       (("F" "file1.txt" (1234))
        ("F" "file2.txt" (2345))
        ("F" "file3.txt" (3456))))
      ("D" "sub2"
       (("F" "file1.txt" (1234))
        ("F" "file2.txt" (2345))
        ("F" "file3.txt" (3456))))))))
此函数将树分解为一个平面列表:

(define (visit-tree tree)
  (if (list? tree)
    (for-each visit-tree tree)
    (begin
      (display tree)
      (newline))))


 (visit-tree disk)
然而,当我试图用sum函数运行代码时,我得到了一个错误

(let((sum 0))
   (visit-tree(lambda (x)
                (if (integer? x)
                    (set! sum (+ sum x))))
              disk)
   (display sum))

 visit-tree: arity mismatch;
 the expected number of arguments does not match the given number
  expected: 1
  given: 2
  arguments...:
这是因为我的访问树函数需要2个参数,但当我添加'fn'作为第二个参数时,我只得到另一个错误

(define (visit-tree fn tree)
  (if (list? tree)
    (for-each visit-tree fn tree)
    (begin
      (display tree)
      (newline))))


 (visit-tree fn disk)

 (let((sum 0))
   (visit-tree(lambda (x)
                (if (integer? x)
                    (set! sum (+ sum x))))
              disk)
   (display sum))
它告诉我fn还没有被声明,这我理解,但是我怎么能调用lambda呢?如何修复此代码?谢谢你。

这就是我所得到的

(define(processElement a)
   (if (eq?(car a) "F")
     (file a)

  (display +(file a) (directory a)
  (if (eq?(car a) "D")

  (display +(file a) (directory a))))))


(define (file a)
  (display (car(cdr(cdr a)))))


(define (directory a)
(cdr a))


(define (processDirectoryContents a)
(if (null? a)
  (display "Finish")
(processElement a)
(processDirectoryContents a)
))


(directory disk)

你期望什么样的产出?