Объединение двух списков в Haskell

Я нашел идеальное решение этой проблемы в Apple Text Layout Guide по программированию . Вот решение, которое предлагает Apple:

NSLayoutManager *layoutManager = [textView layoutManager];
unsigned numberOfLines, index;
unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
NSRange lineRange;

for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++){
    (void) [layoutManager lineFragmentRectForGlyphAtIndex:index effectiveRange:&lineRange];
    index = NSMaxRange(lineRange);
}

Это можно легко записать в расширение для UITextView или в качестве автономного метода, принимающего объект UITextView в качестве параметра

24
задан Will Ness 16 July 2015 в 10:15
поделиться

1 ответ

Так почему же вы думаете, что простой (конкат. Транспонированный) «недостаточно хорош»? Я предполагаю, что вы пробовали что-то вроде:

merge :: [[a]] -> [a]
merge = concat . transpose

merge2 :: [a] -> [a] -> [a]
merge2 l r = merge [l,r]

Таким образом, вы можете избежать явной рекурсии (против первого ответа), и все же это проще, чем второй ответ. Так в чем же недостатки?

23
ответ дан 28 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: