Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re^4: How will you use state declared variables in Perl6?

by BrowserUk (Pope)
on Nov 05, 2006 at 10:39 UTC ( #582298=note: print w/replies, xml ) Need Help??

in reply to Re^3: How will you use state declared variables in Perl6?
in thread How will you use state declared variables in Perl6?

Um. Er...?

pugs>sub fib (Int $n) { return 1 if $n < 2; state @seen[$n] //= fib($n +-1) + fib($n-2); } Internal error while running expression: *** unexpected "[" expecting word character, "::", "=", ":=", "::=", ";" or "}" at <interactive> line 1, column 52

Update: This works though

pugs> sub fib (Int $n) { state @seen; return 1 if $n < 2; @seen[$n] / +/= fib($n-1) + fib($n-2); }; undef pugs> say fib 4; 5 undef pugs> say fib 8; 34 undef pugs> say fib 800; 1121023813016570197539221312040081070329432498024398917379911096096424 +176870242714672419719090010009284331740160122026805305229708722215290 +03044406006693244742562963426 undef

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^5: How will you use state declared variables in Perl6?
by TimToady (Parson) on Nov 06, 2006 at 06:18 UTC
    You must be running an older pugs. In fact, the current (working) version in the pugs repository (r14657) now reads:
    sub fib (UInt $n) { (state $seen = [0,1,1]).[$n] //= fib($n-1) + fib($n-2); }
    It would also work as state @seen = 0,1,1 except there's a bug with initializing state variables using a list that causes it to reinitialize every time instead of just the first time, which, while it lets it run, kinda defeats the memoization...

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://582298]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2021-06-13 02:37 GMT
Find Nodes?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)

    Results (54 votes). Check out past polls.