summaryrefslogtreecommitdiff
path: root/Example.hs
blob: 20cae00a4eb6d846c71dd893b8da7090febb0916 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{-# LANGUAGE TemplateHaskell #-}

module Main where

import Coalpit
import Language.Haskell.TH
import Data.List

data Y = Foo Bool Int
       | Bar Int
       | Baz
  deriving (Show)

data X = X String (Maybe Int) (Maybe [Int]) Y Y String
  deriving (Show)

$(deriveArgs ''Y)
$(deriveArgs ''X)

main :: IO ()
main = do
  let val = X "test" Nothing (Just [1,2,3]) (Foo True 1) Baz "end"
      args = toArgs val
  print val
  putStrLn $ intercalate " " args
  print (fromArgs args :: (X, [String]))
  print (fromArgs (args ++ ["additional", "args"]) :: (X, [String]))