Учитывая ряд ограничений типа:
{-# LANGUAGE ConstraintKinds, MultiParamTypeClasses #-}
import Data.Array.Unboxed(Ix,IArray,UArray)
type IntLike a = (Ord a, Num a, Enum a, Show a, Ix a, IArray UArray a)
Как узнать, какие типы удовлетворяют IntLike
, т.е. все упомянутые ограничения совместно?
Я могу скомпоновать информацию, необходимую из вывода команды ghci :info
, а затем дважды проверить мою работу, позвонив (или имея ghci typecheck)
isIntLike :: IntLike -> Bool
isIntLike = const True
в различных типах, например. isIntLike (3::Int)
.
Есть ли способ заставить ghci сделать это для меня?
В настоящее время я заинтересован в конкретных типах, но не хотел бы иметь более общее решение, которое также делает умные вещи с объединяющими контекстами!