Skip to content

[프로젝트] lazy infinite loop test case 관련 질문 #72

@strikef

Description

@strikef

프로젝트 문서에 따르면 val 을 이용해 새로운 변수를 선언할 때는

(val x E) assigns name x to the value obtained by evaluating E

즉 E를 eager evaluation해 얻은 값을 대입해야 한다고 이해했습니다.

그런데 lazy infinite loop 테스트 케이스의 경우 다음과 같습니다

|(let
|  (def loop () (app loop))
|  (lazy-val x (app loop))
|  (def f (a (by-name b)) a)
|  (val bb (app f x (app loop)))
|  3)

val bb를 선언할 때 (app f x (app loop)) 가 반드시 evaluate 돼야 하는데, loop는 영원히 terminate하지 않기 때문에 인터프리팅이 여기서 멈추게 돼버립니다.
여기서 테스트케이스가 의도한 답인 VInt(3) 이 나오려면 bb 또한 lazy-val 로 선언돼야 하는 것이 아닌가 질문드려봅니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions