3 export MalException, MalFunc, sequential_Q, equal_Q, hash_map, Atom
7 type MalException <: Exception
20 # ismacro default to false
21 function MalFunc(fn, ast, env, params)
22 MalFunc(fn, ast, env, params, false, nothing)
25 function copy(f::MalFunc)
26 MalFunc(f.fn, f.ast, f.env, f.params, f.ismacro, f.meta)
29 function sequential_Q(obj)
30 isa(obj, Array) || isa(obj, Tuple)
33 function equal_Q(a, b)
36 if !(ota === otb || (sequential_Q(a) && sequential_Q(b)))
41 if length(a) !== length(b)
44 for (x, y) in zip(a,b)
50 elseif isa(a,AbstractString)
53 if length(a) !== length(b)
67 function hash_map(lst...)
69 for i = 1:2:length(lst)