Skip to content

Instantly share code, notes, and snippets.

@jutememo
Created February 7, 2010 01:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jutememo/297114 to your computer and use it in GitHub Desktop.
Save jutememo/297114 to your computer and use it in GitHub Desktop.
import Data.Maybe
data Person = Person { name :: String
, partner :: Partner
} deriving Eq
-- パートナー
type Partner = Maybe Person
instance Show Person where
show (Person n Nothing) = n
show (Person n p) = n ++ "{" ++ (name $ fromJust p) ++ "}"
-- 誕生
born n = Person n Nothing
-- 結婚
marry p1 p2 = (p1 { partner = Just p2 }, p2 { partner = Just p1 })
-- 離婚
divorce (p1,p2) = (p1 { partner = Nothing }, p2 { partner = Nothing })
main = do let tarou = born "Tarou"
hanako = born "Hanako"
m = marry tarou hanako
d = divorce m
print m -- (Tarou{Hanako},Hanako{Tarou})
print d -- (Tarou,Hanako)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment