diff options
| author | Joel Martin <github@martintribe.org> | 2014-12-18 23:52:59 -0600 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2015-01-09 16:16:51 -0600 |
| commit | a816262a057ecc4bd1fd07750d21cab81490f336 (patch) | |
| tree | f83bea9965ef09460d213812f738a32a2dc6803c /scala/printer.scala | |
| parent | 821930dbd9febf45fad25aefa9bc64e8ace4c737 (diff) | |
| download | mal-a816262a057ecc4bd1fd07750d21cab81490f336.tar.gz mal-a816262a057ecc4bd1fd07750d21cab81490f336.zip | |
Scala: refactor collections with metadata.
Convert numeric to Long. Add time-ms.
Add Makefile for stats targets.
Diffstat (limited to 'scala/printer.scala')
| -rw-r--r-- | scala/printer.scala | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/scala/printer.scala b/scala/printer.scala index 74b1433..0a0e0b7 100644 --- a/scala/printer.scala +++ b/scala/printer.scala @@ -1,15 +1,13 @@ -import types.Function +import types.{MalList, MalVector, MalHashMap, MalFunction} + object printer { def _pr_str(obj: Any, print_readably: Boolean = true): String = { val _r = print_readably return obj match { - case l: List[Any] => "(" + l.map(_pr_str(_, _r)).mkString(" ") + ")" - case v: Array[Any] => "[" + v.map(_pr_str(_, _r)).mkString(" ") + "]" - case m: Map[String @unchecked,Any @unchecked] => { - val lst = m.map{case (k,v) => List(k, v)}.flatten - "{" + lst.map(_pr_str(_,_r)).mkString(" ") + "}" - } + case v: MalVector => v.toString(_r) + case l: MalList => l.toString(_r) + case hm: MalHashMap => hm.toString(_r) case s: String => { if (s.length > 0 && s(0) == '\u029e') { ":" + s.substring(1,s.length) @@ -26,8 +24,8 @@ object printer { case a: types.Atom => "(atom " + a.value + ")" case null => "nil" case _ => { - if (obj.isInstanceOf[Function]) { - val f = obj.asInstanceOf[Function] + if (obj.isInstanceOf[MalFunction]) { + val f = obj.asInstanceOf[MalFunction] "<function (fn* " + _pr_str(f.params) + " " + _pr_str(f.ast) + ")>" } else { obj.toString |
