Skip to content

Commit

Permalink
refactor(fio): add Task and IO type
Browse files Browse the repository at this point in the history
  • Loading branch information
tusharmath committed May 25, 2019
1 parent b6cbacb commit 46b36e7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
15 changes: 8 additions & 7 deletions src/main/FIO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import {Tag} from '../internals/Tag'

const Id = <A>(_: A): A => _

export type IO<E, A> = FIO<unknown, E, A>
export type Task<A> = IO<never, A>

export class FIO<R1 = unknown, E1 = unknown, A1 = unknown> {
public static access<R1, A1>(cb: (env: R1) => A1): FIO<R1, never, A1> {
return new FIO(Tag.Access, cb)
Expand Down Expand Up @@ -57,11 +60,11 @@ export class FIO<R1 = unknown, E1 = unknown, A1 = unknown> {
return new FIO(Tag.Async, cb)
}

public static never(): FIO<unknown, never, never> {
public static never(): Task<never> {
return new FIO(Tag.Never, undefined)
}

public static of<A1>(value: A1): FIO<unknown, never, A1> {
public static of<A1>(value: A1): Task<A1> {
return new FIO(Tag.Constant, value)
}
public static reject<E1>(error: E1): FIO<unknown, E1, never> {
Expand All @@ -71,20 +74,18 @@ export class FIO<R1 = unknown, E1 = unknown, A1 = unknown> {
/**
* @ignore
*/
public static resume<A1, A2>(cb: (A: A1) => A2): FIO<unknown, never, A2> {
public static resume<A1, A2>(cb: (A: A1) => A2): Task<A2> {
return new FIO(Tag.Resume, cb)
}

/**
* @ignore
*/
public static resumeM<A1, A2>(
cb: (A: A1) => FIO<unknown, never, A2>
): FIO<unknown, never, A2> {
public static resumeM<A1, A2>(cb: (A: A1) => Task<A2>): Task<A2> {
return new FIO(Tag.ResumeM, cb)
}

public static timeout<A>(value: A, duration: number): FIO<unknown, never, A> {
public static timeout<A>(value: A, duration: number): Task<A> {
return FIO.from((env, rej, res, sh) => sh.delay(res, duration, value))
}

Expand Down
8 changes: 4 additions & 4 deletions src/main/Ref.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
/**
* Created by tushar on 2019-05-25
*/
import {FIO} from './FIO'
import {FIO, Task} from './FIO'

export class Ref<A> {
public static of<A>(a: A): FIO<unknown, never, Ref<A>> {
public static of<A>(a: A): Task<Ref<A>> {
return FIO.try(() => new Ref(a))
}
private constructor(private value: A) {}

public read(): FIO<unknown, never, A> {
public read(): Task<A> {
return FIO.try(() => this.value)
}
public update(ab: (a: A) => A): FIO<unknown, never, A> {
public update(ab: (a: A) => A): Task<A> {
return FIO.try(() => (this.value = ab(this.value)))
}
}

0 comments on commit 46b36e7

Please sign in to comment.