2014-11-28T00:00:37Z vaporatorius quit (Remote host closed the connection) 2014-11-28T00:05:00Z ikki quit (Ping timeout: 256 seconds) 2014-11-28T00:08:53Z Nilby quit (Ping timeout: 272 seconds) 2014-11-28T00:13:11Z zRecursive joined #lisp 2014-11-28T00:15:39Z mrSpec quit (Remote host closed the connection) 2014-11-28T00:15:56Z blahzik joined #lisp 2014-11-28T00:15:57Z davazp quit (Ping timeout: 240 seconds) 2014-11-28T00:18:45Z k-dawg joined #lisp 2014-11-28T00:20:40Z vi1 joined #lisp 2014-11-28T00:21:41Z blahzik quit (Quit: blahzik) 2014-11-28T00:25:21Z sword quit (Remote host closed the connection) 2014-11-28T00:26:18Z k-dawg quit (Quit: This computer has gone to sleep) 2014-11-28T00:26:31Z pecg quit (Quit: WeeChat 1.0.1) 2014-11-28T00:40:44Z ekinmur quit (Quit: no longer available) 2014-11-28T00:42:57Z harish quit (Ping timeout: 240 seconds) 2014-11-28T00:46:09Z oudeis joined #lisp 2014-11-28T00:46:46Z maxpeck joined #lisp 2014-11-28T00:49:22Z jumblerg quit (Quit: Textual IRC Client: www.textualapp.com) 2014-11-28T00:50:50Z kurakot joined #lisp 2014-11-28T00:52:28Z leo2007 joined #lisp 2014-11-28T00:54:06Z vinleod quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-11-28T00:57:02Z blahzik joined #lisp 2014-11-28T01:00:34Z kuanyui1 quit (Quit: Leaving.) 2014-11-28T01:02:43Z linux_dream joined #lisp 2014-11-28T01:03:32Z jusss joined #lisp 2014-11-28T01:03:35Z kurakot: - 2014-11-28T01:05:10Z BitPuffin joined #lisp 2014-11-28T01:11:39Z k-dawg joined #lisp 2014-11-28T01:12:05Z kuanyui joined #lisp 2014-11-28T01:13:14Z linux_dream quit (Quit: Leaving) 2014-11-28T01:16:59Z eMBee: is there any way to prevent strings being printed as reference when *print-circle* is true? 2014-11-28T01:17:18Z Bicyclidine: what do you mean "as reference"? 2014-11-28T01:20:54Z chu quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-11-28T01:21:28Z eMBee: well with *print-circle* detects if the same object is printet more than once, gives the first one a number, and then references it: #2="foo" #2# ... 2014-11-28T01:26:44Z Bicyclidine: sure 2014-11-28T01:26:47Z k-dawg quit (Quit: This computer has gone to sleep) 2014-11-28T01:26:48Z Bicyclidine: and... you want it to not do that? 2014-11-28T01:27:15Z eMBee: right 2014-11-28T01:27:44Z eMBee: i want it for other objects but not strings 2014-11-28T01:27:59Z Bicyclidine: i don't think you're going to be able to turn it off for just one type. most implemenations just use an eq hashtable. which is perfectly allowed. 2014-11-28T01:29:54Z eMBee: hmm, maybe i can parse the output and revert the references before i write it to the file 2014-11-28T01:31:13Z Bicyclidine: why do you want to do this exactly? 2014-11-28T01:32:07Z eMBee: because i want the saved structures in the file to be mre readable 2014-11-28T01:32:14Z eMBee: more 2014-11-28T01:35:14Z chu joined #lisp 2014-11-28T01:35:58Z eMBee: until now i got away with not using *print-circle* but that no longer works 2014-11-28T01:37:37Z Bicyclidine: like, human readable? that and lisp-readable are kind of at odds sometimes 2014-11-28T01:38:18Z juanlas joined #lisp 2014-11-28T01:39:07Z eMBee: yes, true, so far it works though 2014-11-28T01:40:18Z eMBee: eg i made print functions for structs that omit nil values. that removes a lot of unneeded output because the reader just fills in nil for any missing value later 2014-11-28T01:44:05Z eMBee: and i also drop parent references when writing and instead calculate them when reading, to avoid circular references. (but now i need circular refs for other reasons) 2014-11-28T01:45:22Z eMBee: although i wonder, maybe not... 2014-11-28T01:50:21Z Petit_Dejeuner quit (Read error: Connection reset by peer) 2014-11-28T01:51:07Z kuanyui quit (Ping timeout: 245 seconds) 2014-11-28T01:52:15Z beach joined #lisp 2014-11-28T01:52:26Z beach: Good morning everyone! 2014-11-28T01:52:26Z yuikov quit (Read error: Connection reset by peer) 2014-11-28T01:53:46Z yuikov joined #lisp 2014-11-28T01:57:18Z meiji11 joined #lisp 2014-11-28T02:00:22Z harish joined #lisp 2014-11-28T02:07:38Z Petit_Dejeuner joined #lisp 2014-11-28T02:14:46Z joast joined #lisp 2014-11-28T02:23:26Z Colleen_ joined #lisp 2014-11-28T02:26:13Z Colleen quit (Quit: See you, space cowboy...) 2014-11-28T02:26:13Z Colleen_ is now known as Colleen 2014-11-28T02:28:01Z BitPuffin quit (Ping timeout: 244 seconds) 2014-11-28T02:30:14Z kuanyui joined #lisp 2014-11-28T02:34:38Z bgs100 joined #lisp 2014-11-28T02:35:14Z loke: eMBee: Just use classes instead 2014-11-28T02:35:23Z loke: eMBee: It has the concept of "unbound slots" 2014-11-28T02:36:28Z pjb: eMBee: will you internalize the strings when you read them back? 2014-11-28T02:36:40Z pjb: eMBee: perhaps you'd want to use symbols instead of strings? 2014-11-28T02:37:49Z pjb: eMBee: otherwise, you can use this filter: (defun duplicate-strings (sexp) (typecase sexp (string (copy-seq sexp)) (atom sexp) (cons (cons (duplicate-strings (car sexp)) (duplicate-strings (cdr sexp)))))) 2014-11-28T02:38:28Z Bicyclidine: that might not work great for a self-referencing list structure... 2014-11-28T02:38:35Z pjb: (duplicate-strings '(#1="hello" #1# (#1#))) --> ("hello" "hello" ("hello")) 2014-11-28T02:38:52Z pjb: Bicyclidine: right, I forgot about structures and vectors, and other printable readably objects. 2014-11-28T02:40:08Z pjb: eMBee: anyways, the point of this function is to show the sillyness of the demand: there will be a lot of duplication, therefore the file will take more space. (of course, you can also fill up the hole you just dig, by compressing your data files after saving them. 2014-11-28T02:41:24Z pjb: eMBee: perhaps what you could do, is to save two files: one data file with *print-circle* for program consumption, and another .txt file where you print a pretty text telling the user what's in the first file. 2014-11-28T02:41:51Z pjb: eMBee: I don't say, with *print-pretty* set to NIL, because I assume you have circular references. 2014-11-28T02:43:12Z Bicyclidine: i was thinking more like #1=(foo "hello" . #1#), but that too 2014-11-28T02:43:18Z pjb: eMBee: the problem with structures, is that there's no introspection for them, so you cannot write a generic duplicate-strings function. But if you have a finite set of structures to process, you can implement duplicate-strings to handle them. 2014-11-28T02:43:47Z juanlas quit (Quit: juanlas) 2014-11-28T02:44:12Z pjb: Bicyclidine: it would write in the human readable file: a circular list containing foo and "hello". 2014-11-28T02:45:10Z Bicyclidine: wouldn't it recur forever? 2014-11-28T02:46:05Z Bicyclidine: it does trying it out 2014-11-28T02:47:22Z Zhivago: Remember *print-circle* 2014-11-28T02:47:27Z pjb: It would have to handle the circularity of course. 2014-11-28T02:47:27Z wjiang joined #lisp 2014-11-28T02:47:44Z Bicyclidine: so, i mean, eMBee couldn't use that filter. 2014-11-28T02:48:16Z pjb: Oh, you mean for duplicate-strings. Yes, it will have to be improved a lot. 2014-11-28T02:49:32Z pjb: Bicyclidine: but for me handling circularity is a solved problem: https://gitorious.org/patchwork/mclgui/source/circular.lisp 2014-11-28T02:50:00Z Bicyclidine: oh symbols don't print with circularity markers unless they're uninterned and such, that's right 2014-11-28T02:50:11Z pjb: Yes. 2014-11-28T02:50:20Z juanlas joined #lisp 2014-11-28T02:50:26Z juanlas quit (Client Quit) 2014-11-28T02:50:57Z pjb: Uniquifying strings read from files could be a good idea anyways. 2014-11-28T02:53:06Z kanru joined #lisp 2014-11-28T02:53:36Z Bicyclidine: that file's pretty smooth 2014-11-28T02:53:48Z Bicyclidine: i guess extending it to arbitrary structures is impossible, bummer 2014-11-28T02:54:28Z beach: Is there an implementation-independent way of creating a new class with the same name as an existing one? I am thinking the only way is to use defclass with a different name, and then (reinitialize-instance (find-class ) :name ). Are there any other ways? 2014-11-28T02:55:13Z beach: I could use MAKE-INSTANCE on STANDARD-CLASS, but that would be very implementation-dependent. 2014-11-28T02:56:50Z Zhivago: It depends on what 'same name' means -- perhaps uninterning the old name would work? 2014-11-28T02:57:01Z yuikov quit (Remote host closed the connection) 2014-11-28T02:57:40Z beach: I don't think that would work, because I want classes named CL:STANDARD-CLASS, etc. :) 2014-11-28T02:58:26Z yuikov joined #lisp 2014-11-28T02:58:47Z beach: The :NAME initarg is also implementation-dependent, but it will probably work everywhere. 2014-11-28T02:59:03Z Bicyclidine: good news, 11.1.2.1.2 makes that unportable regardless! yay 2014-11-28T03:00:35Z beach: Do you mean item 4 in that list? 2014-11-28T03:00:38Z yuikov quit (Read error: No route to host) 2014-11-28T03:00:54Z Bicyclidine: yeah 2014-11-28T03:01:12Z Bicyclidine: i'm half joking, but i don't think having two classes with the exact same name is going to go great 2014-11-28T03:01:39Z beach: I think that means the name given to DEFCLASS, which gives a name to the class as well as a name to find it using FIND-CLASS. 2014-11-28T03:01:42Z Bicyclidine: can you just define sicl: somewhere and maybe rename it later 2014-11-28T03:02:03Z beach: It screws up my package definitions. 2014-11-28T03:02:30Z beach: But I guess that's what I shall have to do :( 2014-11-28T03:02:33Z Bicyclidine: i mean, how are you going to defun cl: functions and such, i just doubt that's going to work 2014-11-28T03:02:54Z beach: Oh, that one is easy :) 2014-11-28T03:03:04Z Bicyclidine: is it now. 2014-11-28T03:03:27Z beach: I will evaluate my forms in a SICL first-class global environment that has a different definition of DEFUN. 2014-11-28T03:03:54Z Bicyclidine: so you have your own fdefinition. can you not just have your own find-class? 2014-11-28T03:04:16Z beach: I have my own find-class, but I somehow must create instances of host classes. 2014-11-28T03:04:36Z beach: ... and the only portable way I know of doing that is the host DEFCLASS. 2014-11-28T03:05:03Z beach: ... which sets both the CLASS-NAME and the name to be used with FIND-CLASS. 2014-11-28T03:05:56Z beach: Do you see the problem? 2014-11-28T03:06:34Z Bicyclidine: yes. 2014-11-28T03:09:16Z beach: I guess I could just assume the host has sufficient MOPery in order to do MAKE-INSTANCE of STANDARD-CLASS. 2014-11-28T03:09:33Z beach: Are there any implementations that don't? 2014-11-28T03:09:50Z blahzik quit (Quit: blahzik) 2014-11-28T03:10:05Z Bicyclidine: i don't know. could you even not? it does have to be a standard-class 2014-11-28T03:11:10Z beach: I'm lost. Could I even not what? Assume the MOPery? I think so, by playing tricks with the package system. 2014-11-28T03:11:16Z beach: But that's what I am trying to avoid. 2014-11-28T03:11:29Z Bicyclidine: could an implementation not allow make-instance standard-class 2014-11-28T03:11:47Z beach: No, I don't think so. 2014-11-28T03:11:58Z beach: But are the initargs standardized? 2014-11-28T03:12:02Z Bicyclidine: doubtful 2014-11-28T03:12:34Z beach: Bicyclidine: Your discourse is very telegraphic today. 2014-11-28T03:13:14Z beach: STANDARD-CLASS is an instance of STANDARD-OBJECT, so MAKE-INSTANCE must work on it, as far as I can tell. 2014-11-28T03:13:24Z Bicyclidine: right. 2014-11-28T03:13:29Z chu quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-11-28T03:13:34Z Bicyclidine: oh, i didn't know telegraphic could mean that 2014-11-28T03:14:03Z beach: "(especially of speech) omitting inessential words; concise." 2014-11-28T03:14:32Z Bicyclidine: soon i'll get it down to messages consisting of single punctuation marks 2014-11-28T03:14:42Z beach: ! 2014-11-28T03:15:21Z beach: Anyway, I think it is probably safe to use MAKE-INSTANCE on STANDARD-CLASS. 2014-11-28T03:15:26Z oleo__ joined #lisp 2014-11-28T03:15:35Z Bicyclidine: anyway, no, i don't think the initargs are standardized. took me a while to notice all the conditions with standardized initargs, and they're all mentioned in the pages on those condition classes. 2014-11-28T03:15:59Z oleo is now known as Guest38833 2014-11-28T03:16:17Z Guest38833 quit (Ping timeout: 240 seconds) 2014-11-28T03:16:36Z beach: Condition classes? As opposed to STANDARD-CLASS? Yes, that I can believe. 2014-11-28T03:16:47Z beach: Because condition classes are not discussed in the MOP. 2014-11-28T03:17:21Z Bicyclidine: well i mean, if you look up the entry on a condition class (or "condition type" i guess it is) it mentions the initargs: http://www.lispworks.com/documentation/HyperSpec/Body/e_smp_cn.htm 2014-11-28T03:17:36Z beach: Right. 2014-11-28T03:19:53Z beach: OK, so I think I'll make a definition of DEFCLASS in the SICL first-class global environment that calls the host MAKE-INSTANCE of the host STANDARD-CLASS, and then (SETF FIND-CLASS) in the SICL environment. 2014-11-28T03:20:17Z Bicyclidine: and just hope it's :name? 2014-11-28T03:20:31Z beach: Worse, it has to accept all the initargs of the MOP. 2014-11-28T03:20:38Z beach: :direct-superclasses, .... 2014-11-28T03:20:40Z Bicyclidine: hoo. 2014-11-28T03:20:59Z Bicyclidine: Does it have to be standard-class particularly? Maybe you could subclass standard-class and I just realized that probably requires MOP 2014-11-28T03:21:42Z beach: I think standard-class can be subclassed, but that doesn't solve the problem as far as I can see. 2014-11-28T03:22:03Z Bicyclidine: well i mean, you have your own subclass that has its own slots with the proper initargs. 2014-11-28T03:22:54Z beach: Sure, that's stage 2 of the bootstrapping. But my own classes must be instances of some host class. 2014-11-28T03:23:16Z Bicyclidine: they'd be instances of standard-class, since you subclassed it? just not direct instances. 2014-11-28T03:24:08Z beach: I need to think about that. 2014-11-28T03:24:41Z beach: As I recall, since initargs are keywords, you can't override them, or it is difficult to do so. 2014-11-28T03:25:07Z Bicyclidine: you'd have your own slots. 2014-11-28T03:25:16Z beach: Sure. 2014-11-28T03:25:16Z Bicyclidine: you could even have cl:class-name and so on work on your new slots cuz they're generic. 2014-11-28T03:25:46Z GrayMagiker joined #lisp 2014-11-28T03:25:56Z beach: I guess I don't quite understand the general technique you are suggesting. 2014-11-28T03:26:43Z Bicyclidine: me neither, i don't know what you need to do well enough 2014-11-28T03:26:54Z beach: Yeah, sure. 2014-11-28T03:27:09Z beach: Anyway, this discussion helped. Thanks. 2014-11-28T03:27:29Z ikki joined #lisp 2014-11-28T03:31:02Z henesy quit (Ping timeout: 258 seconds) 2014-11-28T03:34:55Z Vutral quit (Ping timeout: 264 seconds) 2014-11-28T03:37:03Z Vutral joined #lisp 2014-11-28T03:38:26Z scymtym_ joined #lisp 2014-11-28T03:41:11Z beach: In order to evaluate forms in the SICL first-class global environment, I think I have to use the SICL reader to read those forms, because of the implementation-specific way of handling backquote. 2014-11-28T03:42:00Z pjb: You could also just use a readtable with your own backquote reader macro. 2014-11-28T03:42:24Z beach: Ah, that would be an easy solution. 2014-11-28T03:42:41Z beach: Is it allowed to redefine those? 2014-11-28T03:43:01Z pjb: Notice that #P can also be a problem: it reads as #.(cl:pathname "…") and your implementation may have a different parsing of physical pathnames. 2014-11-28T03:43:18Z henesy joined #lisp 2014-11-28T03:43:22Z Bicyclidine: beach: well if not you can just use your own readtable, no? 2014-11-28T03:43:34Z beach: pjb: OK, but I don't think I have any instances of #P. 2014-11-28T03:43:35Z pjb: (it should have the same parsing of logical pathnames, but implementations also often have non-conforming extensions there, like having case sensitive logical pathnames). 2014-11-28T03:44:00Z beach: Bicyclidine: Yes, I mean, in my own readtable, can I redefine those? I guess the answer is "yes". 2014-11-28T03:44:37Z Bicyclidine: pretty sure, yeah. 2014-11-28T03:44:41Z beach: pjb: Your solution sounds good, because otherwise, I would have to find a way of reading the code of the reader. :) 2014-11-28T03:44:56Z kcj joined #lisp 2014-11-28T03:44:58Z kcj quit (Changing host) 2014-11-28T03:44:58Z kcj joined #lisp 2014-11-28T03:45:35Z Bicyclidine: "The standard readtable conforms to standard syntax. The consequences are undefined if an attempt is made to modify the standard readtable. To achieve the effect of altering or extending standard syntax, a copy of the standard readtable can be created; see the function copy-readtable. " 2014-11-28T03:45:40Z Bicyclidine: so i'd say you're good. 2014-11-28T03:45:54Z beach: Looks like it, yes. Thanks. 2014-11-28T03:46:27Z pjb: How do you get a handle to the standard readtable? 2014-11-28T03:47:09Z pjb: Perhaps the initial *readtable*? But often, it is not a standard readtable, implementations having extensions… 2014-11-28T03:47:48Z Bicyclidine: (Although the definite reference ``the standard readtable'' is generally used within this document, it is actually implementation-dependent whether a single object fills the role of the standard readtable, or whether there might be multiple such objects, any one of which could be used on any given occasion where ``the standard readtable'' is called for. As such, this phrase should be seen as an indefinite reference in all cases except for 2014-11-28T03:47:48Z dagnachew quit (Quit: WeeChat 1.0.1) 2014-11-28T03:47:54Z Bicyclidine: whoops. 2014-11-28T03:48:03Z pjb: Notice also when you setf *readtable* (on the toplevel), that you may want to save it, since it's often an implementation specific readtable. 2014-11-28T03:48:13Z Bicyclidine: well, copy-readtable nil gives you a copy that's standard. 2014-11-28T03:48:23Z LiamH: Very useful: http://common-lisp.net/project/named-readtables/ 2014-11-28T03:48:26Z pjb: Yes. A copy. :-) 2014-11-28T03:48:36Z Bicyclidine: 's all you need for what beach is doing 2014-11-28T03:48:46Z Bicyclidine: can't alter the standard readtable anyway 2014-11-28T03:48:52Z beach: Yeah, I don't need *the* standard redtable. 2014-11-28T03:48:56Z beach: readtable. 2014-11-28T03:57:11Z kapil__ joined #lisp 2014-11-28T03:57:48Z jusss quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-11-28T04:01:45Z bb010g joined #lisp 2014-11-28T04:06:12Z ikki quit (Quit: Saliendo) 2014-11-28T04:07:19Z wglb joined #lisp 2014-11-28T04:07:44Z echo-area joined #lisp 2014-11-28T04:17:16Z ggole joined #lisp 2014-11-28T04:20:28Z loke: I'm want to make a point about my template engine being able to generate "optimial" performace under certain, limited circumstances. One such circumstance is a template that has no logic in it. In such case, the template is transformed to a function that does nothing but (WRITE-SEQUENCE #(...)) where .... is the UTF-8 sequence for the content of the template 2014-11-28T04:20:40Z loke: Is that "optimal", or did I miss something? 2014-11-28T04:21:03Z Zhivago: It "is" probably "optimal". 2014-11-28T04:21:04Z loke: The template parser generates a labda form with that write-sequence, and then runs COMPILE on it 2014-11-28T04:22:12Z Zhivago: So, what's your metric for optimality? 2014-11-28T04:22:31Z yrk quit (Read error: Connection reset by peer) 2014-11-28T04:22:50Z loke: Zhivago: Marketing 2014-11-28T04:22:55Z loke: Pretty much :-) 2014-11-28T04:23:22Z zacharia1 joined #lisp 2014-11-28T04:23:23Z loke: I want to claim my template engine is "faster" than whatever they have in ruby of php or whatever 2014-11-28T04:25:29Z loke: I's basically used in arguments about performance. In such cases I want to make comments about the performance of template code in, say Ruby. And I want to be able to say that my engine is as fast as it can be 2014-11-28T04:26:07Z zacharias quit (Ping timeout: 245 seconds) 2014-11-28T04:26:56Z Zhivago: Then you'd better benchmark. 2014-11-28T04:27:22Z loke: Yes, but benchmark against what? 2014-11-28T04:27:46Z Zhivago: It doesn't really matter, since you're targeting php and ruby users. 2014-11-28T04:27:54Z loke: Oh, sorry. I'm not 2014-11-28T04:28:08Z Zhivago: Or people who might consider using ruby or php. :) 2014-11-28T04:28:13Z loke: I'm arguing that I've bade it as fast as it can be in CL 2014-11-28T04:28:22Z Zhivago: So some just random benchmark and some cryptic diagrams should do the trick. 2014-11-28T04:29:39Z loke: Basically, my template engine writes the content as fast as the underlying CL implementation can generate it 2014-11-28T04:29:45Z Zhivago: Well, then it should be easy enough -- say it statically generates the output code without dynamic checks at run-time, and assuming that write-sequence is optimal, then your produced code should be also. 2014-11-28T04:30:12Z gingerale joined #lisp 2014-11-28T04:30:14Z loke: That's what I want to say. Comapred to the RoR engine which does not generate the data as fast as the Ruby interpreter can generate it 2014-11-28T04:30:54Z loke: Zhivago: Right That was my question. Is WRITE-SEQUENCE the fastest way to write static data to a stream? 2014-11-28T04:31:33Z stepnem quit (Ping timeout: 255 seconds) 2014-11-28T04:31:51Z loke: Also, the stream is a FLEXI-STREAM wrapping the underlying stream. That should make no difference when calling WRITE-SEQUENCE on it, right? Flexi-streams will simply pass those calls t the underlying binary stream, right? 2014-11-28T04:32:38Z Zhivago: I would suspect that is not always true. 2014-11-28T04:32:51Z loke: This is the output, by the way? 2014-11-28T04:32:52Z loke: http://paste.lisp.org/display/144514 2014-11-28T04:32:56Z Zhivago: But who decided to use that stream? 2014-11-28T04:33:22Z loke: Zhivago: Me. I do it that way, because dynamic content in the template may need to write main text 2014-11-28T04:33:26Z loke: plain text 2014-11-28T04:33:56Z Zhivago: Shouldn't that vector be properly specialized? 2014-11-28T04:34:15Z loke: Zhivago: How do you mean? 2014-11-28T04:34:40Z Zhivago: Shouldn't it be a vector of octets? 2014-11-28T04:34:48Z loke: but it is, isn't it? 2014-11-28T04:34:53Z loke: it only contains octets 2014-11-28T04:35:17Z Zhivago: #(...) produces a simple-vector of T doesn't it? 2014-11-28T04:35:39Z loke: I thought it was narrowed to whatever it contains... 2014-11-28T04:36:30Z Zhivago: I don't think that it is permitted to do so, given how array upgrading works. 2014-11-28T04:37:20Z zxq9 quit (Quit: Konversation terminated!) 2014-11-28T04:37:55Z loke: Well, that's the printed form though. When I generate the sequence itself, it's the output of BABEL-STRING-TO-OCTETS 2014-11-28T04:38:19Z loke: (type-of (babel:string-to-octets "foo" :encoding :utf-8)) 2014-11-28T04:38:25Z loke: returns: (SIMPLE-ARRAY (UNSIGNED-BYTE 8) (3)) 2014-11-28T04:38:37Z loke: So it actually is an octet array 2014-11-28T04:38:58Z LiamH quit (Quit: Leaving.) 2014-11-28T04:39:33Z Zhivago: Ok, but aren't you generating the code you posted so that it would be compiled from that code in the future? 2014-11-28T04:40:11Z loke: I wanted to have my template engine take advantage of the benefits of a dynamic language with a high-performance compiler, thus making the result "better" (for some value of better) than most other languages can 2014-11-28T04:40:21Z loke: Zhivago: No, I'm directly compling the form, and caching it 2014-11-28T04:41:03Z loke: So yes, each template invocation results in a hash table lookup. 2014-11-28T04:41:06Z Zhivago: So you can't use your templating system as a macro? 2014-11-28T04:42:44Z loke: Hmm, I could, I guess. But I don't. The main entry point returns a function. There is also a function that returns the form that I printed and pasted above, but it's not exposed right now. 2014-11-28T04:44:41Z loke: As you can see, it simply calls that function and compiles the result. 2014-11-28T04:44:42Z loke: https://github.com/lokedhs/lofn/blob/master/parser.lisp#L427 2014-11-28T04:44:57Z loke: I could expose "parse-stream-and-build-toplevel" as well, if I wanted 2014-11-28T04:50:54Z pjb: - 2014-11-28T05:00:15Z eMBee: (sorry, catching up) loke: i'll have to look at classes at some point, as structs also don't do multiple inheritance which i could use. 2014-11-28T05:00:51Z eMBee: (sorry, catching up) loke: i assume unbound slots help me to drop certain slotscompletely but not to avoid printing nil slots 2014-11-28T05:01:52Z loke: eMBee: with CLOS (and the MOP in particular) you can check what is the default value of a slot, and slip it if it has that 2014-11-28T05:01:54Z loke: skip 2014-11-28T05:02:33Z eMBee: pjb: no the strings are descriptions, and most of them are unique, but some times they aren't andthen i get these references, and that just looks silly 2014-11-28T05:03:35Z eMBee: pjb: i thought about using symbols, but it seems odd to change the datatypejust becausei am not happy how it's printed 2014-11-28T05:04:51Z Vutral quit (Ping timeout: 255 seconds) 2014-11-28T05:05:09Z Zhivago: loke: Well, that would make it harder for me to swallow the optimal scenario. 2014-11-28T05:05:12Z eMBee: i certainly don't want 2 files. one point of being human readable is to be able to change the data in an editor if needed, for cases where i don't have a function to make the change 2014-11-28T05:05:42Z Zhivago: loke: I'd really want macrology allow the output functions to be generated at compile-time to pay that. 2014-11-28T05:05:59Z pjb: eMBee: probably it would be better if you avoided putting the same string in different places to begin with. 2014-11-28T05:06:09Z pjb: eMBee: just use copy-seq in the right functions. 2014-11-28T05:06:54Z eMBee: pjb: that duplicate-strings function looks useful, i'll have to give that a try, thanks! 2014-11-28T05:07:35Z pjb: eMBee: it's wrong, it doesn't handle circles, or structures, or vectors, etc. 2014-11-28T05:07:40Z atgreen quit (Ping timeout: 265 seconds) 2014-11-28T05:07:42Z pjb: eMBee: better use copy-seq in the right functions. 2014-11-28T05:10:12Z Vutral joined #lisp 2014-11-28T05:10:37Z yeticry quit (Ping timeout: 255 seconds) 2014-11-28T05:11:40Z eMBee: practically however i should probably be able to deduplicate the string at the point where i make acopy of it 2014-11-28T05:11:50Z yeticry joined #lisp 2014-11-28T05:12:33Z pjb: Making copies is the key to avoid duplicates references. 2014-11-28T05:13:35Z eMBee: and yes, introspection for structures would really be nice. i could also use that to generate the print-function for each struct without having to list each slot manually 2014-11-28T05:13:56Z loke: eMBee: Only supported for classes though 2014-11-28T05:14:00Z loke: another reason to use them 2014-11-28T05:15:01Z pjb: eMBee: have a look at https://www.informatimago.com/articles/usenet.html#Improved-DEFSTRUCT-macro--run-time-access-to-the-fields 2014-11-28T05:15:29Z drmeister: loke: How are things going? Any luck building Clasp? 2014-11-28T05:15:44Z loke: drmeister: I have't tried. Did you fix the problem? 2014-11-28T05:17:49Z kuanyui quit (Quit: Leaving.) 2014-11-28T05:17:51Z drmeister: I'm not sure what the problem is - I've never seen that error before. When did you pull that version of Clasp? Could I see your local.config file? 2014-11-28T05:18:16Z drmeister: If it's not a burning issue at the moment we could put it off until later. 2014-11-28T05:19:16Z loke: http://paste.lisp.org/display/144517 2014-11-28T05:19:37Z eMBee: loke: ah, yes, skip the default value is a logical feature, thanks 2014-11-28T05:23:15Z drmeister: loke: One problem is you have the CLASP_BUILD_TARGET_DIR and EXTERNALS_BUILD_TARGET_DIR pointed at the same directory. You should have separate directories. It doesn't say that anywhere but they should be separate directories. I'll add a comment to the README.md file. 2014-11-28T05:23:49Z loke: drmeister: Yeah, that wasn't clear... 2014-11-28T05:23:53Z loke: I'll try again with it 2014-11-28T05:23:59Z loke: The build takes a looong time 2014-11-28T05:24:52Z yeticry quit (Ping timeout: 240 seconds) 2014-11-28T05:25:16Z drmeister: Yup. It's C++ and slow compiled Common Lisp code - I'm working on fixing the second part by implementing a faster compiler. 2014-11-28T05:26:10Z yeticry joined #lisp 2014-11-28T05:33:30Z gingerale quit (Ping timeout: 244 seconds) 2014-11-28T05:42:04Z soulbird joined #lisp 2014-11-28T05:43:05Z soulbird quit (Read error: Connection reset by peer) 2014-11-28T05:43:20Z soulbird joined #lisp 2014-11-28T05:51:52Z ananna quit (Ping timeout: 250 seconds) 2014-11-28T05:55:36Z ndrei joined #lisp 2014-11-28T05:55:50Z beach: drmeister: Hello. I take it you survived thanksgiving. 2014-11-28T05:56:59Z Guest85785 joined #lisp 2014-11-28T06:04:41Z echo-area quit (Ping timeout: 264 seconds) 2014-11-28T06:04:55Z psy quit (Remote host closed the connection) 2014-11-28T06:09:34Z psy joined #lisp 2014-11-28T06:09:59Z psy quit (Max SendQ exceeded) 2014-11-28T06:10:41Z psy joined #lisp 2014-11-28T06:14:35Z quazimodo quit (Ping timeout: 255 seconds) 2014-11-28T06:19:18Z quazimodo joined #lisp 2014-11-28T06:21:24Z pranavrc joined #lisp 2014-11-28T06:33:42Z blahzik joined #lisp 2014-11-28T06:41:32Z oleo__ quit (Quit: Verlassend) 2014-11-28T06:45:28Z beach: Maybe not, after all. 2014-11-28T06:51:17Z alexey1 joined #lisp 2014-11-28T06:54:29Z bgs100 quit (Quit: bgs100) 2014-11-28T06:54:55Z octophore_ joined #lisp 2014-11-28T06:54:56Z octophore_ quit (Excess Flood) 2014-11-28T06:55:05Z boogie joined #lisp 2014-11-28T06:55:25Z octophore_ joined #lisp 2014-11-28T06:56:48Z octophore_ quit (Read error: Connection reset by peer) 2014-11-28T06:56:58Z octophore quit (Ping timeout: 256 seconds) 2014-11-28T06:57:10Z octophore joined #lisp 2014-11-28T06:57:11Z octophore quit (Excess Flood) 2014-11-28T06:58:07Z octophore joined #lisp 2014-11-28T06:58:07Z octophore quit (Excess Flood) 2014-11-28T06:58:21Z kjeldahl quit (Ping timeout: 265 seconds) 2014-11-28T06:58:32Z kurakot: Can I compile clasp in cygwin? 2014-11-28T06:58:42Z octophore joined #lisp 2014-11-28T06:58:42Z octophore quit (Excess Flood) 2014-11-28T06:59:18Z kanru` joined #lisp 2014-11-28T06:59:25Z octophore joined #lisp 2014-11-28T06:59:25Z octophore quit (Excess Flood) 2014-11-28T07:00:25Z octophore joined #lisp 2014-11-28T07:00:25Z octophore quit (Excess Flood) 2014-11-28T07:00:56Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-11-28T07:01:13Z octophore joined #lisp 2014-11-28T07:01:13Z octophore quit (Excess Flood) 2014-11-28T07:01:30Z slyrus quit (Ping timeout: 256 seconds) 2014-11-28T07:02:02Z octophore joined #lisp 2014-11-28T07:02:02Z octophore quit (Excess Flood) 2014-11-28T07:02:45Z kjeldahl joined #lisp 2014-11-28T07:02:50Z octophore joined #lisp 2014-11-28T07:02:51Z octophore quit (Excess Flood) 2014-11-28T07:03:02Z kanru` quit (Remote host closed the connection) 2014-11-28T07:03:41Z kanru` joined #lisp 2014-11-28T07:03:53Z octophore joined #lisp 2014-11-28T07:03:54Z octophore quit (Excess Flood) 2014-11-28T07:06:34Z schaueho joined #lisp 2014-11-28T07:12:07Z kanru quit (Ping timeout: 264 seconds) 2014-11-28T07:13:29Z zRecursive quit (Remote host closed the connection) 2014-11-28T07:19:09Z jewel_ quit (Remote host closed the connection) 2014-11-28T07:19:10Z defaultxr quit (Quit: gnight) 2014-11-28T07:20:42Z zacharia1 quit (Ping timeout: 250 seconds) 2014-11-28T07:23:59Z Bicyclidine quit (Ping timeout: 272 seconds) 2014-11-28T07:28:35Z tesuji joined #lisp 2014-11-28T07:32:19Z mrSpec joined #lisp 2014-11-28T07:33:29Z pt1 joined #lisp 2014-11-28T07:37:11Z drmeister: beach: Hello - yes - sorry I got distracted. 2014-11-28T07:40:33Z drmeister: kurakot: I don't know, we haven't tried that. If you try can you tell me about it? 2014-11-28T07:41:39Z mishoo joined #lisp 2014-11-28T07:41:51Z drmeister: I'm making some major changes to Clasp internals. I'm changing the calling convention and using more registers and less stack. It feels good. 2014-11-28T07:42:21Z drmeister: But it breaks everything until I get it all working together. Lots of little changes all over the place. 2014-11-28T07:42:21Z clop2 quit (Ping timeout: 272 seconds) 2014-11-28T07:44:44Z drmeister: There's one thing I really like about static languages like C++. You can refactor code by making changes and then the compiler points out all the compile-time type errors, you fix those, you get more compile errors, you fix those - and so on. Once all the compile-time errors are fixed there's a good chance the new code will work. 2014-11-28T07:46:29Z drmeister: Can incremental typing with Common Lisp give me something similar if I used it everywhere? 2014-11-28T07:47:59Z beach: What is "incremental typing"? 2014-11-28T07:48:27Z H4ns: drmeister: not really. some compilers are better at statically analyzing code than others, but in general, cl is a dynamically typed language. 2014-11-28T07:49:16Z drmeister: I guess I'm asking if (defun foo (x) (declare (type integer x)) (bar x)) (defun bar (y) (declare (type string y)) (baz y)) will generate a compile-time error. 2014-11-28T07:49:49Z jtza8 joined #lisp 2014-11-28T07:49:49Z H4ns: drmeister: you can make your compiler do that :) 2014-11-28T07:50:42Z Harag joined #lisp 2014-11-28T07:50:47Z shortCircuit__ joined #lisp 2014-11-28T07:50:54Z drmeister: beach: Using declare to declare types of variables. What's that called when you add declare type information to Common Lisp code incrementally? 2014-11-28T07:51:28Z shortCircuit__ is now known as friedAy 2014-11-28T07:51:54Z beach: You mean you start off without such declarations, and you add them one at a time? I don't think there is a widely-used name for that practice. 2014-11-28T07:53:15Z drmeister: Yeah - that. I've seen a name used for that practice. I thought it was "incremental typing" but my memory is not what it never was. 2014-11-28T07:53:31Z beach: drmeister: We are actually lucky compared to most static languages because at any point in time we have access to all the code. There is nothing preventing you from checking the types whenever a function is modified or added. 2014-11-28T07:54:38Z beach: drmeister: Whereas with most static languages, you can lie to the compiler by saying one think in a header file and a different thing in the file containing the code. Then you have no protection during runtime. 2014-11-28T07:55:00Z drmeister: "We", the Common Lisp community, or do you mean "we", you and I because we are so hardcore that we are developing our own compiler? 2014-11-28T07:55:10Z beach: The former. 2014-11-28T07:55:58Z drmeister: I see. 2014-11-28T07:56:19Z drmeister: Damn GEP instruction I curse you! 2014-11-28T07:56:38Z drmeister: The LLVM GEP instructions are frustrating. 2014-11-28T08:00:40Z Beetny joined #lisp 2014-11-28T08:02:04Z drmeister: I'm setting up my calling convention so that I pass (return-ptr, closure-env, int num-args, T* arg0, T* arg1, T* arg2, T* arg3, T* arg4) 2014-11-28T08:02:24Z mguzmann joined #lisp 2014-11-28T08:02:29Z beach: MY EYES! 2014-11-28T08:03:00Z drmeister: I pass five arguments in registers and if there are more than five arguments they will be passed in a multiple-values array that lives on the stack somewhere higher up the stack. 2014-11-28T08:04:14Z Shinmera joined #lisp 2014-11-28T08:04:27Z drmeister: So when I generate code for a call I'll load arguments 6 and up into the multiple-values array at elements 6,7,8,... and then I'll call the function with the first five arguments in registers. 2014-11-28T08:04:57Z drmeister: If there are fewer than five arguments then I pass NULL in the place of the ones I don't use. 2014-11-28T08:05:45Z ggole: What's return-ptr? Return location by hidden argument? 2014-11-28T08:05:51Z Shinmera: In that case I hope you didn't alias any CL values to NULL. 2014-11-28T08:06:03Z drmeister: When the function is entered, it has a complicated lambda-list it will copy the first five arguments into the multiple-values array at elements 1,2,3,4,5 2014-11-28T08:07:31Z flash- joined #lisp 2014-11-28T08:07:48Z drmeister: return-ptr is a pointer to where the result should be written - I'm thinking of changing that so that I return the result in a register and if its multiple values then the number of values will be in the multiple-values array and elements 2,3,4,5,... and the first return value will be in the return register. 2014-11-28T08:08:04Z drmeister: Shinmera: I don't alias any CL values to NULL. 2014-11-28T08:08:13Z arenz joined #lisp 2014-11-28T08:08:20Z drmeister: NIL is the tagged_ptr value 0x09 2014-11-28T08:08:30Z drmeister: ECL does the same thing. 2014-11-28T08:08:32Z Shinmera: Ah, that's good then. 2014-11-28T08:10:13Z drmeister: It's based on a scheme that pkhuong and nyef told me about several months ago. 2014-11-28T08:10:19Z ggole: It seems like a pretty heavy calling convention. 2014-11-28T08:10:36Z drmeister: ggole: It's evolved through several iterations (4) 2014-11-28T08:11:21Z drmeister: It's the best I've come up with. I have to interoperate with C++ and there are certain things that are difficult to do from C++. 2014-11-28T08:11:33Z ggole: For a function (lambda (a b) (+ a b)), you have two useless pointers and a useless number, and then write the result to memory instead of just leaving it in a register... 2014-11-28T08:12:27Z drmeister: Three useless pointers in registers. What's the useless number? 2014-11-28T08:12:37Z ggole: num-args. 2014-11-28T08:13:12Z drmeister: Well if you call with (foo 1 2 3) then the function needs to know there were three arguments passed and a condition should be signaled. 2014-11-28T08:13:30Z ggole: Right, but ideally a *known* call to foo wouldn't have to do that work 2014-11-28T08:13:48Z ggole: Maybe you need a little entry-point tree or something 2014-11-28T08:14:00Z ggole: (Which is complicated, and I dunno if LLVM supports that kind of thing.) 2014-11-28T08:15:04Z drmeister: How would that work? 2014-11-28T08:15:20Z ggole: By entry-point tree I mean an arrangement by which there is a core function that makes various assumptions, such as that the number of arguments has already been checked 2014-11-28T08:15:20Z Zhivago: Essentially he's formalizing how funcall should work when calling an unknown function. 2014-11-28T08:15:34Z Zhivago: Presumably he can add informed calls later. 2014-11-28T08:15:52Z ggole: And then some lead-in code that does that check, and jumps to the core function if successful that you use when the number of argumens is truly unknown 2014-11-28T08:16:13Z ggole: (Or just falls through if there is no other lead-in code.) 2014-11-28T08:16:51Z ggole: Then you can dispense with num-args and the check for known calls, which should be most calls. 2014-11-28T08:17:03Z Zhivago: Or, better, have the function defined with the most precise interface, and then generate imprecise brokers. 2014-11-28T08:17:17Z drmeister: Do you have an entry point for every number of arguments that you can pass? 2014-11-28T08:17:22Z Zhivago: But, starting with the unknown case will get things to the point of working. 2014-11-28T08:17:41Z ggole: No, you have an "unknown" entry point that does the expensive stuff 2014-11-28T08:17:44Z drmeister: (defun foo (x y) (+ x y)) --> foo_0 foo_1 foo_2 ... foo_50 2014-11-28T08:18:16Z beach: drmeister: In Movitz frodef did something cute that I might do for SICL; he used different entry points for 1, 2, and 3 arguments and one for any other count. 2014-11-28T08:18:17Z drmeister: How does the unknown entry point know how many arguments I pass? 2014-11-28T08:18:30Z ggole: You pass it (but only for unknown calls). 2014-11-28T08:18:34Z drmeister: beach: I did that. 2014-11-28T08:18:40Z Zhivago: dmrister: Your current scheme is suitable for an unknown entry point. 2014-11-28T08:18:46Z ggole: The point is to remove the arg-count and check for *known* calls 2014-11-28T08:19:00Z drmeister: What's a "known" call? 2014-11-28T08:19:09Z beach: drmeister: Oh, nice. Then in almost all cases, you don't have to pass an argument count, nor check it. 2014-11-28T08:19:10Z Zhivago: For known calls you really want to go a lot further and handle things like untagged immediates. 2014-11-28T08:19:21Z meiji11 quit (Remote host closed the connection) 2014-11-28T08:19:30Z beach: drmeister: A call to a Common Lisp function that can never change. 2014-11-28T08:19:32Z ggole: When the function definition is lexically apparent, eg, not an argument 2014-11-28T08:19:40Z ggole: Zhivago: right 2014-11-28T08:19:42Z beach: ... and that. 2014-11-28T08:20:09Z drmeister: Sometimes I feel like I speak a different language. 2014-11-28T08:20:22Z drmeister: (defun foo (x y) (+ x y)) 2014-11-28T08:20:36Z drmeister: What entry points would I generate? 2014-11-28T08:20:48Z Zhivago: It depends on the calls. 2014-11-28T08:21:02Z Zhivago: If that definition can escape, then an unknown entry point would be one. 2014-11-28T08:21:15Z drmeister: But the function can't know anything about who is calling it. I could redefine the function at any time. 2014-11-28T08:21:21Z beach: drmeister: In Movitz, you would generate 4 entry point, for 1, 2, 3, and other counts. 2014-11-28T08:21:22Z Zhivago: Otherwise you'd look at the call points and negotiate receptors. 2014-11-28T08:21:38Z Zhivago: Redefining the function doesn't change who calls it. 2014-11-28T08:21:41Z beach: drmeister: Entry points for 1, 3, and other would call ERROR. 2014-11-28T08:21:56Z beach: drmeister: Entry point for 2 need not check argument count. 2014-11-28T08:22:05Z beach: drmeister: But I thought you said you did that already. 2014-11-28T08:22:32Z mvilleneuve joined #lisp 2014-11-28T08:22:32Z Harag quit (Read error: Connection reset by peer) 2014-11-28T08:23:09Z drmeister: Perhaps I misunderstood what they did in Movitz. I wrote optimized argument processing code for functions with 1, 2 and 3 required arguments that used the passed registers directly. 2014-11-28T08:25:42Z drmeister: Reading. 2014-11-28T08:27:16Z drmeister: What is a "known" call vs an "unknown" call? 2014-11-28T08:27:43Z wjiang quit (Ping timeout: 255 seconds) 2014-11-28T08:29:58Z frkout_ joined #lisp 2014-11-28T08:32:04Z ggole: A known call is lexically apparent. 2014-11-28T08:32:08Z drmeister: Rereading the Movitz paper I see that I did misinterpret the multiple entry point thing. 2014-11-28T08:32:18Z ggole: Eg, you can look at the textual structure of the program to figure out the meaning of the call. 2014-11-28T08:32:23Z drmeister: So FLET or LABELS function? 2014-11-28T08:32:32Z ggole: (defun foo ...) (defun bar (...) (foo a b)) 2014-11-28T08:32:37Z ggole: foo is a known call here 2014-11-28T08:32:49Z ggole: (defun bar (foo) (funcall foo ...)) 2014-11-28T08:32:54Z ggole: foo is an unknown call here 2014-11-28T08:33:04Z frkout quit (Ping timeout: 250 seconds) 2014-11-28T08:33:05Z drmeister: But if I change foo later then it is not a known call anymore. 2014-11-28T08:33:41Z nha_ joined #lisp 2014-11-28T08:33:54Z drmeister: (defun foo ...) (defun bar (...) (foo a b)) - is foo supposed to be hardwired? 2014-11-28T08:34:01Z ggole: CL allows you to assume that functions compiled in the same file change together (iirc) 2014-11-28T08:34:03Z drmeister: The call to foo within bar. 2014-11-28T08:34:54Z drmeister: Ah, I ignored that - I wanted to be able to replace foo at any time. 2014-11-28T08:35:28Z drmeister: When you are working with SLIME don't you want that? 2014-11-28T08:35:48Z ggole: afaict it's also possible to retain indirection - in this case you would call "the two-argument entry point" of foo, whatever that might be 2014-11-28T08:36:10Z ggole: But that might get a bit space-heavy. 2014-11-28T08:36:39Z drmeister: The 0,1,2,3,other argument entry point I see now. 2014-11-28T08:36:43Z CrazyWoods joined #lisp 2014-11-28T08:37:09Z ggole: And of course with labels you don't have to worry about that at all 2014-11-28T08:37:42Z drmeister: labels? 2014-11-28T08:38:37Z ggole: Yeah 2014-11-28T08:39:03Z ggole: And functions declared inline, I guess 2014-11-28T08:39:12Z drmeister: Which labels and how do they relieve me of the burden of worry? 2014-11-28T08:39:31Z Shinmera: drmeister: (labels ((..))..) 2014-11-28T08:39:35Z Zhivago: Being able to replace foo at any time doesn't change the caller set, so all you need to do is to change its brokers together with it. 2014-11-28T08:40:00Z Shinmera: drmeister: He means that since this form will always be recompiled in entirety you don't have to worry about redefinition of the function itself and the calls to it changing. 2014-11-28T08:40:02Z drmeister: Oh, labels and flet - correct? 2014-11-28T08:40:06Z ggole: Yeah 2014-11-28T08:40:32Z drmeister: Right - there I was going to use a different calling convention. 2014-11-28T08:40:58Z ggole: You can't really do that in the general case 2014-11-28T08:41:22Z ggole: Labels means you don't have to worry about *redefinition*. Your labels-bound function can still escape and be called in unknown places. 2014-11-28T08:41:42Z ggole: (Although if it doesn't escape you can do whatever you like.) 2014-11-28T08:42:43Z drmeister: I'll have to sleep on this. 2014-11-28T08:43:04Z drmeister: But in generate, an "unknown" call has to pass an integer with the number of arguments passed - correct? 2014-11-28T08:43:47Z ggole: The unknown entry point has to handle being called with any number of args, yes 2014-11-28T08:46:59Z drmeister: I think I can swing this. 2014-11-28T08:49:02Z jtza8 quit (Ping timeout: 245 seconds) 2014-11-28T08:49:51Z Joreji joined #lisp 2014-11-28T08:50:06Z drmeister: I'd have to compile the function with one of the fast calling conventions (use lots of registers) and then several others that call it and each accept a different number of arguments. I'd have to expand my closure C++ class to store function pointers to each of these functions and declare a method for every arity. Hmm. 2014-11-28T08:50:52Z drmeister: My quest for the ultimate C++ compatible calling convention still has no end in sight. 2014-11-28T08:52:34Z johs quit (Ping timeout: 256 seconds) 2014-11-28T08:52:37Z drmeister: I still thinking through the consequences of returning the result in a register rather than passing a pointer into the function that points to where the result should be written. 2014-11-28T08:52:41Z ggole: Unless I'm missing something, I would imagine that closures would be used for unknown calls only, so they would only contain the unknown entry point. 2014-11-28T08:52:41Z johs joined #lisp 2014-11-28T08:52:49Z pranavrc quit (Read error: No route to host) 2014-11-28T08:53:42Z Zhivago: You don't need any closures -- you just need to be able to find the call receivers for a given function upon (re)definition. 2014-11-28T08:53:43Z ggole: Well actually, known calls to closures are possible. But they can use an entry point directly without having to retrieve it from the closure. So that shouldn't be a problem. 2014-11-28T08:53:45Z pranavrc joined #lisp 2014-11-28T08:53:47Z blahzik quit (Quit: blahzik) 2014-11-28T08:54:15Z Zhivago: A function with lexical closure is a function, so there's nothing special about that. 2014-11-28T08:54:16Z schaueho quit (Ping timeout: 255 seconds) 2014-11-28T08:54:44Z drmeister: Oh crap, it's almost 4:00am here - I have to get to bed. I've got proposals to review tomorrow. Bleh. 2014-11-28T08:54:55Z boogie quit (Quit: Leaving...) 2014-11-28T08:54:58Z drmeister: Thanks for the info - good night. 2014-11-28T08:55:32Z ggole: drmeister: OK, see you round 2014-11-28T08:55:39Z ggole: I'd better go and do some shopping. 2014-11-28T08:56:12Z beach left #lisp 2014-11-28T08:58:37Z kurakot quit (Ping timeout: 246 seconds) 2014-11-28T09:03:35Z resttime quit (Quit: resttime) 2014-11-28T09:05:39Z pjb: I guess the formula should be #mandatories+0 #mandatories+1 #mandatories+2 #mandatories+n rather than 1, 2, 3 and other argument counts. 2014-11-28T09:12:36Z zacharia1 joined #lisp 2014-11-28T09:16:20Z zxq9 joined #lisp 2014-11-28T09:31:21Z corni joined #lisp 2014-11-28T09:31:21Z corni quit (Changing host) 2014-11-28T09:31:21Z corni joined #lisp 2014-11-28T09:32:16Z Karl_Dscc joined #lisp 2014-11-28T09:32:18Z redeemed joined #lisp 2014-11-28T09:34:31Z Harag joined #lisp 2014-11-28T09:35:28Z jtza8 joined #lisp 2014-11-28T09:35:48Z zxq9 quit (Quit: Konversation terminated!) 2014-11-28T09:39:16Z Harag1 joined #lisp 2014-11-28T09:39:18Z Harag quit (Read error: Connection reset by peer) 2014-11-28T09:39:19Z milosn quit (Quit: Lost terminal) 2014-11-28T09:41:22Z frkout_ quit (Remote host closed the connection) 2014-11-28T09:41:33Z ehu joined #lisp 2014-11-28T09:41:50Z frkout joined #lisp 2014-11-28T09:43:13Z ehu quit (Client Quit) 2014-11-28T09:43:27Z ehu joined #lisp 2014-11-28T09:44:20Z meeted joined #lisp 2014-11-28T09:45:46Z meeted quit (Client Quit) 2014-11-28T09:51:48Z Karl_Dscc quit (Remote host closed the connection) 2014-11-28T09:52:30Z alexey1 quit (Remote host closed the connection) 2014-11-28T09:52:58Z alexey1 joined #lisp 2014-11-28T09:57:44Z alexey1 quit (Ping timeout: 256 seconds) 2014-11-28T09:58:12Z Lowl3v3l joined #lisp 2014-11-28T09:59:54Z Lowl3v3l quit (Read error: Connection reset by peer) 2014-11-28T10:00:26Z Lowl3v3l joined #lisp 2014-11-28T10:02:53Z zacharia1 is now known as zacharias 2014-11-28T10:05:09Z alexey1 joined #lisp 2014-11-28T10:05:24Z corni quit (Ping timeout: 265 seconds) 2014-11-28T10:05:31Z jtza8 quit (Ping timeout: 264 seconds) 2014-11-28T10:05:38Z munksgaard joined #lisp 2014-11-28T10:21:41Z alexey1 quit (Remote host closed the connection) 2014-11-28T10:24:13Z lavokad joined #lisp 2014-11-28T10:26:53Z schaueho joined #lisp 2014-11-28T10:27:21Z Karl_Dscc joined #lisp 2014-11-28T10:31:42Z tharugrim quit (Quit: ZNC - http://znc.in) 2014-11-28T10:32:06Z tharugrim joined #lisp 2014-11-28T10:33:03Z milosn joined #lisp 2014-11-28T10:33:16Z mguzmann quit (Quit: WeeChat 0.4.2) 2014-11-28T10:33:32Z edgar-rft quit (Quit: execution abandoned because no activity happened) 2014-11-28T10:34:12Z test1600 joined #lisp 2014-11-28T10:38:17Z harish quit (Ping timeout: 264 seconds) 2014-11-28T10:42:13Z kcj quit (Remote host closed the connection) 2014-11-28T10:50:57Z attila_lendvai joined #lisp 2014-11-28T10:50:57Z attila_lendvai quit (Changing host) 2014-11-28T10:50:57Z attila_lendvai joined #lisp 2014-11-28T10:53:13Z Joreji quit (Read error: Connection reset by peer) 2014-11-28T10:56:19Z Shinmera quit (Quit: しつれいしなければならないんです。) 2014-11-28T11:04:05Z kurakot joined #lisp 2014-11-28T11:08:18Z nostoi joined #lisp 2014-11-28T11:10:49Z Ethan- joined #lisp 2014-11-28T11:13:56Z H4ns: is anyone using hunchentoot on a publicly web site? i'm cleaning up the documentation and most of the sites that are mentioned there are dead. 2014-11-28T11:14:03Z H4ns: not a big deal, but i thought i'd ask 2014-11-28T11:17:38Z stepnem joined #lisp 2014-11-28T11:24:01Z scymtym_ quit (Ping timeout: 272 seconds) 2014-11-28T11:27:52Z tkhoa2711 joined #lisp 2014-11-28T11:28:57Z hitecnologys: H4ns: I am. 2014-11-28T11:29:32Z hitecnologys: H4ns: (if I correctly parsed your question) 2014-11-28T11:34:03Z hitecnologys: H4ns: twilightandia.org that is, but it's in Russian and is mostly filled with garbage as it's running in test mode to demonstrate cl-twilightanida usage. Not sure if that is what you're looking for. 2014-11-28T11:34:32Z Shinmera joined #lisp 2014-11-28T11:35:11Z Ober_ quit (Ping timeout: 258 seconds) 2014-11-28T11:35:28Z Shinmera: H4ns: Most of my sites run on hunchentoot currently. I suppose most notable are the blog https://blog.tymoon.eu/ and the public paste service https://plaster.tymoon.eu 2014-11-28T11:35:35Z madmalik quit (Quit: Connection closed for inactivity) 2014-11-28T11:35:54Z Ober joined #lisp 2014-11-28T11:38:11Z fantazo joined #lisp 2014-11-28T11:39:41Z Shinmera: H4ns: Oh and the IRC logs of course. http://log.irc.tymoon.eu/freenode/lisp 2014-11-28T11:40:20Z hitecnologys: Shinmera: woah, logs interface looks awesome. 2014-11-28T11:41:04Z Shinmera: It could still use some enhancements, but it's better than plaintext for sure. 2014-11-28T11:43:51Z urandom__ joined #lisp 2014-11-28T11:44:02Z hitecnologys: Is there any way to find out what time ranges are available? Filtering interface doesn't seem to provide such information. 2014-11-28T11:44:18Z splittist: Yeah. Add the topic to the title bar, make urls, clhs references and quicklisp packages clickable, embed pastes and colorize lisp (and C++ for drmeister) code and... (: 2014-11-28T11:45:30Z Shinmera: hitecnologys: Logging started somewhere early 2014 I believe and it limits to... something like 500 messages iirc. 2014-11-28T11:45:56Z Shinmera: 500 per page return I mean. 2014-11-28T11:46:37Z Shinmera: No, wait, it's 10'000. 2014-11-28T11:47:11Z hitecnologys: Shinmera: logger page seems to be overwhelmed with requests. It times out. 2014-11-28T11:47:44Z Shinmera: actually sbcl just crashed, which is great news 2014-11-28T11:47:46Z Shinmera: hold on 2014-11-28T11:47:52Z hitecnologys: I see. 2014-11-28T11:48:58Z Shinmera: should be back 2014-11-28T11:49:50Z hitecnologys: Nope. 2014-11-28T11:51:01Z Shinmera: well it is back but you might be getting a cache from cloudflare 2014-11-28T11:51:13Z Shinmera: So, hard refresh a couple. 2014-11-28T11:51:19Z milosn quit (Quit: leaving) 2014-11-28T11:51:25Z hitecnologys: H4ns: if you need, I can run another instance of Twilightandia with English localization on subdomain. 2014-11-28T11:51:33Z hitecnologys: Shinmera: tried. Doesn't seem to work. 2014-11-28T11:51:46Z Shinmera: The site is up and I can confirm that. Anything else is on your end. 2014-11-28T11:51:53Z harish joined #lisp 2014-11-28T11:52:20Z hitecnologys: Hm. 2014-11-28T11:53:27Z hitecnologys: Ah, damn CloudFlare. 2014-11-28T11:53:47Z hitecnologys: It needed me to push that "Retry for live version" button. 2014-11-28T11:57:21Z pjb: - 2014-11-28T11:58:03Z milosn joined #lisp 2014-11-28T11:58:29Z H4ns: Shinmera, hitecnologys: do you want me to put any of your URLs into the Hunchentoot documentation? it lists a few sites on the front page of the doc (http://weitz.de/hunchentoot/), and many of those listed don't work anymore 2014-11-28T11:58:41Z H4ns: i'm throwing out all dead links right now 2014-11-28T11:58:50Z milosn quit (Client Quit) 2014-11-28T11:59:03Z Shinmera: H4ns: I wouldn't mind having any of my links in there. 2014-11-28T11:59:21Z hitecnologys: H4ns: me too. 2014-11-28T12:00:36Z milosn joined #lisp 2014-11-28T12:01:34Z hitecnologys: s/too/neither/ 2014-11-28T12:01:38Z kuanyui joined #lisp 2014-11-28T12:01:52Z H4ns: thanks! 2014-11-28T12:04:33Z Hydan quit (Quit: ZNC - http://znc.in) 2014-11-28T12:05:03Z Hydan joined #lisp 2014-11-28T12:05:08Z munksgaard quit (Ping timeout: 255 seconds) 2014-11-28T12:05:29Z Shinmera: Is SBCL's heap fixed in size or does it expand and if the latter, is there a default limit to how far it expands? 2014-11-28T12:06:14Z milosn quit (Quit: Lost terminal) 2014-11-28T12:06:26Z Shinmera: I'm trying to figure out if there are some options by which I can give it more ram on my machine. 2014-11-28T12:06:38Z milosn joined #lisp 2014-11-28T12:07:06Z hitecnologys: Shinmera: IIRC, it has fixed size and default limit is set during compilation. 2014-11-28T12:07:25Z Krystof: it has a default limit, but you can expand that fixed (per-session) limit using --dynamic-space-size 2014-11-28T12:07:46Z Shinmera: I've googled a bit and found an article from 2008 which mentioned a branch with expanding heap. 2014-11-28T12:07:51Z Shinmera: ( http://blo.udoidio.info/2008/10/out-of-memory-sad-case.html ) 2014-11-28T12:08:06Z Shinmera: Krystof: hitecnologys: alright, thanks 2014-11-28T12:09:09Z nostoi quit (Quit: Verlassend) 2014-11-28T12:09:29Z schoppenhauer: hello. why does sbcl not work on android? (I assume so, since nobody appears to use it.) 2014-11-28T12:09:47Z Shinmera: What is your definition of "work"? 2014-11-28T12:10:11Z hitecnologys: schoppenhauer: it does work. 2014-11-28T12:10:34Z schoppenhauer: Shinmera: do standard stuff. 2014-11-28T12:10:40Z Shinmera: Well then it works. 2014-11-28T12:10:49Z schoppenhauer: hitecnologys: Shinmera: what parts do not? 2014-11-28T12:11:11Z Shinmera: It doesn't work in the sense that there's no special handling of the android environment and isn't available as a one-click-app to use. 2014-11-28T12:11:23Z Shinmera: You have to compile it yourself as of now, iirc. 2014-11-28T12:11:23Z schoppenhauer: ok. 2014-11-28T12:11:34Z munksgaard joined #lisp 2014-11-28T12:11:47Z schoppenhauer: yeah, I do not want to use it for programming, I just want to maintain a port of my code for android. 2014-11-28T12:12:05Z milosn quit (Quit: Lost terminal) 2014-11-28T12:12:28Z hitecnologys: schoppenhauer: you might want to check CCL out than. 2014-11-28T12:12:31Z milosn joined #lisp 2014-11-28T12:12:35Z schoppenhauer: I guess this will still be a bit of work as it uses cl-opengl and stuff. 2014-11-28T12:12:46Z vinleod joined #lisp 2014-11-28T12:13:08Z schoppenhauer: hitecnologys: is it simpler? 2014-11-28T12:13:30Z Hydan quit (Quit: ZNC - http://znc.in) 2014-11-28T12:13:31Z Lowl3v3l quit (Ping timeout: 258 seconds) 2014-11-28T12:14:00Z Hydan joined #lisp 2014-11-28T12:14:17Z hitecnologys: schoppenhauer: nope, but it's better tested on ARM environments than SBCL. 2014-11-28T12:14:22Z schoppenhauer: hitecnologys: ok. 2014-11-28T12:14:27Z schoppenhauer: hitecnologys: thx., 2014-11-28T12:14:42Z Lowl3v3l joined #lisp 2014-11-28T12:16:42Z hitecnologys: s/than/then/ 2014-11-28T12:17:13Z someone quit (Ping timeout: 272 seconds) 2014-11-28T12:22:04Z tkhoa2711 quit (Quit: tkhoa2711) 2014-11-28T12:22:33Z Bicyclidine joined #lisp 2014-11-28T12:25:37Z Harag1 quit (Ping timeout: 240 seconds) 2014-11-28T12:25:49Z Harag joined #lisp 2014-11-28T12:30:52Z innertracks joined #lisp 2014-11-28T12:33:54Z BitPuffin joined #lisp 2014-11-28T12:39:17Z jtza8 joined #lisp 2014-11-28T12:40:40Z eudoxia joined #lisp 2014-11-28T12:44:24Z mrSpec quit (Ping timeout: 250 seconds) 2014-11-28T12:47:43Z Harag quit (Remote host closed the connection) 2014-11-28T12:48:09Z Harag joined #lisp 2014-11-28T12:49:34Z mrSpec joined #lisp 2014-11-28T13:04:40Z pranavrc quit 2014-11-28T13:05:03Z hardenedapple joined #lisp 2014-11-28T13:06:42Z madmalik joined #lisp 2014-11-28T13:09:51Z hitecnologys_ joined #lisp 2014-11-28T13:12:56Z hitecnologys quit (Ping timeout: 265 seconds) 2014-11-28T13:12:56Z hitecnologys_ is now known as hitecnologys 2014-11-28T13:17:53Z Harag quit (Remote host closed the connection) 2014-11-28T13:20:53Z Harag joined #lisp 2014-11-28T13:22:39Z OTS joined #lisp 2014-11-28T13:22:52Z nee joined #lisp 2014-11-28T13:23:19Z Harag quit (Read error: Connection reset by peer) 2014-11-28T13:23:30Z Harag joined #lisp 2014-11-28T13:25:08Z Beetny quit (Ping timeout: 256 seconds) 2014-11-28T13:31:04Z innertracks quit (Quit: innertracks) 2014-11-28T13:32:06Z OTS quit (Remote host closed the connection) 2014-11-28T13:34:10Z alexey1 joined #lisp 2014-11-28T13:38:53Z CrazyWoods quit (Ping timeout: 264 seconds) 2014-11-28T13:41:39Z EvW joined #lisp 2014-11-28T13:45:39Z sword joined #lisp 2014-11-28T13:46:08Z CrazyWoods joined #lisp 2014-11-28T13:54:41Z ehu_ joined #lisp 2014-11-28T13:58:33Z ehu quit (Ping timeout: 272 seconds) 2014-11-28T14:02:11Z wheelsucker quit (Quit: Client Quit) 2014-11-28T14:02:24Z friedAy quit (Remote host closed the connection) 2014-11-28T14:03:25Z hardened` joined #lisp 2014-11-28T14:04:53Z dfox quit (Ping timeout: 272 seconds) 2014-11-28T14:05:06Z pjb: schoppenhauer: nothing can work ON android, because the android system has a very important (big) part loaded in user space of each process. 2014-11-28T14:05:44Z pjb: schoppenhauer: you can only use it as a linux process, and communicate via IPC with an Android process (written in Java). 2014-11-28T14:06:07Z schoppenhauer: pjb: yeah, like with the NDK 2014-11-28T14:06:30Z pjb: That would be another way to do it, provide a libsbcl.so; notice that there's a libecl.so 2014-11-28T14:06:50Z lavokad: Hi, why ((lambda (x y) (+ x y)) 2 3) works and ((function a) 4), where a is (defun a (p) (+ 2 p)), knowing that lambda macro evaluates to function object? 2014-11-28T14:07:21Z lavokad: missed not before the word "knowing" 2014-11-28T14:07:42Z pjb: Now the difficulties in providing a CL implementation as a library, is that CL implementations nowadays use threads (some even have their own private threads), and manage unix signals. This enter in collision with the other libraries or user space system code that manage threads and unix signals. 2014-11-28T14:07:43Z DeadTrickster joined #lisp 2014-11-28T14:07:50Z |3b|: lavokad: because that's how the language was specified 2014-11-28T14:08:15Z pjb: lavokad: because it's written (a 4) DUH. 2014-11-28T14:08:30Z oleo joined #lisp 2014-11-28T14:08:35Z |3b|: the lambda macro isn't evaluated in ((lambda ...)), the language specifies that forms like ((lambda ...)...) are processed specially 2014-11-28T14:08:41Z pjb: lavokad: what you missed, is that CL:LAMBDA is a macro. 2014-11-28T14:08:43Z schoppenhauer: pjb: IPC should be fine. 2014-11-28T14:09:05Z |3b|: pjb: how is "that lambda macro evaluates..." missing that lambda is a macro? 2014-11-28T14:09:13Z pjb: (lambda (x y) (+ x y)), WHEN EVALUATED, expands to (function (lambda (x y) (+ x y))), which is similar to (function a). 2014-11-28T14:09:14Z Cymew joined #lisp 2014-11-28T14:09:24Z schoppenhauer: I mean, I do use opengl, but only for 2d 2014-11-28T14:09:46Z pjb: In both cases, the NAME of the function is (lambda (x y) (+ x y)) and a, and when calling a function you put the NAME of the function in the first element: ((lambda (x y) (+ x y)) 1 2) (a 3) 2014-11-28T14:10:15Z |3b|: pjb: do you have a reference to lambda forms "naming" functions in CL? i couldn't find any last time i looked 2014-11-28T14:10:30Z pjb: |3b|: lambda forms name anonymous functions :-) 2014-11-28T14:10:41Z pjb: Just look at the similarity in forms! 2014-11-28T14:11:01Z |3b|: no, lambda forms are coerced to anonymous functions in some situations, but they don't "name" them in CL terms as far as i could find 2014-11-28T14:11:16Z pjb: They name anonymous functions! 2014-11-28T14:11:21Z pjb: Read and try to understand! 2014-11-28T14:11:26Z pjb: NAME ANONYMOUS!!!! 2014-11-28T14:12:15Z dalai joined #lisp 2014-11-28T14:13:04Z |3b|: "1. n. an identifier by which an object, a binding, or an exit point is referred to by association using a binding. ", identifier: "a symbol used to identify or to distinguish names. " 2014-11-28T14:13:30Z |3b|: clhs function 2014-11-28T14:13:30Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/a_fn.htm 2014-11-28T14:13:59Z |3b|: not sure if using a variable "name" means yes, or "name---a function name or lambda expression. " means they are distinct 2014-11-28T14:14:01Z dalai left #lisp 2014-11-28T14:15:02Z pjb: It's like trying to mutate the standard readtable in CL. 2014-11-28T14:16:08Z Shinmera: clhs glossary/lambda expression 2014-11-28T14:16:09Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/26_glo_l.htm#lambda_expression 2014-11-28T14:17:10Z alexey1 quit (Remote host closed the connection) 2014-11-28T14:17:18Z dfox joined #lisp 2014-11-28T14:18:54Z gingerale joined #lisp 2014-11-28T14:21:09Z Karl_Dscc quit (Remote host closed the connection) 2014-11-28T14:22:13Z |3b|: either way, "function name" isn't the answer, since ((setf foo) ...) isn't valide 2014-11-28T14:22:16Z |3b|: *valid 2014-11-28T14:22:53Z |3b|: ((lambda ...)) works because the spec says so 2014-11-28T14:26:23Z lavokad: ok, thanks..this is only way it makes sense 2014-11-28T14:26:25Z dfox quit (Ping timeout: 272 seconds) 2014-11-28T14:26:33Z ehu_ is now known as ehu 2014-11-28T14:26:35Z kushal joined #lisp 2014-11-28T14:26:47Z Mon_Ouie joined #lisp 2014-11-28T14:26:47Z Mon_Ouie quit (Changing host) 2014-11-28T14:26:47Z Mon_Ouie joined #lisp 2014-11-28T14:29:11Z |3b|: lavokad: scheme has different evaluation rules, so ((foo) ...) works as long as (foo) returns a function 2014-11-28T14:30:13Z |3b|: CL could have specified evaluation rules that allowed it as well (though not the same ones that scheme used), but didn't 2014-11-28T14:31:40Z |3b|: since CL has separate namespaces for functions and variables, just evaluating it normally wouldn't work 2014-11-28T14:32:23Z yeticry quit (Ping timeout: 244 seconds) 2014-11-28T14:32:33Z CrazyWoo1s joined #lisp 2014-11-28T14:32:43Z |3b|: and probably wouldn't provide much benefit anyway 2014-11-28T14:32:44Z jtza8 quit (Ping timeout: 255 seconds) 2014-11-28T14:33:13Z kushal quit (Remote host closed the connection) 2014-11-28T14:33:28Z vaporatorius joined #lisp 2014-11-28T14:33:43Z CrazyWoods quit (Ping timeout: 264 seconds) 2014-11-28T14:34:32Z psy quit (Remote host closed the connection) 2014-11-28T14:34:46Z yeticry joined #lisp 2014-11-28T14:35:01Z dfox joined #lisp 2014-11-28T14:36:01Z kushal joined #lisp 2014-11-28T14:36:08Z psy joined #lisp 2014-11-28T14:41:14Z ggole: That doesn't actually have anything to do with namespacing. 2014-11-28T14:41:57Z pjb: |3b|: there are some irregularities. 2014-11-28T14:42:12Z DeadTrickster quit (Ping timeout: 244 seconds) 2014-11-28T14:42:58Z DeadTrickster joined #lisp 2014-11-28T14:43:01Z |3b|: ggole: with separate namespaces you can't just say "evaluate first element then call result" 2014-11-28T14:43:21Z ggole: You just need a rule for how to determine the namespace, that's all. 2014-11-28T14:43:23Z |3b|: you have to at least say "evaluate symbols in function namespace" 2014-11-28T14:43:27Z |3b|: right 2014-11-28T14:43:46Z |3b|: now do you evaluate (setf foo 1) in function or variable namespace? 2014-11-28T14:43:48Z ggole: For example: a symbol at the head of the list is looked up in the function namespace, everything else is evaluated to determine the value 2014-11-28T14:43:55Z |3b|: (setf foo) i mean 2014-11-28T14:44:13Z pjb: We could have an extension where (x y) when x is not a lambda form or a symbol, would expand to (funcall (fdefinition x) y) and where fdefinition can take any sexp as long as a corresponding (setf fdefinition) has been done. 2014-11-28T14:44:33Z ggole: Then (cons cons cons) have the same meaning it currently does in CL, and ((if cons cons cons) cons cons) would "work" too. 2014-11-28T14:44:40Z isoraqathedh quit (Remote host closed the connection) 2014-11-28T14:44:41Z ggole: With two namespaces. 2014-11-28T14:44:51Z |3b|: that is pretty mush what i said anyway "symbols is looked up in function namespace" = "evaluating it normally doesn't work" 2014-11-28T14:45:19Z |3b| doesn't see what you are disagreeing with 2014-11-28T14:45:25Z alpha- quit (Ping timeout: 272 seconds) 2014-11-28T14:45:36Z ggole: But what I suggested is that it is evaluated normally (with the single exception of symbols at the heads of lists) 2014-11-28T14:45:57Z |3b|: and all i said is you can't evaluate it normally, implying no exceptions 2014-11-28T14:46:15Z |3b|: so sure, you can evaluate it normally if you don't evaluate it normally 2014-11-28T14:46:25Z ggole: That doesn't imply that calculated in function position "doesn't work", which is what I understand you to have said 2014-11-28T14:46:30Z antonv joined #lisp 2014-11-28T14:46:38Z ggole: (If you didn't mean that, then we are arguing at cross purposes.) 2014-11-28T14:47:13Z |3b| 's point is that CL spec says exactly symbols naming functions, and lambda expressions are valid in first element. it could have specified more, but it isn't trivial as in scheme 2014-11-28T14:47:34Z |3b|: note that you and pjb specified different extensions, both equally reasonable 2014-11-28T14:47:46Z |3b|: one allows arbitrary forms, other allows all function names 2014-11-28T14:48:03Z ggole: Now I check the scrollback, you said " CL could have specified evaluation rules that allowed it as well (though not the same ones that scheme used), but didn't" 2014-11-28T14:48:15Z ggole: Which is entirely reasonable - so I don't think we have a real disagreement. 2014-11-28T14:48:51Z jtza8 joined #lisp 2014-11-28T14:49:01Z |3b|: pjb: use FUNCTION instead of FDEFINITION and you don't need a special case for LAMBDA either 2014-11-28T14:49:25Z pjb: function is a special operator. It'd be a bad faux-pas to extend it. 2014-11-28T14:49:34Z pjb: It's easier to extend fdefinition. 2014-11-28T14:49:37Z |3b|: ah, missed that you extended it 2014-11-28T14:49:50Z pjb: Further (setf (function x) … ) wouldn't work well either. 2014-11-28T14:50:14Z pjb: fdefinition is already an accessor. 2014-11-28T14:50:42Z clop2 joined #lisp 2014-11-28T14:53:45Z isoraqathedh joined #lisp 2014-11-28T14:56:04Z Karl_Dscc joined #lisp 2014-11-28T14:59:49Z Lowl3v3l quit (Read error: Connection reset by peer) 2014-11-28T15:00:27Z Lowl3v3l joined #lisp 2014-11-28T15:01:48Z dfox quit (Ping timeout: 258 seconds) 2014-11-28T15:01:55Z milesrout quit (Ping timeout: 264 seconds) 2014-11-28T15:05:17Z someon joined #lisp 2014-11-28T15:07:02Z ivan4th` joined #lisp 2014-11-28T15:07:15Z ivan4th` quit (Remote host closed the connection) 2014-11-28T15:08:02Z teslacuted joined #lisp 2014-11-28T15:13:55Z munksgaard quit (Ping timeout: 264 seconds) 2014-11-28T15:14:42Z Odin- joined #lisp 2014-11-28T15:15:35Z madmalik quit (Quit: Connection closed for inactivity) 2014-11-28T15:15:53Z dfox joined #lisp 2014-11-28T15:16:25Z digiorgi_ joined #lisp 2014-11-28T15:16:36Z momo-reina joined #lisp 2014-11-28T15:18:27Z radioninja joined #lisp 2014-11-28T15:19:36Z digiorgi_: Hi! I want to get a common lisp IDE, the real coders use only emacs+slime. Thats all? If anyone has a link explaining how to setup a more powerful environment, please point me. 2014-11-28T15:19:56Z munksgaard joined #lisp 2014-11-28T15:20:03Z alexey1 joined #lisp 2014-11-28T15:20:03Z pjb: digiorgi_: on MacOSX, you can use Clozure CL (from the AppStore, or from http://ccl.clozure.com/) 2014-11-28T15:20:13Z H4ns: digiorgi_: http://www.mohiji.org/2011/01/31/modern-common-lisp-on-linux/ might be helpful 2014-11-28T15:20:22Z pjb: digiorgi_: there's also a MCLIDE IDE on MacOSX, written with Clozure CL. 2014-11-28T15:20:43Z drdanmaku joined #lisp 2014-11-28T15:22:16Z digiorgi_: i mean things like auto completion, jump to definition, better highlighting. 2014-11-28T15:22:27Z pjb: then emacs+paredit+slime 2014-11-28T15:22:42Z H4ns: digiorgi_: slime has all this, except maybe for the "better" part of it. 2014-11-28T15:22:43Z pjb: you may also use auto-complete-mode 2014-11-28T15:22:54Z pjb: just use emacs. 2014-11-28T15:23:16Z Grue`: digiorgi_: M-. is jump to definition 2014-11-28T15:23:37Z Grue`: not sure what you mean by better highlighting 2014-11-28T15:23:43Z momo-reina quit (Remote host closed the connection) 2014-11-28T15:23:53Z pjb: You can mean whatever you want by better highlighting: implement it in emacs lisp! 2014-11-28T15:24:15Z pjb: (or you can implement it in Common Lisp in Hemlock (the editor of Clozure CL), but you will have more work to do). 2014-11-28T15:24:29Z Shinmera: But can emacs make your highlights glow neon green? 2014-11-28T15:24:40Z Mycelium joined #lisp 2014-11-28T15:24:41Z pjb: Yes. 2014-11-28T15:25:04Z CrazyWoo1s quit (Quit: leaving) 2014-11-28T15:25:31Z digiorgi_: ok... paredit+auto-complete, i will try it 2014-11-28T15:26:28Z Ethan- quit (Ping timeout: 250 seconds) 2014-11-28T15:30:47Z splittist: digiorgi_: If I were going to get a common lisp IDE that real coders use, I would install my lisp, install emacs, get quicklisp, use quicklisp to install slime, get paredit, ..., profit! 2014-11-28T15:31:28Z alexey1 quit (Remote host closed the connection) 2014-11-28T15:34:46Z agumonkey quit (Ping timeout: 258 seconds) 2014-11-28T15:35:06Z digiorgi_: And for project navigation what can i use? 2014-11-28T15:35:31Z Shinmera: I use ECB, but I'm sure there's others. 2014-11-28T15:35:57Z H4ns: digiorgi_: most people here use emacs, some use vim, and both have some form of "project navigation". 2014-11-28T15:36:07Z agumonkey joined #lisp 2014-11-28T15:36:29Z H4ns: digiorgi_: if you're looking for an ide, there is nothing available for free. lispworks has a nice commercial ide that is popular, allegro cl has one as well. 2014-11-28T15:36:49Z pjb: MCLIDE is available for free. 2014-11-28T15:36:58Z pjb: MCLIDE is free software. 2014-11-28T15:39:16Z katco: hey, i'm new to common lisp. is there an accepted practice for marshalling objects out to disk? 2014-11-28T15:39:53Z Cymew quit (Ping timeout: 272 seconds) 2014-11-28T15:40:22Z H4ns: katco: many. cl-store is popular. also cl:print and cl:read for simple things. 2014-11-28T15:40:40Z katco: H4ns: cool, i will check those out. much appreciated! :) 2014-11-28T15:41:09Z alpha- joined #lisp 2014-11-28T15:42:12Z katco: cl-store looks really nice. thanks again :) 2014-11-28T15:42:45Z oleo__ joined #lisp 2014-11-28T15:43:02Z oleo is now known as Guest89591 2014-11-28T15:44:12Z Guest89591 quit (Ping timeout: 244 seconds) 2014-11-28T15:44:57Z munksgaard quit (Ping timeout: 272 seconds) 2014-11-28T15:45:39Z CrazyWoods joined #lisp 2014-11-28T15:45:58Z teslacuted left #lisp 2014-11-28T15:46:31Z munksgaard joined #lisp 2014-11-28T15:47:24Z pjb: katco: there's a good example in gsharp of saving CLOS objects to files. 2014-11-28T15:48:10Z katco: pjb: i'm not familiar with gsharp... is it this editor for musical scores? 2014-11-28T15:48:31Z pjb: yes 2014-11-28T15:48:47Z katco: pjb: i will take a look. thank you :) 2014-11-28T15:50:05Z lavokad quit (Remote host closed the connection) 2014-11-28T15:53:15Z mayday_jay joined #lisp 2014-11-28T15:55:05Z milosn quit (Remote host closed the connection) 2014-11-28T15:55:48Z Lowl3v3l_ joined #lisp 2014-11-28T15:57:23Z someon is now known as someone 2014-11-28T15:58:47Z EvW quit (Quit: EvW) 2014-11-28T15:58:55Z Lowl3v3l quit (Ping timeout: 258 seconds) 2014-11-28T16:00:51Z wheelsucker joined #lisp 2014-11-28T16:01:23Z kapil__ quit (Quit: Connection closed for inactivity) 2014-11-28T16:02:32Z oleo__ quit (Quit: Verlassend) 2014-11-28T16:05:42Z nee quit (Quit: Verlassend) 2014-11-28T16:07:11Z alexey1 joined #lisp 2014-11-28T16:10:51Z billstclair quit (Read error: Connection reset by peer) 2014-11-28T16:13:49Z oleo joined #lisp 2014-11-28T16:13:58Z ejbs joined #lisp 2014-11-28T16:14:13Z innertracks joined #lisp 2014-11-28T16:14:41Z CrazyWoods quit (Ping timeout: 244 seconds) 2014-11-28T16:15:10Z mvilleneuve quit (Ping timeout: 256 seconds) 2014-11-28T16:15:15Z drmeister: ggole: Ping - thanks for that primer on argument passing last night. 2014-11-28T16:16:43Z CrazyWoods joined #lisp 2014-11-28T16:16:50Z jtza8 quit (Ping timeout: 256 seconds) 2014-11-28T16:17:02Z alexey1 quit (Remote host closed the connection) 2014-11-28T16:17:32Z defaultxr joined #lisp 2014-11-28T16:17:42Z ndrei quit (Ping timeout: 258 seconds) 2014-11-28T16:17:43Z drmeister: Despite reading the Movitz principles papers about a dozen times I missed the multiple entry points idea. Once I think I know what's going on my brain tends to fuzz out details that I read that go counter to my preconceptions. I appreciate it when people sit me down and patiently correct my thinking. 2014-11-28T16:20:34Z drmeister: I see now some changes that I need to make to incorporate multiple entry points for each function with optimized cases that don't require the number of arguments to be passed or unused arguments to be filled in with NULL and to return the first return value in a register. 2014-11-28T16:23:20Z drmeister: I think I can implement these optimizations and make it almost as efficient as anything one could do with machine instruction control while retaining compatibility with the C++ abi and doing it through LLVM-IR. 2014-11-28T16:24:08Z drmeister: Doing this through Common Lisp --> LLVM C++ API --> LLVM-IR --> machine instructions feels like I'm trying to assemble a watch while wearing mittens. 2014-11-28T16:25:34Z redeemed quit (Quit: q) 2014-11-28T16:26:02Z tkhoa2711 joined #lisp 2014-11-28T16:27:21Z maxpeck quit (Remote host closed the connection) 2014-11-28T16:27:51Z ggole: Glad you found it helpful. 2014-11-28T16:28:13Z ggole: The same idea applies to some other problems too, like keyword argument parsing. 2014-11-28T16:28:23Z munksgaard quit (Ping timeout: 240 seconds) 2014-11-28T16:28:50Z _theseb joined #lisp 2014-11-28T16:29:21Z _theseb: if you didn't have the begin special form is there another way to combine multiple sexps into one? 2014-11-28T16:29:35Z wasamasa: PROGN 2014-11-28T16:29:37Z MouldyOldBones joined #lisp 2014-11-28T16:29:40Z pecg joined #lisp 2014-11-28T16:29:40Z pecg quit (Changing host) 2014-11-28T16:29:40Z pecg joined #lisp 2014-11-28T16:29:58Z pecg quit (Client Quit) 2014-11-28T16:30:28Z pecg joined #lisp 2014-11-28T16:30:28Z pecg quit (Changing host) 2014-11-28T16:30:28Z pecg joined #lisp 2014-11-28T16:31:34Z drmeister: ggole: I'm afraid to ask... how? 2014-11-28T16:31:35Z genii joined #lisp 2014-11-28T16:31:46Z mrSpec quit (Quit: mrSpec) 2014-11-28T16:32:01Z ggole: The unknown entry point has to parse args, of course, since it could be passed anything 2014-11-28T16:32:16Z mrSpec joined #lisp 2014-11-28T16:32:23Z ggole: It rearranges things so that keywords are mapped to positional args for the inner function 2014-11-28T16:32:35Z ggole: For known calls, you can just call the inner function with arguments in the right place. 2014-11-28T16:33:00Z drmeister (sighs) ... onward - into the breach. 2014-11-28T16:33:00Z ggole: Very much the same idea, just with a different set of assumptions. 2014-11-28T16:33:27Z drmeister: I think I kind of do that. 2014-11-28T16:34:24Z drmeister: Here's how I declare a function in C++ that can be called from Common Lisp. 2014-11-28T16:34:28Z drmeister: https://www.irccloud.com/pastebin/qmYX7pB5 2014-11-28T16:34:43Z corni joined #lisp 2014-11-28T16:34:43Z corni quit (Changing host) 2014-11-28T16:34:43Z corni joined #lisp 2014-11-28T16:35:22Z maxpeck joined #lisp 2014-11-28T16:35:36Z ggole: What am I looking at here? 2014-11-28T16:35:45Z drmeister: The ARGS_af_member declares the lambda-list for the Common Lisp interface. It is used to create a wrapper that takes the keyword arguments in the order specified in that string and laying them out to match the function arguments required by the Cons_sp af_member(...) function below. 2014-11-28T16:35:47Z drmeister: C++ 2014-11-28T16:36:05Z ggole: It's the interface of cl:member, I take it 2014-11-28T16:36:10Z ggole: On the C++ side 2014-11-28T16:36:11Z drmeister: Yup. 2014-11-28T16:36:14Z drmeister: Yes. 2014-11-28T16:36:31Z ggole: What's a T_sp? 2014-11-28T16:36:47Z drmeister: Essentially a pointer to a T object. 2014-11-28T16:37:05Z drmeister: It's a tagged pointer to a T object or one of its subclasses. 2014-11-28T16:37:14Z ggole: Ah, right 2014-11-28T16:38:08Z ggole: So how do keyword arguments get put in the right positions? 2014-11-28T16:38:24Z drmeister: I'm probably going to unwrap everything and start using raw pointers directly. 2014-11-28T16:39:40Z theseb joined #lisp 2014-11-28T16:41:04Z drmeister: It's done by an object called a LambdaListHandler. LambdaListHandlers are constructed from ARGS_xxx strings and given a list of arguments they fill an array of values in the same order the variables are laid out in the ARGS_xxx string. The values in the array is passed to the C++ function after any necessary type conversions are performed. 2014-11-28T16:41:26Z maxpeck quit (Remote host closed the connection) 2014-11-28T16:41:40Z drmeister: It handles things like this: #define ARGS_foo "(x &optional (y 2) (z 3))" 2014-11-28T16:41:57Z drmeister: int foo (int x, int y, int z) {...}; 2014-11-28T16:42:12Z ggole: This certainly sounds like the args parsing in the unknown case that I mentioned. 2014-11-28T16:42:35Z drmeister: Yes, basically I've implemented the unknown case for everything. 2014-11-28T16:42:54Z drmeister: An optimization will be to add known cases for 0,1,2,3,4,5 arguments. 2014-11-28T16:43:35Z maxpeck joined #lisp 2014-11-28T16:44:14Z maxpeck quit (Remote host closed the connection) 2014-11-28T16:44:54Z drmeister: Then a function application like (foo 1) or (funcall #'foo 1) would be routed to a function wrapper that would take one argument, set the defaults for the other two and then call the C++ foo function. 2014-11-28T16:45:10Z drmeister: I wouldn't need to pass the number of arguments. 2014-11-28T16:45:19Z drmeister: Only in the unknown case. 2014-11-28T16:45:23Z maxpeck joined #lisp 2014-11-28T16:45:34Z mayday_jay quit (Quit: c ya!) 2014-11-28T16:45:38Z drmeister: Do I appear to understand what I'm doing? 2014-11-28T16:45:47Z LiamH joined #lisp 2014-11-28T16:45:56Z ggole: It sounds like the right direction :) 2014-11-28T16:46:07Z zacharias quit (Ping timeout: 245 seconds) 2014-11-28T16:46:31Z drmeister: Good, because I can be pretty compelling while at the same time completely misunderstand something. It's a gift. 2014-11-28T16:46:39Z ggole: Heh. 2014-11-28T16:48:46Z _theseb quit (Quit: Page closed) 2014-11-28T16:49:27Z pt1 quit (Ping timeout: 245 seconds) 2014-11-28T16:54:03Z beach joined #lisp 2014-11-28T16:54:05Z drmeister: The other realization from last night is I don't need to pass a pointer to where to put the return value. 2014-11-28T16:54:37Z beach: Good evening everyone! 2014-11-28T16:54:46Z drmeister: I can just return a tagged pointer which is the first return value in the case of multiple return values. 2014-11-28T16:55:36Z drmeister: If multiple return values are returned then the callee will write the second and higher return values into the multiple-value array wherever it is on the stack along with the number of values being returned. 2014-11-28T16:55:45Z drmeister: Callers expecting one value will get the first value. 2014-11-28T16:55:48Z drmeister: Hi beach. 2014-11-28T16:56:07Z theos quit (Ping timeout: 245 seconds) 2014-11-28T16:56:35Z drmeister: Callers expecting multiple values will have the first value in the returned register and the others will be extracted from the multiple-values array wherever it is on the stack. 2014-11-28T16:56:42Z attila_lendvai quit (Quit: Leaving.) 2014-11-28T16:56:43Z rtra quit (Ping timeout: 265 seconds) 2014-11-28T16:56:49Z milosn joined #lisp 2014-11-28T16:57:12Z beach: drmeister: What do you do when a caller expects more than one value, but the callee only returns one? 2014-11-28T16:57:22Z radioninja quit (Ping timeout: 240 seconds) 2014-11-28T16:57:46Z theseb: can essentially every lisp program be written to not use state? i.e. rewritten in "functional style" ? i'm basically trying to see if STATE is a convience or a necessity to programming in general 2014-11-28T16:58:33Z drmeister: The callee will write the additional return values into the current multiple-values array that is somewhere higher on the stack along with the number of returned values. The caller will have to go there to get all returned values. 2014-11-28T16:59:15Z beach: drmeister: My question was about the case when the callee only returns a single value, but the caller expects more. 2014-11-28T16:59:23Z Bicyclidine: minion: what does STATE stand for? 2014-11-28T16:59:24Z minion: Sweater Tilty Achlorophyllous Taiaha Electrology 2014-11-28T16:59:34Z beach: drmeister: I don't see how the callee can write additional return values then. 2014-11-28T17:00:03Z |3b|: theseb: theoretically, yes... lambda calculus is turing complete 2014-11-28T17:00:34Z ggole: I imagine the caller has to check, substituting NIL for anything unavailable. 2014-11-28T17:00:50Z beach: drmeister: as in (multiple-value-bind (a b c) (+ 3 4) (list a b c)) 2014-11-28T17:00:51Z |3b|: theseb: in practice, ask haskell or ml programmers 2014-11-28T17:00:54Z drmeister: beach: I see - hang on, I can handle that now but the changes I'm proposing might break things. Thinking... 2014-11-28T17:01:09Z theseb: |3b|: thanks! 2014-11-28T17:01:16Z beach: drmeister: That's what it sounded like, which is why I am asking. 2014-11-28T17:01:25Z rtra joined #lisp 2014-11-28T17:01:27Z ggole: AFAIS it should work. You communicate the number of returned values, so the check can be made. 2014-11-28T17:01:32Z digiorgi_: drmeister: reactive programming? 2014-11-28T17:02:22Z drmeister: ggole: There's a special case where I don't communicate the number of returned values. C++ functions that return a single value don't set the number of values returned to 1. 2014-11-28T17:02:43Z jtza8 joined #lisp 2014-11-28T17:02:47Z beach: I think they will have to. 2014-11-28T17:02:54Z ggole: You have to communicate the number of returned values in case somebody does (multiple-value-list ...) 2014-11-28T17:03:13Z Mycelium quit (Quit: Leaving) 2014-11-28T17:03:14Z ggole: You can still have the first return value in the register though 2014-11-28T17:03:35Z ggole: Just populate it with nil (which is what would happen if you bound an unavailable value anyway). 2014-11-28T17:03:39Z |3b|: theseb: which is another way of saying "in languages designed for it, mostly yes"... in CL it would probably be harder, but you could always implement a language designed to be used that way in any turing complete language, so it is just a matter of convenience (but convenience is important, or we wouldn't be arguing over languages/programming styles all the time) 2014-11-28T17:04:49Z ggole: (I mean, populate it with nil in the event that you are returning zero values.) 2014-11-28T17:04:54Z drmeister: ggole: I haven't figured how to do that. It's easy to return a single pointer (64bit on 64bit systems) But returning a pointer and an integer - I haven't figured out how to do that with LLVM. It has multiple-value return but it's not fully implemented so I don't use it. That's why I passed a pointer to where to write the return value to. 2014-11-28T17:04:56Z theseb: |3b|: in my limited understanding...stateless programming is great for parallelism....so i thought in future where we all have massive multicore PCs we'll want FP 2014-11-28T17:05:25Z ggole: Well, that might suck a bit then. 2014-11-28T17:05:47Z digiorgi_: The problem is how you ensure the purity of your functions in CL? 2014-11-28T17:05:58Z digiorgi_: F# fails in that 2014-11-28T17:06:22Z resttime joined #lisp 2014-11-28T17:06:35Z ggole: LLVM does return small structs in regs IIRC, so you might be able to (ab)use that. 2014-11-28T17:08:01Z drmeister: beach: Currently they don't. I have a C++ class called a smart_ptr that contains a single pointer and a subclass of it called multiple_values that also stores an integer representing the number of values being returned. 2014-11-28T17:08:16Z eudoxia quit (Quit: Lost terminal) 2014-11-28T17:09:09Z theos joined #lisp 2014-11-28T17:09:12Z drmeister: When multiple-values-bind calls a function it takes the returned value and uses it to construct a multiple_values instance. If you give it a single pointer it sets the number of multiple-values to 1. 2014-11-28T17:10:43Z |3b|: theseb: it can be, but you also want a language and/or runtime designed to take advantage of it 2014-11-28T17:11:58Z stassats joined #lisp 2014-11-28T17:12:01Z ggole: drmeister: how does it tell that you've given it a single pointer? 2014-11-28T17:12:04Z stassats left #lisp 2014-11-28T17:12:35Z drmeister: I think this means I can't switch to raw pointers. 2014-11-28T17:13:10Z tkhoa2711 quit (Quit: tkhoa2711) 2014-11-28T17:14:09Z drmeister: This is helpful. What I have now works perfectly in terms of Common Lisp semantics but I'm trying to make it more efficient. I have to make it as efficient as possible without breaking the semantics. 2014-11-28T17:14:46Z drmeister is thinking 2014-11-28T17:16:20Z genii makes more coffee 2014-11-28T17:17:28Z tharugrim quit (Ping timeout: 256 seconds) 2014-11-28T17:17:48Z tkhoa2711 joined #lisp 2014-11-28T17:18:17Z drmeister: I have a smart_ptr template class that stores a single pointer of type X* and a multiple_values template class that subclasses smart_ptr and stores a pointer of type X* and an integer that represents the number of multiple values returned. 2014-11-28T17:18:38Z tharugrim joined #lisp 2014-11-28T17:19:01Z drmeister: If I call a function like this: T_sp x = foo(...) if foo returns a T_sp there is no problem 2014-11-28T17:19:25Z drmeister: if foo returns a T_mv value then it gets sliced to a T_sp and there is no problem. 2014-11-28T17:19:47Z drmeister: If I call a function like this: T_mv x = foo(...) if foo returns a T_mv there is no problem 2014-11-28T17:20:22Z drmeister: If foo returns a T_sp value then a T_mv gets constructed from the T_sp return value with the default number of multiple-values of 1. 2014-11-28T17:20:40Z drmeister: Common Lisp calls reduce to these four cases. 2014-11-28T17:22:42Z drmeister: There are two things I could do. One is remove the integer from T_mv and put it in the multiple_values array on the stack - I think that would work with everything above. The fourth case T_mv x = T_sp foo(...), the T_mv constructor would write 1 into the multiple_values array on the stack - no big deal. 2014-11-28T17:23:08Z xrash joined #lisp 2014-11-28T17:23:35Z drmeister: That would reduce T_mv instances to 8 bytes rather than the 16 (padded to two 8-byte words) that they are now. 2014-11-28T17:24:04Z drmeister: The second optimization would be to switch to raw tagged pointers rather than template classes. 2014-11-28T17:25:04Z drmeister: I think that would break everything. There's no such thing as a constructor for a raw pointer. and the fourth case T_mv x = T_sp foo(...) will break. 2014-11-28T17:25:37Z drmeister: There is no way for the compiler to know that a T* raw pointer represents a single value or multiple values. 2014-11-28T17:25:47Z beach thinks that "raw tagged pointer" sounds like "raw cooked fish". 2014-11-28T17:29:11Z slyrus joined #lisp 2014-11-28T17:29:16Z kanru joined #lisp 2014-11-28T17:30:33Z drmeister: Well I use that term to differentiate a "raw raw pointer" (a C pointer that is aligned to 8 byte boundary) and a "raw tagged pointer" that uses the least significant two bits as a tag but is still treated by the compiled as a pointer. 2014-11-28T17:32:31Z schaueho quit (Ping timeout: 264 seconds) 2014-11-28T17:32:42Z ggole: drmeister: so how do you call unknown functions? Do they return a T_sp or a T_mv? 2014-11-28T17:32:45Z drmeister: Think C++ class/struct instance == cooked fish. "raw tagged pointer" == sashimi; "(raw) raw pointer" == live fish swimming in the ocean. 2014-11-28T17:32:56Z ggole: The latter would seem to require a wrapper for functions that return a T_sp 2014-11-28T17:33:10Z beach: drmeister: I am totally unable to think about anything related to C++, sorry! 2014-11-28T17:33:21Z MouldyOldBones quit (Ping timeout: 250 seconds) 2014-11-28T17:36:50Z drmeister will reduce everything to fishing metaphors from now on. 2014-11-28T17:37:39Z drmeister: ggole: which latter? 2014-11-28T17:37:46Z arenz quit (Ping timeout: 250 seconds) 2014-11-28T17:39:12Z ggole: Latter being "unknown functions are called as if they return a T_mv". 2014-11-28T17:42:36Z drmeister: Yes. Although in my generated code I can set the number of values returned but it will require a write to memory. It would be so much nicer if I could return two values in registers. Then I could return a pointer and a number of values. Then only in m-v calls would the caller have to look into memory to get the additional multiple values 2014-11-28T17:43:35Z beach: drmeister: So why don't you do that? 2014-11-28T17:44:21Z drmeister: Llvm has become a library for writing c and c++ compilers. C has no concept of multiple value return and so the library is deficient in that regard 2014-11-28T17:44:35Z beach: Oh. 2014-11-28T17:44:37Z ggole: You could return a small struct 2014-11-28T17:44:39Z tkhoa2711 quit (Quit: tkhoa2711) 2014-11-28T17:46:34Z drmeister: I must investigate this more. It is too good an idea 2014-11-28T17:47:44Z ehu quit (Ping timeout: 250 seconds) 2014-11-28T17:48:35Z digiorgi_ quit (Quit: Ex-Chat) 2014-11-28T17:54:54Z drmeister: Everything I read suggests that returning any kind of struct is done by passing a pointer into the function that it will write the values into. It's the "sret" parameter attribute http://llvm.org/docs/LangRef.html#parameter-attributes 2014-11-28T17:55:19Z jtza8 quit (Ping timeout: 264 seconds) 2014-11-28T17:56:27Z drmeister: It's possible that the LLVM backend will optimize an "sret" parameter to registers. 2014-11-28T17:57:11Z drmeister: This is the "building watch wearing mittens" thing. I can't get at registers directly I have to rely on LLVM optimizers and they aren't well documented. 2014-11-28T17:57:37Z drmeister: You have to look at the generated code or (shudder) the optimizer source code. 2014-11-28T17:57:45Z |3b|: does llvm do enough TCO to just CPS everything? 2014-11-28T17:58:32Z kanru quit (Ping timeout: 244 seconds) 2014-11-28T17:59:00Z drmeister: There is a tail call instruction and there is tail call optimization. I'll be generating the tail-call instructions explicitly from beach's HIR. 2014-11-28T17:59:52Z ggole: LLVM is based on SSA, which is essentially CPS with all the bits rearranged 2014-11-28T18:00:13Z drmeister: I can use both but I'm not sure what cases LLVM's TCO optimizer optimizes 2014-11-28T18:00:20Z hardened` quit (Quit: going to sleep) 2014-11-28T18:00:40Z hardenedapple quit (Quit: WeeChat 1.0.1) 2014-11-28T18:01:39Z |3b|: ggole: but does/can it handle function calls as CPS 2014-11-28T18:01:55Z drmeister: I think the way the return values is going to work is I have to set up everything as passing a pointer to memory on the stack that the result will be written into and then the LLVM optimizers may or may not optimize the memory on the stack and the pointer passed to the callee into returning the struct in registers. 2014-11-28T18:02:22Z |3b| wouldn't assume SSA implies CPS at function call level 2014-11-28T18:03:05Z |3b|: i guess full CPS might be hard to integrate with C/C++ code though 2014-11-28T18:03:27Z drmeister: If the memory is an alloca and accessing it is load(s) and store(s) then there is a pass that could optimize it to registers. Crap! I might be able to write that pass. 2014-11-28T18:03:44Z beach: I don't think it's correct that SSA and CPS are equivalent. 2014-11-28T18:03:51Z drmeister: But it's probably going to be machine dependent. 2014-11-28T18:04:23Z ggole: They are, I'll dig up Stephen Weeks' comments 2014-11-28T18:04:29Z ggole: He explains it pretty well. 2014-11-28T18:04:37Z beach: ggole: There are some very severe restrictions in there. 2014-11-28T18:04:50Z beach: ggole: For instance, that variables are not written to in CPS. 2014-11-28T18:04:54Z ggole: http://mlton.org/pipermail/mlton/2003-January/023054.html 2014-11-28T18:05:04Z ggole: Variables aren't written to in SSA either. 2014-11-28T18:05:15Z beach: Instead they are treated as if they were memory locations, and writing to them is through function calls. 2014-11-28T18:05:27Z beach: But they typically are in CPS. 2014-11-28T18:05:32Z drmeister notes that a lot of conversations on #lisp end up becoming the CPS (!,=)= SSA conversation 2014-11-28T18:05:34Z beach: Which is why they are not generally equivalent. 2014-11-28T18:05:41Z ggole: I don't think that's right. 2014-11-28T18:06:26Z beach: That's true if you use functional programming. 2014-11-28T18:07:03Z ggole: I haven't read Steele's original paper in a while, but I pretty clearly remember the treatment of assignment involving transforming it to arguments (eg, the analogue to phi instructions) 2014-11-28T18:07:28Z ggole: Which is pretty much *the entire point* of both CPS and SSA. 2014-11-28T18:08:39Z ggole: And there's a well known paper called "SSA is functional programming" or something like that which explains the correspondence in detail. 2014-11-28T18:09:06Z beach: I'll read some more and let you know what I find. 2014-11-28T18:09:53Z ggole: www.cs.princeton.edu/~appel/papers/ssafun.ps 2014-11-28T18:10:25Z beach: Thanks. I won't read it right now, because I am tired from a long day of work. 2014-11-28T18:11:45Z Vutral quit (Ping timeout: 244 seconds) 2014-11-28T18:12:18Z drmeister: Thanks ggole - I'll read that later. 2014-11-28T18:12:40Z ggole: Sure enough, Steele converts assignments. 2014-11-28T18:13:18Z drmeister: And thank you for the discussion - it cleared up some more stuff for me regarding returning multiple values. 2014-11-28T18:15:33Z jtza8 joined #lisp 2014-11-28T18:18:54Z Vutral joined #lisp 2014-11-28T18:24:12Z fragamus_ joined #lisp 2014-11-28T18:29:30Z rszeno joined #lisp 2014-11-28T18:30:03Z beach: ggole: Is there a well-established definition of CPS? 2014-11-28T18:30:20Z beach: I can't seem to find any. 2014-11-28T18:31:06Z ggole: If I had to guess, I'd say the technique in Steele's paper or some variation. 2014-11-28T18:31:11Z edgar-rft joined #lisp 2014-11-28T18:31:37Z beach: I don't mean the conversion. I mean a test to see whether a program is in CPS or not. 2014-11-28T18:31:56Z ggole: Er, no idea. 2014-11-28T18:32:07Z ggole: I guess you could write one. 2014-11-28T18:32:27Z beach: Well, that could be the source of the confusion. 2014-11-28T18:32:58Z ggole: Which confusion is that? 2014-11-28T18:33:07Z beach: If we don't have a good definition of what CPS is, then it is going to be very hard to prove that it is equivalent to SSA. 2014-11-28T18:33:27Z ggole: I don't think the definition of CPS is particularly unclear. 2014-11-28T18:33:39Z BlueRavenGT joined #lisp 2014-11-28T18:34:06Z beach: Great. 2014-11-28T18:35:52Z beach: I'll continue digging then. 2014-11-28T18:36:46Z rtra quit (Ping timeout: 265 seconds) 2014-11-28T18:37:07Z beach: Maybe I'll find out that this is going to be as interesting as the possibility that the essence of SSA is not that it is static single assignment. 2014-11-28T18:39:22Z ggole: Maybe I should have chosen mumble.net/~kelsey/papers/cps-ssa.ps.gz instead 2014-11-28T18:39:50Z beach: ggole: I'll read all of the ones you suggested. Just not right now. 2014-11-28T18:40:02Z beach: It's a great topic! 2014-11-28T18:40:08Z ggole: (It gives transformations between the two.) 2014-11-28T18:40:17Z ggole: In a rather unreadable notation. 2014-11-28T18:40:20Z beach: Oh, interesting. 2014-11-28T18:40:37Z fragamus_ quit (Quit: Computer has gone to sleep.) 2014-11-28T18:41:07Z ggole: It is, because it indicates that essentially the same idea was discovered by two independent paths 2014-11-28T18:41:34Z rtra joined #lisp 2014-11-28T18:41:35Z beach: I definitely agree that the idea is the same. 2014-11-28T18:41:50Z ggole: The trappings are interestingly different. 2014-11-28T18:42:14Z ggole: Such things are presumably fairly cultural in origin. 2014-11-28T18:42:27Z beach: Absolutely. 2014-11-28T18:42:53Z ndrei joined #lisp 2014-11-28T18:43:21Z ggole: The imperative people invented "instructions" in a peculiar form and the lambda people "expressions" in a peculiar form. 2014-11-28T18:43:31Z ggole: Hard to imagine the difference in focus was an accident. 2014-11-28T18:44:02Z beach: Hard, indeed. 2014-11-28T18:46:31Z flash- quit (Remote host closed the connection) 2014-11-28T18:47:36Z beach: My current hunch is that a CPS transformation that transforms assignments as well, will be equivalent to my Static Few Assignments form where there are no φ functions, but each incoming branch assigns to the LHS of the φ, which would then show that the essence of SSA is not static single assignment. 2014-11-28T18:47:43Z beach: But that's just a hunch. 2014-11-28T18:49:10Z beach: In any case, I find this a great example of a research topic that needs to be re-examined, because so many things about it have been taken for granted for such a long time, that it is likely that some of those things are wrong. 2014-11-28T18:49:47Z ggole: I don't see how that can possibly be the case. Of course, that will make it very interesting if so. :) 2014-11-28T18:50:00Z beach: We'll see. 2014-11-28T18:50:17Z jasom: beach: CPS is when you never return from a function 2014-11-28T18:51:16Z beach: jasom: Wow! Really! Gee, thanks! 2014-11-28T18:51:58Z matko quit (Remote host closed the connection) 2014-11-28T18:52:14Z beach: jasom: So (LOOP) is CPS? 2014-11-28T18:52:57Z beach: jasom: I am afraid I need a much more precise definition of it in order to prove whether or not it is equivalent to SSA. 2014-11-28T18:53:07Z ggole: That would end up as something like (lambda (k) (funcall k)) 2014-11-28T18:53:41Z beach: ggole: No need. According to jasom, it is already in CPS. 2014-11-28T18:55:15Z beach: ... because it never returns. 2014-11-28T18:55:24Z jewel joined #lisp 2014-11-28T18:57:13Z ggole: It's totally wrong anyway... I should stick to SSA :| 2014-11-28T18:57:39Z beach: jasom: Sorry, I am in a rotten mood today. Not your fault. 2014-11-28T18:59:46Z beach: *sigh*, so much to do and so little time. 2014-11-28T19:00:09Z Shinmera: Tell me about it. 2014-11-28T19:00:09Z minion: Shinmera, memo from stassats: QListWidgetItem is not a QObject, hence non subclassable. I never use QListWidget, but one of the views, QListView or QTreeView 2014-11-28T19:00:30Z Shinmera: Ah, that would clear that up. 2014-11-28T19:02:08Z Shinmera: minion: memo for stassats: Ah, thanks (re QListWidgetItem)! It never even crossed my mind that it wouldn't be a QObject subclass. 2014-11-28T19:02:08Z minion: Remembered. I'll tell stassats when he/she/it next speaks. 2014-11-28T19:03:37Z vi1 quit (Remote host closed the connection) 2014-11-28T19:04:41Z beach: I know why I am in a rotten mood, and it is because of the manufacturer of my bottled gas no longer has a supplier near me. But I should be happy because I am making progress on my "extrinsic SICL compiler"; extrinsic in the sense that it runs in a host Common Lisp system. 2014-11-28T19:04:55Z CrazyWoods quit (Ping timeout: 264 seconds) 2014-11-28T19:06:02Z Shinmera: Well, I'm sure you'll be able to appreciate the work you've done on other days. There's nothing wrong with being grumpy sometimes. 2014-11-28T19:06:44Z CrazyWoods joined #lisp 2014-11-28T19:07:00Z beach: Yeah, I know that when thinking about it. But that doesn't seem to help the current mood. 2014-11-28T19:07:14Z beach: But thanks for the encouragement. 2014-11-28T19:07:42Z Shinmera: Just roll with it then. Trying to better my mood never works for me, so I just let myself be until it changes again on its own. 2014-11-28T19:08:31Z bgs100 joined #lisp 2014-11-28T19:08:32Z beach: I had to smile when I entered all the functions of the SICL global environment protocol as function entries into an instance of the SICL global environment. 2014-11-28T19:10:45Z beach: ... and I also entered the instance of the SICL global environment as a variable entry into itself. 2014-11-28T19:12:11Z beach: Shinmera: Yeah, I know. I have the experience. I was basically just trying to apologize to jasom. 2014-11-28T19:14:15Z pt1 joined #lisp 2014-11-28T19:16:35Z rszeno quit (Quit: Leaving.) 2014-11-28T19:17:12Z pnpuff joined #lisp 2014-11-28T19:18:06Z Vutral quit (Excess Flood) 2014-11-28T19:19:30Z beach: Shinmera: So you use the .eu domain extension, but you are not really in the EU are you? 2014-11-28T19:20:02Z drmeister: beach: What bottled gas do you use? 2014-11-28T19:20:25Z beach: drmeister: Repsol, a Spanish company I think. 2014-11-28T19:20:39Z zacharias joined #lisp 2014-11-28T19:21:14Z beach: drmeister: The way they rip off their customers (all companies) is they regularly change the attachments so that you won't get your deposit for the first bottle back. 2014-11-28T19:22:22Z beach: drmeister: Butane, in case that was your question. 2014-11-28T19:23:04Z Vutral joined #lisp 2014-11-28T19:23:15Z Harag quit (Remote host closed the connection) 2014-11-28T19:23:30Z Harag1 joined #lisp 2014-11-28T19:23:54Z Shinmera: beach: I live in Switzerland. I originally chose .eu because everything else was already taken under better domains. 2014-11-28T19:24:02Z Shinmera: *better TLDs 2014-11-28T19:24:30Z Shinmera: And by taken I mean taken by those domain hogging firms that just put a template everywhere :/ 2014-11-28T19:24:40Z beach: Shinmera: Got it. 2014-11-28T19:26:12Z beach: Shinmera: Where in Switzerland? No need to answer if you don't want. 2014-11-28T19:26:32Z Shinmera: beach: Zürich. 2014-11-28T19:26:53Z Shinmera: beach: What brought the assumption that I am not in the EU btw? (I'm curious as to how you drew that conclusion) 2014-11-28T19:27:01Z beach: Shinmera: fe[nl]ix is or will soon be in Zürich. 2014-11-28T19:27:23Z beach: Shinmera: Japanese text. 2014-11-28T19:27:24Z Shinmera: Oh, nice 2014-11-28T19:27:49Z Shinmera: Ah, well. I'm merely studying Japanese. 2014-11-28T19:28:04Z Shinmera: I use things here and there when I stumble upon a neat word or phrase. 2014-11-28T19:28:23Z beach: That explains why your English is so good :) 2014-11-28T19:28:54Z sheilong joined #lisp 2014-11-28T19:28:54Z Shinmera: Well. I wouldn't say that. The English of a lot of my local colleagues is very lacking still! 2014-11-28T19:29:00Z beach: I have never seen a Japanese person with that good English. :) 2014-11-28T19:29:15Z jasom thought Switzerland wasn't in the EU 2014-11-28T19:29:16Z ehu joined #lisp 2014-11-28T19:29:25Z beach: jasom: You are right. 2014-11-28T19:29:27Z Shinmera: jasom: It isn't in the EU, but part of Europe. 2014-11-28T19:29:54Z beach: jasom: But it is, for all practical purposes. 2014-11-28T19:30:39Z jasom: beach: btw to be more specific, I would say in CPS all transfers of control are via a continuation; I'm used to seeing it in functional code, but I don't think it precludes assignment 2014-11-28T19:30:49Z beach: Shinmera: So what is your native language? 2014-11-28T19:31:12Z beach: jasom: Yeah, that's the sticking point. Thanks. 2014-11-28T19:31:14Z jasom: so loop isn't CPS because it has a transfer of control that isn't via a continuation 2014-11-28T19:31:37Z Harag1 quit (Remote host closed the connection) 2014-11-28T19:31:47Z Shinmera: beach: Swiss German 2014-11-28T19:31:52Z beach: jasom: Using LOOP was just a manifestation of my rotten mood. You can safely disregard it. 2014-11-28T19:31:54Z Harag joined #lisp 2014-11-28T19:32:02Z jasom: no worries 2014-11-28T19:32:06Z jasom has thick skin 2014-11-28T19:32:29Z beach thinks participating in #lisp requires thick skin. 2014-11-28T19:32:44Z alexey1 joined #lisp 2014-11-28T19:34:49Z Shinmera: beach: Re japanese: I've seen a couple of japanese people's tumblrs that seemed to have flawless English, but I've never had chat discussions with any Japanese people before, so I can't really make any call either way as to the tendency of skill. 2014-11-28T19:35:52Z jasom: I think Japanese tend to think their english is better than it really is; of course Americans are far worse at thinking they speak foreign languages better than they really do. 2014-11-28T19:36:18Z Petit_Dejeuner: What are you talking about? We're great at it. 2014-11-28T19:36:18Z Shinmera: Or their own for the matter. 2014-11-28T19:36:34Z beach: jasom: You are too hard on the Americans. 2014-11-28T19:37:57Z jasom: beach: probably; of course I am one, so I can get away with it. 2014-11-28T19:38:09Z beach: Fair enough! 2014-11-28T19:38:33Z beach: I actually had a very similar thing to say about the Swedes. :) 2014-11-28T19:39:02Z jasom: but my experience with Europeans (by which I mean almost exclusively French, German and Austrians) is that they are very humble about their English speaking ability. 2014-11-28T19:39:31Z Shinmera shudders when he has to think about his own accent. 2014-11-28T19:39:36Z beach: Maybe so. Not true for the Swedes, though. :) 2014-11-28T19:40:05Z jasom: beach: the only Swede I know has lived in the US for over a decade, so I can't really say :) 2014-11-28T19:40:12Z beach: Shinmera: I dont sink it could be zat bad. 2014-11-28T19:40:19Z jasom: she doesn't even have an accent any more 2014-11-28T19:41:07Z beach: jasom: Yeah, my wife is American, so I don't have an accent either, which is why I am so hard on my compatriots. 2014-11-28T19:42:47Z beach: But I assume you know this: she is the translator of Lisp in Small Pieces from French to English. 2014-11-28T19:42:58Z Shinmera: beach: http://shinmera.tymoon.eu/public/idk-beach.mp3 2014-11-28T19:43:14Z beach: Uh oh. 2014-11-28T19:43:17Z wheelsucker quit (Quit: Client Quit) 2014-11-28T19:43:26Z jasom: beach: oh wow, well thank her for me, as I don't know any french, and I doubt my wife would help me work through that book. 2014-11-28T19:43:39Z Nechradile joined #lisp 2014-11-28T19:44:08Z Shinmera shudders even more when he has to think about his accent in French 2014-11-28T19:44:19Z beach: Shinmera: What is that mp3? 2014-11-28T19:44:47Z Shinmera: beach: a recording of my voice saying "I don't know, beach, but it could be pretty bad." 2014-11-28T19:45:13Z beach: Shinmera: It sounded like a speech synthesizer. 2014-11-28T19:45:38Z Shinmera: Well, that's the first I heard that. 2014-11-28T19:46:17Z beach: Must have been pretty good then :) 2014-11-28T19:46:41Z Shinmera: I would say the contrary, but alright. 2014-11-28T19:47:33Z beach: jasom: Frequently, when people ask about that book, I say that the English version is better than the original. Now you can be in on the joke. 2014-11-28T19:48:05Z beach: Shinmera: No, I meant that. 2014-11-28T19:48:53Z beach: Shinmera: My German accent is probably acceptable, but my vocabulary sucks at this point. 2014-11-28T19:49:45Z Shinmera: beach: I wish I remembered even half of the French I learned during high school. 2014-11-28T19:52:46Z H4ns: Shinmera: it just took a little decoration: https://soundcloud.com/user3178467/lisp-language-sample 2014-11-28T19:53:27Z Shinmera: Oh gods 2014-11-28T19:53:32Z H4ns: hah 2014-11-28T19:54:44Z Shinmera turns red due to excessive laughing and embarrassment 2014-11-28T19:57:22Z slyrus quit (Ping timeout: 244 seconds) 2014-11-28T19:58:07Z H4ns: your sample came just right for me to toy around with 2014-11-28T19:58:13Z H4ns: and it is freakin original 2014-11-28T19:59:12Z Shinmera: H4ns: if you want an even more original sample in which I talk a bit of Swiss German: http://shinmera.tymoon.eu/public/swiss%20german.mp3 2014-11-28T19:59:14Z Shinmera: Anyway 2014-11-28T19:59:40Z beach: Interesting discussion, but I need some sleep. 2014-11-28T19:59:45Z beach left #lisp 2014-11-28T19:59:59Z H4ns has landed firmly in off-topic land 2014-11-28T20:00:02Z H4ns: *blush* 2014-11-28T20:00:18Z Shinmera: on more lispy topics, I realised today that in order to support all the different compositing modes with framebuffers in Parasol I need to implement some shaders. Does anyone have good resources for starting with that? 2014-11-28T20:00:19Z Harag quit (Remote host closed the connection) 2014-11-28T20:00:59Z Shinmera: I'm seeing a shader example in cl-opengl, but I was wondering if there were perhaps more in-depth resources related to that 2014-11-28T20:01:07Z Mon_Ouie quit (Quit: WeeChat 1.0.1) 2014-11-28T20:01:50Z Shinmera: Or even a library to wrap over that in a more lisp-like manner 2014-11-28T20:02:01Z ndrei quit (Ping timeout: 244 seconds) 2014-11-28T20:02:29Z slyrus joined #lisp 2014-11-28T20:02:45Z tokenrove: Shinmera: a good set of macros for generating glsl as well as keeping track of the locations would be ideal, but i don't have one yet. 2014-11-28T20:03:26Z Shinmera: I though I had heard of an effort to write a cl sub-language that translates to GLSL 2014-11-28T20:03:29Z Shinmera: *thought 2014-11-28T20:03:34Z |3b|: there are a few 2014-11-28T20:03:44Z tokenrove: surely someone else has done it by now. it's on my to-do list but i'm not hacking lisp right now so it has to wait. 2014-11-28T20:04:07Z Shinmera: |3b|: Any that are worth anything? 2014-11-28T20:04:09Z |3b| uses https://github.com/3b/3bgl-shader but not sure i'd call it 'done' yet 2014-11-28T20:04:41Z stacksmith quit (Ping timeout: 264 seconds) 2014-11-28T20:04:53Z |3b|: https://github.com/cbaggers/varjo is another 2014-11-28T20:04:56Z Fade: the guy working on CEPL was doing some stuff with shaders. 2014-11-28T20:04:58Z Shinmera: I'm probably not going to do anything fancy; just some blending stuff to get the modes I can't just get with glBlendFunc. 2014-11-28T20:05:14Z |3b| thinks there is/was a third, but can't remember who 2014-11-28T20:05:27Z Shinmera: Alright, I'll take a look at those. Thanks! 2014-11-28T20:06:47Z Shinmera: I was initially hoping I could exploit the work Qt had already done in its painting engines to get the blending done, but apparently I can't call the setup for those when I'm doing native painting, which I have to do in order to get the framebuffers across. 2014-11-28T20:07:23Z |3b| needs to generate code more... managed to mess up a function that just needed to multiply variables r0 .. r8 by t0 .. t8 and store the result in location 0 .. 8, got wrong variables twice :/ 2014-11-28T20:07:23Z Shinmera sighs 2014-11-28T20:08:12Z ejbs: As a Swede I can confirm that we are overly confident in our English speaking abilities, and other languages for that matter 2014-11-28T20:08:41Z Shinmera: While I'm rambling on the topic: It seems nvidia has introduced some new glBlendFunc properties that would do exactly what I need, but obviously those are nvidia specific and even then only available on recent cards. 2014-11-28T20:08:51Z |3b| finally seems to have reasonable looking output for my 2d FFTs now at least 2014-11-28T20:08:57Z Shinmera: So I can't just do that either :( 2014-11-28T20:09:39Z |3b|: now i just need IFFT and put everything together, then extend it all to 3d :p 2014-11-28T20:10:36Z |3b|: then try to avoid reimplementing the whole thing for performance :/ 2014-11-28T20:11:32Z pt1 quit (Remote host closed the connection) 2014-11-28T20:12:00Z stacksmith joined #lisp 2014-11-28T20:13:29Z Vutral quit (Ping timeout: 272 seconds) 2014-11-28T20:16:31Z vinleod quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-11-28T20:17:44Z houshuang joined #lisp 2014-11-28T20:18:15Z houshuang quit (Client Quit) 2014-11-28T20:18:24Z ejbs` joined #lisp 2014-11-28T20:18:47Z ejbs` quit (Remote host closed the connection) 2014-11-28T20:20:24Z ejbs quit (Ping timeout: 245 seconds) 2014-11-28T20:22:40Z pt1 joined #lisp 2014-11-28T20:23:14Z pt1 quit (Remote host closed the connection) 2014-11-28T20:32:16Z ggole quit 2014-11-28T20:33:35Z zyaku joined #lisp 2014-11-28T20:34:37Z oleo quit (Remote host closed the connection) 2014-11-28T20:36:14Z thawes joined #lisp 2014-11-28T20:36:33Z Cymew joined #lisp 2014-11-28T20:38:40Z oleo joined #lisp 2014-11-28T20:40:30Z munksgaard joined #lisp 2014-11-28T20:43:30Z Vutral joined #lisp 2014-11-28T20:45:15Z alexey1 quit (Remote host closed the connection) 2014-11-28T20:46:05Z attila_lendvai joined #lisp 2014-11-28T20:46:05Z attila_lendvai quit (Changing host) 2014-11-28T20:46:05Z attila_lendvai joined #lisp 2014-11-28T20:46:15Z Harag joined #lisp 2014-11-28T20:46:27Z alexey1 joined #lisp 2014-11-28T20:48:05Z zeroish joined #lisp 2014-11-28T20:49:54Z doki-worry joined #lisp 2014-11-28T20:50:22Z a20141128 joined #lisp 2014-11-28T20:50:39Z Harag quit (Ping timeout: 265 seconds) 2014-11-28T20:51:34Z hiroaki joined #lisp 2014-11-28T20:51:37Z Cymew quit (Ping timeout: 240 seconds) 2014-11-28T20:52:32Z Harag joined #lisp 2014-11-28T20:55:01Z k-stz joined #lisp 2014-11-28T21:02:37Z scymtym_ joined #lisp 2014-11-28T21:05:03Z drewc missed the conversation about accents. Aigu, grave, circonflexe.... tréma et cédille... 2014-11-28T21:06:30Z kushal quit (Quit: Leaving) 2014-11-28T21:06:32Z sheilong quit (Quit: Konversation terminated!) 2014-11-28T21:09:57Z doki-worry quit (Ping timeout: 240 seconds) 2014-11-28T21:11:15Z thawes quit (Ping timeout: 244 seconds) 2014-11-28T21:12:47Z hiroaki quit (Ping timeout: 255 seconds) 2014-11-28T21:15:43Z wglb quit (Ping timeout: 264 seconds) 2014-11-28T21:16:09Z Harag quit (Read error: Connection reset by peer) 2014-11-28T21:16:35Z Petit_Dejeuner_ joined #lisp 2014-11-28T21:16:45Z ndrei joined #lisp 2014-11-28T21:17:33Z jumblerg joined #lisp 2014-11-28T21:17:45Z Jesin joined #lisp 2014-11-28T21:17:53Z Petit_Dejeuner quit (Ping timeout: 264 seconds) 2014-11-28T21:18:01Z thawes joined #lisp 2014-11-28T21:19:28Z pyx joined #lisp 2014-11-28T21:19:59Z pyx quit (Client Quit) 2014-11-28T21:21:24Z xrash quit (Ping timeout: 240 seconds) 2014-11-28T21:22:14Z LiamH quit (Quit: Leaving.) 2014-11-28T21:24:02Z zeitue quit (Quit: Leaving) 2014-11-28T21:26:10Z milosn quit (Quit: Lost terminal) 2014-11-28T21:26:12Z xrash joined #lisp 2014-11-28T21:26:14Z Khisanth quit (Ping timeout: 256 seconds) 2014-11-28T21:27:24Z Khisanth joined #lisp 2014-11-28T21:27:31Z innertracks quit (Quit: innertracks) 2014-11-28T21:27:55Z Harag joined #lisp 2014-11-28T21:30:51Z innertracks joined #lisp 2014-11-28T21:30:55Z alexey1 quit (Remote host closed the connection) 2014-11-28T21:31:41Z thawes quit (Ping timeout: 255 seconds) 2014-11-28T21:32:15Z innertracks quit (Client Quit) 2014-11-28T21:39:42Z Petit_Dejeuner_ quit (Ping timeout: 258 seconds) 2014-11-28T21:40:20Z thawes joined #lisp 2014-11-28T21:40:53Z xrash quit (Ping timeout: 272 seconds) 2014-11-28T21:45:12Z xrash joined #lisp 2014-11-28T21:47:04Z tharugrim quit (Remote host closed the connection) 2014-11-28T21:47:26Z Petit_Dejeuner joined #lisp 2014-11-28T21:51:53Z Harag quit (Ping timeout: 240 seconds) 2014-11-28T21:53:17Z thawes quit (Ping timeout: 240 seconds) 2014-11-28T21:53:30Z dfox quit (Ping timeout: 258 seconds) 2014-11-28T21:54:43Z scymtym_ quit (Ping timeout: 264 seconds) 2014-11-28T21:54:52Z pullphinger joined #lisp 2014-11-28T21:57:50Z xrash quit (Ping timeout: 265 seconds) 2014-11-28T21:58:45Z jtza8 quit (Remote host closed the connection) 2014-11-28T22:00:09Z dfox joined #lisp 2014-11-28T22:01:49Z genii quit (Read error: Connection reset by peer) 2014-11-28T22:02:13Z xrash joined #lisp 2014-11-28T22:02:34Z pnpuff quit (Quit: Lost terminal) 2014-11-28T22:08:17Z stepnem quit (Ping timeout: 264 seconds) 2014-11-28T22:08:45Z k-stz quit (Remote host closed the connection) 2014-11-28T22:10:06Z Guest14316 joined #lisp 2014-11-28T22:11:13Z mishoo quit (Ping timeout: 255 seconds) 2014-11-28T22:13:57Z Nechradile quit (Quit: Leaving.) 2014-11-28T22:14:49Z fantazo quit (Quit: Verlassend) 2014-11-28T22:15:44Z Nechradile joined #lisp 2014-11-28T22:15:51Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:17:09Z Nechradile joined #lisp 2014-11-28T22:17:16Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:18:52Z zyaku quit (Ping timeout: 255 seconds) 2014-11-28T22:19:00Z gingerale quit (Ping timeout: 250 seconds) 2014-11-28T22:19:23Z Nechradile joined #lisp 2014-11-28T22:19:29Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:20:14Z Nechradile joined #lisp 2014-11-28T22:20:20Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:21:39Z Nechradile joined #lisp 2014-11-28T22:21:45Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:22:44Z Nechradile joined #lisp 2014-11-28T22:22:50Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:24:41Z Nechradile joined #lisp 2014-11-28T22:24:47Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:25:51Z BlueRavenGT quit (Ping timeout: 272 seconds) 2014-11-28T22:26:26Z pullphinger quit 2014-11-28T22:26:29Z vinleod joined #lisp 2014-11-28T22:26:56Z Nechradile joined #lisp 2014-11-28T22:27:02Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:27:46Z Nechradile joined #lisp 2014-11-28T22:27:52Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:28:13Z theseb quit (Remote host closed the connection) 2014-11-28T22:29:29Z EvW joined #lisp 2014-11-28T22:30:06Z Nechradile joined #lisp 2014-11-28T22:30:12Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:31:58Z prxq joined #lisp 2014-11-28T22:31:59Z Nechradile joined #lisp 2014-11-28T22:32:05Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:32:17Z blahzik joined #lisp 2014-11-28T22:33:54Z Nechradile joined #lisp 2014-11-28T22:34:00Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:35:50Z Nechradile joined #lisp 2014-11-28T22:35:56Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:36:15Z prxq quit (Client Quit) 2014-11-28T22:36:35Z Nechradile joined #lisp 2014-11-28T22:36:41Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:37:43Z Nechradile joined #lisp 2014-11-28T22:37:51Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:38:26Z Nechradile joined #lisp 2014-11-28T22:38:34Z Nechradile quit (Max SendQ exceeded) 2014-11-28T22:39:45Z corni quit (Quit: Ex-Chat) 2014-11-28T22:46:54Z JuanDaugherty quit (Quit: Hibernate, etc.) 2014-11-28T22:47:16Z JuanDaugherty joined #lisp 2014-11-28T22:51:29Z pecg quit (Quit: WeeChat 1.0.1) 2014-11-28T22:52:22Z Ethan- joined #lisp 2014-11-28T22:58:40Z pnpuff joined #lisp 2014-11-28T23:00:10Z Beetny joined #lisp 2014-11-28T23:17:22Z antonv quit (Ping timeout: 255 seconds) 2014-11-28T23:18:27Z mrSpec quit (Remote host closed the connection) 2014-11-28T23:22:29Z tesuji quit (Ping timeout: 244 seconds) 2014-11-28T23:28:05Z Shinmera quit (Quit: しつれいしなければならないんです。) 2014-11-28T23:28:33Z xrash quit (Ping timeout: 272 seconds) 2014-11-28T23:28:33Z BitPuffin quit (Ping timeout: 272 seconds) 2014-11-28T23:31:28Z CrazyWoods quit (Quit: leaving) 2014-11-28T23:32:02Z milesrout joined #lisp 2014-11-28T23:33:32Z attila_lendvai quit (Ping timeout: 265 seconds) 2014-11-28T23:37:02Z Karl_Dscc quit (Remote host closed the connection) 2014-11-28T23:38:43Z Lowl3v3l_ quit (Read error: Connection reset by peer) 2014-11-28T23:40:06Z zyaku joined #lisp 2014-11-28T23:48:30Z zyaku quit (Ping timeout: 258 seconds) 2014-11-28T23:49:50Z kcj joined #lisp 2014-11-28T23:54:51Z theseb joined #lisp