2011-07-31 5 views
2

함수 mkWeak은 하스켈에서 다양한 저수준 추상화를 작성하는 데 유용합니다. (문서에 대해서는 here을 참조하십시오.) 값이 평가되지 않은 썽크 인 (키, 값) 쌍이 전달 될 때 동작이 무엇인지 분명하지 않았습니다. 약한 포인터를 만들기 전에 썽크를 평가할 것인가, 아니면 평가되지 않은 상태로 유지할 것인가? 이 방법이나 다른 문제를 해결하기 위해 undefined과 관련된 몇 가지 똑똑한 표현이 있다고 확신하지만 그게 무엇인지 생각할 수 없습니다.값 인수에 mkWeak가 엄격합니까?

답변

4

strict 함수는 주어진 bottom을 인수로 사용하면 bottom을 반환해야하므로 함수의 엄격함을 인수로 사용하고 예외를 가져 왔는지 여부를 관찰하여 undefined을 지정하면됩니다.

빠른 실험은 mkWeak이 두 번째 인수에서 엄격하지 않음을 나타냅니다. (그리고 어쨌든 왜 그렇게 될지는 알 수 없습니다.)

Prelude System.Mem.Weak> mkWeak "foo" undefined Nothing 
Prelude System.Mem.Weak> 
+0

D' oh! 'Nothing '을 포함하고 그 결과 오류 메시지를 잘못 해석하는 것을 잊었습니다. 나를 똑바로 설정해 주셔서 고마워요! 나는 그것이 정말로 게으르다는 것에 동의한다 :) –

관련 문제