class Cycle
def cycle(*args)
args[((@_cycles ||= Hash.new(-1))[args.hash] += 1) % args.size]
end
end
More beautiful code plees?
Name:
Anonymous2009-08-27 16:53
import Data.Map
import Data.IORef
newCycle =
do state <- newIORef empty
let memoCycle args =
do modifyIORef state $ alter (Just . maybe (cycle args) tail) args
fmap (head . (!args)) $ readIORef state
return memoCycle
>>31
I just thought about writing something using IORefs just to show >>24-26 that it's possible. Good thing you were faster though, as I've never used IORefs before.