From cb1c461049d7c43ec340302f466447da9f95a499 Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Tue, 7 Feb 2023 11:44:01 +0100 Subject: [PATCH] Refactoring --- .../image_extractor/extractors/parsable.py | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/image_prediction/image_extractor/extractors/parsable.py b/image_prediction/image_extractor/extractors/parsable.py index 894c360..75e1597 100644 --- a/image_prediction/image_extractor/extractors/parsable.py +++ b/image_prediction/image_extractor/extractors/parsable.py @@ -147,27 +147,35 @@ def make_eithered_image_metadata_pair(image: Either, metadata: Either) -> Either def context(value): return {"reason": value, "metadata": metadata.either(bottom, identity)} - # What is most readable? + # Explicitly we are doing the following. (1) and (2) are equivalent. - # 1) - # return Either.apply(make_image_metadata_pair).to_arguments(image, metadata).either(left(context), right(identity)) - - # 2) - # m (a -> b -> c) -> m a -> m b -> m c - # return Right(make_image_metadata_pair).amap(image).amap(metadata).either(left(context), right(identity)) - - # 3) # a := Image # b := Metadata # c := ImageMetadataPair - return ( - image.bind(right(make_image_metadata_pair)) # m a >>= m (a -> b -> c) -> m (b -> c) - .amap(metadata) # m (b -> c) <*> m b -> m c - .either( - left(context), - right(identity), - ) - ) + + # 1) + # return ( + # Right(make_image_metadata_pair) # m (a -> b -> c) + # .amap(image) # m (a -> b -> c) $ m a = m (b -> c) + # .amap(metadata) # m (b -> c) $ m b = m c + # .either( + # left(context), + # right(identity), + # ) + # ) + + # 2) + # return ( + # image.bind(right(make_image_metadata_pair)) # m a >>= m (a -> b -> c) = m (b -> c) + # .amap(metadata) # m (b -> c) <*> m b = m c + # .either( + # left(context), + # right(identity), + # ) + # ) + + # Syntactic sugar variant: + return Either.apply(make_image_metadata_pair).to_arguments(image, metadata).either(left(context), right(identity)) @curry(2)