lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


> t was thus said that the Great Luke once stated

What, I'm just giving on opinion on what learning lua is like...
there's really no need to be rude at all

Luke
On Fri, 9 Nov 2018 at 19:07, Sean Conner <sean@conman.org> wrote:
>
> It was thus said that the Great Luke once stated:
> > That's a shame.
> >
> > Are these "advanced concepts" difficult to learn or do they just
> > depend on handful of other terms? Seed was in the lectures' definition
> > of fold, and then the next slide confused confused me further:
>
>   Some, like "map" or "fold", are not difficult but depend upon other concepts;
> others like "monad" are so opaque as to defy definition (a monad is just a
> monoid in the category of endofunctors, or so I'm told, but I'm not a
> mathematician or type theorist).
>
> > But I believe that map never takes any parameters other than the
> > function it is called with: square builds a new function from a map
> > function that never sees the table.
>
>   Maybe "a" particular implementation of map() will do that, but not all.
> In general, you have three related concepts:  map, filter, reduce (or fold).
>
>         map: maps a list of values to new values, for instance:
>
>                 x = { 1 , 2 , 3 , 4}
>                 y = map(x,function(x) return x * x end)
>                 -- y has { 1 , 4 , 9 , 16 }
>
>         filter: filters out values that fit some criteria into a new list.
>
>                 y = filter(x,function(x) return x % 2 == 0 end)
>                 -- y has { 2 , 4 }
>
>         reduce (aka fold): maps a list of values to a single result, such
>                as the sum of all items:
>
>                 y = reduce(x,function(a,b) return a + b end)
>                 -- y is now 10
>
>   The think to keep in mind is that in general, map() need not work "left to
> right" (it can do it right to left, or all at the same time, etc.).
> reduce() will usually go "left to right" and if you need the opposite
> direction, there might be a reducer() function; filter works simularly, but
> as always, check the manual before using.
>
>   Also, every instance I've seen (in other langauges; other implementations)
> map() will also always take the data and a function to run over the items;
> same for filter() and reduce().
>
>   -spc (Remember, the meanings behind these terms will come in time,
>         except for monads ... )
>