From e795d3d990937a640a22b15b88eebd2b7beee340 Mon Sep 17 00:00:00 2001 From: Joe Zhao Date: Wed, 26 Aug 2015 17:19:31 -0600 Subject: fst commit --- src/Mahjong/Set.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/Mahjong/Set.hs (limited to 'src/Mahjong/Set.hs') diff --git a/src/Mahjong/Set.hs b/src/Mahjong/Set.hs new file mode 100644 index 0000000..4c3e799 --- /dev/null +++ b/src/Mahjong/Set.hs @@ -0,0 +1,20 @@ +module Set where + +import Pai +import Data.List (sort) +import Data.Char (isDigit) +import Data.Either + +data MSet = MSet {getMSet:: [MCard]} + +instance Show MSet where + show xs = fst $ foldr f ("",Nothing) $ sort $ getMSet xs + where f (MCard col n) (o,p) = let o' = show n ++ (if Just col == p then "" + else show col) ++ o in (o', Just col) + +readMSet r = fst $ foldr f ([],Man) $ map g r + where g x | isDigit x = Left ((read [x])::Int) + | otherwise = Right ((read [x])::MCol) + f (Left a) (xs,col) = ((MCard col a):xs,col) + f (Right a) (xs,col) = (xs,a) + -- cgit v1.2.3-70-g09d2