如何构建“列表?功能”之类的功能

时间:2019-08-15 12:03:02

标签: list racket

如何通过define-struct模拟“列表功能”。

我想将结构定义为二叉树,并检查每个mycons的正确节点是make-mycons还是空的。

仅关注检查右节点需要为mycons或为空。

(我已经从github找到list?的源代码,但是超出了我的能力。)

if(!arr_ignore.includes(some_value))
  your_function();

1 个答案:

答案 0 :(得分:0)

list?的简单版本:

(define (my-list? x)   
  (cond
    [(eq? x '()) #t]
    [(pair? x)   (my-list? (cdr x))]
    [else       #f])

内置list?更聪明。调用cons时,它将检查最后一个参数是否为列表,如果为列表,则在cons单元的内部表示中翻转一位。这意味着内置list?是O(1)而不是O(n),如上面的解决方案。