["do", ["def", "_cmp_seqs", ["fn", ["a", "b"], ["if", ["not", ["=", ["count", "a"], ["count", "b"]]], false, ["if", ["empty?", "a"], true, ["if", ["equal?", ["get", "a", 0], ["get", "b", 0]], ["_cmp_seqs", ["rest", "a"], ["rest", "b"]], false]]]]], ["def", "equal?", ["fn", ["a", "b"], ["if", ["list?", "a"], ["if", ["list?", "b"], ["_cmp_seqs", "a", "b"], false], ["if", ["symbol?", "a"], ["=", ["get", "a", ["`", "val"]], ["get", "b", ["`", "val"]]], ["=", "a", "b"]]]]], ["def", "symbol", ["fn", ["name"], ["hash-map", ["`", "type"], ["`", "Symbol"], ["`", "val"], "name"]]], ["def", "symbol?", ["fn", ["obj"], ["if", ["=", "obj", null], false, ["if", ["=", ["`", "Symbol"], ["get", "obj", ["`", "type"]]], true, false]]]], ["def", "malfunc", ["fn", ["fn", "ast", "env", "params"], ["hash-map", ["`", "type"], ["`", "MalFunc"], ["`", "fn"], "fn", ["`", "ast"], "ast", ["`", "env"], "env", ["`", "params"], "params"]]], ["def", "malfunc?", ["fn", ["obj"], ["if", ["=", "obj", null], false, ["if", ["=", ["`", "MalFunc"], ["get", "obj", ["`", "type"]]], true, false]]]], null ]