Haskell 相当于 Json 或 Edn

Haskell Equivalent of Json or Edn

在Javascript中,如果我想存储配置,我使用Json。在 Clojure 中,我使用 EDN,Haskell 中推荐什么? Yaml?

答案是:以上都是! Haskell 有 JSON, EDN, YAML, CSV 的库,还有更多。我相信所有这些库都支持泛型编程,这意味着它们可以自动为您派生模式。

使用 JSON 的示例是:

{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
import Data.Aeson

data Foo = Foo { fooA :: Int, fooB :: Char, fooC :: String }
  deriving (Generic)

instance ToJSON Foo
instance FromJSON Foo

现在您可以在 Foo 上使用 encodedecode,无需任何更多工作。

一个更简单但不太推荐的选项是使用 ReadShow:

data Foo = ... as before
  deriving (Read, Show)

这将允许您执行 show (Foo ...)let foo = read someString