eval編(実行) 17 Cellクラスのevalメソッドを呼びます。 fun eval(env: Env): Any? { return when (parent) { // 各シンボルに対して自身が持つevalメソッドを呼び出していく is Symbol -> parent.eval(env)?.invoke( // 引数の評価はchildrenのevalを呼び出す。(実質)再帰になっている children.map {elem -> elem.eval(env)!!} ) is If -> parent.eval(env)?.invoke(children) is Num -> parent.eval() is Str -> parent.eval() else -> null } }