summaryrefslogtreecommitdiff
path: root/src/Mahjong/Set.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Mahjong/Set.hs')
-rw-r--r--src/Mahjong/Set.hs20
1 files changed, 20 insertions, 0 deletions
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)
+