У меня есть функция, которая корректно работает на данный момент ... Но это, к сожалению, создает очень большую строку перед ее отображением.SML: Замена concat путем прямой печати строки
Я хотел бы, чтобы отобразить каждую строку непосредственно вместо concatening их, но я не знаю, как это сделать ...
Вот функция:
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'
возможно, а затем:
fun af w = print(getBlocked(w))
с af
Я способен отображать один узел. И тогда в конечном коде я звоню
app af (Nodestore.listNodes())
И моя функция app
будет называть af
на всех Node
моего listNodes()
.
Как я уже говорил, этот код работает, но когда список начинает быть огромным, его больше не использовать ... Мое предположение, что concat
определенно не очень хорошая идея, поэтому я хотел бы его заменить и иметь возможность отображать непосредственно каждый w'
преемник каждого w
. Но, к сожалению, я совсем новичок в SML, и я не знаю, как это сделать ...
Заранее спасибо за вашу помощь :)
С наилучшими пожеланиями.
Спасибо! * - * Это именно то, что я хочу :) Мне просто нужна функция из того, что вы написали, что дает мне количество времени, которое мы называем «renderW», и я полностью разрешу свою проблему :) Любая идея как я мог это сделать? Если неважно, вы уже много сделали, я справлюсь с этим :) –
@ValentinMontmirail Я добавил для этого версию. Надеюсь, поможет. –
Кажется очень приятным :), но сначала мне нужно знать, сколько будет, и тогда мне нужно будет его отобразить:/ И в этом коде он делает оба в одно и то же время:/и я действительно не знаю, как я может получить доступ к этому 'count':/ –