about summary refs log tree commit diff
path: root/doc/manual/expressions/language-values.xml
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2016-08-23T11·09+0200
committerDomen Kožar <domen@dev.si>2016-08-26T17·19+0200
commit0e3574d7f8136303cd8b3a1369d1bf685727bc9f (patch)
tree88b4c0b6f6ac40a9e76e7658b6a2b3293a4591f0 /doc/manual/expressions/language-values.xml
parenta9d4f2b303584c9de26140a511302ac2fdc7c9ad (diff)
doc: move set functor para to Sets section
Diffstat (limited to 'doc/manual/expressions/language-values.xml')
-rw-r--r--doc/manual/expressions/language-values.xml17
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/manual/expressions/language-values.xml b/doc/manual/expressions/language-values.xml
index f1174ecb5d8d..b90baac5054c 100644
--- a/doc/manual/expressions/language-values.xml
+++ b/doc/manual/expressions/language-values.xml
@@ -276,6 +276,23 @@ added to the set:
 This will evaluate to <literal>{}</literal> if <literal>foo</literal>
 evaluates to <literal>false</literal>.</para>
 
+<para>A set that has a <literal>__functor</literal> attribute whose value
+is callable (i.e. is itself a function or a set with a
+<literal>__functor</literal> attribute whose value is callable) can be
+applied as if it were a function, with the set itself passed in first
+, e.g.,
+
+<programlisting>
+let add = { __functor = self: x: x + self.x; };
+    inc = add // { x = 1; };
+in inc 1
+</programlisting>
+
+evaluates to <literal>2</literal>. This can be used to attach metadata to a
+function without the caller needing to treat it specially, or to implement
+a form of object-oriented programming, for example.
+
+</para>
 
 </simplesect>