All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.mperry.fg.ReaderM.groovy Maven / Gradle / Ivy

The newest version!
package com.github.mperry.fg

import fj.F
import fj.F1Functions
import groovy.transform.TypeChecked
import groovy.transform.TypeCheckingMode

/**
 * Created by MarkPerry on 11/01/14.
 */
@TypeChecked
class ReaderM {

    F function

    ReaderM(F f) {
        function = f
    }

    B f(A a) {
        function.f(a)
    }

    static  ReaderM lift(F f) {
        new ReaderM(f)
    }

    def  ReaderM map(F f) {
        lift(F1Functions.andThen(function, f))
    }

    def  ReaderM andThen(F f) {
        map(f)
    }

    def  ReaderM flatMap(F> f) {
        lift({A a -> f.f(function.f(a)).f(a)} as F)
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy