在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
Run Code Online (Sandbox Code Playgroud)
现在你可以在没有任何工作的情况下使用encode
或decode
使用你Foo
了.
一个更简单但不太推荐的选择是使用Read
和Show
:
data Foo = ... as before
deriving (Read, Show)
Run Code Online (Sandbox Code Playgroud)
这将允许你做show (Foo ...)
和let foo = read someString
.