2017-01-25 10 views
1

При объяснении расширения шаблона в главе, посвященной Стойкие, книга Йесод имеет что-то ищет, какТип семьи в Persistent библиотеке

newtype Key Person = PersonKey (BackendKey SqlBackend) 

Я не совсем уверен, как прочитать эту NewType заявление: это PersonKey a что-то уже определено где-то в другом месте (не может найти свое определение, хотя) или PersonKey просто обычный тип или значение конструктора, такого как Just/Nothing///Left/etc. ?

ответ

1

Хорошо, чтобы упростить только немного первых, давайте представим, что он сказал: «конструктор данных»

newtype KeyPerson = PersonKey (BackendKey SqlBackend) 

В этом случае KeyPerson бы «конструктор типа», и PersonKey бы быть Мы бы создали их обоих здесь. Конструктор данных PersonKey будет содержать значение типа BackendKey SqlBackend, которое должно было бы существовать в другом месте и на которое можно ссылаться здесь.

В этом случае мы, как правило, связанные с типами (он же тип семьи), что делает вещи немного сложнее:. newtype Key Person означает «мы определяем соответствующий Key для Person типа Но мы до сих пор создают a PersonKey конструктор данных, как и раньше.

+2

Ответ скопирован из письма, отправленного Майклом Снойманом с его разрешения – Grisha