Можно использовать dir(module)
для наблюдения всех доступных методов/атрибутов. Также выезд PyDocs.
Вы хотите здесь использовать обобщенное расширение для вывода нового типа:
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Main where
newtype SomeType a = SomeCons a deriving (Num, Show, Eq)
main = do
let a = SomeCons 2
b = SomeCons 3
print $ a + b
Вывод:
*Main> main
SomeCons 5
GHC реализует то, что вы хотите: Расширения к производному механизму . Эти изменения часто отображаются для будущего расширения стандартного языка (как показано на haskell 'wiki )
Чтобы включить это расширение, вы должны использовать следующую директиву
{-# GeneralizedNewtypeDeriving #-}
, а затем использовать производное от вашего объявления newtype , как обычно
data SomeType a = SomeCons a deriving (Num)