freenode/#sicl - IRC Chatlog
Search
16:07:31
beach
jackdaniel: I did the following experiment in ECL: (defgeneric bla (x) (:method-combination and :lskdjflskjfd)) and then (defmethod bla and (x) (> x 10)) and finally (bla 20).
16:07:57
beach
No error was signaled, because ECL only checks whether the option in :MOST-SPECIFIC-LAST.
16:08:46
beach
This is because the short form is rewritten to the long form and the generated long form does not check that the option is valid. It only compares it to :MOST-SPECIFIC-LAST.
16:10:13
beach
Bike: creating a new method combination instance for each generic function the way ECL and Clasp does it means that if the DEFINE-METHOD-COMBINATION form is reevaluated with some modifications, the modification will not affect existing generic functions.
16:18:33
beach
While working on this paper, I keep thinking that it would be preferable if code like this could be shared between implementations. And often the reason it can't be is that each implementation is bootstrapped differently.
16:18:34
beach
But then I was thinking whether it really matters how (say) ECL is bootstrapped. If not, it could be bootstrapped like SICL is, except that C code would be generated rather than an executable.
16:31:04
Bike
i thought about doing that with clasp for a while, but it's kind of annoying to generate llvm-ir without linking llvm, and being able to link C++ stuff like llvm is the point of the runtime
16:40:43
jackdaniel
currently ECL is built in three stages: ecl_min is built with C compiler (so core parts written in C are compiled), then all missing sources are loaded into bytecode vm (including clos and after that lisp->c compiler), and then all sources are compiled with lisp->c compiler (including itself)
16:41:50
jackdaniel
so, assuming that sicl-generated C code is part of ecl_min, then it call any preexisting functions from clos and I think it is not something you aim for with sicl
16:42:24
jackdaniel
alternative solution would be: ecl is built as it is now, and then a new version of clos is compiled and replaced