2
행 다형성 레코드를 나타내는 유형/별명을 정의하는 방법이 있습니까?다형성 레코드 유형 별명에 대한 구문
은 그래서
tester :: forall r. {val :: Int | r} -> Int
tester a =
a.val
callTester = tester {val: 1, b: 2}
내가 별칭으로 레코드 유형을 정의 할 예에게 주어진. 비슷한 것
type Val = forall r. {val :: Int | r}
tester :: Val -> Int
tester a =
a.val
callTester = tester {val: 1, b: 2}
그러나 컴파일되지 않습니다.
형식이 여러 번 정의되는 더 큰 레코드와 더 복잡한 함수의 경우 많은 노이즈가 발생합니다. 이 문제를 해결하는 것이 좋을 것입니다. 예 : fn :: a -> b -> a
a
을 두 번 정의해야합니다.
비 다형성 레코드의 경우 간단하지만 명확하게 선행을 알지 못하는 추가 필드가있는 레코드를 허용하려고합니다.
감사합니다.