Vim documentation: vital/Data/LazyList

main help file
vital/Data/LazyList.txt       lazy list including file io.

Maintainer: ujihisa <ujihisa at gmail com>

==============================================================================
CONTENTS                        Vital.Data.LazyList-contents

INTRODUCTION                    Vital.Data.LazyList-introduction
  USAGE                         Vital.Data.LazyList-usage
INTERFACE                       Vital.Data.LazyList-interface
  FUNCTIONS                       Vital.Data.LazyList-functions
INTERNAL                        Vital.Data.LazyList-internal
  DATA STRUCTURE                  Vital.Data.LazyList-datastructure

==============================================================================
INTRODUCTION                    Vital.Data.LazyList-introduction

Vital.Data.LazyList is TODO

==============================================================================
USAGE                           Vital.Data.LazyList-usage

        let s:L = vital#{plugin-name}#new().import('Data.LazyList')
        let xs = s:L.file_readlines('/tmp/a.txt')
        let xs = s:L.map(xs, 'split(v:val, ":")')
        let xs = s:L.filter(xs, 'v:val[1] < 3')
        echo s:L.take(3, xs)


==============================================================================
INTERFACE                       Vital.Data.LazyList-interface

------------------------------------------------------------------------------
FUNCTIONS                       Vital.Data.LazyList-functions

from_list({list})               Vital.Data.LazyList.from_list()
        Constructs lazy list based on given List {list}.

iterate({init}, {f})            Vital.Data.LazyList.iterate()
        Constructs lazy list based on given initial value {init} and a
        function {f} to make new item of lazy list based on previous value,
        described in String.

        :echo L.take(3, L.iterate(0, 'v:val + 1'))
        [0, 1, 2]
        :echo L.take(3, L.filter(L.iterate(0, 'v:val + 1'), 'v:val % 2 == 0'))
        [0, 2, 4]


file_readlines({fname})         Vital.Data.LazyList.file_readlines()
        Constructs lazy list based on given filename String {fname}.
        This function requires vimproc.

        For example, the following line of code will read first 4 lines from
        the given file "/tmp/a.txt".

        L.take(4, L.file_readlines('/tmp/a.txt'))


take({n}, {xs})                 Vital.Data.LazyList.take()
        De-constructs from lazy list {xs} to List, but the length will be at
        most {n}.
        See other functions such as Vital.Data.LazyList.iterate() for sample
        use case.

        You may get confused by the order of arguments, but it's on purpose.

zip({xs}, {ys})                 Vital.Data.LazyList.zip()
        Constructs a new lazy list based on given 2 lazy lists {xs} and {ys}.

        :let xs = L.from_list([3, 1, 4])
        :let ys = L.from_list(['a', 'b', 'c'])
        :echo L.take(3, L.zip(L.map(xs, 'v:val + 1'), ys))
        [[4, 'a'], [2, 'b'], [5, 'c']]

filter({xs}, {string})                  Vital.Data.LazyList.filter()

map({xs}, {string})                     Vital.Data.LazyList.map()


==============================================================================
INTERNAL                        Vital.Data.LazyList-internal

------------------------------------------------------------------------------
DATA STRUCTURE                  Vital.Data.LazyList-datastructure

        This section is only for deep understanding of lazy list
        implementation just for  debugging / developing this library itself.
        Any application code should not depend on its internal data structure
        since vital developers may make changes without explicitly telling.


        :echo L.from_list([3, 1, 4])
        [[], {'list': [3, 1, 4], 'run': function('<SNR>385__f_from_list')}]

        A lazy list is a tuple (a 2-item List).  The left side is registered
        functions to apply when you take items from the lazy list. Each item
        is a string which has "v:val" that returns an empty list or a list
        which only has 1 item if you eval() it. The right side is a
        Dictionary which either at least has "run" key where the value is a
        Funcref or an empty dict {} which means the end of the lazy list.
        This is for generating an item and upcoming uncalculated next items.

==============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl

top - main help file - tag index