otherwise는 원래 guard 문법에서 씀.


f Nothing = 0

f (Just x)

  | p x = 1

  | q x = 2

  | otherwise = -1


이런식으로.

근데 otherwise는 그냥 True임. (그러니까 문법 설탕같은게 아님)

guard 문법이 Bool 타입 표현식을 받는거라서 그럼.


그런데 아까

case (mx :: Maybe Int) of

  Nothing -> ...

  otherwise -> ...


이런 코드를 봤거든.. 시발 이게 무슨 개같은 코드지 싶었는데 ㅋㅋㅋㅋㅋㅋ

사실 otherwise도 x, y등 다른 이름처럼 identifier로 사용할 수 있고 그걸 패턴매칭에 쓴거.

그러니까 guard의 otherwise랑은 무관계하고 그냥 새로운 변수로 쓴거임.

조건이 안달린 변수니까 무조건 매칭 됨


아마 otherwise를 잘 모르고 쓴 코드같은데 봉사 문고리 잡기식으로 올바른 코드가 됨 ㅋㅋㅋㅋㅋ