guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

289/376: Document functors


From: Ludovic Courtès
Subject: 289/376: Document functors
Date: Wed, 28 Jan 2015 22:05:41 +0000

civodul pushed a commit to tag 1.8
in repository guix.

commit 3d604ac88c81dd9b22252c7437a717b077897b13
Author: Shea Levy <address@hidden>
Date:   Wed Oct 15 22:32:08 2014 -0400

    Document functors
---
 doc/manual/expressions/language-constructs.xml |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/doc/manual/expressions/language-constructs.xml 
b/doc/manual/expressions/language-constructs.xml
index ddb3498..74809bb 100644
--- a/doc/manual/expressions/language-constructs.xml
+++ b/doc/manual/expressions/language-constructs.xml
@@ -196,6 +196,24 @@ in concat { x = "foo"; y = "bar"; }</programlisting>
 
 </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>
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]