나는 (내가의 종류의 계획에 이해)와 D 2.0을 구현하는 Y-콤비 더 배우려고 노력하고있어 나는 매우 비참하게 실패하고 있습니다 :D에서 Y- 연결자?
auto fact = delegate(uint delegate(uint) recurse)
{
return delegate(uint n)
{
return n > 1 ? n * recurse(n - 1) : 1;
};
};
fact(fact)(5);
이하지 않는 작동합니다. fact
을 fact
(그 유형은 무엇입니까?)에 전달할 수없는 분명한 이유가 있습니다. 그리고 게다가, 나는 여전히 fact
의 이름을 전달해야하므로 어쨌든 작동하지 않을 것입니다, 그렇습니까?
하지만 ... D에서 Y-combinator를 구현하려면 어떻게해야합니까?
대리자는 이미 참조 유형이므로 '&'를 삭제할 수 있습니다. – BCS
@BCS : 좋은 점은 원래 방법이었고 제거하는 것을 잊었습니다. 고칠 것입니다. :) – Mehrdad