0
Monadはエラーをうまく処理するために使用されますが、Nothingの後にチェーンのタスクモナドがあると、fork(これはTaskによって提供されていると考えられます)はそこには存在しません。 (falktaleを使用して)以下のコードを参照してください。異なるモナドを処理する際のエラーを処理する方法は?
it.only('handle different monads', done => {
const getUserById = id => new Task((reject, result) => setTimeout(
()=>result({ userName: 'ron' })
, 0
))
const getUser = pipe(
Maybe.fromNullable,
chain(getUserById)
)
expect(getUser(null).fork(// complains here: getUser(...).fork is not a function
()=>done(),
x=> done('should not be triggered')
))
})
理由は、チェーン(...)は、実際にフォーク機能せず何も返さないであろうNothing.mapを実行しているので、予期しない結果が発生します。
はい、「未使用」を「タスク」に変換する必要があります。 – Bergi
意味があります。しかし、それが何もない場合は、マップ、チェーン、またはその他のものに関係なく、常にNothingを返すようです。 – Ron
はい、Functor/Applicative/Monadメソッドは型変換のために何もしません。あなたは手動で行う必要があります! – Bergi