@@ -142,6 +142,10 @@ for _, a in iter(1, 2, 3, 4, 5, 6, 7) do print(a) end
142142attempt to iterate a number value
143143--]]
144144
145+ op " --"
146+ --[[ ERROR
147+ no such operator
148+ --]]
145149
146150-- ! each
147151
@@ -403,6 +407,24 @@ print(all(_"_1 >= 10, _1 <= 20", take(20, rand(10, 20))))
403407true
404408--]]
405409
410+ local f , r = split (5 , range (10 ))
411+ f :each (print )
412+ print ' ---'
413+ r :each (print )
414+ --[[ OUTPUT
415+ 1
416+ 2
417+ 3
418+ 4
419+ 5
420+ ---
421+ 6
422+ 7
423+ 8
424+ 9
425+ 10
426+ --]]
427+
406428
407429-- iter.array = array
408430-- iter.resolve = resolve
@@ -644,6 +666,14 @@ iter {1,2,2,3,3,4,5} :groupby(_"_2, _2"):map(_G.unpack or table.unpack)
6446665
645667--]]
646668
669+ iter {1 ,2 ,2 ,3 ,3 ,4 ,5 } :group (3 ):map (_G .unpack or table.unpack )
670+ :each (print )
671+ --[[ OUTPUT
672+ 1,1,2,2,3,2
673+ 4,3,5,3,6,4
674+ 7,5
675+ --]]
676+
647677array {1 ,2 ,2 ,3 ,3 ,4 ,5 } :packgroupby ():flatmap (array ):map (_G .unpack or table.unpack )
648678:each (print )
649679--[[ OUTPUT
@@ -675,6 +705,14 @@ c,three
675705d,nil
676706--]]
677707
708+ zip (array {" a" , " b" , " c" , " d" }, iter {" one" , " two" , " three" }):each (print )
709+ --[[ OUTPUT
710+ a,1,one
711+ b,2,two
712+ c,3,three
713+ d,nil
714+ --]]
715+
678716zipall (array {" a" , " b" , " c" , " d" }, array {" one" , " two" , " three" }):each (print )
679717--[[ OUTPUT
680718a,one
@@ -819,6 +857,35 @@ filter(_"_1 % 3 == 0", range(10)):each(print)
8198579
820858--]]
821859
860+ filterout (_ " _1 % 3 == 0" , range (10 )):each (print )
861+ --[[ OUTPUT
862+ 1
863+ 2
864+ 4
865+ 5
866+ 7
867+ 8
868+ 10
869+ --]]
870+
871+ local f1 ,r1 = partition (_ " _1 % 3 == 0" , range (10 ))
872+ f1 :each (print )
873+ print ' ---'
874+ r1 :each (print )
875+ --[[ OUTPUT
876+ 3
877+ 6
878+ 9
879+ ---
880+ 1
881+ 2
882+ 4
883+ 5
884+ 7
885+ 8
886+ 10
887+ --]]
888+
822889filter (_ " _1 % 3 == 0" , range (0 )):each (print )
823890--[[ OUTPUT
824891--]]
880947
881948-- ! reducing
882949
883- eq (_ .self (range (10 )).reduce (op .add )(), 55 )
884-
885950eq (range (10 ):map (- _1 ):reduce (_1 + _2 ), - 55 )
886951eq (foldl (_1 + _2 , nil , range (5 )), 15 )
887952eq (foldl (_1 + _2 , 0 , range (5 )), 15 )
@@ -924,6 +989,15 @@ eq(any(_1, {}), false)
924989
925990-- ! operators
926991
992+ eq (_ .self (range (10 )).reduce (op .add )(), 55 )
993+ eq (_ (_1 .range )(10 )(_G ):reduce (op .add ), 55 )
994+ _ (_3 )(_2 , _1 .. _2 , _ .dots )(" world" , " hello" , print , " a" , " b" , " c" )
995+ print (_ .andor (_ .le (_1 , _2 ), _3 , _4 )(1 , 2 , " foo" , " bar" ))
996+ --[[ OUTPUT
997+ hello,worldhello,a,b,c
998+ foo
999+ --]]
1000+
9271001eq (op , operator ) -- an alias
9281002
9291003local comparators = { ' le' , ' lt' , ' eq' , ' ne' , ' ge' , ' gt' }
0 commit comments