type Bear ^| the type system is informed about the new type, | here we are in the static context |^ model # instance context text name # instance variable ^| | in EMal the instance variables are ordered, and a default | variadic constructor is provided by the runtime. | Every value passed to the constructor sets the instance variable | according to the order. |^ fun makeNoise ← void by block # method of Bear writeLine("Growl!") end end type Cat model text noise new by text noise # an explicit constructor me.noise ← noise # we must use me to access instance variables end fun makeNoise ← void by block writeLine(me.noise) end end type Main Bear bear ← Bear("Bruno") # creating a new instance writeLine("The bear is called ", bear.name) bear.makeNoise() Cat("Meow").makeNoise()