A J      !"#$%&'()*+,-./0123456 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d efghijklm n o p q r s t u v w x y z { | } ~  (C) 2012 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Trustworthy (C) 2012 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Trustworthy 13=HJKM8A vector is an additive group with additional structure.The zero vectorCompute the sum of two vectorsV2 1 2 ^+^ V2 3 4V2 4 6*Compute the difference between two vectorsV2 4 5 - V2 3 1V2 1 4)Linearly interpolate between two vectors.dApply a function to merge the 'non-zero' components of two vectors, unioning the rest of the values.)For a dense vector this is equivalent to .*For a sparse vector this is equivalent to .2Apply a function to the components of two vectors.)For a dense vector this is equivalent to .*For a sparse vector this is equivalent to . Basis element  Compute the negation of a vectornegated (V2 2 4) V2 (-2) (-4) Sum over multiple vectorssumV [V2 1 1, V2 3 4]V2 4 5 Compute the left scalar product 2 *^ V2 3 4V2 6 8 Compute the right scalar product V2 3 4 ^* 2V2 6 8*Compute division by a scalar on the right.tProduce a default basis for a vector space. If the dimensionality of the vector space is not statically known, see .MProduce a default basis for a vector space from which the argument is drawn.(Produce a diagonal matrix from a vector.Create a unit vector.unit _x :: V2 IntV2 1 0%Outer (tensor) product of two vectors.        (C) 2012 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Safe-InferredDProvides a fairly subjective test to see if a quantity is near zero.nearZero (1e-11 :: Double)FalsenearZero (1e-17 :: Double)TruenearZero (1e-5 :: Float)FalsenearZero (1e-7 :: Float)True%Determine if a quantity is near zero.  a  1e-12  a  1e-6  a  1e-12  a  1e-6  (C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy1,Free and sparse inner product/metric spaces.MCompute the inner product of two vectors or (equivalently) convert a vector f a into a covector f a -> a.V2 1 2 `dot` V2 3 411gCompute the squared norm. The name quadrance arises from Norman J. Wildberger's rational trigonometry.'Compute the quadrance of the difference:Compute the distance between two vectors in a metric space.Compute the norm of a vector in a metric space)Convert a non-zero vector to unit vector. Normalize a  functor to have unit 4. This function does not change the functor if its  is 0 or 1.         (C) 2012-2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy +0246=KMA 0-dimensional vectorpure 1 :: V0 IntV0V0 + V0V0"  !"#$%&'()*+,-.    !"#$%&'()*+,-.(C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy+-./0246=BKM!)A space that has at least 1 basis vector "." V1 2 ^._x2V1 2 & _x .~ 3V1 3#A 1-dimensional vectorpure 1 :: V1 IntV1 1 V1 2 + V1 3V1 5 V1 2 * V1 3V1 6 sum (V1 2)2%!"#$/0%123456789:;<=>?@ABCDEFGHIJKLMN!"#$%#$!"%!!"#$%123456/7089:;<=>?@ABCDEFGHIJKLMN(C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy +0246=KM&6A space that distinguishes 2 orthogonal basis vectors " and ', but may have more.' V2 1 2 ^._y2V2 1 2 & _y .~ 3V2 1 3 ' :: Lens' (t a) a ( ( :: Lens' (t a) () a) )A 2-dimensional vectorpure 1 :: V2 IntV2 1 1V2 1 2 + V2 3 4V2 4 6V2 1 2 * V2 3 4V2 3 8 sum (V2 1 2)3,*the counter-clockwise perpendicular vectorperp $ V2 10 20 V2 (-20) 10-&'()*OP+,-QRSTUVWXYZ[\]^_`abcdefghijklmnopqrs !"%&'()*+,- )*!"&'(%+,-(&'()*+,-QRSTUVOWPXYZ[\]^_`abcdefghijklmnopqrs(C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy +0246=KM.7A space that distinguishes 3 orthogonal basis vectors: ", ', and /. (It may have more)/ / :: Lens' (t a) a 0 0 :: Lens' (t a) (1 a) 1A 3-dimensional vector4 cross product5scalar triple product../012tu345vwxyz{|}~!"%&'(+./0123451245!"&'(./0%+3)./012345vwxyz{t|u}~ (C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy +0246=KM64A space that distinguishes orthogonal basis vectors ", ', /, 7. (It may have more.)7 7 :: Lens' (t a) a 8 8 :: Lens' (t a) (9 a) 9A 4-dimensional vector.<NConvert a 3-dimensional affine vector into a 4-dimensional homogeneous vector.=MConvert a 3-dimensional affine point into a 4-dimensional homogeneous vector.>gConvert 4-dimensional projective coordinates to a 3-dimensional point. This operation may be denoted, &euclidean [x:y:z:w] = (x/w, y/w, z/w)/ where the projective, homogenous, coordinate  [x:y:z:w]/ is one of many associated with a single point (x/w, y/w, z/w).06789:;<=>!"%&'(+./036789:;<=>9:<=>!"&'(./0678%+3;+6789:;<=> (C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy !"0246=KM ?When lines are represented as Plcker coordinates, we have the ability to check for both directed and undirected equality. Undirected equality between As (or a A and a @R) checks that the two lines coincide in 3D space. Directed equality, between two @s, checks that two lines coincide in 3D, and have the same direction. To accomodate these two notions of equality, we use an  instance on the ? data type.For example, to check the directed equality between two lines, p1 and p2 , we write, Ray p1 == Ray p2.B'Describe how two lines pass each other.C@The lines pass each other counterclockwise (left-handed screw).D9The lines pass each other clockwise (right-handed screw)E2The lines are coplanar (parallel or intersecting).F7Plcker coordinates for lines in a 3-dimensional space.HGiven a pair of points represented by homogeneous coordinates generate Plcker coordinates for the line through them, directed from the second towards the first.IGiven a pair of 3D points, generate Plcker coordinates for the line through them, directed from the second towards the first.JOThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). J :: Lens' (F a) a K :: Lens' (F a) a L :: Lens' (F a) a M :: Lens' (F a) a N :: Lens' (F a) a O :: Lens' (F a) a KOThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). J :: Lens' (F a) a K :: Lens' (F a) a L :: Lens' (F a) a M :: Lens' (F a) a N :: Lens' (F a) a O :: Lens' (F a) a LOThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). J :: Lens' (F a) a K :: Lens' (F a) a L :: Lens' (F a) a M :: Lens' (F a) a N :: Lens' (F a) a O :: Lens' (F a) a MOThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). J :: Lens' (F a) a K :: Lens' (F a) a L :: Lens' (F a) a M :: Lens' (F a) a N :: Lens' (F a) a O :: Lens' (F a) a NOThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). J :: Lens' (F a) a K :: Lens' (F a) a L :: Lens' (F a) a M :: Lens' (F a) a N :: Lens' (F a) a O :: Lens' (F a) a OOThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). J :: Lens' (F a) a K :: Lens' (F a) a L :: Lens' (F a) a M :: Lens' (F a) a N :: Lens' (F a) a O :: Lens' (F a) a PZThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). P ::  a => Lens' (F a) a Q ::  a => Lens' (F a) a R ::  a => Lens' (F a) a S ::  a => Lens' (F a) a T ::  a => Lens' (F a) a U ::  a => Lens' (F a) a QZThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). P ::  a => Lens' (F a) a Q ::  a => Lens' (F a) a R ::  a => Lens' (F a) a S ::  a => Lens' (F a) a T ::  a => Lens' (F a) a U ::  a => Lens' (F a) a RZThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). P ::  a => Lens' (F a) a Q ::  a => Lens' (F a) a R ::  a => Lens' (F a) a S ::  a => Lens' (F a) a T ::  a => Lens' (F a) a U ::  a => Lens' (F a) a SZThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). P ::  a => Lens' (F a) a Q ::  a => Lens' (F a) a R ::  a => Lens' (F a) a S ::  a => Lens' (F a) a T ::  a => Lens' (F a) a U ::  a => Lens' (F a) a TZThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). P ::  a => Lens' (F a) a Q ::  a => Lens' (F a) a R ::  a => Lens' (F a) a S ::  a => Lens' (F a) a T ::  a => Lens' (F a) a U ::  a => Lens' (F a) a UZThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). P ::  a => Lens' (F a) a Q ::  a => Lens' (F a) a R ::  a => Lens' (F a) a S ::  a => Lens' (F a) a T ::  a => Lens' (F a) a U ::  a => Lens' (F a) a \Valid Plcker coordinates p will have \ p  0PThat said, floating point makes a mockery of this claim, so you may want to use .]aThis isn't th actual metric because this bilinear form gives rise to an isotropic quadratic space^sChecks if the line is near-isotropic (isotropic vectors in this quadratic space represent lines in real 3d space)._4Checks if two lines intersect (or nearly intersect).`%Check how two lines pass each other.  passes l1 l2 describes l2 when looking down l1.a!Checks if two lines are parallel.QRepresent a Plcker coordinate as a pair of 3-tuples, typically denoted U and V.KChecks if two lines coincide in space. In other words, undirected equality.FChecks if two lines coincide in space, and have the same orientation.b7The minimum squared distance of a line from the origin.c0The point where a line is closest to the origin.dNot all 6-dimensional points correspond to a line in 3D. This predicate tests that a Plcker coordinate lies on the Grassmann manifold, and does indeed represent a 3D line.N?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd&?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd&FG\^]HIa_BEDC`bcd?A@JKLPOTQUMRNSVWX[ZYF?A@BEDCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd](C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy'(02346<=>BHKM#efghijkl efghijkl efighjkl efghijkl (C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Safe-Inferred1m4Requires and provides a default definition such that o =  nAn involutive ringo;Conjugate a value. This defaults to the trivial involution.conjugate (1 :+ 2) 1.0 :+ (-2.0) conjugate 11"mno      !"#$%&mnonom!mno      !"#$%& (C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy +0246=FKMp0A vector space that includes the basis elements u, v, q and rt0A vector space that includes the basis elements u and vw Quaternions'$quadrance of the imaginary component}norm of the imaginary component~raise a w to a scalar power(0Helper for calculating with specific branch cuts)0Helper for calculating with specific branch cuts* with a specified branch cut.+ with a specified branch cut., with a specified branch cut.- with a specified branch cut.. with a specified branch cut./ with a specified branch cut.7Spherical linear interpolation between two quaternions.Apply a rotation to a vector. axis theta builds a w representing a rotation of theta radians about axis.Cpqrstuvwx012yz{|3'}~()456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWpqrstuvwxyz{|}~wxtuvpqrsyz{|}~;pqrstuvwx2yz{|3'}~()4567890:1;<=>?@ABCDEFGHIJKLMNOPQRSTUVW (C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy1JKCompute the trace of a matrixtrace (V2 (V2 a b) (V2 c d))a + d Compute the diagonal of a matrixdiagonal (V2 (V2 a b) (V2 c d))V2 a dXYZ[\]^_`abcdXYZ[\]^_`abcd(C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable TrustworthyHM*A 4x3 matrix with row-major representation*A 4x4 matrix with row-major representation*A 3x3 matrix with row-major representation*A 2x2 matrix with row-major representationThis is a generalization of e" to work over any corepresentable f.  :: g f => h s t a b -> h (f s) (f t) (f a) (f b) 6In practice it is used to access a column of a matrix.V2 (V3 1 2 3) (V3 4 5 6) ^._xV3 1 2 3$V2 (V3 1 2 3) (V3 4 5 6) ^.column _xV2 1 4TMatrix product. This can compute any combination of sparse and dense multiplication.:V2 (V3 1 2 3) (V3 4 5 6) !*! V3 (V2 1 2) (V2 3 4) (V2 4 5)V2 (V2 19 25) (V2 43 58)SV2 (fromList [(1,2)]) (fromList [(2,3)]) !*! fromList [(1,V3 0 0 1), (2, V3 0 0 5)]V2 (V3 0 0 2) (V3 0 0 15)Entry-wise matrix addition.5V2 (V3 1 2 3) (V3 4 5 6) !+! V2 (V3 7 8 9) (V3 1 2 3)V2 (V3 8 10 12) (V3 5 7 9)Entry-wise matrix subtraction.5V2 (V3 1 2 3) (V3 4 5 6) !-! V2 (V3 7 8 9) (V3 1 2 3)!V2 (V3 (-6) (-6) (-6)) (V3 3 3 3)Matrix * column vector$V2 (V3 1 2 3) (V3 4 5 6) !* V3 7 8 9 V2 50 122Row vector * matrix"V2 1 2 *! V2 (V3 3 4 5) (V3 6 7 8) V3 15 18 21Scalar-matrix product5 *!! V2 (V2 1 2) (V2 3 4)V2 (V2 5 10) (V2 15 20)Matrix-scalar productV2 (V2 1 2) (V2 3 4) !!* 5V2 (V2 5 10) (V2 15 20)*Hermitian conjugate or conjugate transpose:adjoint (V2 (V2 (1 :+ 2) (3 :+ 4)) (V2 (5 :+ 6) (7 :+ 8)))LV2 (V2 (1.0 :+ (-2.0)) (5.0 :+ (-6.0))) (V2 (3.0 :+ (-4.0)) (7.0 :+ (-8.0)))$Build a rotation matrix from a unit w.OBuild a transformation matrix from a rotation matrix and a translation vector.>Build a transformation matrix from a rotation expressed as a w and a translation vector.AConvert from a 4x3 matrix to a 4x4 matrix, extending it with the  [ 0 0 0 1 ] column vectorUConvert a 3x3 matrix to a 4x4 matrix extending it with 0's in the new row and column.2x2 identity matrix.eye2V2 (V2 1 0) (V2 0 1)3x3 identity matrix.eye3#V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1)4x4 identity matrix.eye46V4 (V4 1 0 0 0) (V4 0 1 0 0) (V4 0 0 1 0) (V4 0 0 0 1)bExtract the translation vector (first three entries of the last column) from a 3x4 or 4x4 matrix.2x2 matrix determinant.det22 (V2 (V2 a b) (V2 c d)) a * d - b * c3x3 matrix determinant.+det33 (V3 (V3 a b c) (V3 d e f) (V3 g h i))?a * (e * i - f * h) - d * (b * i - c * h) + g * (b * f - c * e)2x2 matrix inverse.inv22 $ V2 (V2 1 2) (V2 3 4))Just (V2 (V2 (-2.0) 1.0) (V2 1.5 (-0.5)))3x3 matrix inverse.+inv33 $ V3 (V3 1 2 4) (V3 4 2 2) (V3 1 1 1)JJust (V3 (V3 0.0 0.5 (-1.0)) (V3 (-0.5) (-0.75) 3.5) (V3 0.5 0.25 (-1.5))) BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportable Trustworthy .03=BKJA handy wrapper to help distinguish points from vectors at the type levelwAn affine space is roughly a vector space in which we have forgotten or at least pretend to have forgotten the origin. `a .+^ (b .-. a) = b@ (a .+^ u) .+^ v = a .+^ (u ^+^ v)@ (a .-. b) ^+^ v = (a .+^ v) .-. q@9Get the difference between two points as a vector offset.Add a vector offset to a point.&Subtract a vector offset from a point.DCompute the quadrance of the difference (the square of the distance).Distance between two points in an affine spaceVector spaces have origins.% % -(C) 2013-2014 Edward Kmett and Anthony Cowley BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Safe-InferredSerialize a linear type.Deserialize a linear type.None2346.A coassociative counital coalgebra over a ring)An associative unital algebra over a ringijklmnopqrstuvwxy ijklmnopqrstuvwxyNone2346ILinear functionals from elements of an (infinite) free module to a scalarz{|}~ z{|}~(C) 2012-2013 Edward Kmett, BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNone  !"#$%&'()*+,-./0123456789:;<=>mnopqrstuvwxyz{|}~ !"#$%&'()*+,-./012345567889:;<==>?@ABCDDEFG H I J K K L M N O P Q R S T U V W W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuvwxyz{| } ~             !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                               u           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =>?>@>A>B>C>D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x yz{|}~zlinear-1.10.1.2Linear.V Linear.VectorLinear.Epsilon Linear.Metric Linear.V0 Linear.V1 Linear.V2 Linear.V3 Linear.V4Linear.PluckerLinear.ConjugateLinear.Quaternion Linear.Trace Linear.Matrix Linear.Affine Linear.BinaryLinear.AlgebraLinear.CovectorLinear.InstancesLinearreflection-1.5.1Data.ReflectionintAdditivezero^+^^-^lerpliftU2liftI2EelnegatedsumV*^^*^/basisbasisFor kroneckerunitouterEpsilonnearZeroMetricdot quadranceqddistancenormsignorm normalizeV0R1_xV1exR2_y_xyV2eyperpangleR3_z_xyzV3ezcrosstripleR4_w_xyzwV4ewvectorpointnormalizePoint CoincidesRayLineLinePassCounterclockwise ClockwiseCoplanarPluckerplucker plucker3Dp01p02p03p23p31p12p10p20p30p32p13p21e01e02e03e23e31e12 squaredError>< isotropic intersectspassesparallelquadranceToOriginclosestToOriginisLineVtoVectorDim reflectDimdimreifyDim reifyVector fromVectorTrivialConjugate Conjugate conjugate Hamiltonian_j_k_ijk Complicated_e_i Quaternioneeeiejekabsipowasinqacosqatanqasinhqacoshqatanhqslerprotate axisAngleTracetracediagonalM43M44M33M22column!*!!+!!-!!**!*!!!!*adjointfromQuaternionmkTransformationMatmkTransformation m43_to_m44 m33_to_m44eye2eye3eye4 translationdet22det33inv22inv33PointPAffineDiff.-..+^.-^qdA distanceAlensPorigin $fAffinePoint $fR4Point $fR3Point $fR2Point $fR1Point$fRepresentablePoint$fDistributivePoint $fBindPoint $fAffineV$fAffineHashMap $fAffineMap $fAffine(->)$fAffineQuaternion$fAffinePlucker $fAffineV4 $fAffineV3 $fAffineV2 $fAffineV1 $fAffineV0$fAffineVector$fAffineIdentity$fAffineIntMap $fAffineMaybe$fAffineZipList$fAffineComplex $fAffine[] putLinear getLinear CoalgebracomultcounitalAlgebramultunitalmultRep unitalRep comultRep counitalRepCovector runCovector$*$fTraversable1Complex$fFoldable1Complex$fTraversableComplex$fFoldableComplex$fMonadFixComplex$fMonadZipComplex$fMonadComplex $fBindComplex$fApplicativeComplex$fApplyComplex$fFunctorComplex $fBindHashMap$fApplyHashMapbaseControl.ApplicativeliftA2containers-0.5.5.1 Data.Map.Base unionWithintersectionWithSetOne_fillerchoices GAdditivegzerogliftU2gliftI2 fillFromList$fApplicativeSetOne$fFunctorSetOne$fAdditiveIdentity$fAdditiveComplex$fAdditive(->)$fAdditiveHashMap $fAdditiveMap$fAdditiveIntMap $fAdditive[]$fAdditiveMaybe$fAdditiveVector$fAdditiveZipList$fGAdditivePar1 $fGAdditiveM1$fGAdditiveRec1$fGAdditive:*: $fGAdditiveU1$fEpsilonCDoubleGHC.Numabsghc-prim GHC.Classes<=$fEpsilonCFloat$fEpsilonDouble$fEpsilonFloat$fMetricVector$fMetricHashMap $fMetricMap$fMetricIntMap$fMetricIdentityMV_V0V_V0 $fMonadFixV0 $fMonadZipV0$fVectorVectorV0$fMVectorMVectorV0 $fUnboxV0TFCo:R:MVectorsV0TFCo:R:VectorV0 $fEachV0V0ab$fIxedV0TFCo:R:IxValueV0TFCo:R:IndexV0$fRepresentableV0$fTraversableWithIndexEV0$fFoldableWithIndexEV0$fFunctorWithIndexEV0 $fStorableV0 $fEpsilonV0 $fHashableV0$fDistributiveV0 $fMetricV0$fFractionalV0$fNumV0 $fMonadV0$fBindV0 $fAdditiveV0$fApplicativeV0 $fApplyV0$fTraversableV0 $fFoldableV0 $fFunctorV0MV_V1V_V1 $fMonadFixV1 $fMonadZipV1$fVectorVectorV1$fMVectorMVectorV1 $fUnboxV1TFCo:R:MVectorsV1TFCo:R:VectorV1 $fEachV1V1ab$fIxedV1TFCo:R:IxValueV1TFCo:R:IndexV1$fTraversableWithIndexEV1$fFoldableWithIndexEV1$fFunctorWithIndexEV1$fRepresentableV1$fIxV1$fDistributiveV1 $fR1Identity$fR1V1 $fMetricV1 $fHashableV1$fFractionalV1$fNumV1 $fMonadV1$fBindV1 $fAdditiveV1$fApplicativeV1 $fApplyV1$fTraversable1V1 $fFoldable1V1MV_V2V_V2 $fMonadFixV2 $fMonadZipV2$fVectorVectorV2$fMVectorMVectorV2 $fUnboxV2TFCo:R:MVectorsV2TFCo:R:VectorV2 $fEachV2V2ab$fIxedV2TFCo:R:IxValueV2TFCo:R:IndexV2$fTraversableWithIndexEV2$fFoldableWithIndexEV2$fFunctorWithIndexEV2$fRepresentableV2$fIxV2 $fStorableV2 $fEpsilonV2$fDistributiveV2$fR2V2$fR1V2 $fMetricV2$fFractionalV2$fNumV2 $fMonadV2$fBindV2 $fAdditiveV2 $fHashableV2$fApplicativeV2 $fApplyV2$fTraversable1V2 $fFoldable1V2$fTraversableV2 $fFoldableV2 $fFunctorV2MV_V3V_V3 $fMonadFixV3 $fMonadZipV3$fVectorVectorV3$fMVectorMVectorV3 $fUnboxV3TFCo:R:MVectorsV3TFCo:R:VectorV3 $fEachV3V3ab$fIxedV3TFCo:R:IxValueV3TFCo:R:IndexV3$fTraversableWithIndexEV3$fFoldableWithIndexEV3$fFunctorWithIndexEV3$fRepresentableV3$fIxV3 $fEpsilonV3 $fStorableV3$fR3V3$fR2V3$fR1V3$fDistributiveV3 $fMetricV3 $fHashableV3$fFractionalV3$fNumV3 $fMonadV3$fBindV3 $fAdditiveV3$fApplicativeV3 $fApplyV3$fTraversable1V3 $fFoldable1V3$fTraversableV3 $fFoldableV3 $fFunctorV3MV_V4V_V4 $fMonadFixV4 $fMonadZipV4$fVectorVectorV4$fMVectorMVectorV4 $fUnboxV4TFCo:R:MVectorsV4TFCo:R:VectorV4 $fEachV4V4ab$fIxedV4TFCo:R:IxValueV4TFCo:R:IndexV4$fTraversableWithIndexEV4$fFoldableWithIndexEV4$fFunctorWithIndexEV4$fRepresentableV4$fIxV4 $fEpsilonV4 $fStorableV4$fR4V4$fR3V4$fR2V4$fR1V4 $fHashableV4$fDistributiveV4 $fMetricV4$fFractionalV4$fNumV4 $fMonadV4$fBindV4 $fAdditiveV4 $fApplyV4$fApplicativeV4$fTraversable1V4 $fFoldable1V4$fTraversableV4 $fFoldableV4 $fFunctorV4EqNum==toUV coincides coincides' MV_Plucker V_Pluckeranti$fMonadFixPlucker$fMonadZipPlucker$fVectorVectorPlucker$fMVectorMVectorPlucker$fUnboxPluckerTFCo:R:MVectorsPluckerTFCo:R:VectorPlucker $fEqCoincides$fEachPluckerPluckerab $fIxedPluckerTFCo:R:IxValuePluckerTFCo:R:IndexPlucker$fTraversableWithIndexEPlucker$fFoldableWithIndexEPlucker$fFunctorWithIndexEPlucker$fEpsilonPlucker$fMetricPlucker$fStorablePlucker$fHashablePlucker$fFractionalPlucker $fNumPlucker $fIxPlucker$fTraversable1Plucker$fFoldable1Plucker$fTraversablePlucker$fFoldablePlucker$fRepresentablePlucker$fDistributivePlucker$fMonadPlucker $fBindPlucker$fAdditivePlucker$fApplicativePlucker$fApplyPlucker$fFunctorPlucker ReifiedDimretagDim $fEachVVab $fMonadFixV $fMonadZipV$fIxedVTFCo:R:IxValueV TFCo:R:IndexV$fRepresentableV $fMetricV $fEpsilonV $fStorableV$fDistributiveV $fFractionalV$fNumV $fAdditiveV$fMonadV$fBindV$fApplicativeV$fApplyV$fTraversableV $fFoldableV $fFunctorV$fDim*V$fDim*ReifiedDim $fDimNatnGHC.Baseid$fTrivialConjugateCDouble$fTrivialConjugateCFloat$fTrivialConjugateFloat$fTrivialConjugateDouble$fTrivialConjugateWord8$fTrivialConjugateWord16$fTrivialConjugateWord32$fTrivialConjugateWord64$fTrivialConjugateWord$fTrivialConjugateInt8$fTrivialConjugateInt16$fTrivialConjugateInt32$fTrivialConjugateInt64$fTrivialConjugateInt$fTrivialConjugateInteger$fConjugateComplex$fConjugateCDouble$fConjugateCFloat$fConjugateFloat$fConjugateDouble$fConjugateWord8$fConjugateWord16$fConjugateWord32$fConjugateWord64$fConjugateWord$fConjugateInt8$fConjugateInt16$fConjugateInt32$fConjugateInt64$fConjugateInt$fConjugateIntegerqicutcutWith GHC.Floatasinacosatanasinhacoshatanh MV_Quaternion V_QuaternionqNaN reimagine$fMonadFixQuaternion$fMonadZipQuaternion$fVectorVectorQuaternion$fMVectorMVectorQuaternion$fUnboxQuaternionTFCo:R:MVectorsQuaternionTFCo:R:VectorQuaternion$fEpsilonQuaternion$fFloatingQuaternion$fConjugateQuaternion$fDistributiveQuaternion$fHamiltonianQuaternion$fComplicatedQuaternion$fComplicatedComplex$fMetricQuaternion$fFractionalQuaternion$fHashableQuaternion$fNumQuaternion$fStorableQuaternion$fTraversableQuaternion$fFoldableQuaternion$fEachQuaternionQuaternionab$fIxedQuaternionTFCo:R:IxValueQuaternionTFCo:R:IndexQuaternion!$fTraversableWithIndexEQuaternion$fFoldableWithIndexEQuaternion$fFunctorWithIndexEQuaternion$fRepresentableQuaternion$fIxQuaternion$fMonadQuaternion$fBindQuaternion$fAdditiveQuaternion$fApplicativeQuaternion$fApplyQuaternion$fFunctorQuaternion$fTraceCompose$fTraceProduct$fTraceComplex$fTraceQuaternion$fTracePlucker $fTraceV4 $fTraceV3 $fTraceV2 $fTraceV0$fTraceV$fTraceHashMap $fTraceMap $fTraceIntMap lens-4.4.0.2Control.Lens.LensinsideFunctoradjunctions-4.2Data.Functor.Rep RepresentableControl.Lens.TypeLens$fCoalgebrar(,) $fCoalgebrarE$fCoalgebrarE0$fCoalgebrarE1$fCoalgebrarE2$fCoalgebrarE3$fCoalgebrarE4$fCoalgebrarE5$fCoalgebrar()$fCoalgebrarVoid $fAlgebrarE $fAlgebrarE0 $fAlgebrar(,) $fAlgebrar() $fAlgebrarE1 $fAlgebrarE2$fAlgebrarVoid $fNumCovector$fMonadPlusCovector$fAlternativeCovector$fPlusCovector $fAltCovector$fMonadCovector$fBindCovector$fApplicativeCovector$fApplyCovector$fFunctorCovector