반응형
모든 값에는 값 범주가 있다. 이 범주는 C++과 유사하며 흔히 알고 있듯 l-value(좌측값) 또는 r-value(우측값) 라고 부른다. (여기서 l-value, r-value가 무엇인지는 자세히 설명하지 않는다.)
Carbon은 자동으로 l-value을 r-value으로 변환하지만 다른 방향으로는 변환하지 않습니다. 즉 r-value를 l-value로는 변환하지 않는다는 의미이다. l-value에는 메모리 저장을 위한 공간과 해당 공간의 주소가 존재하며 유형이 const(상수형)이 아니라면 l-value의 값은 수정될 수 있다.
r-value는 r-value만을 위한 전용 저장 공간이 없을 수 있다. 즉, 수정이 불가능하며 일반적으로 해당 데이터의 주소를 가져올 수 없다. r-value는 value phase 라고 하는 세 가지 종류로 나뉜다.
- constant 는 컴파일 시간에 알려진 값을 가지며, 그 값은 예를 들어 배열의 크기로 사용하기 위해 유형 검사 중에 사용할 수 있다. 여기에는 리터럴(정수, 부동 소수점, 문자열), 구체적인 유형 값(예:
f64
또는Optional(i32*)
), 상수에 대한 표현식 및템플릿
매개변수 값이 포함된다. - symbolic value 는 monomorphization이 발생할 때 컴파일의 코드 생성 단계에서 알 수 있는 값을 가지고, 그러나 유형 검사 중에는 알 수 없습니다. 여기에는 checked-generic parameters 및
Optional(T*)
과 같은 검사된 일반 인수가 있는 형식 표현식이 포함됩니다. - 런타임 값 에는 런타임에만 알려진 동적 값이 있습니다.
Carbon은 자동으로 상수를 기호 값 또는 임의의 값으로 변환한다.
상수(constant)는 심볼릭 값(symbolic value)와 런타임 값(runtime value)으로 변환되며 심볼릭 값은 일반적으로 값을 검사하는 작업이 수행되는 경우 runtime value로 변환되어 검사된다. 런타임 표현식의 상수 평가가 성공하면 런타임 값은 상수 또는 기호 값으로 변환된다.
Reference
History
-
- 21 - Value categories and value phases 첫 작성
반응형
'Language > Carbon' 카테고리의 다른 글
[Carbon] #1. Carbon의 자료형, 원시 타입 알아보기 (0) | 2022.08.01 |
---|---|
[Carbon] #0. C++의 후계자 - Carbon (0) | 2022.07.30 |