Haskell相当于Json或Edn

时间:2015-02-26 16:44:54

标签: haskell clojure

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

1 个答案:

答案 0 :(得分:6)

答案是:以上所有! Haskell拥有JSONEDNYAMLCSV以及更多的库。我相信所有这些库都支持泛型编程,这意味着它们可以自动为您派生架构。

使用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

现在,您可以在encode上使用decodeFoo,而无需再做任何工作。

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

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

这样您就可以show (Foo ...)let foo = read someString