mio> 1 + 2
===> 3
mio> 1 + 2 * 3
===> 9
mio> 1 + (2 * 3)
===> 7
Note
mio has no operator precedence (in fact no operators). You must use explicit grouping with parenthesis where appropriate in expressions.
mio> a = 1
===> 1
mio> a
===> 1
mio> b = 2 * 3
===> 6
mio> a + b
===> 7
mio> a = 2
===> 2
mio> (a == 1) ifTrue(print("a is one")) ifFalse(print("a is not one"))
a is not one
mio> xs = [30, 10, 5, 20]
===> [30, 10, 5, 20]
mio> len(xs)
===> 4
mio> print(xs)
[30, 10, 5, 20]
mio> xs sort()
===> [5, 10, 20, 30]
mio> xs[0]
===> 5
mio> xs[-1]
===> 30
mio> xs[2]
===> 20
mio> xs remove(30)
===> [5, 10, 20]
mio> xs insert(1, 123)
===> [5, 123, 10, 20]
mio> xs = [1, 2, 3]
===> [1, 2, 3]
mio> xs foreach(x, print(x))
1
2
3
mio> it = iter(xs)
===> it(Object) at 0x11e62c0:
N = 2
i = -1
iterable = [1, 2, 3]
mio> next(it)
===> 1
mio> next(it)
===> 2
mio> next(it)
===> 3
mio> next(it)
StopIteration:
--------------
raise(StopIteration)
ifFalse(
raise(StopIteration)
)
__next__
next(it)
mio> a = "foo"
===> u"foo"
mio> b = "bar"
===> u"bar"
mio> c = a + b
===> u"foobar"
mio> c[0]
===> u'f'
mio> s = "this is a test"
===> u"this is a test"
mio> words = s split()
===> [u"this", u"is", u"a", u"test"]
mio> s find("is")
===> 2
mio> s find("test")
===> 10
mio> foo = block(
.... print"foo"
.... )
===> block():
args = args()
body = body()
kwargs = kwargs()
mio> foo()
===> u"foo"
mio> add = block(x, y,
.... x + y
.... )
===> block(x, y):
args = args()
body = body()
kwargs = kwargs()
mio> add(1, 2)
===> 3
Note
Functions in mio do not have access to any outside state or globals (there are no globals in mio) with the only exception to the rule being closures.
mio> World = Object clone()
===> World(Object) at 0x121d2c0
mio> World
===> World(Object) at 0x121d2c0
mio> World = Object clone()
===> World(Object) at 0x1fb32c0
mio> World
===> World(Object) at 0x1fb32c0
mio> World name = "World!"
===> u"World!"
mio> World name
===> u"World!"
mio> World = Object clone()
===> World(Object) at 0x24962c0
mio> World
===> World(Object) at 0x24962c0
mio> World name = "World!"
===> u"World!"
mio> World name
===> u"World!"
mio> World hello = method(
.... print("Hello", self name)
.... )
===> method():
args = args()
body = body()
kwargs = kwargs()
mio> World hello()
Hello World!
Note
Methods implicitly get the receiving object as the first argument self passed.
mio> TGreetable = Object clone() do (
.... hello = method(
.... print("Hello", self name)
.... )
.... )
===> TGreetable(Object) at 0x23db2c0:
hello = method()
mio> World = Object clone() do (
.... uses(TGreetable)
....
.... name = "World!"
.... )
AttributeError: Object has no attribute 'uses'
---------------
uses(TGreetable)
set(name, World!)
do(
uses(TGreetable)
set(name, World!)
)
set(World, Object clone do(
uses(TGreetable)
set(name, World!)
))
mio> World
AttributeError: Object has no attribute 'World'
---------------
World
mio> World traits
AttributeError: Object has no attribute 'World'
---------------
World traits
mio> World behaviors
AttributeError: Object has no attribute 'World'
---------------
World behaviors
mio> World hello()
AttributeError: Object has no attribute 'World'
---------------
World hello