Paste: compiled inconsistencies?

Author: elasticdog
Mode: factor
Date: Thu, 7 May 2009 00:11:50
Plain Text |
( scratchpad - auto ) \ largest-value see
USING: kernel math math.combinatorics sequences ;
IN: math.combinatorics.private
: largest-value ( a b x -- v )
    [ [ nCk ] dip <= ] 2curry find-last nip ;
( scratchpad - auto ) 10 5 0 largest-value

--- Data stack:
4
( scratchpad - auto ) Command: refresh-all
Loading resource:basis/math/combinatorics/combinatorics.factor

--- Data stack:
4
( scratchpad - auto ) \ largest-value see
USING: binary-search kernel math.combinatorics math.order ;
IN: math.combinatorics.private
: largest-value ( a b x -- v )
    [ [ nCk ] dip >=< ] 2curry search nip ;

--- Data stack:
4
( scratchpad - auto ) 10 5 0 largest-value

--- Data stack:
4
2
( scratchpad - auto ) 10 5 0 '[ _ nCk _ >=< ] search nip

--- Data stack:
4
2
f


! I've defined largest-value as:

! : largest-value ( a b x -- v )
!     '[ _ nCk _ <= ] find-last nip ;

! ...this gives the desired result of 4. I was hoping to make it into a binary
! search to make things faster, but it has to find the largest value 'v' that
! is less than 'a', and so that Choose(v,b) is less than or equal to x


! The binary search is almost working as planned written as:

! : largest-value ( a b x -- v )
!     '[ _ nCk _ >=< ] search nip ;

! ...but for some reason when the function is compiled, it returns 2, and when
! run in the listener, it returns f. Not sure why there's an inconsistency

New Annotation

Summary:
Author:
Mode:
Body: