팩터관련 문서를 생각하는중에 팩터에 대해서 시작하는분들이 뭔가 필요로 하고 계신게 뭘까 궁금해져서요.
어떤것에 관한게 궁금할까요? 객체시스템? 컬렉션? while-for와 같은 제어구조?
어떤 의견이든 감사히 수렴하도록 하겠습니다. :-)
일단 관련된 사항을 문서로 정리해서 '페이지'란에 올려봤어요. 참고가 되시길. :-)
일반적인 recursive-call와 같은 방법보다는 어떤 시퀀스를 발전해 나가는 방향으로 워드를 구성하는게 바람직하지 않을까 생각합니다.
1. 단순히 어떤 시퀀스를 받아, 그 마지막 2개의 합을 그 시퀀스에 더한 시퀀스를 되돌리기
2. 이런 패턴으로 어떤 조건을 넘기거나 몇회정도 피보나치 수열을 앞으로 전진하는 combinator을 이용한 워드
이런 생각으로 저는 다음처럼 math.fibonacci을 작성했습니다.
! Copyright (C) 2009 Yun, Jonghyouk.
! See http://factorcode.org/license.txt for BSD license.
USING: kernel locals math sequences sequences.last ;
IN: math.fibonacci
: fib-next ( seq -- n ) [ last-0 ] [ last-1 ] bi + ;
: fib-next-push ( seq -- newseq ) dup fib-next suffix ;
: fib-initial-seq ( -- seq ) { 1 1 } ;
: fib-produce-seq ( seq max -- newseq )
[let | max_ [ ]
seq_ [ ] |
seq_ fib-next max_ <
[ seq_ fib-next-push max_ fib-produce-seq ]
[ seq_ ]
if ] ;
저도 이걸 똑같은 문제를 풀때 작성했던 기억이 나네요.
sequences.last의 last-1, last-2와 같은건 사실 tail*으로 대체가 가능할것이므로 생략합니다.
아... 저도 참 팩터를 다시 공부할때 했던거라 많이 부족하네요. :-)
2009년 2월 20일 (금) 오후 10:52, jcm...@gmail.com <jcm...@gmail.com>님의 말: