가위 바위 보 자료형

data SRP = Scissors | Rock | Paper deriving (Show) data Winner = LeftSide | Tie | RightSide deriving (Show) compareSRP :: SRP -> SRP -> Winner compareSRP l r = case (l,r) of (Scissors, Scissors) -> Tie (Scissors, Rock) -> RightSide (Scissors, Paper) -> LeftSide (Rock, Scissors) -> LeftSide (Rock, Rock) -> Tie (Rock, Paper) -> RightSide (Paper, Scissors) -> RightSide (Paper, Rock) -> LeftSide (Paper, Paper) -> Tie
  • Haskell에서 data로 새로운 자료형을 만드는 것은 마치 Siwft의 enum을 닮았다. 심지어 associated value를 쓸 수도 있다. 자료형의 생성자도 쓸 수 있다. 신기 방기....
  • Swift의 switch ~ case는 Haskell의 판박이다. 패턴 매칭에 대한 예를 아무리 봐도 이해가 안 되더니, Haskell을 만져보고서야 이게 왜 필요한지 알게 되었다... 역시 신기 방기...