Am Sonntag, 8. Januar 2006 15:45 schrieben Sie: > Daniel Fischer wrote: > > 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. > > Well, it's possible to do that. But I don't know of any Haskell > implementation that does. Sure, you might get a little bit of > that if func is defined suitably, like > func 0 = foo > func 1 = bar > func n = baz > Implementations that have the "full laziness" property will handle > one argument at a time to a function, and may do some work with just > one argument to func. But it's nothing like having real run-time code > generation. > > -- Lennart
So back to square one. What then _is_ run-time compilation? Bulat said that in n <- readIO flip mapM [1 .. 100] $ \x -> print (x^n) the programme could insert (if, e.g. the value read is 2) the concrete faster algorithm for x^n. Isn't that some sort of run-time code generation? And a) how far might one expect that sort of thing done, b) how could one cajole the system to do that. Last, reverting to the search/replace example, if I have the general algorithm and also declare the function work :: String -> String work = searchReplace "pattern" "substitution", the compiler would produce specialised object code for that, or wouldn't it? Cheers, Daniel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe