class Population var _members as List var _numMembers as int def init pass pro numMembers from var def generateMembers require .numMembers > 0 body _members = List() for i = 0 .. _numMembers _members.add(Member(this)) class Member var _pop as Population def init(pop as Population) _pop = pop class Expr # CC: make abstract def init pass def exec as float # CC: make abstract return 0 class BinaryExpr inherits Expr var _left as Expr var _right as Expr def init(left as Expr, right as Expr) base.init _left = left _right = right enum BinaryOpEnum add sub mul div mod class BinaryMathExpr inherits BinaryExpr var _op as BinaryOpEnum def init(op as BinaryOpEnum, left as Expr, right as Expr) base.init(left, right) _op = op def exec as float is override a = _left.exec b = _right.exec return a + b # TODO: branch on BinaryOpEnum # and, or, not class Program def main is shared print 'Genetic Programming in Cobra'