콘텐츠로 이동
Xen / docs

문서 검색

한국어 · v0.1.0-demo.2

검색어를 입력하세요.

    EN
    Xen / coding-class v0.1.0-demo.2

    스코프 모드 · 코딩 클래스

    학습 장의 개념을 직접 사용합니다. 문제는 확인하기 → 프로그램 만들기 → 오류 해결하기 순서입니다. 먼저 구현한 뒤 힌트를 읽고 완료 기준으로 확인하세요. 각 문제는 별도 파일이나 작업 디렉터리에서 진행하세요.

    1. 확인하기 · 필요한 범위에만 참조 허용

    섹션 제목: “1. 확인하기 · 필요한 범위에만 참조 허용”

    학습 장의 scope_modes.xen에서 main 전체에 어노테이션을 붙인 버전과 호출 블록만 표시한 버전을 각각 실행하세요.

    완료 기준: 두 버전 모두 [1, 2, 3]과 10을 출력합니다. 참조를 허용하는 범위가 어디인지 표시할 수 있습니다.

    힌트: 함수에는 #![explc], 블록에는 #scope[explc]를 사용합니다.

    2. 프로그램 만들기 · 최적화 비교 실험

    섹션 제목: “2. 프로그램 만들기 · 최적화 비교 실험”

    같은 프로그램을 —opt=off, —opt=basic으로 실행하고 표준 출력을 비교하세요. basic에서 —opt-report도 실행해 보고서와 결과를 구분하세요.

    완료 기준: 두 실행 결과는 같습니다. 보고서는 stderr에 나타납니다. 출력 일치만으로 속도 향상을 주장하지 않습니다.

    힌트: 학습 장의 명령을 사용하세요. 보고서의 내부 식별자를 고정 결과로 삼지 마세요.

    3. 오류 해결하기 · 호출자 어노테이션 누락 수정

    섹션 제목: “3. 오류 해결하기 · 호출자 어노테이션 누락 수정”

    아래 코드를 검사하고 main의 참조 생성 부분만 블록으로 감싸서 고치세요. —opt 옵션으로 해결할 수 없는 이유를 설명하세요.

    의도적인 오류가 있는 시작 코드입니다.

    class_scope.xen
    #![explc]
    fn append(values: &mut Vec<Int>) { values.push(3); }
    fn main() {
    let mut values = [1, 2];
    append(&mut values);
    println(values);
    }
    터미널 창
    xen check class_scope.xen

    진단에 포함되는 내용:

    class_scope.stderr
    passing references requires #![explc]

    완료 기준: 출력은 [1, 2, 3]입니다. 호출되는 함수의 표시와 호출자의 표시를 각각 확인합니다.

    힌트: 호출된 함수의 explc 설정은 호출자에 전파되지 않습니다.

    정상 프로그램은 xen check 파일.xen 후 xen run 파일.xen으로 확인하세요. 테스트 전용 파일은 xen test 파일.xen을 사용합니다. 수정 전 오류·원인·수정 후 결과를 짧게 기록하고, 완료 기준의 모든 입력을 다시 실행하세요.