case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
case v: MalVector => v.map(EVAL(_, env))
case l: MalList => l.map(EVAL(_, env))
case m: MalHashMap => {
- m.map{case (k: String,v: Any) => (k, EVAL(v, env))}
+ m.map{case (k,v) => (k, EVAL(v, env))}
}
case _ => ast
}
// Hash Maps
class MalHashMap(seq: Any*) {
- var flat_value: List[Any] = seq.toList
- var value: Map[String,Any] = flat_value.grouped(2).map(
+ var value: Map[String,Any] = seq.toList.grouped(2).map(
(kv: List[Any]) => (kv(0).asInstanceOf[String], kv(1))).toMap
var meta: Any = null
override def clone(): MalHashMap = {
val new_hm = new MalHashMap()
new_hm.value = value
- new_hm.flat_value = flat_value
new_hm.meta = meta
new_hm
}
new MalHashMap(res.flatten.toSeq:_*)
}
def ++(that: MalHashMap) = {
- new MalHashMap((flat_value ++ that.flat_value):_*)
+ val new_hm = clone()
+ new_hm.value ++= that.value
+ new_hm
}
override def toString() = {
- "{" + flat_value.map(_pr_str(_, true)).mkString(" ") + "}"
+ var res = mutable.MutableList[Any]()
+ for ((k,v) <- value) {
+ res += _pr_str(k, true)
+ res += _pr_str(v, true)
+ }
+ "{" + res.mkString(" ") + "}"
}
def toString(print_readably: Boolean) = {
- "{" + flat_value.map(_pr_str(_, print_readably)).mkString(" ") + "}"
+ var res = mutable.MutableList[Any]()
+ for ((k,v) <- value) {
+ res += _pr_str(k, print_readably)
+ res += _pr_str(v, print_readably)
+ }
+ "{" + res.mkString(" ") + "}"
}
}
def _hash_map(seq: Any*) = {