2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1 ... 3, 4, 5, 6, 7
 
 Re: Теория категорий, Haskell и программирование вообще
Сообщение27.04.2019, 17:59 


01/09/14
348
Вопрос:
Приведите пример про 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 


01/09/14
348
Таки разобрался. Надо сделать так:
Код:
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

Модераторы: Toucan, maxal, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group