summaryrefslogtreecommitdiffstats
path: root/software/functional programming
diff options
context:
space:
mode:
authorUser <bnewbold@daemon.robocracy.org>2009-10-13 02:52:09 +0000
committerUser <bnewbold@daemon.robocracy.org>2009-10-13 02:52:09 +0000
commitf61026119df4700f69eb73e95620bc5928ca0fcb (patch)
treef17127cff9fec40f4207d9fa449b9692644ce6db /software/functional programming
parent9d431740a3e6a7caa09a57504856b5d1a4710a14 (diff)
downloadknowledge-f61026119df4700f69eb73e95620bc5928ca0fcb.tar.gz
knowledge-f61026119df4700f69eb73e95620bc5928ca0fcb.zip
Grand rename for gitit transfer
Diffstat (limited to 'software/functional programming')
-rw-r--r--software/functional programming52
1 files changed, 0 insertions, 52 deletions
diff --git a/software/functional programming b/software/functional programming
deleted file mode 100644
index 4720280..0000000
--- a/software/functional programming
+++ /dev/null
@@ -1,52 +0,0 @@
-===================================
-Functional Programming
-===================================
-
-Recursion
---------------
-**Partial** functions can recurse endlessly over a finite input. **Total**
-functions will terminate/halt over a finite input. (TODO: check this
-definition)
-
-Collectors
---------------
-The collector concept/pattern/paradigm is the one I am least familiar with
-in functional programming.
-
-My current understanding is that they essentially allow allow recursive
-functions to maintain something like state by wrapping immutable functions
-or variables in layer after layer of functions and just holding on to
-the outermost layer. For instance, the typical way to write a ``length``
-function in python would be::
-
->>> def how-long(x):
->>> l = 0
->>> while x.has_next()
->>> l = l+1;
->>> x.pop()
->>> return l
-
-Using recursion, we could do::
-
->>> def how-long-recurse(x):
->>> if x.has_next()
->>> x.pop()
->>> return how-long-recurse(x) + 1
->>> else
->>> return 0
-
-Using the collector paradigm, we could do::
-
->>> def add1(x): return a+1;
->>> def how-long-col(x, col):
->>> if x.has_next()
->>> return col(0)
->>> else
->>> x.pop()
->>> return how-long-col(x, lambda a: col(add1(a)))
-
-The first two ways, the plus one operation is actually executed at any given
-time, while with the collector implementation we're really creating a
-function step by step which will give the answer at the end when it is all
-executed.
-