コード例 #1
0
def maybe_quote(quote_some, x):
    x = maybe_type(x)
    return app(
        x,
        QUOTE(none),
        lambda y: qapp(quote(some), app(quote_some, y)),
    )
コード例 #2
0
def prod_quote(quote_fst, quote_snd, xy):
    return app(
        xy,
        lambda x, y: qapp(quote(pair), app(quote_fst, x), app(quote_snd, y)),
    )
コード例 #3
0
ファイル: lib.py プロジェクト: fritzo/pomagma
def qfix(qf):
    return EVAL(qf, qapp(quote(qfix), qf))
コード例 #4
0
ファイル: lib.py プロジェクト: fritzo/pomagma
def enum_contains(qxs, qy):
    return QLESS(qapp(quote(box), qy), qxs)
コード例 #5
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
    [
        (ok, ok, ok),
        (ok, undefined, ok),
        (undefined, ok, ok),
        (undefined, undefined, undefined),
        (ok, true, error),
        (ok, false, error),
        (true, ok, error),
        (false, ok, error),
    ]
)
def test_unit_or(x, y, expected):
    assert simplify(lib.unit_or(x, y)) == expected


@for_each([(ok, quote(ok)), (undefined, undefined), (error, error), (true, error), (false, error)])
def test_unit_quote(x, expected):
    assert simplify(lib.unit_quote(x)) == expected


@for_each([(ok, true), (undefined, true), (error, false), (true, false), (false, false)])
def test_enum_unit(y, expected):
    qxs = quote(lib.enum_unit)
    assert simplify(lib.enum_contains(qxs, quote(y))) == expected


# ----------------------------------------------------------------------------
# Bool


@for_each([(true, true), (false, false), (error, error), (undefined, undefined), (ok, error), (join, error)])
コード例 #6
0
ファイル: lib.py プロジェクト: fritzo/pomagma
def list_quote(quote_item, xs):
    return xs(QUOTE(nil), lambda h, t:
              qapp(quote(cons), quote_item(h), list_quote(t)))
コード例 #7
0
ファイル: lib.py プロジェクト: fritzo/pomagma
def maybe_quote(quote_some, x):
    x = maybe_type(x)
    return x(QUOTE(none), lambda y: qapp(quote(some), quote_some(y)))
コード例 #8
0
def list_quote(quote_item, xs):
    return app(
        xs,
        QUOTE(nil),
        lambda h, t: qapp(quote(cons), app(quote_item, h), list_quote(t)),
    )
コード例 #9
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
def test_enum_num(y, expected):
    qxs = quote(lib.enum_num)
    assert simplify(lib.enum_contains(qxs, quote(y))) == expected
コード例 #10
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
def test_enum_list(enum_item, y, expected):
    qxs = quote(lib.enum_list(enum_item))
    assert simplify(lib.enum_contains(qxs, quote(y))) == expected
コード例 #11
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
def test_enum_sum(enum_inl, enum_inr, y, expected):
    qxs = quote(lib.enum_sum(enum_inl, enum_inr))
    assert simplify(lib.enum_contains(qxs, quote(y))) == expected
コード例 #12
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
def test_enum_prod(enum_fst, enum_snd, y, expected):
    qxs = quote(lib.enum_prod(enum_fst, enum_snd))
    assert simplify(lib.enum_contains(qxs, quote(y))) == expected
コード例 #13
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
def test_enum_contains(xs, y, expected):
    qxs = quote(enum(xs))
    qy = quote(y)
    assert reduce(lib.enum_contains(qxs, qy)) == expected
コード例 #14
0
def sum_quote(quote_inl, quote_inr, xy):
    return app(
        xy,
        lambda x: qapp(quote(inl), app(quote_inl, x)),
        lambda y: qapp(quote(inr), app(quote_inr, y)),
    )
コード例 #15
0
ファイル: lib.py プロジェクト: fritzo/pomagma
def prod_quote(quote_fst, quote_snd, xy):
    return xy(lambda x, y: qapp(quote(pair), quote_fst(x), quote_snd(y)))
コード例 #16
0
def num_quote(x):
    return app(x, QUOTE(zero), lambda px: qapp(quote(succ), num_quote(px)))
コード例 #17
0
ファイル: lib.py プロジェクト: fritzo/pomagma
def sum_quote(quote_inl, quote_inr, xy):
    return xy(lambda x: qapp(quote(inl), quote_inl(x)),
              lambda y: qapp(quote(inr), quote_inr(y)))
コード例 #18
0
def enum_contains(qxs, qy):
    return app(LESS, qapp(quote(box), qy), qxs)
コード例 #19
0
ファイル: lib_test.py プロジェクト: fritzo/pomagma
def test_stream_quote(quote_item, xs):
    assert lib.stream_quote(quote_item, xs) is quote(xs)