Я не понимаю, почему приведенная ниже программа не компилируется.
module Main where
import Prelude
import Effect (Effect)
import Effect.Console (log)
import Data.Generic.Rep (class Generic)
import Foreign.Generic (defaultOptions, genericEncodeJSON)
main :: Effect Unit
main = do
log "Hello sailor!"
newtype Foo = Foo {
x :: Int
, y :: Int
, z :: Array Bar
}
type Bar = {
a :: String
, b :: String
}
derive instance repGenericFoo:: Generic Foo _
fooToJSON :: Foo -> String
fooToJSON = genericEncodeJSON $ defaultOptions { unwrapSingleConstructors = true }
Это вывод компилятора
Compiling Main
Error found:
in module Main
at src/Main.purs line 27, column 13 - line 27, column 30
No type class instance was found for
Foreign.Class.Encode { a :: String
, b :: String
}
Если Array не используется, программа компилирует
newtype Foo = Foo {
x :: Int
, y :: Int
, z :: Bar
}
type Bar = {
a :: String
, b :: String
}
почему genericEncodeJSON не может кодировать Bar, если он находится внутри контейнера, такого как Array или List?