(Lispex)sicp.io
리스펙스 · SICP 진단 · 실행하고 읽고 고치기

쓸모 있는 오류는 바꿀 수 있는 프로그램을 가리킵니다.

대표적인 실패 세 개와 보호된 성공 하나, 긴 성공 실행 하나를 돌리고 런타임 상태와 오류 종류, 메시지, 제한된 실행 흐름을 읽습니다.

진단 질문

보고된 오류 종류와 메시지를 소스의 구체적인 가정 하나에 연결할 수 있나요?

  • 묶이지 않은 이름과 숫자 오류 구분하기
  • primitive 도메인 불일치 알아보기
  • 실패 전 실행된 일을 trace에서 찾기
  • 선택되지 않은 가지가 실행되지 않음을 확인하기
  • 평가 완료와 trace truncation 구분하기

첫 세 프로그램은 각각 환경에 없는 이름, 0으로 나누기, car가 받을 수 없는 숫자 입력을 보여 줍니다.

네 번째 프로그램은 같은 잘못된 나눗셈을 포함하지만 if가 다른 가지를 선택하므로 7을 반환합니다.

다섯 번째 프로그램은 0까지 계산을 끝내지만 교육용 실행 흐름은 이벤트 한도에서 먼저 잘립니다. 평가 완료와 trace 완전성은 별개입니다.

리스펙스 · SICP 코드SICP에 필요한 Scheme 호환 문법을 리스펙스 SICP 프로필로 실행합니다.
(+ missing 1)
리스펙스 학습용 런타임리스펙스 SICP 프로필 1.0.0
리스펙스 SICP 런타임 불러오는 중
리스펙스 · SICP 코드UTF-8 13 / 1,048,576바이트
예제
결과
출력
진단
보이는 실행 흐름0 / 0 개의 실행 이벤트
    이 브라우저 결과는 리스펙스 바우치나 권한이 아닙니다.wasm —
    예상 진단

    첫 세 프로그램은 서로 다른 형식의 오류를 보고합니다. 보호된 프로그램은 7로 성공하고 긴 프로그램은 0으로 끝나지만 trace는 한도에서 truncated로 표시됩니다.

    실행 흐름에서 볼 점

    실패 직전 평가된 식과 보호된 if에서 실행되지 않은 나눗셈, 긴 실행에서 평가 완료와 trace 한도 상태를 따로 확인하세요.

    답을 보기 전에 설명하기

    진단을 읽는 질문 다섯 개

    묶이지 않은 이름의 가장 작은 고침은 무엇인가요?

    missing을 정의하거나 의도한 이미 묶인 이름으로 바꿉니다.

    숫자 오류에서 무엇이 바뀌어야 하나요?

    실제로 평가되는 제수가 0이 아니어야 하며 0이 유효 입력이면 별도 분기가 필요합니다.

    car 진단은 입력에 관해 무엇을 말하나요?

    평가된 인수가 car가 요구하는 객체 도메인 밖에 있습니다.

    보호된 예제가 숨은 실패가 아닌 이유는 무엇인가요?

    if는 선택한 가지만 평가하므로 나눗셈 표현식이 이번 실행에서는 일을 하지 않습니다.

    trace가 잘렸다고 긴 프로그램이 실패했나요?

    아닙니다. 평가는 0으로 끝났고 교육용 trace 기록만 한도에서 멈췄습니다.