@@ -228,16 +228,16 @@ An atom.
228228
229229Tail
230230
231−Produces an atom by taking the last `b` blocks of size `a` from `c`.
231+Produces an atom by taking the last `step` blocks of size `bloq` from `b`.
232232
233233#### Accepts
234234
235−`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
235+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
236+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
237+with optional block count.
236238
237239`b` is an atom.
238240
239−`c` is an atom.
240−
241241#### Produces
242242
243243An atom.
@@ -248,44 +248,48 @@ An atom.
248248```hoon
249249 ++ end
250250 ~/ %end
251− |= [a=bloq b=@u c=@]
252− (mod c (bex (mul (bex a) b)))
251+ |= [a=bite b=@]
252+ =/ [=bloq =step] ?^(a a [a *step])
253+ (mod b (bex (mul (bex bloq) step)))
253254```
254255
255256#### Examples
256257
257258```
258− > (end 2 2 255)
259+ > (end [2 2] 255)
260+ 255
261+
262+ > (end [3 1] 255)
259263 255
260264
261− > (end 3 1 255)
265+ > (end 3 255)
262266 255
263267
264− > (end 3 1 256)
268+ > (end 3 256)
265269 0
266270
267271 > `@ub`12 :: @ub is the binary aura
268272 0b1100
269273
270− > `@ub`(end 0 3 12)
274+ > `@ub`(end [0 3] 12)
271275 0b100
272276
273− > (end 0 3 12)
277+ > (end [0 3] 12)
274278 4
275279
276− > `@ub`(end 1 3 12)
280+ > `@ub`(end [1 3] 12)
277281 0b1100
278282
279− > (end 1 3 12)
283+ > (end [1 3] 12)
280284 12
281285
282286 > `@ux`'abc' :: @ux is the hexademical aura
283287 0x63.6261
284288
285− > `@ux`(end 3 2 'abc')
289+ > `@ux`(end [3 2] 'abc')
286290 0x6261
287291
288− > `@t`(end 3 2 'abc') :: @t is the cord aura
292+ > `@t`(end [3 2] 'abc') :: @t is the cord aura
289293 'ab'
290294```
291295
@@ -347,16 +351,16 @@ An atom.
347351
348352Left-shift
349353
350−Produces an atom by left-shifting `c` by `b` blocks of size `a`.
354+Produces an atom by left-shifting `b` by `step` blocks of size `bloq`.
351355
352356#### Accepts
353357
354−`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
358+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
359+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
360+with optional block count.
355361
356362`b` is an atom.
357363
358−`c` is an atom.
359−
360364#### Produces
361365
362366An atom.
@@ -366,8 +370,9 @@ An atom.
366370```hoon
367371 ++ lsh
368372 ~/ %lsh
369− |= [a=bloq b=@u c=@]
370− (mul (bex (mul (bex a) b)) c)
373+ |= [a=bite b=@]
374+ =/ [=bloq =step] ?^(a a [a *step])
375+ (mul b (bex (mul (bex bloq) step)))
371376```
372377
373378#### Examples
@@ -376,19 +381,22 @@ An atom.
376381 > `@ub`1 :: @ub is the binary aura
377382 0b1
378383
379− > `@ub`(lsh 0 1 1)
384+ > `@ub`(lsh [0 1] 1)
380385 0b10
381386
382− > (lsh 0 1 1)
387+ > (lsh [0 1] 1)
388+ 2
389+
390+ > (lsh 0 1)
383391 2
384392
385393 > `@ub`255
386394 0b1111.1111
387395
388− > `@ub`(lsh 3 1 255)
396+ > `@ub`(lsh [3 1] 255)
389397 0b1111.1111.0000.0000
390398
391− > (lsh 3 1 255)
399+ > (lsh [3 1] 255)
392400 65.280
393401```
394402
@@ -509,7 +517,9 @@ Produces an atom by assembling a list of atoms `b` using block size `a`.
509517
510518#### Accepts
511519
512−`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
520+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
521+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
522+with optional block count.
513523
514524`b` is a list of atoms.
515525
@@ -522,12 +532,13 @@ An atom.
522532```hoon
523533 ++ rep
524534 ~/ %rep
525− |= [a=bloq b=(list @)]
526− ^- @
527− =+ c=0
528− |-
529− ?~ b 0
530− (add (lsh a c (end a 1 i.b)) $(c +(c), b t.b))
535+ |= [a=bite b=(list @)]
536+ =/ [=bloq =step] ?^(a a [a *step])
537+ =| i=@ud
538+ |- ^- @
539+ ?~ b 0
540+ %+ add $(i +(i), b t.b)
541+ (lsh [bloq (mul step i)] (end [bloq step] i.b))
531542```
532543
533544#### Examples
@@ -548,8 +559,11 @@ An atom.
548559 > `@ub`8
549560 0b1000
550561
551− > (rep 0 [0 1 0 0 ~])
552− 2
562+ > `@ub`(rep 0 [1 0 1 0 ~])
563+ 0b101
564+
565+ > `@ub`(rep 0 [1 2 3 4 ~])
566+ 0b101
553567
554568 > (rep 0 [0 1 0 1 ~])
555569 10
@@ -562,6 +576,12 @@ An atom.
562576
563577 > `@ub`(rep 3 [12 166 8 34 ~])
564578 0b10.0010.0000.1000.1010.0110.0000.1100
579+
580+ > `*`"abcd"
581+ [97 98 99 100 0]
582+
583+ > `@t`(rep 3 "abcd") :: @t is the text aura
584+ 'abcd'
565585```
566586
567587
@@ -574,7 +594,9 @@ Produces a list of atoms from the bits of `b` using block size `a`.
574594
575595#### Accepts
576596
577−`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
597+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
598+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
599+with optional block count.
578600
579601`b` is an atom.
580602
@@ -587,10 +609,10 @@ A list of atoms.
587609```hoon
588610 ++ rip
589611 ~/ %rip
590− |= [a=bloq b=@]
612+ |= [a=bite b=@]
591613 ^- (list @)
592614 ?: =(0 b) ~
593− [(end a 1 b) $(b (rsh a 1 b))]
615+ [(end a b) $(b (rsh a b))]
594616```
595617
596618#### Examples
@@ -622,6 +644,9 @@ A list of atoms.
622644
623645 > (rip 3 256)
624646 ~[0 1]
647+
648+ > `tape`(rip 3 'abcd')
649+ "abcd"
625650```
626651
627652
@@ -630,16 +655,16 @@ A list of atoms.
630655
631656Right-shift
632657
633−Right-shifts `c` by `b` blocks of size `a`, producing an atom.
658+Right-shifts `b` by `step` blocks of size `bloq`, producing an atom.
634659
635660#### Accepts
636661
637−`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
662+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
663+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
664+with optional block count.
638665
639666`b` is an atom.
640667
641−`c` is an atom.
642−
643668#### Produces
644669
645670An atom.
@@ -649,8 +674,9 @@ An atom.
649674```hoon
650675 ++ rsh
651676 ~/ %rsh
652− |= [a=bloq b=@u c=@]
653− (div c (bex (mul (bex a) b)))
677+ |= [a=bite b=@]
678+ =/ [=bloq =step] ?^(a a [a *step])
679+ (div b (bex (mul (bex bloq) step)))
654680```
655681
656682#### Examples
@@ -659,38 +685,125 @@ An atom.
659685 > `@ub`145 :: @ub is the binary aura
660686 0b1001.0001
661687
662− > `@ub`(rsh 1 1 145)
688+ > `@ub`(rsh [1 1] 145)
663689 0b10.0100
664690
665− > (rsh 1 1 145)
691+ > (rsh [1 1] 145)
666692 36
667693
668− > `@ub`(rsh 2 1 145)
694+ > (rsh 1 145)
695+ 36
696+
697+ > `@ub`(rsh [2 1] 145)
669698 0b1001
670699
671− > (rsh 2 1 145)
700+ > (rsh [2 1] 145)
672701 9
673702
674703 > `@ub`10
675704 0b1010
676705
677− > `@ub`(rsh 0 1 10)
706+ > `@ub`(rsh [0 1] 10)
678707 0b101
679708
680− > (rsh 0 1 10)
709+ > (rsh [0 1] 10)
681710 5
682711
683712 > `@ux`'abc'
684713 0x63.6261
685714
686− > `@t`(rsh 3 1 'abc')
715+ > `@t`(rsh [3 1] 'abc')
687716 'bc'
688717
689− > `@ux`(rsh 3 1 'abc')
718+ > `@ux`(rsh [3 1] 'abc')
690719 0x6362
691720```
692721
693722
723+---
724+### `++run`
725+
726+`++turn` into atom.
727+
728+Disassembles atom `b` into slices specified by `a`, applies `c` to each slice,
729+and reassembles the results back into an atom.
730+
731+#### Accepts
732+
733+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
734+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
735+with optional block count.
736+
737+`b` is an atom.
738+
739+`c` is a gate that accepts an atom and produces an atom.
740+
741+#### Produces
742+
743+An atom.
744+
745+#### Source
746+
747+```hoon
748+ ++ run
749+ ~/ %run
750+ |= [a=bite b=@ c=$-(@ @)]
751+ (rep a (turn (rip a b) c))
752+```
753+
754+#### Examples
755+
756+```
757+ > `@ux`65.535 :: @ux is the hexadecimal aura
758+ 0xffff
759+
760+ > `@ux`(run 2 65.535 dec) :: dec is the decrement gate
761+ 0xeeee
762+```
763+
764+
765+---
766+### `++rut`
767+
768+`++turn` into list.
769+
770+Disassembles atom `b` into slices specified by `a`, applies `c` to each slice,
771+and assembles the results back into a.
772+
773+#### Accepts
774+
775+`a` is an atom slice specifier (see [`++bite`](@/docs/hoon/reference/stdlib/1c.md#bite)),
776+which is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md#bloq))
777+with optional block count.
778+
779+`b` is an atom.
780+
781+`c` is a gate that accepts an atom.
782+
783+#### Produces
784+
785+A list.
786+
787+#### Source
788+
789+```hoon
790+ ++ rut
791+ ~/ %rut
792+ |* [a=bite b=@ c=$-(@ *)]
793+ (turn (rip a b) c)
794+```
795+
796+#### Examples
797+
798+```
799+ > `@ux`65.535 :: @ux is the hexadecimal aura
800+ 0xffff
801+
802+ > `(list @ux)`(rut 2 65.535 dec) :: dec is the decrement gate
803+ ~[0xe 0xe 0xe 0xe]
804+```
805+
806+
694807---
695808### `++swp`
696809