summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2019-04-26 23:21:22 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2019-04-26 23:21:22 +0200
commitd4ea952032b099a4674c27e964ab6ec421c690f4 (patch)
tree95ff353e25c971e1c88ed12236aa54b2d541c71f /src/ataxic_sugar.erl
parent707e875456b7d8dcc37aaa8f92b16e984b534045 (diff)
Dubious way to have lazy orddict updates.
I want to keep the benefits of orddict:fetch vs orddict:find, but still be able to re-use the existing code when adding a new element.
Diffstat (limited to 'src/ataxic_sugar.erl')
-rw-r--r--src/ataxic_sugar.erl32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/ataxic_sugar.erl b/src/ataxic_sugar.erl
index 3098196..7f6e441 100644
--- a/src/ataxic_sugar.erl
+++ b/src/ataxic_sugar.erl
@@ -64,20 +64,26 @@ update_orddict_element (IX, OP) ->
store,
[
ataxic:constant(IX),
- ataxic:sequence
(
- [
- ataxic:apply_function
- (
- orddict,
- fetch,
- [
- ataxic:constant(IX),
- ataxic:current_value()
- ]
- ),
- OP
- ]
+ case ataxic:is_constant(OP) of
+ true -> OP;
+ false ->
+ ataxic:sequence
+ (
+ [
+ ataxic:apply_function
+ (
+ orddict,
+ fetch,
+ [
+ ataxic:constant(IX),
+ ataxic:current_value()
+ ]
+ ),
+ OP
+ ]
+ )
+ end
),
ataxic:current_value()
]