freenode/#clasp - IRC Chatlog
Search
16:08:52
drmeister
My AWS bill last month was $500 because I wasn't careful and left a few things running. It's way to easy to do that.
17:00:23
drmeister
You have a C++ string and you want to do assoc on a list that contains Common Lisp strings - right?
17:03:49
drmeister
codeship.com uses AWS EC2 instances. There is no point in using codeship - we should just roll our own.
17:05:52
drmeister
The alternative, of comparing the C++ string to the characters in the CL string objects means you would have to handle a lot of string variants base-char, character, simple vs non-simple
17:06:55
dvssa
drmeister: How long does it normally take to load a .bc file into clasp? I got the helloword example compiling but when I try load its taking really long (6min so far and no reporting).
17:07:12
Bike
a bit annoying,since this is in findPackage,which after all started with a lisp string most of thetime...
19:28:50
beach
But the Common Lisp HyperSpec page on CALL-METHOD says: The macro call-method invokes the specified method, supplying it with arguments and with definitions for call-next-method and for next-method-p.
19:29:40
beach
How can a macro that takes a method metaobject with an existing method function "supply definitions" to that method?
19:30:05
Bike
the clhs page on call-method contradicts the MOP definition of make-method-lambda in several places. that'sone.
19:33:37
Bike
oh, and you are right, the method-lambda is in the lexical environment of the defmethod.
19:39:23
beach
So many the Common Lisp HyperSpec meant for the method body to be evaluated in the null lexical environment augmented with next-method-p and call-next-method?
19:39:44
beach
If so, the method object would not contain the method function but the method lambda expression.
19:40:49
Bike
i don't think they knew what they wanted in CLHS, but MOP spends a fair bit of time on the subject, so i'll go with it
19:45:16
Bike
MOP is pretty specific about this stuff. Its solution is debatable, I think, but you rely on MOP pretty heavily for fastgf...
19:46:52
beach
If DEFMETHOD results in a method metaobject with a method-function in it that is already a function an not a form...
19:47:26
beach
Then what is referred to by call-next-method and next-method-p in the body of that defmethod form?
19:51:25
Bike
(defmethod ...) expands to like (make-instance whatever-method-class :method-function (lambda (args next-methods) (flet ((call-next-method ...) ...) method body goes here))
19:52:20
Bike
make-method-lambda is called during the macroexpansion, which is most of why it's a weird part of the protocol
19:55:07
Bike
AMOP discusses this- I think there's an expansion outlined where it saves the lambda expression and, magically, the lexical environment
19:59:50
Bike
there's also pascal costanza's "make-method-lambda considered harmful", which i don't think is the best alternate solution, but it lays out some of the issues
20:12:29
makomo
interesting discussion! the MAKE-METHOD-LAMBDA thing which is called at macroexpansion-time reminds me of my DSL problem, beach. interesting to see that the technique has been tried and used with success
20:13:23
beach
makomo: I am very pleased that you take an interest in these implementation details in addition to your specific problem.
20:15:36
makomo
beach: :-). implementation details discussions are always very interesting and informative. it's very nice and rewarding when you know what makes a system tick
20:17:15
makomo
beach: hopefully i'll take a look. i don't yet have a complete idea of what Cleavir is supposed to do, so using it seems daunting right now
20:22:34
makomo
Bike: hah. for my purposes it probably won't be required, but it should be extensible (although probably not right away)
20:23:00
makomo
i'm not sure i want to implement typing and all, so i'll just use lisp objects for the signal's values
20:23:57
makomo
i think synthesis would be much harder, because that's basically writing a proper compiler for some device. not to mention that most of the devices are proprietary and what not, so i don't even know how that would go
20:24:45
makomo
i'm not even sure how a behavioral description of a hardware device is compiled into a "netlist" of logical gates -- that seems like a very interesting area but i haven't read much about it
20:32:25
makomo
the main goal of the project is not to simulate "industry-level" hardware devices though, but just basic devices that serve to illustrate computer architectures. it's a project that one of my professors started, but ofc not in lisp
20:32:48
makomo
it's a custom VHDL-like language with a lexer, parser, bytecode compiler, blah blah. not yet functional or anything, but the idea is there
20:33:13
makomo
it's supposed to be used for laboratory exercises and the like. i set out to "rewrite" it in Lisp, because i would get the language for free, instead of having to reinvent everything
20:35:53
makomo
hopefully with my approach, i'll get most of it for free through lisp. additionally we would like a GUI and "component-specific debugging" (e.g. modeling a CPU and debugging code for that CPU), which i hope to achieve through CLOS with "protocols" that a component can implement, etc.
20:36:40
makomo
and of course, i'll completely avoid having to compile any code myself just by reusing the Lisp compiler :-D
20:37:49
Bike
i mostly used stuff for synthesis in school,so i'm less conversant about the sim parts
20:57:14
Kevslinger
And then nglview has a get-structure-string function, which returns chem:get-name
20:57:50
drmeister
I thought the get-structure-string function returns a massive string that contains the entire structure in either mol2 format or pdb format?
20:58:54
drmeister
Ok, the name can be NIL - when I didn't have an obvious name to assign it I just left it as NIL.
21:02:13
drmeister
(or (chem:get-name agg) "dummy-name") is a compact way to achieve the same thing.
21:07:11
Bike
well, i have a branch where package local nicknames work. needs some polish though. and i kind of don't like that flag
23:02:03
Bike
because there are probably several flags like that already, and they're all pretty ad hoc, and mean we're doing things at runtime every time solely because booting is weird