From ba60a498d7012eb5754cf65b924e7c1810d41ce0 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 13 Sep 2016 14:29:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/functions/function_call_chain.own | 3 +++ examples/functions/function_chain.own | 9 ++++++++ examples/functions/stream.own | 26 ++++++++++++++++++++++ examples/java/system_info.own | 5 +++++ 4 files changed, 43 insertions(+) create mode 100644 examples/functions/function_call_chain.own create mode 100644 examples/functions/function_chain.own create mode 100644 examples/functions/stream.own create mode 100644 examples/java/system_info.own diff --git a/examples/functions/function_call_chain.own b/examples/functions/function_call_chain.own new file mode 100644 index 0000000..a3791d4 --- /dev/null +++ b/examples/functions/function_call_chain.own @@ -0,0 +1,3 @@ +def f() = def() = def() = def() = "Function call chaining: f()()()()" + +println f()()()() \ No newline at end of file diff --git a/examples/functions/function_chain.own b/examples/functions/function_chain.own new file mode 100644 index 0000000..c73b16d --- /dev/null +++ b/examples/functions/function_chain.own @@ -0,0 +1,9 @@ +def calc() = { + "add": ::add, + "sub": ::minus +} +def add(x, y) = x + y +def minus(x, y) = x - y + +println calc().add(77, 42) +println calc().sub(77, 42) \ No newline at end of file diff --git a/examples/functions/stream.own b/examples/functions/stream.own new file mode 100644 index 0000000..2deb5cc --- /dev/null +++ b/examples/functions/stream.own @@ -0,0 +1,26 @@ +use "std" +use "functional" + +println "x, square(x), cube(x) for even numbers" +data = [1,2,3,4,5,6,7,8,9] +stream(data) + .filter(def(x) = x % 2 == 0) + .map(def(x) = [x, x * x, x * x * x]) + .sortBy(def(x) = -x[2]) + .forEach(::echo) + + +println "\nReverse custom operator" +data = [2, 4, 6, 5, 12, 34, 0, 18] +rev = stream(data).custom(::reverse).toArray() +println data +println rev + +def reverse(container) { + size = length(container) + result = newarray(size) + for i : range(size) { + result[size - i - 1] = container[i] + } + return result +} \ No newline at end of file diff --git a/examples/java/system_info.own b/examples/java/system_info.own new file mode 100644 index 0000000..d8fc3a0 --- /dev/null +++ b/examples/java/system_info.own @@ -0,0 +1,5 @@ +use "java" +System = newClass("java.lang.System") +println "OS name: " + System.getProperty("os.name") +println "OS version: " + System.getProperty("os.version") +println "User home: " + System.getProperty("user.home") \ No newline at end of file