Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Yonaba/Moses.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYonaba <roland.yonaba@gmail.com>2019-04-01 03:15:46 +0300
committerYonaba <roland.yonaba@gmail.com>2019-04-01 03:15:46 +0300
commitd901f1ff6c02b3e89e4c109f32d5684a8469c6e6 (patch)
tree2c9118a3547cd0dc04ea055dd79123c42e7cac5d
parente2e7af485283ae09c28c97a9af2937b448fd595f (diff)
Made f optional to M.chunk
-rw-r--r--CHANGELOG.md9
-rw-r--r--doc/index.html42
-rw-r--r--doc/manual/tutorial.md.html29
-rw-r--r--doc/tutorial.md13
-rw-r--r--moses.lua3
-rw-r--r--moses_min.lua8
6 files changed, 69 insertions, 35 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 572bbe9..510301d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Version history
+## Unreleased
+
+### Fixes and improvements
+
+* Fixed `chunk` to avoid generating chunks at index 0.
+* Made argument `f` to `chunk` optional. Defaults to `identity`
+* Fixed alias to `uniqueId`
+* Fixed `M.powerset`
+
## 2.1.0 (09/12/2018)
### Breaking changes
diff --git a/doc/index.html b/doc/index.html
index 7df8ccd..5701cce 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -92,10 +92,6 @@
</tr>
<tr>
<td class="name" nowrap><a href="#operator.ge">operator.ge (a, b)</a></td>
- <td class="summary">Returns logical a and b.</td>
- </tr>
- <tr>
- <td class="name" nowrap><a href="#operator.ge">operator.ge (a, b)</a></td>
<td class="summary">Checks if a is greater or equal to b.</td>
</tr>
<tr>
@@ -107,6 +103,10 @@
<td class="summary">Performs integer division between <code>a</code> and <code>b</code>.</td>
</tr>
<tr>
+ <td class="name" nowrap><a href="#operator.land">operator.land (a, b)</a></td>
+ <td class="summary">Returns logical a and b.</td>
+ </tr>
+ <tr>
<td class="name" nowrap><a href="#operator.le">operator.le (a, b)</a></td>
<td class="summary">Checks if a is less or equal to b.</td>
</tr>
@@ -1085,7 +1085,7 @@
<strong>operator.ge (a, b)</strong>
</dt>
<dd>
- Returns logical a and b. <em>Aliased as <code>op.land</code></em>.
+ Checks if a is greater or equal to b. <em>Aliased as <code>op.ge</code></em>.
<h3>Parameters:</h3>
@@ -1101,7 +1101,7 @@
<h3>Returns:</h3>
<ol>
- a and b
+ a >= b
</ol>
@@ -1109,11 +1109,11 @@
</dd>
<dt>
- <a name = "operator.ge"></a>
- <strong>operator.ge (a, b)</strong>
+ <a name = "operator.gt"></a>
+ <strong>operator.gt (a, b)</strong>
</dt>
<dd>
- Checks if a is greater or equal to b. <em>Aliased as <code>op.ge</code></em>.
+ Checks if a is strictly greater than b. <em>Aliased as <code>op.gt</code></em>.
<h3>Parameters:</h3>
@@ -1129,7 +1129,7 @@
<h3>Returns:</h3>
<ol>
- a >= b
+ a > b
</ol>
@@ -1137,11 +1137,11 @@
</dd>
<dt>
- <a name = "operator.gt"></a>
- <strong>operator.gt (a, b)</strong>
+ <a name = "operator.intdiv"></a>
+ <strong>operator.intdiv (a, b)</strong>
</dt>
<dd>
- Checks if a is strictly greater than b. <em>Aliased as <code>op.gt</code></em>.
+ Performs integer division between <code>a</code> and <code>b</code>. <em>Aliased as <code>op.intdiv</code></em>.
<h3>Parameters:</h3>
@@ -1157,7 +1157,7 @@
<h3>Returns:</h3>
<ol>
- a > b
+ a / b
</ol>
@@ -1165,11 +1165,11 @@
</dd>
<dt>
- <a name = "operator.intdiv"></a>
- <strong>operator.intdiv (a, b)</strong>
+ <a name = "operator.land"></a>
+ <strong>operator.land (a, b)</strong>
</dt>
<dd>
- Performs integer division between <code>a</code> and <code>b</code>. <em>Aliased as <code>op.intdiv</code></em>.
+ Returns logical a and b. <em>Aliased as <code>op.land</code></em>.
<h3>Parameters:</h3>
@@ -1185,7 +1185,7 @@
<h3>Returns:</h3>
<ol>
- a / b
+ a and b
</ol>
@@ -2812,7 +2812,7 @@
an array
</li>
<li><span class="parameter">f</span>
- an iterator function prototyped as <code>f (v, k)</code>
+ an iterator function prototyped as <code>f (v, k)</code>. Defaults to <a href="index.html#identity">identity</a>.
</li>
</ul>
@@ -3808,7 +3808,7 @@
</dt>
<dd>
Returns the powerset of array values. For instance, when given the set {1,2,3},
- returns <code>{{1},{2},{3},{1,2},{2,3},{1,2,3}}</code>.
+ returns <code>{{},{1},{2},{3},{1,2},{2,3},{1,3},{1,2,3}}</code>.
<h3>Parameters:</h3>
@@ -7225,7 +7225,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2018-09-20 18:44:46 </i>
+<i style="float:right;">Last updated 2019-04-01 00:06:31 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/doc/manual/tutorial.md.html b/doc/manual/tutorial.md.html
index d0b6a4e..ba76bb9 100644
--- a/doc/manual/tutorial.md.html
+++ b/doc/manual/tutorial.md.html
@@ -27,7 +27,15 @@
<h1>Moses</h1>
-
+<h2>Contents</h2>
+<ul>
+<li><a href="#_a_name__table__Table_functions__a_"><a name='table'>Table functions</a> </a></li>
+<li><a href="#_a_name__array__Array_functions__a_"><a name='array'>Array functions</a> </a></li>
+<li><a href="#_a_name__utility__Utility_functions__a_"><a name='utility'>Utility functions</a> </a></li>
+<li><a href="#_a_name__object__Object_functions__a_"><a name='object'>Object functions</a> </a></li>
+<li><a href="#_a_name__chaining__Chaining__a_"><a name='chaining'>Chaining</a> </a></li>
+<li><a href="#_a_name__import__Import__a_"><a name='import'>Import</a> </a></li>
+</ul>
<h2>Manual</h2>
@@ -36,7 +44,7 @@
</ul>
<h2>Modules</h2>
<ul class="nowrap">
- <li><a href="../index.html">moses</a></li>
+ <li><a href="index.html">moses</a></li>
</ul>
</div>
@@ -1261,14 +1269,23 @@ M.removeRange(array, <span class="number">3</span>,<span class="number">8</span>
</pre>
-<h3>chunk (array, f)</h3>
+<h3>chunk (array [, f])</h3>
<p>Iterates over an array aggregating consecutive values in subsets tables, on the basis of the return value of <code>f(v, k, ...)</code>. Consecutive elements which return the same value are chunked together.</p>
<pre>
-<span class="keyword">local</span> t = {<span class="number">1</span>,<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">3</span>,<span class="number">4</span>}
-M.chunk(t, <span class="keyword">function</span>(v) <span class="keyword">return</span> v%<span class="number">2</span>==<span class="number">0</span> <span class="keyword">end</span>) <span class="comment">-- =&gt; "{{1,1},{2},{3,3},{4}}"</span>
+<span class="keyword">local</span> t = {<span class="number">1</span>,<span class="number">5</span>,<span class="number">2</span>,<span class="number">4</span>,<span class="number">3</span>,<span class="number">3</span>,<span class="number">4</span>}
+M.chunk(t, <span class="keyword">function</span>(v) <span class="keyword">return</span> v%<span class="number">2</span>==<span class="number">0</span> <span class="keyword">end</span>) <span class="comment">-- =&gt; "{{1,5},{2,4},{3,3},{4}}"</span>
+</pre>
+
+
+<p>If not given, <code>f</code> defaults to <a href="index.html#identity">identity</a>.</p>
+
+
+<pre>
+<span class="keyword">local</span> t = {<span class="number">1</span>,<span class="number">5</span>,<span class="number">2</span>,<span class="number">4</span>,<span class="number">3</span>,<span class="number">3</span>,<span class="number">4</span>}
+M.chunk(t) <span class="comment">-- =&gt; "{{1},{5},{2},{4},{3,3},{4}}"</span>
</pre>
@@ -3249,7 +3266,7 @@ M.import(context, <span class="keyword">true</span>)
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2018-09-20 18:44:46 </i>
+<i style="float:right;">Last updated 2019-04-01 00:06:31 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/doc/tutorial.md b/doc/tutorial.md
index 9432e16..371a0ee 100644
--- a/doc/tutorial.md
+++ b/doc/tutorial.md
@@ -1022,13 +1022,20 @@ local array = {1,2,3,4,5,6,7,8,9}
M.removeRange(array, 3,8) -- => "{1,2,9}"
````
-### chunk (array, f)
+### chunk (array [, f])
Iterates over an array aggregating consecutive values in subsets tables, on the basis of the return value of `f(v, k, ...)`. Consecutive elements which return the same value are chunked together.
```lua
-local t = {1,1,2,3,3,4}
-M.chunk(t, function(v) return v%2==0 end) -- => "{{1,1},{2},{3,3},{4}}"
+local t = {1,5,2,4,3,3,4}
+M.chunk(t, function(v) return v%2==0 end) -- => "{{1,5},{2,4},{3,3},{4}}"
+````
+
+If not given, `f` defaults to `identity`.
+
+```lua
+local t = {1,5,2,4,3,3,4}
+M.chunk(t) -- => "{{1},{5},{2},{4},{3,3},{4}}"
````
### slice (array [, start = 1 [, finish = #array]])
diff --git a/moses.lua b/moses.lua
index 083c4c2..f2d4c50 100644
--- a/moses.lua
+++ b/moses.lua
@@ -1197,11 +1197,12 @@ end
-- the same value are chunked together. Leaves the first argument untouched if it is not an array.
-- @name chunk
-- @param array an array
--- @param f an iterator function prototyped as `f (v, k)`
+-- @param f an iterator function prototyped as `f (v, k)`. Defaults to @{identity}.
-- @return a table of chunks (arrays)
-- @see zip
function M.chunk(array, f)
local ch, ck, prev, val = {}, 0
+ f = f or M.identity
for k,v in ipairs(array) do
val = f(v, k)
ck = ((val~=prev) and (ck+1) or ck)
diff --git a/moses_min.lua b/moses_min.lua
index 5ac3e36..d246d1a 100644
--- a/moses_min.lua
+++ b/moses_min.lua
@@ -208,10 +208,10 @@ ruXMob=true end end end end;return nH0LB4c end
function S1wg_DG.removeRange(BZmaGN,HSav,sDjMr)HSav=HSav or 1;sDjMr=sDjMr or#BZmaGN;if HSav>sDjMr then
zupvsz("start cannot be greater than finish.")end
for biQX3Ut=sDjMr,HSav,-1 do lIpFkbLI(BZmaGN,biQX3Ut)end;return BZmaGN end
-function S1wg_DG.chunk(BLEXN_,Ljc)local fpN7T,FNSk_,LmE,pZTFVP={},0
-for XL,L5vC0Jx in kyWtqIf0(BLEXN_)do pZTFVP=Ljc(L5vC0Jx,XL)LmE=
-(LmE==nil)and pZTFVP or LmE;FNSk_=(
-(pZTFVP~=LmE)and(FNSk_+1)or FNSk_)if
+function S1wg_DG.chunk(BLEXN_,Ljc)local fpN7T,FNSk_,LmE,pZTFVP={},0;Ljc=Ljc or S1wg_DG.identity
+for XL,L5vC0Jx in
+kyWtqIf0(BLEXN_)do pZTFVP=Ljc(L5vC0Jx,XL)
+FNSk_=((pZTFVP~=LmE)and(FNSk_+1)or FNSk_)LmE=(LmE==nil)and pZTFVP or LmE;if
not fpN7T[FNSk_]then fpN7T[FNSk_]={BLEXN_[XL]}else
fpN7T[FNSk_][#fpN7T[FNSk_]+1]=BLEXN_[XL]end;LmE=pZTFVP end;return fpN7T end
function S1wg_DG.slice(vpONJ,A,LN)local dA14qP={}for JcQc=A or 1,LN or#vpONJ do