Как писать тесты с использованием QuickCheck для определения ($)

#haskell #quickcheck

#haskell #быстрая проверка

Вопрос:

А также для создания функции.

 f $ a = f a
f . g = x -> f (g x)
  

Комментарии:

1. Вам действительно нужно их тестировать? Я думаю, что их реализация обусловлена их типом (связанной с ними теоремой о свободе).

2. На самом деле это упражнение из haskellBook

3. Я понимаю, так что это упражнение просто ради него. Однако я понятия не имею, каким может быть значимый тест для них. Я имею в виду, я мог бы сравнить их тесты с их собственными определениями, что кажется странным.

Ответ №1:

QuickCheck работает только с конкретными типами, поэтому сначала вам нужно создать экземпляр типа:

 ($) :: (Int -> String) -> Int -> String