--- /dev/null
+# Capture List
+
+Sometimes in a spork/fork or a lambda expression, there is the need to capture one or more variables.
+Here's how it's done in Gwion:
+
+```gwion,editable
+var int foo, bar;
+
+#! for lambdas
+\ arg0 arg 1 : foo bar : {}
+
+#! for spork
+spork : foo bar : {}
+
+#! for fork
+fork : foo bar : {}
+```
+
+If you want to capture by reference, just prepend the variable name with `&`.
+For example capturing `foo` by reference and `bar` by value:
+
+```gwion,editable
+var int foo, bar;
+
+#! for lambdas
+\ arg0 arg 1 : &foo bar : {}
+
+#! for spork
+spork : &foo bar : {}
+
+#! for fork
+fork : &foo bar : {}
+```
+
+## Why explicit captures?
+
+In some cases you may want to track the value of variable, even a primitive, over time.
+If you capture by value, it would stay the same as when the variable was captured,
+hence sometimes the need to use capture by reference.