2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 3, 4, 5, 6, 7
 
 Re: Теория категорий, Haskell и программирование вообще
Сообщение27.04.2019, 17:59 
Вопрос:
Приведите пример про coarbitrary из Test.QuickCheck. Как порождать случайные функции и как их использовать. Не получается понять как генерировать функции. Для просто arbitrary оно понятно:
Код:
import Data.Monoid
import Test.QuickCheck

myList' :: Arbitrary a => Gen [a]
myList' = frequency
  [ (1, return [])
  , (4, (:) <$> arbitrary <*> myList')
  ]
И можно генерировать случайные списки:
Код:
*Main Test.QuickCheck> sample myList'
[()]
[(),()]
[()]
[]
[(),()]
[(),(),(),(),(),(),(),(),(),(),()]
[(),(),(),(),(),(),()]
[]
[]
[(),(),(),(),()]
[]
А про coarbitrary?

 
 
 
 Re: Теория категорий, Haskell и программирование вообще
Сообщение28.04.2019, 15:42 
Таки разобрался. Надо сделать так:
Код:
import Data.Monoid
import Test.QuickCheck

foo :: Bool -> Gen Bool
foo a = coarbitrary a arbitrary
И можно уже генерировать случайную функцию:
Код:
*Main Test.QuickCheck> :t foo
foo :: Bool -> Gen Bool
*Main Test.QuickCheck> :t foo True
foo True :: Gen Bool
И конечный пример:
Код:
*Main Test.QuickCheck> sample $ foo True
True
True
True
False
True
False
False
False
True
False
True

 
 
 [ Сообщений: 92 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group