diff options
Diffstat (limited to 'lib/evaluators')
| -rw-r--r-- | lib/evaluators/FOL.ml | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/lib/evaluators/FOL.ml b/lib/evaluators/FOL.ml index a7685bd..01264e3 100644 --- a/lib/evaluators/FOL.ml +++ b/lib/evaluators/FOL.ml @@ -53,11 +53,7 @@ let rec bencode_of_term = ( 'w', Bencode.Dict [ "term", bencode_of_term term; - ( "binding", - Bencode.Dict - ( BatMap.String.bindings binding - |> List.map (fun (name, value) -> name, Concepts.Tuple.bencode_of_value value) ) ) - ] ) + "binding", Bencode.of_map Concepts.Tuple.bencode_of_value binding ] ) let rec term_of_bencode = let open Utilities.Result in @@ -74,15 +70,10 @@ let rec term_of_bencode = Ok (Project (term, BatFingerTree.of_list attributes)) | Bencode.Tagged ('w', data) -> let* term = Bencode.field "term" data |>> term_of_bencode in - let* binding = Bencode.field "binding" data |>> Bencode.as_dict in let* binding = - List.map - (fun (name, value) -> - Concepts.Tuple.value_of_bencode value |> Result.map (fun value -> name, value) ) - binding - |> Utilities.List.sequence + Bencode.field "binding" data |>> Bencode.to_map Concepts.Tuple.value_of_bencode in - Ok (Where (term, BatMap.String.of_list binding)) + Ok (Where (term, binding)) | _ -> Error (Error.malformed_program ()) let encode term = bencode_of_term term |> Bencode.to_bytes |> Bytes.to_string |
