sealed trait Zipper[+A] extends AnyRef
Provides a pointed stream, which is a non-empty zipper-like stream structure that tracks an index (focus) position in a stream. Focus can be moved forward and backwards through the stream, elements can be inserted before or after the focused position, and the focused item can be deleted.
Based on the pointedlist library by Jeff Wheeler.
- Source
- Zipper.scala
- Alphabetic
- By Inheritance
- Zipper
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def ap[B](f: ⇒ Zipper[(A) ⇒ B]): Zipper[B]
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
atEnd: Boolean
Whether the focus is on the last element in the zipper.
-
def
atStart: Boolean
Whether the focus is on the first element in the zipper.
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
- def copy[AA >: A](lefts: Stream[AA] = this.lefts, focus: AA = this.focus, rights: Stream[AA] = this.rights): Zipper[AA]
-
def
delete: Option[Zipper[A]]
An alias for
deleteRight
-
def
deleteC: Option[Zipper[A]]
An alias for
deleteRightC
-
def
deleteLeft: Option[Zipper[A]]
Deletes the element at focus and moves the focus to the left.
Deletes the element at focus and moves the focus to the left. If there is no element on the left, focus is moved to the right.
-
def
deleteLeftC: Option[Zipper[A]]
Deletes the focused element and moves focus to the left.
Deletes the focused element and moves focus to the left. If the focus was on the first element, focus is moved to the last element.
-
def
deleteLeftCOr[AA >: A](z: ⇒ Zipper[AA]): Zipper[AA]
Deletes the focused element and moves focus to the left.
Deletes the focused element and moves focus to the left. If the focus was on the first element, focus is moved to the last element.
-
def
deleteLeftOr[AA >: A](z: ⇒ Zipper[AA]): Zipper[AA]
Deletes the element at focus and moves the focus to the left.
Deletes the element at focus and moves the focus to the left. If there is no element on the left, focus is moved to the right.
-
def
deleteOthers: Zipper[A]
Deletes all elements except the focused element.
-
def
deleteRight: Option[Zipper[A]]
Deletes the element at focus and moves the focus to the right.
Deletes the element at focus and moves the focus to the right. If there is no element on the right, focus is moved to the left.
-
def
deleteRightC: Option[Zipper[A]]
Deletes the focused element and moves focus to the right.
Deletes the focused element and moves focus to the right. If the focus was on the last element, focus is moved to the first element.
-
def
deleteRightCOr[AA >: A](z: ⇒ Zipper[AA]): Zipper[AA]
Deletes the focused element and moves focus to the right.
Deletes the focused element and moves focus to the right. If the focus was on the last element, focus is moved to the first element.
-
def
deleteRightOr[AA >: A](z: ⇒ Zipper[AA]): Zipper[AA]
Deletes the element at focus and moves the focus to the right.
Deletes the element at focus and moves the focus to the right. If there is no element on the right, focus is moved to the left.
-
def
end: Zipper[A]
Moves focus to the end of the zipper.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
findBy[AA >: A](f: (Zipper[AA]) ⇒ Option[Zipper[AA]])(p: (AA) ⇒ Boolean): Option[Zipper[AA]]
Given a traversal function, find the first element along the traversal that matches a given predicate.
-
def
findNext(p: (A) ⇒ Boolean): Option[Zipper[A]]
Moves focus to the nearest element on the right that matches the given predicate, or None if there is no such element.
-
def
findPrevious(p: (A) ⇒ Boolean): Option[Zipper[A]]
Moves focus to the previous element on the left that matches the given predicate, or None if there is no such element.
-
def
findZ(p: (A) ⇒ Boolean): Option[Zipper[A]]
Moves focus to the nearest element matching the given predicate, preferring the left, or None if no element matches.
-
def
findZor[AA >: A](p: (A) ⇒ Boolean, z: ⇒ Zipper[AA]): Zipper[AA]
Moves focus to the nearest element matching the given predicate, preferring the left, or the default if no element matches.
- def foldLeft[B](b: B)(f: (B, A) ⇒ B): B
- def foldRight[B](b: ⇒ B)(f: (A, ⇒ B) ⇒ B): B
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
def
index: Int
The index of the focus.
-
def
insert[AA >: A]: (AA) ⇒ Zipper[AA]
An alias for insertRight
-
def
insertLeft[AA >: A](y: AA): Zipper[AA]
Inserts an element to the left of focus and focuses on the new element.
-
def
insertRight[AA >: A](y: AA): Zipper[AA]
Inserts an element to the right of focus and focuses on the new element.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def length: Int
- def map[B](f: (A) ⇒ B): Zipper[B]
-
def
modify[AA >: A](f: (A) ⇒ AA): Zipper[AA]
Apply f to the focus and update with the result.
-
def
move(n: Int): Option[Zipper[A]]
Moves focus n elements in the zipper, or None if there is no such element.
Moves focus n elements in the zipper, or None if there is no such element.
- n
number of elements to move (positive is forward, negative is backwards)
-
def
moveOr[AA >: A](n: Int, z: ⇒ Zipper[AA]): Zipper[AA]
Moves focus to the nth element of the zipper, or the default if there is no such element.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
next: Option[Zipper[A]]
Possibly moves to next element to the right of focus.
-
def
nextC: Zipper[A]
Moves focus to the next element.
Moves focus to the next element. If the last element is currently focused, loop to the first element.
-
def
nextOr[AA >: A](z: ⇒ Zipper[AA]): Zipper[AA]
Possibly moves to next element to the right of focus.
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
positions: Zipper[Zipper[A]]
A zipper of all positions of the zipper, with focus on the current position.
-
def
previous: Option[Zipper[A]]
Possibly moves to the previous element to the left of focus.
-
def
previousC: Zipper[A]
Moves focus to the previous element.
Moves focus to the previous element. If the first element is currently focused, loop to the last element.
-
def
previousOr[AA >: A](z: ⇒ Zipper[AA]): Zipper[AA]
Possibly moves to previous element to the left of focus.
-
def
start: Zipper[A]
Moves focus to the start of the zipper.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toStream: Stream[A]
Get the Stream representation of this Zipper.
Get the Stream representation of this Zipper. This fully traverses
lefts
.rights
is not evaluated. -
def
toString(): String
- Definition Classes
- Zipper → AnyRef → Any
- def traverse[G[_], B](f: (A) ⇒ G[B])(implicit arg0: Applicative[G]): G[Zipper[B]]
-
def
tryNext: Zipper[A]
Moves to the next element to the right of focus, or error if there is no element on the right.
-
def
tryPrevious: Zipper[A]
Moves to the previous element to the left of focus, or error if there is no element on the left.
-
def
update[AA >: A](focus: AA): Zipper[AA]
Update the focus in this zipper.
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
withFocus: Zipper[(A, Boolean)]
Pairs each element with a boolean indicating whether that element has focus.