summaryrefslogtreecommitdiff
path: root/dhall/src/binary.rs
diff options
context:
space:
mode:
authorNadrieril2019-04-19 14:42:36 +0200
committerNadrieril2019-04-19 14:42:36 +0200
commit4bed7b11e227a3151a2ff9e74f9662c126aad5a4 (patch)
tree789479787c3652d9adce1511a37fbee69d9a73a7 /dhall/src/binary.rs
parent759705047eea74f538883c15b6abd3292bbebb13 (diff)
Make App() only store one argument
Diffstat (limited to 'dhall/src/binary.rs')
-rw-r--r--dhall/src/binary.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/dhall/src/binary.rs b/dhall/src/binary.rs
index c12aa2a..62ebcf7 100644
--- a/dhall/src/binary.rs
+++ b/dhall/src/binary.rs
@@ -42,12 +42,12 @@ fn cbor_value_to_dhall(data: &cbor::Value) -> Result<ParsedExpr, DecodeError> {
Var(V(l, *n as usize))
}
[U64(0), f, args..] => {
- let f = cbor_value_to_dhall(&f)?;
- let args = args
- .iter()
- .map(cbor_value_to_dhall)
- .collect::<Result<Vec<_>, _>>()?;
- App(f, args)
+ let mut f = cbor_value_to_dhall(&f)?;
+ for a in args {
+ let a = cbor_value_to_dhall(&a)?;
+ f = rc(App(f, a))
+ }
+ return Ok(f);
}
[U64(1), x, y] => {
let x = cbor_value_to_dhall(&x)?;