Получение Haskell Показать ошибку

Я провел небольшое исследование о цветных сетях Петри для университетской оценки, и мне нужно реализовать их в Haskell. Я использовал этот документ в качестве отправной точки.

Когда я пытаюсь импортировать этот модуль в Haskell:

module SimpleHCPN where

import Data.List
import System.Random

data Net marking = Net {trans :: [Transition marking]}
                   deriving (Show)
data Transition marking = Transition { name :: String
                                     , action :: marking -> [marking]
                                     }
                          deriving (Show)

Я получаю следующую ошибку:

SimpleHCPN.hs:11:37: error:
    * No instance for (Show (marking -> [marking]))
        arising from the second field of `Transition'
          (type `marking -> [marking]')
        (maybe you haven't applied a function to enough arguments?)
      Possible fix:
        use a standalone 'deriving instance' declaration,
          so you can specify the instance context yourself
    * When deriving the instance for (Show (Transition marking))

Я все еще новичок в Haskell, поэтому небольшая помощь будет оценена.

Спасибо, Денис


person Denis Visan    schedule 14.06.2017    source источник
comment
Дополнительные связанные вопросы: 1, 2, 3.   -  person Daniel Wagner    schedule 15.06.2017


Ответы (1)


action относится к типу marking -> [marking], и для функций не существует экземпляра класса типов Show.

Вы можете импортировать Text.Show.Functions для экземпляра класса типов Show для функций, но я не знаю, показывает ли он что-то полезное или только "Function" для любой функции.

person typetetris    schedule 14.06.2017
comment
Если домен небольшой, Data.Universe.Instances.Show – еще одна альтернатива. - person Daniel Wagner; 15.06.2017