Greg的图提供了通用Lisp类型系统的全面图片。但我正在努力更好地理解层次结构顶端的类关系。对于一个简单的例子,让(defstruct person name age),然后(defparameter *p1* (make-person :name "Yosh" :age 19)。现在
(typep *p1* 'person)
T
(typep *p1* 'structure)
T
(typep *p1* 'structure-object)
T
(typep *p1* 'atom)
T
(typep *p1* t)
T
表示,struct
我很熟悉list.remove,它会通过删除传递的元素的第一个实例来改变列表,如果元素不存在就会引发一个值错误。
我正在寻找的是一个函数,它不会改变列表,而是返回一个没有给定元素的列表副本。所以,举个例子,不是执行
l = [1,2,3]
l.remove(2)
我会执行
l = [1,2,3].remove(2)
这样做的目的是为了使将这种类型的逻辑放入字典定义中变得更简单。因此,而不是:
l = [1,2,3]
l.remove(2)
d = {
'theList': l
}
我只是有
d = {
'theList': [1,2,3].remove(
我写了一个小函数,它应该在一个给定的(无undiricted)图中找到一个圆,如果它找到一个圆,返回true,如果没有,返回true。
def dfs(v,last):
if vis[v] == True:
return True
vis[v] = True
c = False
for el in adj[v]:
if el == last:
adj[v].remove(el)
else:
c = c or dfs(el,v)
return c
邻接列
我编写了以下方法来扁平化嵌套列表的深层层次结构(我使用的是TypeScript,但您了解JS的概念)。
该方法针对每个顶级<li>元素运行,以便在其自身后面插入其所有后代<li>:
// Flatten a nested list branch - acts in reverse to allow for nested lists
_flattenBranch(element: HTMLElement)
{
var el = $(element);
$(el.find('li').get().rev
使用F#中的递归,我应该编写一个递归函数来从列表l中删除整数n。
这就是我到目前为止所知道的:
let rec remove n l match l with | E -> failwith "Empty List" | L(h,E) -> if (h=n) then 0 else h | L(h,t) -> if (h=n) then remove n t else h + remove n t
在上面的代码中,我对它进行了设置,使其在从列表中排除给定的整数n之后,返回列表中元素的总和,而不是列表中的实际元素。
在排除给定的整数n之后,我需要帮助返回列表中剩