【发布时间】:2016-04-10 18:43:11
【问题描述】:
我有一个小问题。
我进行了计算,但我的所有 ID 不再相互跟踪(因为在计算过程中进行了一些删除)。不幸的是,为了使我的结果有效,我需要这个顺序......:/
因此,为了简化任务,我创建了一个外部函数,它将“重命名”所有 ID,但我不知道如何执行此操作。
这是我得到的功能:
fun setId (W {id, ...}) =
let
in
print( "[" ^ Int.toString (id) ^ "]");
print( "[" ^ Int.toString (!nextId) ^ "]\n");
Ref.incr nextId
end
(对于那些正在徘徊的人app只是一个自制函数,可以对列表的每个元素执行相同的计算,但这并不重要。)
当我执行这段代码时,我在输出中获得:
[0][0]
[1][1]
[2][2]
[3][3]
[4][4]
[5][5]
[6][6]
[7][7]
[8][8]
[9][9]
[10][10]
[11][11]
[12][12]
[13][13]
[14][14]
[15][15]
[16][16]
[17][17]
[18][18]
[19][19]
[20][20]
[21][21]
[22][22]
[39][23]
[40][24]
[41][25]
[42][26]
[43][27]
[44][28]
[45][29]
[46][30]
[47][31]
[48][32]
[49][33]
[50][34]
[51][35]
[52][36]
[53][37]
如您所见,[23] [39] 存在一个大问题,该列表没有以下数字。 :/
基本上,我希望函数setId能够修改节点的ID。但我不知道如何:/
这里是数据类型 Node 用于理解目的:
datatype node =
W of {
id : int
, predId : int option
, creationDepcy : Dependency.depcy
, nominalDepcies : Dependency.depcy list ref
, pattern : Termstore.store
, propositions : Propstore.pstore
, nominals : Propstore.pstore
, diamonds : Termstore.store
, boxes : Termstore.store
, disjunctions : Termstore.store
, nglstore : Termstore.store
, lazyProps : Lazystore.store
, lazyNoms : Lazynomstore.store
, lazyBoxes : Lazyboxstore.store
, blockedDiamonds : (Term.index * int) list ref
, branchPoints : int list ref
}
提前感谢您的帮助!
最好的问候。
【问题讨论】: