From 02bc968e0cec04db2c2b6e02c08decedb8e8e8dc Mon Sep 17 00:00:00 2001 From: darkf Date: Wed, 12 Feb 2014 02:54:41 -0800 Subject: [PATCH] add ref example --- examples/ref.lamb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 examples/ref.lamb diff --git a/examples/ref.lamb b/examples/ref.lamb new file mode 100644 index 0000000..d13b90e --- /dev/null +++ b/examples/ref.lamb @@ -0,0 +1,16 @@ +-- Refs are global mutable (changing) values. +-- They let you break referential transparency (purity) to make some things easier. + +x = ref!(1337). -- Construct a new ref, set to the value 1337 +print(x). -- Should print +print(readRef!(x)). -- Should print 1337 + +setRef!(x, 42). -- Set it to 42 +print(readRef!(x)). + +-- Apply a function on the current value in the reference and set it to the new value. +modifyRef!(ref, f) -> + setRef!(ref, f(readRef!(ref))). + +modifyRef!(x, \v -> v*2). -- Double x +print(readRef!(x)). -- 84