라벨

나루 위키
둘러보기로 가기 검색하러 가기

라벨호출 표현식이나 레코드 표현식의 각 원소에 달릴 수 있는 이름이다. 호출의 경우 라벨은 형식 인자 이름, 레코드의 경우 라벨은 필드 이름에 대응된다.

x := (foo: 1, bar: 2)
--    ^^^     ^^^ 라벨

라벨이 붙지 않은 원소는 위치에 따라 순서대로 0, 1, 2 등의 자연수 리터럴이 암묵적으로 붙는다(단, 00, 1_2, 0x0, 0.00 등의 다른 표현은 허용되지 않는다. 이 이름은 정확히 쓰여진 그대로 문자열로 변환된다). 이 때 붙은 숫자 사이에는 (라벨이 붙은 원소가 중간에 끼어 있으면) 틈이 있을 수 있다.

_: (0: int, foo: int, 2: int) := (1, foo: 2, 3)

암묵적으로 붙었든 명시적으로 붙었든 라벨은 한 수식 안에서 겹칠 수 없다.

(foo: 1, foo: 2) -- 오류: 첫번째 원소의 라벨 `foo`와 두번째 원소의 라벨 `foo`가 겹침
(1: 1, 2) -- 오류: 첫번째 원소의 라벨 `1`과 두번째 원소의 암묵적인 라벨 `1`이 겹침