declaration

선언

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

선언원자적 표현식과 유사하나 다음과 같은 특징을 가지고 있다.

  1. 항상 예약어로 시작한다.
  2. 어느 연산자보다도 우선순위가 낮기 때문에, 다음 세 가지 경우를 제외하면 그 뒤에 다른 표현식이 올 수 없다.
    • 원래 선언 안에 표현식이 중첩되는 경우
    • ) 등으로 구획이 끝나는 경우
    • 구분자가 나오는 경우
  3. 일반적으로 바인딩을 통해 선언 이름이 부여되며, 그 이름은 평가에 할당된다.

이름이 부여된다는 데서 짐작할 수 있듯, 대부분의 선언은 최상위 바인딩으로서 유닛을 이루는 기본 요소가 된다.

-- 아래 줄 전체가 바인딩
foo := fn { ... }
--     ^^^^^^^^^^ [[함수 선언]] (`fn`이 예약어이다)

v := (fn { ... })()
--    ^^^^^^^^^^ (익명) 함수 선언

목록

이름 문법 예제 용도
함수 선언 fn(x: int) -> int { x + 42 } 호출 가능한 코드 블록을 선언
타입 별명 선언 type (lat: rat, long: rat) 기존 타입과 똑같이 취급되는 별명을 선언
새 타입 선언 new type (lat: rat, long: rat) 기존 타입과 다르게 취급되는 새 타입을 선언
열거형 선언 enum { ok; err(ErrorCode) } 주어진 경우 중 하나만을 담을 수 있는 타입을 선언
for 선언 for[T] fn(x: T) { x } 주어진 타입 인자에 대해 일반화된 선언을 만듦
use 선언 use naru core (int) 패키지로부터 값을 가져 옴