Я определяю тип, и все работает нормально, кроме метода, который обращается к последнему конструктору данных: JArray
Я получаю следующую ошибку:
Not in scope: type constructor or class `JArray'
A data constructor of that name is in scope; did you mean DataKinds?
|
28 | getArray::JValue->Maybe JArray
|
Почему это происходит? Я могу загрузить модуль и создать экземпляр JArray
, но он не загружается с помощью метода getArray
.
data JValue = JString String
| JNumber Double
| JBool Bool
| JNull
| JObject [(String, JValue)]
| JArray [JValue]
deriving (Eq, Ord, Show)
getString :: JValue -> Maybe String
getString (JString s) = Just s
getString _ = Nothing
getInt :: JValue -> Maybe Int
getInt (JNumber n) = Just (truncate n)
getInt _ = Nothing
getBool :: JValue -> Maybe Bool
getBool (JBool b) = Just b
getBool _ = Nothing
getObject (JObject obj) = Just obj
getObject _ = Nothing
--What is wrong in this method?
getArray :: JValue -> Maybe JArray
getArray (JArray arr) = Just arr
getArray _ = Nothing
JArray
- это не тип, это конструктор. Что вы пытаетесь сделать здесь? Вы хотели написатьgetArray :: JValue -> Maybe [JValue]
? Это тип функции здесь. - person AJF   schedule 19.05.2018