From 9a08039adfe40f76b9d5a5351005671c15b557bf Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Mon, 24 Jan 2022 23:38:55 -0400 Subject: Added explicit function inlining. --- stdlib/source/test/lux/control/function.lux | 4 ++- stdlib/source/test/lux/control/function/inline.lux | 32 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 stdlib/source/test/lux/control/function/inline.lux (limited to 'stdlib/source/test') diff --git a/stdlib/source/test/lux/control/function.lux b/stdlib/source/test/lux/control/function.lux index d9444edd1..eed6c9635 100644 --- a/stdlib/source/test/lux/control/function.lux +++ b/stdlib/source/test/lux/control/function.lux @@ -17,7 +17,8 @@ ["[1][0]" contract] ["[1][0]" memo] ["[1][0]" mixin] - ["[1][0]" mutual]]) + ["[1][0]" mutual] + ["[1][0]" inline]]) (def: .public test Test @@ -62,4 +63,5 @@ /memo.test /mixin.test /mutual.test + /inline.test )))) diff --git a/stdlib/source/test/lux/control/function/inline.lux b/stdlib/source/test/lux/control/function/inline.lux new file mode 100644 index 000000000..7c05e39e0 --- /dev/null +++ b/stdlib/source/test/lux/control/function/inline.lux @@ -0,0 +1,32 @@ +(.using + [library + [lux "*" + ["_" test {"+" Test}] + [abstract + [monad {"+" do}]] + [math + ["[0]" random] + [number + ["i" int]]]]] + [\\library + ["[0]" /]]) + +(template: (!quadrance/2 m0 m1) + [(i.+ (i.* m0 m0) (i.* m1 m1))]) + +(/.inline: .public (quadrance/2 m0 m1) + (-> Int Int Int) + (!quadrance/2 m0 m1)) + +(def: .public test + Test + (<| (_.covering /._) + (do [! random.monad] + [.let [measurement (# ! each (i.% +1000) random.int)] + m0 measurement + m1 measurement]) + ($_ _.and + (_.cover [/.inline:] + (i.= (..!quadrance/2 m0 m1) + (..quadrance/2 m0 m1))) + ))) -- cgit v1.2.3