【发布时间】:2016-08-24 13:10:15
【问题描述】:
我有一个现在可以正常工作的功能... 但不幸的是,在显示之前构建了一个非常大的字符串。
我想直接显示每个字符串而不是连接它们,但我不知道该怎么做...
函数如下:
fun getBlocked w =
case BlockingMgr.listBlockedSuccessors w
of nil => ""
| ws =>
concat (
List.map (
fn (r, w') => (
" v " ^ r ^
" w " ^ Int.toString (Node.getId w ) ^
" w" ^ Int.toString (Node.getId w') ^ "\n"
) ws
)
这个函数连接所有w'possible 然后:
fun af w = print( getBlocked(w) )
使用af 我可以显示一个节点。然后在我调用的最终代码中
app af ( Nodestore.listNodes() )
我的函数app 将在我的listNodes() 的所有Node 上调用af。
正如我所说,这段代码可以工作,但是当列表开始变得很大时,它就不再可用了......我的猜测是concat 绝对不是一个好主意,所以我想替换它并能够直接显示每个w' 的每个w 的继任者。但不幸的是,我是 SML 的新手,我不知道该怎么做......
提前感谢您的帮助:)
最好的问候。
【问题讨论】:
标签: algorithm optimization sml smlnj