флаг is_test в Caffe2?

По моему мнению, это не будет перекрываться, так как [a] не должен быть выбором, так как ограничение на JSON [a] заключалось в том, что a должен быть экземпляром самого JSON. Для (String, a) нет экземпляра JSON.

Это недоразумение. GHC делает выбор экземпляра, учитывающий только головку экземпляра, а не какие-либо ограничения на экземпляры.

instance (JSON a) => JSON [a] where

означает, что для выбора экземпляра будет тот же, что и

instance JSON [a] where

также контекст

instance (JSON a) => JSON [(String, a)] where

игнорируется, например, для выбора.

Таким образом, GHC видит два экземпляра

instance JSON [a]
instance JSON [(String, a)]

, и они оба соответствуют требуемому

instance JSON [(String, String)]

, что означает, что вы перекрываетесь (независимо от того, какие экземпляры действительно существуют и какие ограничения имеют каждый из двух экземпляров).

Если выбран экземпляр, то ограничения принимая во внимание, и если они не выполняются, это ошибка типа.

0
задан JDoer 13 July 2018 в 22:55
поделиться

0 ответов

Другие вопросы по тегам:

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