【发布时间】:2019-11-30 03:30:17
【问题描述】:
仍在尝试在 lisp 中重新创建 lodash,以作为熟悉该语言的一种方式。这次我需要算法和句法方面的帮助。
尝试重新创建 _.difference 函数,在 lisp 中,该函数将在输入列表中创建不包含在其他给定列表中的值列表,同时保持原始列表的顺序。
_.difference((2, 1), (2, 3));
// => (1)
不知道如何处理这个问题,我基本上希望能够在遍历后续列表时从initial-list 列表中弹出值。
【问题讨论】:
-
作为一种简单的方法,您可以循环遍历
initial-list,如果您不能find其他列表中的元素,则循环collect它 -
有道理,你如何跟踪是否在任何后续列表中都找不到元素?
-
我会写一个函数来找出两个列表的差异——然后折叠或减少所有列表——随后的差异是可交换的
-
你介意写一些骨架代码来说明吗?部分问题是我不知道在 lisp 中这样做的正确方法是什么。
-
注意:在提出问题时使用
set-difference减少是不正确的,因为它不能保证顺序。
标签: lisp common-lisp