У меня есть этот рабочий код в части случайного тестирования Ката:
it "handles randoms " $
property $ \x y -> updateHealth x y == if y > x then 0 else x-y
Но я хотел, чтобы сигнатура функции использовала Num, но когда я это сделала, я получаю сообщение об ошибке, потому что (я полагаю) она не знает, как генерировать Nums (поскольку она не знает, какие Nums делать?). Я просто жестко установил тип Double в качестве обходного пути.
Однако есть ли способ использовать Quickcheck, когда ваша сигнатура функции использует Nums? Вы должны указать это специально для генерации случайного Int или Integer, Float или Double?
Num
не является типом; это класс типов, то есть набор типов. Таким образом, вы должны указать конкретный тип для использования. Обойти это невозможно, потому что компилятор не может выбрать конкретный экземплярNum
для использования (в большинстве случаев; см.: ограничение мономорфизма) - person AJF   schedule 02.08.2018