com.github.tonivade.purefun.instances.ReaderInstances Maven / Gradle / Ivy
/*
* Copyright (c) 2018-2019, Antonio Gabriel Muñoz Conejo
* Distributed under the terms of the MIT License
*/
package com.github.tonivade.purefun.instances;
import com.github.tonivade.purefun.Function1;
import com.github.tonivade.purefun.Higher1;
import com.github.tonivade.purefun.Instance;
import com.github.tonivade.purefun.monad.Reader;
import com.github.tonivade.purefun.typeclasses.Monad;
public interface ReaderInstances {
static Monad> monad() {
return new ReaderMonad() {};
}
}
@Instance
interface ReaderMonad extends Monad> {
@Override
default Reader pure(T value) {
return Reader.pure(value);
}
@Override
default Reader flatMap(Higher1, T> value,
Function1, V>> map) {
return Reader.narrowK(value).flatMap(map.andThen(Reader::narrowK));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy