當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript newEmptyAVar.chain方法代碼示例

本文整理匯總了TypeScript中@jonggrang/avar.newEmptyAVar.chain方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript newEmptyAVar.chain方法的具體用法?TypeScript newEmptyAVar.chain怎麽用?TypeScript newEmptyAVar.chain使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在@jonggrang/avar.newEmptyAVar的用法示例。


在下文中一共展示了newEmptyAVar.chain方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1:

export function fork<A>(t: T.Task<A>): T.Task<Forked<A>> {
  return AV.newEmptyAVar.chain(avar =>
    T.forkTask(T.ensure(t, AV.putAVar(avar, void 0))).chain(fib =>
      T.delay(10).map(() => [fib, avar] as [T.Fiber<A>, AV.AVar<void>])
    )
  );
}
開發者ID:syaiful6,項目名稱:jonggrang,代碼行數:7,代碼來源:utils.ts

示例2: ChannelItem

export function writeChan<A>(chan: Chan<A>, val: A): T.Task<void> {
  return AV.newEmptyAVar
    .chain(newHole =>
      AV.takeAVar(chan.write)
        .chain(oldHole =>
          T.apSecond(
            AV.putAVar(oldHole, new ChannelItem(val, newHole)),
            AV.putAVar(chan.write, newHole)
          )
        )
    );
}
開發者ID:syaiful6,項目名稱:jonggrang,代碼行數:12,代碼來源:chan.ts

示例3: constructor

    readonly write: AV.AVar<ChanStream<A>>
  ) {
  }
}

class ChannelItem<A> {
  constructor(readonly head: A, readonly tail: ChanStream<A>) {
  }
}

/**
 * Creates a new `Chan`nel
 */
export const newChan: T.Task<Chan<any>> = AV.newEmptyAVar
  .chain((hole: ChanStream<any>) =>
    T.both(AV.newAVar(hole), AV.newAVar(hole))
      .map(([read, write]) => new Channel(read, write))
  );

/**
 * Writes a new value into the `Chan`.
 * @param chan
 * @param val
 */
export function writeChan<A>(chan: Chan<A>, val: A): T.Task<void> {
  return AV.newEmptyAVar
    .chain(newHole =>
      AV.takeAVar(chan.write)
        .chain(oldHole =>
          T.apSecond(
            AV.putAVar(oldHole, new ChannelItem(val, newHole)),
開發者ID:syaiful6,項目名稱:jonggrang,代碼行數:31,代碼來源:chan.ts


注:本文中的@jonggrang/avar.newEmptyAVar.chain方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。