module Kleisli

Public Class Methods

run(runner_impl = Runner, &block) click to toggle source
# File lib/kleisli/run.rb, line 5
def self.run(runner_impl = Runner, &block)
  r = runner_impl.new(block.binding)
  begin
    res = r.instance_eval(&block)
    r.start.fmap { res }
  rescue MonadTerminator => ex
    ex.m
  end
end