Advertisement
Guest User

Untitled

a guest
Aug 28th, 2015
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.47 KB | None | 0 0
  1. newtype AtLeastTwoAndUnique a = AtLeastTwoAndUnique (Array a)
  2.  
  3. toArray :: forall a. AtLeastTwoAndUnique a -> Array a
  4. toArray (AtLeastTwoAndUnique xs) = xs
  5.  
  6. first :: forall a. AtLeastTwoAndUnique a -> a
  7. first = Unsafe.head
  8.  
  9. instance arbAtLeastTwoAndUnique :: (Arbitrary a) => Arbitrary (AtLeastTwoAndUnique a) where
  10. arbitrary = AtLeastTwoAndUnique <$> arbitrary `suchThat` (\xs -> unique xs && atLeastTwo xs)
  11. where
  12. unique xs = nub xs == xs
  13. atLeastTwo = (>= 2) <<< length
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement