Am Samstag, 7. Januar 2006 23:56 schrieben Sie: > Daniel, i also included you in crossposting because these letters can > also help you understand how "run-time compilation" works. basically > it's a very simple thing: when we can compute at compile time value of > some computation, many compilers will do it and substitute expression > with its final value.
Yes, I thought they did. It's a good and clever thing, but calling that RunTimeCompilation would be a misnomer, wouldn't it? That's rather CompileTimeEvaluation, isn't it? > the same can be done at the run-time - as soon > as we can compute value of some expression used in program or at least > simplify it using our knowing of part of arguments, this can be used > to reduce number of computations which program need to perform. say, > > n <- readIO > print (factorial n) > print (factorial n) > > here, "factorial n" can be computed just one time. it's obvious. in > this case > > n <- readIO > flip mapM [1..100] $ \x -> > print (x^n) > > it's not so obvious that when program read value of `n`, it can > substitute instead of `x^n` the concrete, faster algorithm, say 'x*x' > for n=2. Haskell's ideology of "graph reductions" makes such "run-time > optimizations" automatically. it it the thing that called "run-time > compilation" on those wiki page. Cool. So let's see if I got it. If I have n <- readIO ... mapM_ (func n) list ... in my programme, the runtime system will/might build object code for func n that is then used instead of using the general code for func and supplying both arguments to that? That'd be wow, triple wow! And run-time compilation is a fitting name for that. > in KMP algorithm we compile string > searched to algorithm that will do the search of this concrete string. > another examples from my own practice is compilation of strings > representing regular expressions to functions which tests compliance > with these regexprs, and compiling list of sorting criterions to > compare function (you can find last example at the end of > RunTimeCompilation hawiki page) Thanks. Unless I'm grossly mistaken, that made things much clearer. Would somebody add an explanation along these lines to the HaWiki-page (I'm pretty sure, I'm not the only one who didn't understand the wiki-page)? Cheers, Daniel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe