List 如何构建一个函数,如;列表功能“;
如何通过定义结构来模拟“列表?函数” 我想将struct定义为二叉树,并检查每个mycons的正确节点是makemycons还是empty 只关注检查右节点是否需要为mycons或空 (我已经从github找到了list?的sourece代码,但超出了我的能力。)List 如何构建一个函数,如;列表功能“;,list,racket,List,Racket,如何通过定义结构来模拟“列表?函数” 我想将struct定义为二叉树,并检查每个mycons的正确节点是makemycons还是empty 只关注检查右节点是否需要为mycons或空 (我已经从github找到了list?的sourece代码,但超出了我的能力。) 列表的简单版本?: (define (my-list? x) (cond [(eq? x '()) #t] [(pair? x) (my-list? (cdr x))] [else #
列表的简单版本?
:
(define (my-list? x)
(cond
[(eq? x '()) #t]
[(pair? x) (my-list? (cdr x))]
[else #f])
内置的
列表?
更智能。调用cons
时,它检查最后一个参数是否是列表,如果是列表,则在cons单元格的内部表示中翻转一点。这意味着内置的列表?
是O(1),而不是上述解决方案中的O(n)。一个简单版本的列表?
:
(define (my-list? x)
(cond
[(eq? x '()) #t]
[(pair? x) (my-list? (cdr x))]
[else #f])
内置的
列表?
更智能。调用cons
时,它检查最后一个参数是否是列表,如果是列表,则在cons单元格的内部表示中翻转一点。这意味着内置的list?
是O(1),而不是上面的解决方案中的O(n)。我一直想知道list?
的racket不可变列表是O(1),因为我在性能测试中看到了这一点。我尝试了(pair?(cons 3 4))->35; t但我期望#f,因为正确的节点是空的或cons。它是一对,但不是列表。只有当第二个元素是列表时,pair才是列表的第一对。谢谢您的回答。但是如果我们只是使用(cons1empty)之类的东西,那么我们就构建这个列表。它看起来像二叉树。每个左节点都是数字,每个右节点都是cons或空的。(cons 1(cons 2 empty))这不像(cons 1(cons 2 3))我想我误解了你的要求,但是(cons 1(cons 2 empty))
是一个列表,而(cons 1(cons 2 3))
不是。我想知道racket不可变列表是O(1)表示列表?
,因为我在性能测试中看到了这一点。我尝试了(配对)?(cons 3 4))->#t但我期望#f,因为右侧节点为空或cons。这是一对,但不是列表。只有当列表的第二个元素是列表时,一对才是列表的第一对。感谢您的回答。但是如果我们只使用类似(cons 1 empty)的内容,请不要使用(cons 1 2)然后我们建立这个列表。它看起来像二叉树。每个左节点都是数字每个右节点都是cons或空的。(cons 1(cons 2 empty))它不像(cons 1(cons 2 3))我想我误解了你的要求,但是(cons 1(cons 2 empty))
是一个列表,而(cons 1(cons 2 3))
不是。