···144144 "dev.onyxstudios")
145145 exactRepo("https://maven.pool.net.eu.org/",
146146 "dev.kineticcat.hexportation",
147147- "miyucomics.hexcellular",
148147 "miyucomics.hexical",
149148 "miyucomics.overevaluate",
150149 "org.eu.net.pool",
···469468 n++
470469 } else if (page is MutableMap<*, *>) {
471470 page as MutableMap<Any, Any>
472472- for (key in listOf("text", "title")) {
471471+ for (key in listOf("text", "title", "header")) {
473472 val text = page[key]
474473 if (text != null && text is String) {
475474 entries["text.hexic.book.${n}"] = text
···6363 },
6464 {
6565 "type": "hexcasting:pattern",
6666+ "header": "Exterior Distillation",
6667 "op_id": "hexcasting:mul",
6768 "anchor": "hexcasting:mul",
6869 "input": "[a], [b]",
···7172 },
7273 {
7374 "type": "hexcasting:pattern",
7474- "op_id": "hexcasting:mul",
7575- "anchor": "hexcasting:mul",
7575+ "header": "Interior Distillation",
7676+ "op_id": "hexcasting:div",
7777+ "anchor": "hexcasting:div",
7678 "input": "[a], [b]",
7779 "output": "[[a, b]]",
7880 "text": "Calculates the inner product of two lists. If the two lists were arranged side-by-side, the resulting list has one entry for every row (unpaired elements are skipped)."
+15-1
src/main/scala/org/eu/net/pool/hexic/Hexic.scala
···19271927 Patterns.mkConstAction(2):
19281928 case Seq(ary: ListIota, nr: DoubleIota) =>
19291929 val ls = ary.getList.toSeq
19301930- val n = iotaInt(nr, throw MishapInvalidIota.ofType(nr, 0, "int"))
19301930+ val n = iotaInt(nr, under = ls.size, throw MishapInvalidIota.of(nr, 0, "int.positive.less", ls.size))
19311931 Seq(ListIota(ls take n), ListIota(ls drop (n+1)), ls(n))
19321932 case Seq(ary: ListIota, nr) => throw MishapInvalidIota.ofType(nr, 0, "int")
19331933 case Seq(ary, _) => throw MishapInvalidIota.ofType(ary, 1, "list")
···21312131 else
21322132 i
21332133 case _ => er
21342134+@targetName("iotaInt max")
21352135+def iotaInt(iota: Iota, max: Int, er: => Nothing): Int =
21362136+ val x = iotaInt(iota, er)
21372137+ if x > max then
21382138+ er
21392139+ else
21402140+ x
21412141+@targetName("iotaInt under")
21422142+def iotaInt(iota: Iota, under: Int, er: => Nothing): Int =
21432143+ val x = iotaInt(iota, er)
21442144+ if x >= under then
21452145+ er
21462146+ else
21472147+ x
2134214821352149extension [T, R] (f: T => R) def ∘ [U](g: U => T) = (x: U) => f(g(x))
21362150def wrapReturn[T](body: (T => Nothing) => T): T = body(return _)