aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/documentation/lux/control/function/memo.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/documentation/lux/control/function/memo.lux')
-rw-r--r--stdlib/source/documentation/lux/control/function/memo.lux36
1 files changed, 36 insertions, 0 deletions
diff --git a/stdlib/source/documentation/lux/control/function/memo.lux b/stdlib/source/documentation/lux/control/function/memo.lux
new file mode 100644
index 000000000..823b49772
--- /dev/null
+++ b/stdlib/source/documentation/lux/control/function/memo.lux
@@ -0,0 +1,36 @@
+(.module:
+ [library
+ [lux (#- if loop)
+ ["$" documentation (#+ documentation:)]
+ [data
+ [text (#+ \n)
+ ["%" format (#+ format)]]]
+ [macro
+ ["." template]]]]
+ [\\library
+ ["." /]])
+
+(documentation: /.open
+ "Memoization where the memoized results can be re-used accross invocations."
+ [(open memo)])
+
+(documentation: /.closed
+ (format "Memoization confined to a single invocation to the function (not counting any subsequent recursive invocations)."
+ \n "Memoized results will be re-used during recursive invocations, but cannot be accessed after the main invocation has ended.")
+ [(closed hash memo)])
+
+(documentation: /.none
+ (format "No memoization at all."
+ \n "This is useful as a test control when measuring the effect of using memoization.")
+ [(none hash memo)])
+
+(.def: .public documentation
+ (.List $.Module)
+ ($.module /._
+ ""
+ [..open
+ ..closed
+ ..none
+ ($.default /.memoization)
+ ($.default /.Memo)]
+ []))