AV
Size: a a a
AV
AV
{-# LANGUAGE DerivingVia #-}
import Data.Semigroup.Generic
data Pair a = MkPair a a
deriving (Semigroup, Monoid) via (GenericSemigroupMonoid (Pair a))AV
resolveFooId :: Foo -> IO (Either ResolveError FooId), если нужно зарезолвить много, то можно написать partitionEithers <$> traverse resolveFooId foos, оно зарезолвит всё.resolveFooIds :: [Foo] -> IO [Either ResolveError FooId] вот можно ли какой-то магией превратить первое во второе для тех реализаций, которые это умеют?AV
AV
KV
resolveFooId :: Foo -> IO (Either ResolveError FooId), если нужно зарезолвить много, то можно написать partitionEithers <$> traverse resolveFooId foos, оно зарезолвит всё.resolveFooIds :: [Foo] -> IO [Either ResolveError FooId] вот можно ли какой-то магией превратить первое во второе для тех реализаций, которые это умеют?KV
AV
KV
LO
VD
AV
KV
LO
AV
KV
AV
LO