reader fixes
This commit is contained in:
parent
1fec16c29c
commit
b2d5ece8f0
1 changed files with 15 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
|||
import { id } from './fn.js'
|
||||
import { Algebra, Monad } from './index.js'
|
||||
|
||||
/** @import { InferredMorphism } from './types.js' */
|
||||
/** @import { InferredMorphism, Morphism } from './types.js' */
|
||||
|
||||
/**
|
||||
* @template T
|
||||
|
@ -12,9 +12,7 @@ import { Algebra, Monad } from './index.js'
|
|||
export class Reader extends Algebra(Monad) {
|
||||
#run
|
||||
|
||||
/**
|
||||
* @param {InferredMorphism<T>} run
|
||||
*/
|
||||
/** @param {InferredMorphism<T>} run */
|
||||
constructor(run) {
|
||||
super()
|
||||
|
||||
|
@ -51,6 +49,19 @@ export class Reader extends Algebra(Monad) {
|
|||
return new Reader(env => f(this.#run(env)).run(env))
|
||||
}
|
||||
|
||||
/**
|
||||
* @template R
|
||||
* @param {Reader<(v: T) => R>} other
|
||||
* @returns {Reader<R>}
|
||||
*/
|
||||
ap(other) {
|
||||
return new Reader(
|
||||
// FIXME: type errors
|
||||
// @ts-ignore
|
||||
env => other.run(env)(this.run(env))
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {InferredMorphism<T>} f
|
||||
* @returns {Reader<T>}
|
||||
|
|
Loading…
Add table
Reference in a new issue