当前位置: 首页>>代码示例>>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;未经允许,请勿转载。