{-1};system(qq[pugs-DrIFT "$ARGV[0]" -o "$ARGV[1]"]);<<'--'
-}{-# OPTIONS_GHC -pgmFperl -F -optFdump-load.hs #-}
{-# LANGUAGE DeriveDataTypeable, PatternGuards #-}
import Control.Monad
import Data.Typeable
import Data.Yaml.Syck
import DrIFT.YAML
data Person = Person
{ name :: String
, number :: Int
, needs :: [String]
} deriving Typeable {-!derive: YAML!-}
object1 = Person
{ name = "Ingy dot Net"
, number = 42
, needs = [ "sex", "drugs", "rock and roll" ]
}
main = do
yaml1 <- toYamlString object1
object2 <- fromYamlString yaml1
yaml2 <- toYamlString (object2 :: Person)
if yaml1 == yaml2
then putStr yaml1
else fail $ yaml1 ++ "!=\n" ++ yaml2
--