Hyperlinkv0.8.0-beta.28

TxPriorityQueue

TxPriorityQueue.fromIterableconsteffect/TxPriorityQueue.ts:144
<A>(order: Order<A>): (
  iterable: Iterable<A>
) => Effect.Effect<TxPriorityQueue<A>>
<A>(order: Order<A>, iterable: Iterable<A>): Effect.Effect<
  TxPriorityQueue<A>
>

Creates a TxPriorityQueue from an iterable of elements.

Example (Creating a priority queue from an iterable)

import { Effect, Order, TxPriorityQueue } from "effect"

const program = Effect.gen(function*() {
  const pq = yield* TxPriorityQueue.fromIterable(Order.Number, [3, 1, 2])
  const first = yield* TxPriorityQueue.take(pq)
  console.log(first) // 1
})
constructors
export const fromIterable: {
  <A>(order: Order<A>): (iterable: Iterable<A>) => Effect.Effect<TxPriorityQueue<A>>
  <A>(order: Order<A>, iterable: Iterable<A>): Effect.Effect<TxPriorityQueue<A>>
} = dual(
  2,
  <A>(order: Order<A>, iterable: Iterable<A>): Effect.Effect<TxPriorityQueue<A>> => {
    const arr = Array.from(iterable).sort((a, b) => order(a, b))
    return Effect.map(
      TxRef.make<Chunk<A>>(C.fromIterable(arr)),
      (ref) => makeTxPriorityQueue(ref, order)
    )
  }
)
Referenced by 1 symbols