@@ -447,20 +447,15 @@ tr :: Matrix e cols rows -> Matrix e rows cols
447447tr (M m) = M (I.tr m)
448448
449449-- Selective 'select' operator
450−--
451−select :: (Bounded a, Bounded b, Enum a, Enum b, Num e, Ord e,
452− KnownNat (I.Count (I.FromNat (I.Count a))),
453− KnownNat (I.Count (I.FromNat (I.Count b))),
454− KnownNat (I.Count (I.FromNat cols1)),
455− I.FromLists e (I.FromNat (I.Count b)) (I.FromNat (I.Count a)),
456− I.FromLists e (I.FromNat (I.Count b)) (I.FromNat (I.Count b)),
457− Eq b,
458− I.FromNat rows1
459− ~ Either (I.FromNat (I.Count a)) (I.FromNat (I.Count b)),
460− I.FromNat cols2 ~ I.FromNat cols1,
461− I.FromNat (I.Count b) ~ I.FromNat rows2) =>
462− Matrix e cols1 rows1 -> (a -> b) -> Matrix e cols2 rows2
463−select (M m) y = M (I.select m y)
450+select ::
451+ ( Num e,
452+ I.FromLists e (I.FromNat rows1) (I.FromNat rows1),
453+ KnownNat (I.Count (I.FromNat rows1)),
454+ I.FromNat rows2 ~ I.FromNat rows1,
455+ I.FromNat cols1 ~ I.FromNat cols2,
456+ I.FromNat rows3 ~ Either (I.FromNat cols3) (I.FromNat rows1)
457+ ) => Matrix e cols1 rows3 -> Matrix e cols3 rows1 -> Matrix e cols2 rows2
458+select (M m) (M y) = M (I.select m y)
464459
465460-- McCarthy's Conditional
466461