2016-10-05 3 views

답변

0

음 ... 문제는 recursive functionfunction을 반환하지 않아야한다는 것입니다. 그리고이 type RFcn =() => RFcn은 재귀 함수처럼 보이지 않습니다. 따라서 귀하의 질문은 재귀 함수에 대한 약간의 오해로부터 영감을 얻었으며 유효하지 않습니다.

type RFcn =() => RFcnpotential Bottom (잠재적으로 무한한 계산으로 읽음)에서 일부 단계를 나타내는 상태를 구현하려는 순진한 시도처럼 보입니다. 그리고 그 후에 당신이 그 때 인 경우에 따라서 당신은 당신의 질문을 그러므로 바꿀 수 있고 State monad 같이 유용한 무언가일지도 모른다.

대답 할 수있는 부분에 올 수 없습니다. 스칼라에서 funtions는 acutally 등 Function1의 경우, Function2 ... 그래서 당신은 다음과 같이 쓸 수있는 기능 단위에서 함수를 나타내는 유형,

type UnitToFunc1[P1, R] =() => Function1[P1, R] 

type UnitToFunc2[P1, P2, R] =() => Function2[P1, P2, R] 
+0

이 함수는 함수가 아니라 재귀 적으로 사용하고자하는 형식입니다. "재귀 함수 유형"이 아닌 "재귀 함수 유형"으로 제목을 읽으십시오. 함수를 반환하는 데 필요한 것은 아닙니다. 함수를 반환하는 함수를 반환하는 것이 좋습니다 .... –

+0

그리고 정확히 내가 말하려고하는 것은 ... 저는 여러분을 생각합니다. 잠재적 인 바닥을 구현하고 싶습니다. 어떤 완전한 언어로도 밑 부분을 직접 표현할 수는 없습니다. (스칼라도 그 중 하나입니다) 따라서 잠재적 인 근원을 가진 사람들을 근사시킵니다. 그리고 상태 모나드는 잠재적 인 바닥을 구현하는 데 사용될 수 있습니다. –

+1

이제 잠재적 인 바닥이 무엇을 의미하는지 질문 할 수 있습니다. 잠재적 인 바닥 또는 잠재 무한 계산은 주어진 시간에 무한 계산의 상태입니다. 여기서 중요한 점은 무한 계산의 최종 결과는 표현할 수 없지만 주어진 시간에 중간 상태를 나타낼 수 있다는 것입니다. 그리고 나서 그것을 진행중인 상태에 대한 게으른 생성기로 사용하십시오. –

0

Sarvesh의 대답은 뭔가를 트리거를 갖고 싶어 내가 원하는 것을 나에게 주었던 내 마음. 그것은 아주 간단합니다 :

abstract class RFcn extends Function0[RFcn] 

그게 내가 표현하려고했던 것입니다.

관련 문제