Example #1
0
def _pr_str(obj, print_readably=True):
    _r = print_readably
    if types._list_Q(obj):
        return "(" + " ".join(map(lambda e: _pr_str(e,_r), obj)) + ")"
    elif types._vector_Q(obj):                                    
        return "[" + " ".join(map(lambda e: _pr_str(e,_r), obj)) + "]"
    elif types._hash_map_Q(obj):
        ret = []
        for k in obj.keys():
            ret.extend((_pr_str(k), _pr_str(obj[k],_r)))
        return "{" + " ".join(ret) + "}"
    elif types._string_Q(obj):
        if print_readably:
            return '"' + obj.encode('unicode_escape').replace('"', '\\"') + '"'
        else:
            return obj
    elif types._nil_Q(obj):
        return "nil"
    elif types._true_Q(obj):
        return "true"
    elif types._false_Q(obj):
        return "false"
    elif types._atom_Q(obj):
        return "(atom " + _pr_str(obj.val,_r) + ")"
    else:
        return obj.__str__()
Example #2
0
def _pr_str(obj, print_readably=True):
    _r = print_readably
    if types._list_Q(obj):
        return "(" + " ".join(map(lambda e: _pr_str(e, _r), obj)) + ")"
    elif types._vector_Q(obj):
        return "[" + " ".join(map(lambda e: _pr_str(e, _r), obj)) + "]"
    elif types._hash_map_Q(obj):
        ret = []
        for k in obj.keys():
            ret.extend((_pr_str(k), _pr_str(obj[k], _r)))
        return "{" + " ".join(ret) + "}"
    elif types._string_Q(obj):
        if len(obj) > 0 and obj[0] == types._u('\u029e'):
            return ':' + obj[1:]
        elif print_readably:
            return '"' + _escape(obj) + '"'
        else:
            return obj
    elif types._nil_Q(obj):
        return "nil"
    elif types._true_Q(obj):
        return "true"
    elif types._false_Q(obj):
        return "false"
    elif types._atom_Q(obj):
        return "(atom " + _pr_str(obj.val, _r) + ")"
    else:
        return obj.__str__()
Example #3
0
def _pr_str(obj, print_readably=True):
    _r = print_readably
    if types._list_Q(obj):
        return "(" + " ".join(map(lambda e: _pr_str(e,_r), obj)) + ")"
    elif types._vector_Q(obj):                                    
        return "[" + " ".join(map(lambda e: _pr_str(e,_r), obj)) + "]"
    elif types._hash_map_Q(obj):
        ret = []
        for k in obj.keys():
            ret.extend((_pr_str(k), _pr_str(obj[k],_r)))
        return "{" + " ".join(ret) + "}"
    elif types._string_Q(obj):
        if len(obj) > 0 and obj[0] == types._u('\u029e'):
            return ':' + obj[1:]
        elif print_readably:
            return '"' + _escape(obj) + '"'
        else:
            return obj
    elif types._nil_Q(obj):
        return "nil"
    elif types._true_Q(obj):
        return "true"
    elif types._false_Q(obj):
        return "false"
    elif types._atom_Q(obj):
        return "(atom " + _pr_str(obj.val,_r) + ")"
    else:
        return obj.__str__()
Example #4
0
def seq(obj):
    if types._list_Q(obj):
        return obj if len(obj) > 0 else None
    elif types._vector_Q(obj):
        return List(obj) if len(obj) > 0 else None
    elif types._string_Q(obj):
        return List([c for c in obj]) if len(obj) > 0 else None
    elif obj == None:
        return None
    else: throw ("seq: called on non-sequence")
Example #5
0
def seq(obj):
    if types._list_Q(obj):
        return obj if len(obj) > 0 else None
    elif types._vector_Q(obj):
        return List(obj) if len(obj) > 0 else None
    elif types._string_Q(obj):
        return List([c for c in obj]) if len(obj) > 0 else None
    elif obj == None:
        return None
    else: throw ("seq: called on non-sequence")
Example #6
0
def seq(args):
    a0 = args[0]
    if isinstance(a0, MalVector):
        if len(a0) == 0: return nil
        return MalList(a0.values)
    elif isinstance(a0, MalList):
        if len(a0) == 0: return nil
        return a0
    elif types._string_Q(a0):
        assert isinstance(a0, MalStr)
        if len(a0) == 0: return nil
        return MalList([MalStr(unicode(c)) for c in a0.value])
    elif a0 is nil:
        return nil
    else:
        throw_str("seq: called on non-sequence")
Example #7
0
def string_Q(args): return wrap_tf(types._string_Q(args[0]))
def symbol(args):