module Algorithms.Geometry.SoS.Internal where
import Algorithms.Geometry.SoS.AsPoint
import Algorithms.Geometry.SoS.Orientation
import Control.CanAquire
import Data.Geometry.Point.Internal
simulateSimplicity' :: forall t d r b. (Traversable t, SoS d)
=> (forall i. ( CanAquire i (Point d r)
, SoS d
) => t (P i d r) -> b)
-> t (Point d r) -> b
simulateSimplicity' :: (forall i. (CanAquire i (Point d r), SoS d) => t (P i d r) -> b)
-> t (Point d r) -> b
simulateSimplicity' forall i. (CanAquire i (Point d r), SoS d) => t (P i d r) -> b
alg = (forall s.
CanAquire (I s (Point d r)) (Point d r) =>
t (I s (Point d r)) -> b)
-> t (Point d r) -> b
forall (t :: * -> *) a b.
Traversable t =>
(forall s. CanAquire (I s a) a => t (I s a) -> b) -> t a -> b
runAcquire forall i. CanAquire i (Point d r) => t i -> b
forall s.
CanAquire (I s (Point d r)) (Point d r) =>
t (I s (Point d r)) -> b
alg'
where
alg' :: forall i. CanAquire i (Point d r) => t i -> b
alg' :: t i -> b
alg' = t (P i d r) -> b
forall i. (CanAquire i (Point d r), SoS d) => t (P i d r) -> b
alg (t (P i d r) -> b) -> (t i -> t (P i d r)) -> t i -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (i -> P i d r) -> t i -> t (P i d r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (i -> P i d r
forall k k i (d :: k) (r :: k). i -> P i d r
P @i @d @r)