final case class Zipper[+A](lefts: Stream[A], focus: A, rights: Stream[A]) extends Product with Serializable
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
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Zipper(lefts: Stream[A], focus: A, rights: Stream[A])
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[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- 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 finalize(): Unit
- Attributes
- protected[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.
- val focus: A
- def foldLeft[B](b: B)(f: (B, A) => B): B
- def foldRight[B](b: => B)(f: (A, => B) => B): B
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- 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
- val lefts: Stream[A]
- 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
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- 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 productElementNames: Iterator[String]
- Definition Classes
- Product
- val rights: Stream[A]
- 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 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(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def withFocus: Zipper[(A, Boolean)]
Pairs each element with a boolean indicating whether that element has focus.