def add_multi(self): key = 'key' val = 'value' k2 = 'key2' v2 = 'value2' m = Map({key: val}) m2 = m**Map({k2: v2}) m2.lift(k2).should.equal(Just(v2)) m.lift(k2).should.equal(Empty())
def add(self): key = 'key' val = 'value' k2 = 'key2' v2 = 'value2' m = Map({key: val}) m2 = m + (k2, v2) m2.lift(k2).should.equal(Just(v2)) m.lift(k2).should.equal(Empty())
def decode_json_object(data: dict) -> Do: m = Map(data) tpe_s = yield m.lift(tpe_key).to_either( f'no `{tpe_key}` attr in json object {m}') tpe = yield Either.import_path(tpe_s) dec = yield Decoder.e(tpe) yield dec.decode(tpe, m)
def check_bound(rep: str, t: Type[A], b: Type[B], bindings: Map) -> None: binding = bindings.lift(t).get_or_fail(lambda: f'no binding for {t} => {b} in {rep}') b.m(binding).get_or_fail(lambda: f'no instance of {t} => {b} for {binding} in {rep}')
def lift(self): key = 'key' val = 'value' m = Map({key: val}) m.lift(key).should.equal(Just(val)) m.lift(key + key).should.equal(Empty())