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를 잘 모르고 쓴 코드같은데 봉사 문고리 잡기식으로 올바른 코드가 됨 ㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ