"toRow" не является (видимым) методом класса "ToRow"
Я изучаю Haskell, поэтому я решил написать веб-приложение. Я выбрал PostgreSQL Simple для работы с базой данных. Я успешно подключился к нему и попробовал простые математические операции, но у меня возникли проблемы при попытке сопоставить записи с данными. Этот код не компилируется:
module Handlers.SurveyReplies where
import Database.PostgreSQL.Simple
data AnswersSet = AnswersSet {
sex ∷ Integer,
ageRange ∷ Integer,
country ∷ Integer,
commune ∷ Maybe Integer
} deriving (Show)
instance FromRow AnswersSet where
fromRow = AnswersSet <$> field <*> field <*> field <*> field
instance ToRow AnswersSet where
toRow r = [toField (sex r), toField (ageRange r), toField (country r), toField (commune r)]
Ошибка:
‘fromRow’ is not a (visible) method of class ‘FromRow’
|
17 | fromRow = AnswersSet <$> field <*> field <*> field <*> field
| ^^^^^^^
А также:
‘toRow’ is not a (visible) method of class ‘ToRow’
|
20 | toRow r = [toField (sex r), toField (ageRange r), toField (country r), toField (commune r)]
| ^^^^^
Я посмотрел несколько примеров проектов ( среди прочего), но я не понимаю, что я делаю неправильно:(
1 ответ
Решение
Модуль Database.PostgreSQL.Simple
экспортирует только классы типов ToRow
а также FromRow
без каких-либо их методов.
Для этих методов вам нужно импортировать модули Database.PostgreSQL.Simple.ToRow
а также Database.PostgreSQL.Simple.FromRow
, как это делается в примере, на который вы ссылаетесь.