use "math" use "std" use "functional" word = 2 + 2 word2 = PI + word str = "a" * 5 + "ba" * 7 + "\n" println str * "3" * 2 println "word = " + word println "word2 = " + word2 println "1" > "abc" if (1 <= 2) println "1 = 1" else println "1 != 1" if (40 < 50 || 50 > 60) { println "true1" println "true2" i = 0 println "do while" do { println "i = " + i i = i + 1 } while (i < 10) i = 0 println "while" while (i < 10) { println "i = " + i + sin(i) i = i + 1 } println "for" for i = 0, i < 10, i = i + 1 { println "i = " + i } } else print "false" print "sin(PI) = " + sin(PI/2) echo(1,2,3,"4","5","text",sin(0),cos(0),sin(PI),cos(PI),PI) a = "print" print a def name(a,b) { echo("a = ", a, " b = ", b) } def sum(a,b) { a = -60 return a+b } name(1,"text") print sum(10, 15) print a + "\n" arr = [1, "text", sum(10, 15), [], ["text", [90, [7 + 6, [50]]]]] println arr + "\n" arr[0] = arr[0] + 1000 + arr[2] print arr + "\n" print arr[4][1] + "\n" arr[4][1] = "text" println arr[4][1] print "\n\n" array = newarray(2, 2, 2, 2) println array add = def(a,b) = a+b sub = def(a,b) = a-b mul = def(a,b) = a*b div = def(a,b) = a/b cube = def(x) = x*mul(x, x) print "\n\n" println mul(8, 5) println cube(2) functions = [add, sub, mul, div] def function(f, a, b) = f(a, b) for i = 0, i < 4, i = i + 1 { println functions[i] println function(functions[i], 6, 3) } // map map = {"+" : add, "-" : sub, "*" : mul, "/" : div} map["%"] = def(x,y) = x % y map["pow"] = def(x,y) = pow(x, y) println map["+"] println function(map["+"], 4, 5) foreach(map, def(op, func) = echo (4, op, 5, "=", func(4,5))) foreach(arr, ::echo) arr1 = [1,2,3] arr1 = arr1 :: 4 arr2 = [5,6,7] println arr1 println arr1 << arr2 for op, func : map { echo (4, op, 5, "=", func(4,5)) } for v : arr1 print "" + v + ", " print "\n" for (v : arr1 << arr2) print "" + v + ", " print "\n" for v : [1,2,3,4,5,6,7,8,9] print "" + v + ", " use "types" println typeof(1) println typeof("1") println typeof(arr1) println typeof({}) println typeof(add) println typeof(number("1")) println typeof(string(1)) thread(::inthread) def inthread() = echo("this is a thread") thread(def (str) { println str }, "this is a thread with arguments") println "functional" nums = [1,2,3,4,5,6,7,8,9,10] nums = filter(nums, def(x) = x % 2 == 0) squares = map(nums, def(x) = x * x) foreach(squares, ::echo) println "Sum: " + reduce(squares, 0, def(x, y) = x + y) nums = [[1, 2], [3], [], [4, 5]] nums = flatmap(nums, IDENTITY) println "flatmap" foreach(nums, ::echo) println "sort" foreach(sort(nums, def(a,b) = b - a), ::echo) use "http" /*http("http://jsonplaceholder.typicode.com/users", "POST", {"name": "OwnLang", "versionCode": 10}, def(v) { println "Added: " + v http("http://jsonplaceholder.typicode.com/users/2", "PATCH", {"name": "Patched Name"}, ::http_get_demo) }) def http_get_demo(v) { println "Updated: " + v http("http://jsonplaceholder.typicode.com/users", ::echo) }*/ use "json" println "json" println jsonencode({ "name": "JSON Example", "version": 1, "arrayData": [ 1, 2, 3, 4 ], "objectData": { "key": "value", 10: "1000" } }) println "" def fact1(n) = match n { case 0: 1 case n: n * fact1(n - 1) } def fact2(n) = match n { case n if n == 0: 1 case _: n * fact2(n - 1) } println fact1(6) println fact2(6) class = { "add": def(a, b) = a + b, "sub": def(a, b) = a - b, "mul": def(a, b) = a * b, "div": def(a, b) = a / b } println class.add(2, class.mul(2, 2)) println split("1/2/3/4/5/6", "/") println join(nums, ", ") println join(nums, "|", "/") println join(nums, ", ", "[", "]") // Destructuring assignment arr = ["a", "b", "c"] extract(var1, var2, var3) = arr echo(var1, var2, var3) // Swap extract(var2, var1) = [var1, var2] echo(var1, var2) extract(, , var4) = arr println var4