package bjc.utils.patterns; import bjc.functypes.*; /** * A simple pattern matcher backed by a function. * * @author Ben Culkin * * @param The type returned by the matcher. * @param The type to match against. */ public class FunctionalPatternMatcher implements IPatternMatcher { private final ThrowFunction matcher; /** * Create a new function-backed pattern matcher. * * @param matcher The function backing this matcher. */ public FunctionalPatternMatcher(ThrowFunction matcher) { this.matcher = matcher; } @Override public ReturnType matchFor(InputType input) throws NonExhaustiveMatch { return matcher.apply(input); } }