OCaml에서 가드 메서드 구현하기
Guarded Methods in OCaml

OCaml은 구문적으로 가드 메서드를 직접 지원하지 않지만, 타입 동등성 증명(eq)을 이용해 이를 인코딩할 수 있습니다. 이 글은 리스트 객체에 대해 flatten과 sum 같은 메서드에만 제약을 거는 방법을 보여줍니다. 타입 동등성 증명을 추가 파라미터로 제공함으로써, 수신자 타입에 대한 제약을 메서드 수준에서 강제할 수 있습니다. 이 기법은 객체 지향 프로그래밍에서 더 세밀한 수신자 타입 지정을 가능하게 하며, 확장 메서드나 클래스 외부로 메서드를 이동하는 방식의 대안을 제시합니다.
가드 메서드는 수신자(self)에 제약 조건을 특정 메서드에만 부착할 수 있게 해주며, 이는 수신자가 해당 제약을 만족할 때만 호출될 수 있음을 의미합니다.