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
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())
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
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
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
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
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
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
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
def pred(vals): for val in kt.iter_list(vals): if not isinstance(val, cls): return kt.false return kt.true
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)