Подъем экземпляра класса в Haskell

Можно использовать dir(module) для наблюдения всех доступных методов/атрибутов. Также выезд PyDocs.

13
задан Don Stewart 16 April 2011 в 20:06
поделиться

3 ответа

Вы хотите здесь использовать обобщенное расширение для вывода нового типа:

{-# 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
19
ответ дан 1 December 2019 в 21:38
поделиться

GHC реализует то, что вы хотите: Расширения к производному механизму . Эти изменения часто отображаются для будущего расширения стандартного языка (как показано на haskell 'wiki )

Чтобы включить это расширение, вы должны использовать следующую директиву

{-# GeneralizedNewtypeDeriving #-}

, а затем использовать производное от вашего объявления newtype , как обычно

data SomeType a = SomeCons a deriving (Num)
5
ответ дан 1 December 2019 в 21:38
поделиться

GeneralizedNewtypeDeriving

1
ответ дан 1 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: