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
上使用 encode
或 decode
,无需任何更多工作。
一个更简单但不太推荐的选项是使用 Read
和 Show
:
data Foo = ... as before
deriving (Read, Show)
这将允许您执行 show (Foo ...)
和 let foo = read someString
。
在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
上使用 encode
或 decode
,无需任何更多工作。
一个更简单但不太推荐的选项是使用 Read
和 Show
:
data Foo = ... as before
deriving (Read, Show)
这将允许您执行 show (Foo ...)
和 let foo = read someString
。