일단 하스켈 자체를 방금 검색해보며 알아본 수준이라 이해도가 없는 수준인걸 감안하고 보셈


plus a b = a + b

main = return ()


여기서 plus는 타입도 명시하지 않고 호출조차 하지 않았는데 컴파일 에러가 안남, 즉 타입이 확정되어 컴파일됨

plus 정의에 등장하는 + 연산자를 적용가능한 a/b의 타입 범위중 가장 슈퍼타입을 골라 추론해주는 듯

(타입이 아니라 타입클래스가 정해지는 듯? 타입클래스가 인터페이스 비스무리한거 같은데 의미를 모르므로 패스)


plus a b = a + b

main = print $ plus 1.0 2.0


여기서는 plus를 호출했음

1.0, 2.0이 명시되어있으므로 이를 통해 1.0, 2.0에 적용될수 있는 가장 슈퍼타입을 추론


plus a b = a + b

main = do

print $ plus 1 2

print $ plus 1.0 2.0


여기서는 서로 다른 1, 2와 1.0, 2.0에 공통적으로 적용될수 있는 가장 슈퍼타입을 추론