コード例 #1
0
ファイル: primitive.py プロジェクト: euccastro/icbink
def zerop(vals):
    for v in kt.iter_list(vals):
        # Robustness: we need to check the type of all elements, even those
        # after the first non-zero.
        kt.check_type(v, kt.Number)
    for v in kt.iter_list(vals):
        if not kt.zero.equal(v):
            return kt.false
    return kt.true
コード例 #2
0
ファイル: primitive.py プロジェクト: havleoto/icbink
def string_append(vals):
    s = rstring.StringBuilder()
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.String)
        assert isinstance(v, kt.String)
        s.append(v.strval)
    return kt.String(s.build())
コード例 #3
0
ファイル: primitive.py プロジェクト: havleoto/icbink
def print_(val):
    if isinstance(val, kt.Pair):
        for v in kt.iter_list(val):
            print v.todisplay(),
    else:
        assert kt.is_nil(val)
    return kt.inert
コード例 #4
0
ファイル: primitive.py プロジェクト: havleoto/icbink
def add(vals):
    accum = kt.Fixnum(0)
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.Number)
        assert isinstance(v, kt.Number)
        accum = accum.add(v)
    return accum
コード例 #5
0
ファイル: primitive.py プロジェクト: euccastro/icbink
def negative(vals):
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.Number)
        assert isinstance(v, kt.Number)
        if not v.lt(kt.zero):
            return kt.false
    return kt.true
コード例 #6
0
ファイル: primitive.py プロジェクト: euccastro/icbink
def positive(vals):
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.Number)
        assert isinstance(v, kt.Number)
        if not kt.zero.lt(v):
            return kt.false
    return kt.true
コード例 #7
0
ファイル: primitive.py プロジェクト: euccastro/icbink
def mul(vals):
    accum = kt.one
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.Number)
        assert isinstance(v, kt.Number)
        accum = accum.mul(v)
    return accum
コード例 #8
0
ファイル: primitive.py プロジェクト: havleoto/icbink
def lteq(vals):
    latest = kt.e_neg_inf
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.Number)
        assert isinstance(v, kt.Number)
        if not latest.lt(v):
            return kt.false
        latest = v
    return kt.true
コード例 #9
0
ファイル: primitive.py プロジェクト: euccastro/icbink
def gt(vals):
    latest = kt.e_pos_inf
    for v in kt.iter_list(vals):
        kt.check_type(v, kt.Number)
        assert isinstance(v, kt.Number)
        if not v.lt(latest):
            return kt.false
        latest = v
    return kt.true
コード例 #10
0
ファイル: primitive.py プロジェクト: havleoto/icbink
 def pred(vals):
     for val in kt.iter_list(vals):
         if not isinstance(val, cls):
             return kt.false
     return kt.true
コード例 #11
0
ファイル: primitive.py プロジェクト: havleoto/icbink
def check_guards(guards):
    for guard in kt.iter_list(guards):
        selector, interceptor = kt.pythonify_list(guard)
        kt.check_type(selector, kt.Continuation)
        kt.check_type(interceptor, kt.Applicative)
        kt.check_type(interceptor.wrapped_combiner, kt.Operative)