
Hello David, Saturday, January 07, 2006, 8:37:01 PM, you wrote:
the mind-bending-thing I had to learn with Haskell is that the "let p =" creates source code *shorthand*. DFP> Yes, this is just what I need to understand. Could you point me to a DFP> description of this? I couldn't find any discussion of it in the DFP> reference document. Thanks.
i attached here two letters from july's dicussion on topic "Confused about Cyclic struture". hope this will help 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. 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. 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) -- Best regards, Bulat mailto:bulatz@HotPOP.com