재 계산을 피하기 위해 상수 양식은 해당 redex에 대한 간접 참조로 바뀝니다.
예를 들어 'papperlap'의 오른쪽 부분은 '4'를 가리키는 간접 노드로 바뀝니다. 당신은 '즐'에 중단 점을 설정하고 'papperlap'를 요청하는 경우
bla x = x + 1
papperlap = bla 3
두 번 당신은 '즐'은 한 번만 적용되는 것을 볼 수 있습니다. 그러나 'bla 3'을 두 번 묻는다면 두번 멈출 것입니다 :
*Main> :break bla
Breakpoint 0 activated at meerbla.hs:1:1-13
*Main> papperlap
Stopped at meerbla.hs:1:1-13
_result :: a = _
[meerbla.hs:1:1-13] *Main> :continue
4
*Main> papperlap
4
*Main> bla 3
Stopped at meerbla.hs:1:1-13
_result :: a = _
[meerbla.hs:1:1-13] *Main> :continue
4
*Main> bla 3
Stopped at meerbla.hs:1:1-13
_result :: a = _
[meerbla.hs:1:1-13] *Main> :continue
4
사용중인 GHCi 버전을 게시하면 도움이 될 것입니다. –
코드를 보지 않고서는 알기가 어렵지만, 게으른 평가로 인해 결과가 캐시되기 때문에 두 번째 주 실행시 중단 점에 도달하지 않을 가능성이 높습니다. 처음에는 THUNK (일시 중지 된 평가) 였고 두 번째 평가는 이미 평가되었습니다. – danr
@danr, 맞습니다. 모든 입력은 상수이므로 처음 실행 한 후에는 모든 것이 캐시되어야합니다. 모듈을 다시로드 할 수는 있지만 불행히도 모든 중단 점을 제거합니다. 답을 쓰면 받아 들일 것입니다. –