저자는 다음 호출이 재귀 호출이 아니라고 주장하지만 나는 이유를 알지 못합니다.저자가이 함수가 재귀 호출이 아니라고 요청한 이유는 무엇입니까?
자료 : http://courses.cms.caltech.edu/cs11/material/haskell/lectures/haskell_lecture_5.pdf
저자는 다음 호출이 재귀 호출이 아니라고 주장하지만 나는 이유를 알지 못합니다.저자가이 함수가 재귀 호출이 아니라고 요청한 이유는 무엇입니까?
자료 : http://courses.cms.caltech.edu/cs11/material/haskell/lectures/haskell_lecture_5.pdf
코드 재귀 (그 자체의 관점에서 정의된다)이다. 나는 @ leftroundabout의 생각에 대한 강조가 에 있다는 것을 믿습니다. 다음 슬라이드
do putY (y - x)
gcdST
이
Recursive data definition
* not recursive function call
* like ones = 1 : ones
것을 말한다 즉, gdcST
이 함수가 아니기 때문에 재귀적인 함수 호출이 없습니다 (인수가 필요하지 않습니다!). 이는 재귀적인 데이터 정의입니다.
새로운 "재귀 적 데이터 정의". 그러나 엄격한 것은 기능입니다. 그렇지 않습니까? 즉, 함수로 선언되고 매번 계산이 수행됩니다. –
@ LayGonzález 아니요, 기능이 아닙니다. 아무런 논쟁도 없습니다. Haskell에서 값은 타입에'-> '가있는 경우에만 기능을합니다. 슬라이드가 말하는 것처럼 기능이 없기 때문에 "호출"이 없습니다. 'ones = 1 : ones'에서'ones'의 두 번째 발생은리스트를 생성하는 계산을 수행한다는 것과 동일한 의미로만 계산을 수행합니다. 그것은 가치있는 것으로 평가됩니다. –
좋습니다! 지금은 분명합니다. 감사. –
"기능"을 강조해야한다고 생각합니다. 재귀가 충분하다. 단지'gcdST'가 함수가 아니다. – leftaroundabout