2014-12-13T00:01:01Z gabriel_laddel quit (Ping timeout: 255 seconds) 2014-12-13T00:01:04Z tcr quit (Quit: Leaving.) 2014-12-13T00:01:08Z CrazyEddy quit (Read error: Connection reset by peer) 2014-12-13T00:03:27Z rizzonx_ left #lisp 2014-12-13T00:04:11Z nand1 quit (Remote host closed the connection) 2014-12-13T00:04:22Z BAMbanda joined #lisp 2014-12-13T00:09:48Z nand1 joined #lisp 2014-12-13T00:10:29Z s00pcan quit (Remote host closed the connection) 2014-12-13T00:11:00Z s00pcan joined #lisp 2014-12-13T00:12:14Z s00pcan_ joined #lisp 2014-12-13T00:12:52Z s00pcan quit (Client Quit) 2014-12-13T00:12:56Z isis_ quit (Ping timeout: 244 seconds) 2014-12-13T00:12:56Z s00pcan_ quit (Remote host closed the connection) 2014-12-13T00:13:13Z s00pcan joined #lisp 2014-12-13T00:13:13Z didi joined #lisp 2014-12-13T00:13:39Z s00pcan_ joined #lisp 2014-12-13T00:14:45Z didi: I am thinking of using `sxhash' in a binary search tree implementation so elements can have an order. Is it a bad idea? 2014-12-13T00:14:54Z Jesin joined #lisp 2014-12-13T00:15:17Z |3b|: clhs sxhash 2014-12-13T00:15:18Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_sxhash.htm 2014-12-13T00:16:03Z goglosh quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-12-13T00:16:35Z Bike: i guess you need some order for when there's a collision 2014-12-13T00:17:04Z stacksmith: can a macro contain more than one `(...) form? 2014-12-13T00:17:16Z Bike: yes 2014-12-13T00:17:21Z Bike: ` is just a reader thing, nothing special 2014-12-13T00:17:21Z |3b|: a macro can 'contain' anything it wants, but it can only return 1 form 2014-12-13T00:17:28Z Bike: macros can only return one form, though, you might need a progn 2014-12-13T00:17:45Z stacksmith: Thanks 2014-12-13T00:18:04Z didi: Bike: If there is a collision, I think I can use a compare function other than `='. 2014-12-13T00:18:15Z Bike: No, for the order I mean. 2014-12-13T00:18:35Z didi: For the other, I want to use `sxhash'. 2014-12-13T00:18:42Z didi: s/other/order 2014-12-13T00:18:44Z BAMbanda quit (Quit: leaving) 2014-12-13T00:18:46Z Bike: that's... what i'm talking about? 2014-12-13T00:18:52Z Bike: sxhash will have collisions. 2014-12-13T00:18:53Z didi: Cool. 2014-12-13T00:19:15Z Bike: So you'll have a situation with two objects a and b and they'll have the same hash and you'll need to sort them anyway. 2014-12-13T00:19:28Z didi: `<='? 2014-12-13T00:20:13Z Bike: I don't think having two equal elements works for a bst 2014-12-13T00:22:27Z didi: No? Hum. You stop if `=' and `compare-p', left if `<=', right if `>'. 2014-12-13T00:22:28Z jasom: didi: if you need a full ordering than sxhash is not useful 2014-12-13T00:22:44Z Bike: didi: Okay but what about = and NOT compare-p. 2014-12-13T00:22:49Z Bike: that's what i'm asking. 2014-12-13T00:23:13Z jasom: didi: in general there is no portable way to get a full ordering of symbols unless you keep track of every symbol you've seen either by adding a property or putting them in a hash-table 2014-12-13T00:23:13Z didi: Bike: You go left. 2014-12-13T00:23:34Z didi: jasom: Oh, bummer. 2014-12-13T00:23:46Z Bike: so your BST decays to linear search. 2014-12-13T00:23:50Z Bike: i mean, that's okay if that's okay. 2014-12-13T00:24:02Z jasom: didi: I've implemented critbit tries in lisp, and ended up not supporting symbols because of this 2014-12-13T00:24:11Z didi: Bike: Sorta. If there isn't too much colision. 2014-12-13T00:24:15Z didi: collision* 2014-12-13T00:24:24Z didi: jasom: I see. 2014-12-13T00:24:30Z Bike: jasom: wait, can you not just string< the packages and names? or do you have uninterned symbols 2014-12-13T00:24:39Z jasom: you can use symbol-name and symbol-package to mostly work 2014-12-13T00:24:47Z jasom: but uninterned symbols are a problem 2014-12-13T00:24:52Z Bike: mm 2014-12-13T00:25:20Z jasom: or even apparently uninterned symbols 2014-12-13T00:25:43Z jasom: also if a symbol gets uninterned, you can even have false searches 2014-12-13T00:25:52Z jasom: symbol-name is the only safe thing to compare 2014-12-13T00:26:21Z genii quit (Read error: Connection reset by peer) 2014-12-13T00:27:12Z jasom: and it would be possible to use just symbol-name and then have a hash-table of every colliding symbol that you store the value to be a counter 2014-12-13T00:27:32Z jasom: but a linear search is likely faster than a hash-table for real-world cases 2014-12-13T00:27:40Z nikki93 quit (Remote host closed the connection) 2014-12-13T00:27:57Z jasom doesn't remember the last time he had more than 6 symbols with the same name as keys in an associative structure 2014-12-13T00:29:18Z didi: So if I can't use `sxhash', I am back to square 1, trying to implement this generic BST. 2014-12-13T00:29:22Z CrazyEddy joined #lisp 2014-12-13T00:29:46Z sol__ quit (Ping timeout: 244 seconds) 2014-12-13T00:29:58Z didi: jasom: What about conses? 2014-12-13T00:30:49Z jasom: didi: you can allow lists as keys so long as you consider keys to be identical under equal 2014-12-13T00:31:28Z didi: jasom: Uh, cool. This is my scenario at the moment. 2014-12-13T00:31:45Z jasom: didi: then you just can compare item by item 2014-12-13T00:32:33Z didi: jasom: My goal is to have an efficient set. 2014-12-13T00:33:25Z jasom: didi: binary trees are problematic for that, as maintaining balance can be expensive 2014-12-13T00:33:26Z didi: (member? (insert set (list 1 2 3)) (list 1 2 3)) => t 2014-12-13T00:33:33Z attila_lendvai quit (Quit: Leaving.) 2014-12-13T00:33:49Z didi: jasom: Well, I am thinking of red black trees, but I don't know them yet, so I avoided mentioning it. 2014-12-13T00:34:13Z jasom: didi: is this for didactic purposes? 2014-12-13T00:34:20Z didi: jasom: Yeap. 2014-12-13T00:34:25Z jasom: cool 2014-12-13T00:34:34Z didi: :-) 2014-12-13T00:34:49Z antonv quit (Ping timeout: 245 seconds) 2014-12-13T00:35:09Z jasom: was going to say that you'd have a hard time beating the built-in hash-table otherwise, but implementing tree-like associative types is useful as a learning experience 2014-12-13T00:35:34Z didi: jasom: Yeah, I figured. 2014-12-13T00:35:44Z jasom: which reminds me, djb pointed me at a paper that I need to read for making crit-bit trees more cache friendly 2014-12-13T00:36:09Z ROBcorp joined #lisp 2014-12-13T00:37:39Z wzsk quit (Read error: Connection reset by peer) 2014-12-13T00:38:37Z robot-beethoven joined #lisp 2014-12-13T00:40:40Z ROBcorp quit (Ping timeout: 250 seconds) 2014-12-13T00:43:11Z hazz quit (Ping timeout: 258 seconds) 2014-12-13T00:44:59Z defaultxr joined #lisp 2014-12-13T00:45:57Z pjb: didi: by default, I wouldn't trust implementations' sxhash. 2014-12-13T00:46:49Z jusss joined #lisp 2014-12-13T00:46:50Z jasom: didi: in practice, I find that hash tables are better for general-purpose associative containers, and trees are better for associative containers with homogenous key types 2014-12-13T00:46:51Z tcr joined #lisp 2014-12-13T00:47:30Z jasom: for example, you might wnt to enumerate all keys in-order if they were strings or numbers, but the odering is not-meaningful for heterogenous key-types 2014-12-13T00:48:32Z jasom: I like Trie type containers for ease of implementation; you might consider trying that before doing balanced binary trees 2014-12-13T00:49:17Z __prefect joined #lisp 2014-12-13T00:49:22Z jasom: hash tables take more work to avoid nasty corner-case behaviors (though it's a solved problem, so isn't a reason to not use a mature hash-table implementation) 2014-12-13T00:50:17Z didi: jasom: I am thinking in a set which has only one type, but extracting a key from an element is the problem. 2014-12-13T00:50:20Z jasom: the other place is when you are concerned about malicious inputs causing denial of service; a good trie will have the same asymptotic behavior of a hash-table and be more compact 2014-12-13T00:51:22Z didi: pjb: Why not? 2014-12-13T00:52:13Z nha_ quit (Ping timeout: 265 seconds) 2014-12-13T00:53:29Z didi: jasom: A Trie needs an element which is a composition of a more fundamental element, doesn't it? Like a string, which is a vector of characters. 2014-12-13T00:53:56Z jasom: didi: not necessarily 2014-12-13T00:54:30Z jasom: didi: a crit-bit trie, for example, only requires a mapping from the element to a unique sequence of bits 2014-12-13T00:55:23Z pppp2 quit (Read error: Connection reset by peer) 2014-12-13T00:55:31Z jasom: and anything serializeable to a string could be stored in a structure that uses strings as keys anyway 2014-12-13T00:55:39Z jasom: (though that's likely inefficient) 2014-12-13T00:56:02Z didi: jasom: Thank you. I am going to search for it. 2014-12-13T00:56:22Z karswell quit (Ping timeout: 255 seconds) 2014-12-13T00:56:24Z jasom: didi: the simplest trie though would be a 256 fanout byte trie 2014-12-13T00:56:46Z meiji11 joined #lisp 2014-12-13T00:56:52Z jasom: just implemented with each node having a 256 element vector that contains child nodes 2014-12-13T00:57:03Z jasom: very space inefficient, but quick to code up 2014-12-13T00:58:53Z hazz joined #lisp 2014-12-13T01:01:48Z bgs100 joined #lisp 2014-12-13T01:05:05Z hazz quit (Ping timeout: 272 seconds) 2014-12-13T01:05:08Z bgs100 quit (Client Quit) 2014-12-13T01:05:57Z didi: jasom: Uh, this crit-bit can be used as a heap which has an efficient membership function? 2014-12-13T01:06:55Z kcj joined #lisp 2014-12-13T01:07:07Z Xach feels bad for poor patricia 2014-12-13T01:10:09Z bgs100 joined #lisp 2014-12-13T01:12:15Z tcr quit (Quit: Leaving.) 2014-12-13T01:20:02Z jasom: didi: I wouldn't call it a heap at all; a heap usually stores elements in internal nodes, a crit-bit only stores element in leaf nodes 2014-12-13T01:20:53Z didi: jasom: oic. I misread then. 2014-12-13T01:21:16Z didi: I saw Xach's patricia tho. 2014-12-13T01:23:38Z ghoul quit 2014-12-13T01:25:26Z innertracks joined #lisp 2014-12-13T01:26:40Z zRecursive joined #lisp 2014-12-13T01:32:11Z nand1 quit (Remote host closed the connection) 2014-12-13T01:32:40Z REPLeffect quit (Ping timeout: 250 seconds) 2014-12-13T01:36:08Z nand1 joined #lisp 2014-12-13T01:37:06Z araujo quit (Read error: Connection reset by peer) 2014-12-13T01:37:57Z araujo joined #lisp 2014-12-13T01:43:17Z joneshf-laptop joined #lisp 2014-12-13T01:43:23Z rc- joined #lisp 2014-12-13T01:44:50Z rx_ joined #lisp 2014-12-13T01:45:45Z didi quit (Quit: you can't /fire me, I /quit) 2014-12-13T01:47:12Z oudeis quit (Read error: Connection reset by peer) 2014-12-13T01:49:55Z oudeis joined #lisp 2014-12-13T01:53:27Z stacksmith: Friends, I have a macro that expands its &body. When the body contains another macro, shouldn't (macroexpand...) show the full expansion, including the inner macro expansion? 2014-12-13T01:54:07Z pjb: dim: I've seen implementations begin careless with sxhash, eg. returning an address when all adresses are equal modulo 4 or 8, which makes very bad hash values. 2014-12-13T01:54:29Z jasom: stacksmith: no 2014-12-13T01:54:37Z pjb: dim: also, on strings or vectors, they may use too little data to compute the hash from. 2014-12-13T01:54:44Z White_Flame: stacksmith: you can consider it as executing the macro you gave 2014-12-13T01:55:02Z White_Flame: so you can see & debug exactly what that macro returned 2014-12-13T01:55:17Z stacksmith: Is there a way to see the full expansion? 2014-12-13T01:55:42Z White_Flame: I tend to do it interactively under SLIME 2014-12-13T01:55:58Z stacksmith: White_Flame, how? 2014-12-13T01:56:08Z White_Flame: C-c Return 2014-12-13T01:56:27Z jasom: C-c m 2014-12-13T01:56:31Z jasom: er C-c C-m 2014-12-13T01:56:47Z towodo quit (Quit: towodo) 2014-12-13T01:57:14Z jasom: or C-c M-m for fully expanding at one point 2014-12-13T01:58:44Z hazz joined #lisp 2014-12-13T02:00:16Z stacksmith: Argh. My real issue is this: the top macro binds the variable and expands &body. The body may contain other macros that should see the binding - I hope. It comes up as nil, and I am having trouble debugging... 2014-12-13T02:00:44Z White_Flame: the macros expand at effectively compile-time 2014-12-13T02:00:48Z White_Flame: the bindings run at runtime 2014-12-13T02:01:23Z White_Flame: there's probably a better way to organize your code 2014-12-13T02:02:28Z stacksmith: And I thought I understood... I was shooting for what I thought was a simple anaphor. 2014-12-13T02:03:15Z White_Flame: what are you trying to do? 2014-12-13T02:03:40Z tadni quit (Remote host closed the connection) 2014-12-13T02:04:23Z stacksmith: FPGAsm, a DSL for generating XDL code for Xilinx FPGAs. 2014-12-13T02:04:38Z tadni joined #lisp 2014-12-13T02:04:51Z stacksmith: I have a macro that creates a data object, then expands its body which may contain other macros referring to the object. 2014-12-13T02:06:31Z stacksmith: So the top macro expands a (let ((my ..data-object..)) &body), basically. I was assuming inner macros have access to my 2014-12-13T02:07:03Z White_Flame: do your macros need access to that, or can they just emit runtime code that groks it? 2014-12-13T02:07:58Z White_Flame: This is also why most of my non-trivial DSLs end up as data which functions break down, instead of nested macros 2014-12-13T02:08:33Z White_Flame: That, and the ability to look at the context of peers, not just parents 2014-12-13T02:08:51Z oudeis quit (Quit: This computer has gone to sleep) 2014-12-13T02:09:12Z stacksmith: Yeah, I did that first, using macros just to avoid evaluation and sweeten the syntax (and just create objects at compile time), but then I thought I could incorporate more of Lisp by being smarter. 2014-12-13T02:09:16Z hazz quit (Ping timeout: 255 seconds) 2014-12-13T02:09:45Z stacksmith: Also to avoid eval 2014-12-13T02:10:10Z zRecursive quit (Remote host closed the connection) 2014-12-13T02:10:12Z quazimodo quit (Ping timeout: 258 seconds) 2014-12-13T02:10:21Z REPLeffect joined #lisp 2014-12-13T02:10:22Z White_Flame: if you're truly doing runtime code loading, eval might be the proper tool 2014-12-13T02:10:29Z zRecursive joined #lisp 2014-12-13T02:11:54Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-12-13T02:12:19Z stacksmith: Seemed wrong - I was evaling instead of letting the macro expand. But now I am somewhat confused by the inner macros not having access to the binding around it... 2014-12-13T02:12:28Z towodo joined #lisp 2014-12-13T02:12:50Z White_Flame: Your top level macro runs, and exits, returning a source code block 2014-12-13T02:12:58Z White_Flame: As the _compiler_ processes that, it finds another macro, then expands that 2014-12-13T02:13:06Z White_Flame: the 'let' has never been executed 2014-12-13T02:14:10Z White_Flame: it will only execute after all macros have been expanded, the final source has been compiled, then it gets called by something at runtime 2014-12-13T02:16:39Z stacksmith: I thought I was just expanding. Top macro expands to (let ((my ..object)) body). Let's say body is (foo) which is a (defmacro foo () `(print my)). Shouldn't the whole thing expand to (let ((my ..data..)) (print my))? 2014-12-13T02:17:02Z White_Flame: top macro returns (let ((my ...object)) (foo)) 2014-12-13T02:17:50Z White_Flame: then foo, independent of any of the other *source code* that the top macro returned, expands to (print my) 2014-12-13T02:18:02Z |3b|: it sounds like you want a proper code walker, though you might be able to get away with some of the tricks for passing state to nested macros (like macroexpanding symbol macros) 2014-12-13T02:18:10Z White_Flame: wait, are you saying that (let ((my ...)) (print my)) isn't working? 2014-12-13T02:18:19Z White_Flame: I though your macro code itself wanted to see the let binding 2014-12-13T02:18:49Z White_Flame: If your nested macro just returns source code which references the outer bindings, then it should all work 2014-12-13T02:19:05Z jusss: is there a easy way to understand the lambda calculus ? 2014-12-13T02:19:26Z stacksmith: The inner macro needs to add data to my... I may have a stupid bug, which is why I was trying to macroexpand the whole expression... 2014-12-13T02:19:42Z White_Flame: can you post the source code? 2014-12-13T02:21:08Z |3b|: for debugging you might see if your implementation has a MACROEXPAND-ALL (in sb-cltl2 in sbcl for example). I usually just do it by hand with C-c ret in slime though (it works on subforms in the expansion buffer, so you can keep expanding parts) 2014-12-13T02:21:39Z stacksmith: It's pretty messy and probably won't help to post it right now, spanning many files and in the middle of restructuring.... 2014-12-13T02:21:54Z White_Flame: ok 2014-12-13T02:22:34Z Kanae joined #lisp 2014-12-13T02:23:04Z stacksmith: But the example above should work. I do a little more, parsing and accessing parts of my, but it really should work. 2014-12-13T02:23:39Z stacksmith: |3b|, do i sb-cltl2:macroexpand all '(...)? 2014-12-13T02:24:05Z |3b|: you missed a - but i think so 2014-12-13T02:24:22Z stacksmith: right. 2014-12-13T02:24:56Z |3b|: macroexpand just repeatedly tries to expand the whole form, not anything inside it 2014-12-13T02:25:20Z |3b|: so if it expands to another macro call, that would get expanded, but it doesn't walk the whole form 2014-12-13T02:25:39Z |3b|: macroexpand-all tries to walk whole form 2014-12-13T02:26:45Z cmack` quit (Ping timeout: 250 seconds) 2014-12-13T02:26:47Z kristof joined #lisp 2014-12-13T02:27:06Z stacksmith: |3b|, I think that's what I was looking for. I have to turn on my oxygen machine and try to clean this up - I think I am missing a ` or a , somewhere. 2014-12-13T02:28:03Z stacksmith: White_Flame, Jasom, |3b|, thanks for your help. 2014-12-13T02:33:15Z EvW quit (Ping timeout: 244 seconds) 2014-12-13T02:33:50Z araujo quit (Quit: Leaving) 2014-12-13T02:39:35Z nikki93 joined #lisp 2014-12-13T02:39:35Z quazimodo joined #lisp 2014-12-13T02:40:43Z tadni quit (Remote host closed the connection) 2014-12-13T02:41:31Z theseb joined #lisp 2014-12-13T02:41:41Z tadni joined #lisp 2014-12-13T02:42:18Z theseb quit (Client Quit) 2014-12-13T02:42:32Z theseb joined #lisp 2014-12-13T02:45:45Z theseb quit (Client Quit) 2014-12-13T02:46:04Z theseb joined #lisp 2014-12-13T02:46:41Z theseb quit (Client Quit) 2014-12-13T02:46:59Z theseb joined #lisp 2014-12-13T02:52:22Z k-dawg joined #lisp 2014-12-13T02:54:44Z theseb quit (Quit: Leaving) 2014-12-13T02:56:32Z theseb joined #lisp 2014-12-13T02:57:02Z oleo is now known as Guest13883 2014-12-13T02:58:43Z wbooze quit (Ping timeout: 246 seconds) 2014-12-13T02:58:44Z oleo__ joined #lisp 2014-12-13T03:00:14Z Guest13883 quit (Ping timeout: 245 seconds) 2014-12-13T03:00:33Z tadni quit (Remote host closed the connection) 2014-12-13T03:04:32Z loke quit (Ping timeout: 250 seconds) 2014-12-13T03:05:10Z ahungry quit (Quit: Lost terminal) 2014-12-13T03:05:21Z nydel joined #lisp 2014-12-13T03:05:56Z loke joined #lisp 2014-12-13T03:06:43Z ahungry joined #lisp 2014-12-13T03:10:21Z protist joined #lisp 2014-12-13T03:16:07Z towodo quit (Quit: towodo) 2014-12-13T03:23:21Z nell joined #lisp 2014-12-13T03:25:04Z innertracks quit (Quit: innertracks) 2014-12-13T03:25:27Z innertracks joined #lisp 2014-12-13T03:25:37Z REPLeffect quit (Ping timeout: 240 seconds) 2014-12-13T03:25:42Z drdanmaku joined #lisp 2014-12-13T03:26:57Z innertracks quit (Client Quit) 2014-12-13T03:30:29Z Guthur joined #lisp 2014-12-13T03:30:29Z Kanae quit (Read error: Connection reset by peer) 2014-12-13T03:30:52Z ROBcorp joined #lisp 2014-12-13T03:32:54Z MrWoohoo quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-12-13T03:34:57Z loke quit (Ping timeout: 244 seconds) 2014-12-13T03:35:33Z ROBcorp quit (Ping timeout: 260 seconds) 2014-12-13T03:38:43Z loke joined #lisp 2014-12-13T03:39:29Z kristof quit (Ping timeout: 264 seconds) 2014-12-13T03:40:54Z k-dawg quit (Quit: This computer has gone to sleep) 2014-12-13T03:46:33Z tadni joined #lisp 2014-12-13T03:47:47Z tadni quit (Remote host closed the connection) 2014-12-13T03:52:59Z loke quit (Ping timeout: 250 seconds) 2014-12-13T03:53:43Z loke joined #lisp 2014-12-13T03:54:10Z hiyosi joined #lisp 2014-12-13T03:58:01Z nikki93 quit (Remote host closed the connection) 2014-12-13T04:03:07Z npatrick04 joined #lisp 2014-12-13T04:05:09Z devll quit (Ping timeout: 264 seconds) 2014-12-13T04:05:25Z jusss quit (Ping timeout: 260 seconds) 2014-12-13T04:07:39Z Guest47930 joined #lisp 2014-12-13T04:09:47Z Guest47930 left #lisp 2014-12-13T04:10:54Z zRecursive quit (Remote host closed the connection) 2014-12-13T04:11:03Z ivan\ joined #lisp 2014-12-13T04:11:33Z chu joined #lisp 2014-12-13T04:17:33Z akkad: lw makes my hello world SOOO much faster than sbcl! 2014-12-13T04:19:10Z gmcastil joined #lisp 2014-12-13T04:20:53Z Bike: sbcl's compiler is pretty slow, yeah. 2014-12-13T04:24:01Z ggole joined #lisp 2014-12-13T04:25:32Z gmcastil quit (Remote host closed the connection) 2014-12-13T04:26:09Z akkad: lw shaker is nice 2014-12-13T04:28:29Z atgreen joined #lisp 2014-12-13T04:31:05Z momo-reina joined #lisp 2014-12-13T04:32:51Z Jesin quit (Quit: Leaving) 2014-12-13T04:33:31Z beach joined #lisp 2014-12-13T04:34:10Z beach: Good morning everyone! 2014-12-13T04:38:33Z orthecreedence: hello :) 2014-12-13T04:39:44Z theseb quit (Quit: Leaving) 2014-12-13T04:44:17Z Jesin joined #lisp 2014-12-13T04:46:50Z npatrick04 quit (Remote host closed the connection) 2014-12-13T04:47:03Z kapil__ joined #lisp 2014-12-13T04:50:58Z atgreen quit (Read error: Connection reset by peer) 2014-12-13T04:52:01Z atgreen joined #lisp 2014-12-13T04:53:17Z akkad: Cannot create processes before multiprocessing is initialized. 2014-12-13T04:53:17Z akkad: 2014-12-13T04:54:05Z edgar-rft joined #lisp 2014-12-13T04:55:03Z urandom__ quit (Quit: Konversation terminated!) 2014-12-13T05:14:40Z zyaku_ quit (Ping timeout: 265 seconds) 2014-12-13T05:24:49Z stepnem quit (Ping timeout: 245 seconds) 2014-12-13T05:27:01Z gmcastil joined #lisp 2014-12-13T05:29:40Z nell quit (Quit: WeeChat 1.1-dev) 2014-12-13T05:37:06Z meiji11 quit (Read error: Connection reset by peer) 2014-12-13T05:37:18Z meiji11 joined #lisp 2014-12-13T05:37:24Z c53100 quit (Ping timeout: 244 seconds) 2014-12-13T05:43:16Z echo-area quit (Remote host closed the connection) 2014-12-13T05:45:24Z echo-area joined #lisp 2014-12-13T05:48:08Z akkad: :clack is the culpret 2014-12-13T05:48:12Z akkad: culprit 2014-12-13T05:57:16Z echo-area quit (Remote host closed the connection) 2014-12-13T05:59:12Z echo-area joined #lisp 2014-12-13T06:10:22Z rx_ quit (Quit: ircN 9.00 for mIRC (20100824-DEV) - www.ircN.org) 2014-12-13T06:11:39Z nikki93 joined #lisp 2014-12-13T06:19:57Z chu_ joined #lisp 2014-12-13T06:20:50Z chu_ quit (Remote host closed the connection) 2014-12-13T06:21:57Z chu quit (Ping timeout: 264 seconds) 2014-12-13T06:38:42Z pullphinger joined #lisp 2014-12-13T06:40:39Z pinupgeek joined #lisp 2014-12-13T06:55:06Z mishoo joined #lisp 2014-12-13T06:57:11Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-13T06:58:09Z momo-reina quit (Remote host closed the connection) 2014-12-13T06:58:36Z kami joined #lisp 2014-12-13T07:00:03Z Harag joined #lisp 2014-12-13T07:00:06Z theos quit (Disconnected by services) 2014-12-13T07:00:40Z theos joined #lisp 2014-12-13T07:01:27Z kapil__ quit (Quit: Connection closed for inactivity) 2014-12-13T07:03:32Z kami: Good morning. 2014-12-13T07:03:35Z MrWoohoo joined #lisp 2014-12-13T07:06:28Z Qudit314159 joined #lisp 2014-12-13T07:07:09Z bgs100 quit (Quit: bgs100) 2014-12-13T07:08:09Z Karl_Dscc joined #lisp 2014-12-13T07:11:29Z Shinmera joined #lisp 2014-12-13T07:12:58Z stassats joined #lisp 2014-12-13T07:12:58Z Harag1 joined #lisp 2014-12-13T07:12:58Z Harag quit (Read error: Connection reset by peer) 2014-12-13T07:14:41Z beach: Hello kami. 2014-12-13T07:17:28Z meiji11 quit (Remote host closed the connection) 2014-12-13T07:19:42Z kami quit (Ping timeout: 244 seconds) 2014-12-13T07:19:46Z hiyosi joined #lisp 2014-12-13T07:23:35Z BlueRavenGT quit (Ping timeout: 250 seconds) 2014-12-13T07:26:16Z nikki93 quit (Remote host closed the connection) 2014-12-13T07:28:29Z pllx joined #lisp 2014-12-13T07:33:56Z kapil__ joined #lisp 2014-12-13T07:42:50Z pnpuff joined #lisp 2014-12-13T07:48:19Z Harag1 quit (Read error: Connection reset by peer) 2014-12-13T07:48:24Z Harag joined #lisp 2014-12-13T07:48:33Z gmcastil` joined #lisp 2014-12-13T07:51:07Z tcr joined #lisp 2014-12-13T07:51:21Z gmcastil quit (Ping timeout: 264 seconds) 2014-12-13T07:54:10Z ndrei joined #lisp 2014-12-13T07:55:26Z sdemarre joined #lisp 2014-12-13T07:59:04Z mrSpec joined #lisp 2014-12-13T08:11:10Z pllx quit (Quit: zz) 2014-12-13T08:16:17Z gravicappa joined #lisp 2014-12-13T08:17:08Z beach: As part of my project to parse the dpANS, I defined a framework for combinatory parsing. Using that framework for creating the dpANS parser, I realize how incredibly powerful the combinatory parsing technique is. 2014-12-13T08:17:08Z beach: 2014-12-13T08:21:11Z samebchase: beach: is this gonna be released as a standalone library? 2014-12-13T08:21:24Z beach: I am thinking about it. 2014-12-13T08:21:29Z samebchase: nice. 2014-12-13T08:21:52Z beach: What I should do now, is to define a protocol for acquiring tokens from an arbitrary "stream". Right now I can only parse a list of tokens. 2014-12-13T08:22:07Z samebchase: there seems to be one here: https://github.com/Ramarren/cl-parser-combinators 2014-12-13T08:22:16Z beach: Oh. 2014-12-13T08:22:17Z beach: :( 2014-12-13T08:23:14Z beach: I guess I should compare that technique to what I came up with. 2014-12-13T08:23:51Z pnpuff quit (Quit: Lost terminal) 2014-12-13T08:24:35Z samebchase: Worst case scenario, you end up using the existing library and you get to write a "fun" blog post about how your experiences implementing your own. 2014-12-13T08:24:49Z beach: Yeah. 2014-12-13T08:25:15Z beach: The framework itself is extremely simple, so not much work is wasted. 2014-12-13T08:25:51Z beach: Like I said, right now I am just amazed how easy it is to use that technique for very complex parsing tasks. 2014-12-13T08:26:50Z sol__ joined #lisp 2014-12-13T08:30:51Z tcr quit (Ping timeout: 258 seconds) 2014-12-13T08:31:43Z beach: Well, I lied a bit too. I started writing that framework for parsing LOOP clauses in the SICL LOOP module. Not only is combinatory parsing ideal for that task, but it also makes the parser "modular" so that it is easy to define extensions in the form of new LOOP clauses or subclauses. 2014-12-13T08:32:23Z stacksmith quit (Ping timeout: 258 seconds) 2014-12-13T08:32:37Z samebchase: oh wow 2014-12-13T08:32:46Z pt1 joined #lisp 2014-12-13T08:38:53Z ASau` joined #lisp 2014-12-13T08:41:54Z ASau quit (Ping timeout: 245 seconds) 2014-12-13T08:46:19Z stacksmith joined #lisp 2014-12-13T08:47:33Z beach: samebchase: Well, that repository contains 200 lines of code and 600 lines of test code. Mine is 186 lines, so I think his is more complete :) 2014-12-13T08:48:13Z samebchase: planning to use that then? 2014-12-13T08:48:52Z beach: Not yet. I don't know what more it buys me. 2014-12-13T08:49:59Z beach: Oh, and out of the 186 lines, 57 are comments and 16 are blank. :) 2014-12-13T08:51:13Z beach: So I can safely say that not much work was wasted, if any. 2014-12-13T08:52:04Z beach: Oh, I mean to say that his repository contains 2000 lines, not 200. 2014-12-13T09:01:11Z drewc quit (Quit: Leaving.) 2014-12-13T09:01:23Z drewc joined #lisp 2014-12-13T09:03:33Z pnpuff joined #lisp 2014-12-13T09:05:04Z beach: I see. cl-parser-combinators can do arbitrary backtracking. Mine can't. 2014-12-13T09:06:49Z Shinmera wonders if he's the only one who likes writing parsers by hand 2014-12-13T09:06:54Z PinealGland joined #lisp 2014-12-13T09:07:22Z pnpuff: Shinmera: what do you suggests in order to write parsers not by hand? 2014-12-13T09:07:33Z pnpuff: *suggest 2014-12-13T09:07:44Z Shinmera: parser generators? 2014-12-13T09:07:45Z beach: I suggest combinatory parsing! :) 2014-12-13T09:08:01Z Shinmera: or what beach is saying, though I don't know how that works. 2014-12-13T09:08:06Z yenda: I wrote an xml parser in C by hand and it was fun 2014-12-13T09:08:42Z pnpuff: yenda: how are C parsers implemented? 2014-12-13T09:09:33Z yenda: I don't know, I opened the file and read it, I later realized I did something similar to Sax Parsing 2014-12-13T09:09:55Z beach: Shinmera: You write elementary parsers for single tokens. Then you combine them by defining sequences of parsers, alternative parsers, optional parsers, etc. 2014-12-13T09:10:28Z beach: Basically, in combinatory parsing, a parser is just a function that is applied to a stream of tokens. 2014-12-13T09:10:45Z Shinmera: beach: I guess my primitive lexer does a simple approach of that then. 2014-12-13T09:11:00Z yenda: in python I would use the sax library to simplify the process now 2014-12-13T09:11:04Z Shinmera: Or at least it allows something similar 2014-12-13T09:11:08Z Shinmera: beach: https://github.com/Shinmera/plump/blob/master/lexer.lisp 2014-12-13T09:11:58Z beach: Shinmera: Not quite the same. 2014-12-13T09:12:40Z Shinmera: I didn't expect to accidentally have the same idea. I'll look into combinatory parsing though, it sounds interesting 2014-12-13T09:13:00Z beach: I do recommend it. 2014-12-13T09:13:28Z beach: It is not necessarily very fast, but there are many parsing tasks for which speed is not a premium. 2014-12-13T09:13:37Z resttime quit (Quit: resttime) 2014-12-13T09:13:45Z nikki93 joined #lisp 2014-12-13T09:14:45Z beach: Parsing the dpANS for instance is a "one-shot" thing. Once the entire thing is parsed, then the parser is no longer needed. For such tasks, it must be easy to write the parser, but performance is unimportant. 2014-12-13T09:14:46Z yenda: I would have said the opposite 2014-12-13T09:15:47Z beach: yenda: What would "the opposite" be? 2014-12-13T09:17:41Z yenda: I meant that everytime I needed a parser, speed was really important, even if it was on small files, then I would have thousands of them to parse so better be quick, but I don't parse that much so maybe you are right 2014-12-13T09:18:01Z Shinmera thinks he could still make Plump a bunch faster, but has no will to dive back into the madness of parser optimisation 2014-12-13T09:20:13Z pnpuff: beach: dpANS? what is it? 2014-12-13T09:20:59Z yenda: ,dpAns 2014-12-13T09:22:16Z yenda: pnpuff: some kind of standard for human/machine communications 2014-12-13T09:24:16Z yenda: *draft proposed American National Standard 2014-12-13T09:26:09Z cpc26_ quit (Read error: Connection reset by peer) 2014-12-13T09:26:37Z cpc26 joined #lisp 2014-12-13T09:29:18Z nikki93 quit (Remote host closed the connection) 2014-12-13T09:31:37Z JuanDaugherty joined #lisp 2014-12-13T09:31:53Z yenda: beach: but after reading a bit about dpAns I see what you mean, if its about parsing it once to create a nice db/index, better do spend time on the tool that will use it than on the parser 2014-12-13T09:32:34Z isoraqathedh joined #lisp 2014-12-13T09:33:00Z pnpuff: anywan knows if exixsts same working code of Meta II (Schorre)? 2014-12-13T09:33:04Z seg quit (Quit: Bye.) 2014-12-13T09:33:08Z pnpuff: anyone... 2014-12-13T09:36:38Z nikki93 joined #lisp 2014-12-13T09:38:11Z beach: yenda: When we say dpANS here, we usually mean the draft proposal for the Common Lisp language. 2014-12-13T09:40:32Z seg joined #lisp 2014-12-13T09:41:03Z beach: yenda: Another use case for combinatory parsing is (as I said) parsing LOOP clauses. The parser is run by the macro expander, so not at runtime. Furthermore, a LOOP form is usually short (less than a hundred elements or so), and each clause is very short (between 2 and 10 elements). 2014-12-13T09:41:04Z defaultxr quit (Quit: gnight) 2014-12-13T09:46:22Z mishoo quit (Ping timeout: 258 seconds) 2014-12-13T09:46:26Z isis_ joined #lisp 2014-12-13T09:47:09Z pt1 quit (Remote host closed the connection) 2014-12-13T09:50:11Z hardenedapple joined #lisp 2014-12-13T09:54:13Z nikki93 quit (Remote host closed the connection) 2014-12-13T09:54:27Z nikki93 joined #lisp 2014-12-13T09:55:44Z pt1 joined #lisp 2014-12-13T09:57:56Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-13T09:58:47Z lommm joined #lisp 2014-12-13T09:59:01Z stacksmith quit (Ping timeout: 258 seconds) 2014-12-13T10:01:15Z sdemarre1 joined #lisp 2014-12-13T10:01:56Z sdemarre quit (Ping timeout: 244 seconds) 2014-12-13T10:03:54Z stacksmith joined #lisp 2014-12-13T10:05:43Z pt1 quit (Remote host closed the connection) 2014-12-13T10:07:28Z pt1 joined #lisp 2014-12-13T10:07:49Z lommm quit (Remote host closed the connection) 2014-12-13T10:08:53Z nikki93 quit (Remote host closed the connection) 2014-12-13T10:10:19Z orthecreedence quit (Ping timeout: 255 seconds) 2014-12-13T10:11:27Z kapil__ quit (Quit: Connection closed for inactivity) 2014-12-13T10:13:44Z pt1 quit (Remote host closed the connection) 2014-12-13T10:17:08Z loz joined #lisp 2014-12-13T10:20:11Z angavrilov joined #lisp 2014-12-13T10:21:54Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-12-13T10:21:57Z pnpuff quit (Quit: Lost terminal) 2014-12-13T10:22:24Z kam270 joined #lisp 2014-12-13T10:22:29Z attila_lendvai joined #lisp 2014-12-13T10:22:29Z attila_lendvai quit (Changing host) 2014-12-13T10:22:29Z attila_lendvai joined #lisp 2014-12-13T10:25:33Z nikki___ quit (Read error: Connection reset by peer) 2014-12-13T10:29:51Z admg joined #lisp 2014-12-13T10:36:45Z Karl_Dscc quit (Remote host closed the connection) 2014-12-13T10:37:25Z nikki93 joined #lisp 2014-12-13T10:38:40Z psy_ joined #lisp 2014-12-13T10:44:18Z nikki93 quit (Ping timeout: 265 seconds) 2014-12-13T10:45:51Z zacharias quit (Ping timeout: 272 seconds) 2014-12-13T10:47:42Z yenda quit (Ping timeout: 258 seconds) 2014-12-13T10:49:39Z przl joined #lisp 2014-12-13T10:54:22Z devll joined #lisp 2014-12-13T10:58:27Z milosn quit (Quit: Lost terminal) 2014-12-13T11:00:24Z hiyosi joined #lisp 2014-12-13T11:04:09Z przl quit (Ping timeout: 250 seconds) 2014-12-13T11:04:43Z munksgaard joined #lisp 2014-12-13T11:09:09Z oleo__ quit (Quit: Verlassend) 2014-12-13T11:09:57Z devll quit (Ping timeout: 240 seconds) 2014-12-13T11:10:33Z stassats quit (Ping timeout: 260 seconds) 2014-12-13T11:11:26Z oleo joined #lisp 2014-12-13T11:14:48Z psy__ joined #lisp 2014-12-13T11:14:58Z yenda joined #lisp 2014-12-13T11:15:12Z psy__ quit (Max SendQ exceeded) 2014-12-13T11:15:24Z fridim_ joined #lisp 2014-12-13T11:15:53Z psy__ joined #lisp 2014-12-13T11:17:24Z psy__ quit (Max SendQ exceeded) 2014-12-13T11:21:26Z yenda quit (Ping timeout: 258 seconds) 2014-12-13T11:23:23Z drewc quit (Quit: Leaving.) 2014-12-13T11:23:34Z drewc joined #lisp 2014-12-13T11:23:44Z eudoxia joined #lisp 2014-12-13T11:23:44Z _5kg quit (Ping timeout: 258 seconds) 2014-12-13T11:27:06Z protist: If I slapped together an APL dsl for Lisp, would any of your use it? 2014-12-13T11:27:11Z protist: you* 2014-12-13T11:27:39Z sdemarre1 quit (Ping timeout: 272 seconds) 2014-12-13T11:27:50Z protist: it may not be quite so simple to make...just gauging interest...could probably get something nift going much faster than my C interpreter hehe 2014-12-13T11:28:16Z protist: and I doubt an APL written in Lisp could really be a commercial product...so thinking I would have less qualms about sharing 2014-12-13T11:28:42Z kcj quit (Read error: Connection reset by peer) 2014-12-13T11:30:58Z milosn joined #lisp 2014-12-13T11:35:35Z nikki93 joined #lisp 2014-12-13T11:35:39Z Harag quit (Quit: Harag) 2014-12-13T11:36:40Z MoALTz joined #lisp 2014-12-13T11:36:45Z nikki93 quit (Client Quit) 2014-12-13T11:37:37Z drl quit (Ping timeout: 240 seconds) 2014-12-13T11:42:17Z yeticry quit (Ping timeout: 260 seconds) 2014-12-13T11:43:00Z przl joined #lisp 2014-12-13T11:43:16Z yeticry joined #lisp 2014-12-13T11:45:10Z mishoo joined #lisp 2014-12-13T11:45:42Z corni joined #lisp 2014-12-13T11:48:11Z robot-beethoven quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-12-13T11:52:20Z zacharias joined #lisp 2014-12-13T12:02:36Z Ralt quit (Ping timeout: 265 seconds) 2014-12-13T12:06:02Z rc- quit (Quit: WeeChat 1.0.1) 2014-12-13T12:06:55Z |3b|: protist: isn't there already one? 2014-12-13T12:08:40Z rc- joined #lisp 2014-12-13T12:08:50Z _5kg joined #lisp 2014-12-13T12:09:17Z protist: |3b|: If there is I didn't know 2014-12-13T12:10:17Z |3b|: https://github.com/stassats/closer-apl i think is what i was thinking of, not sure it is actually serious though :p 2014-12-13T12:11:04Z oudeis joined #lisp 2014-12-13T12:16:36Z oudeis quit (Ping timeout: 250 seconds) 2014-12-13T12:17:07Z oudeis joined #lisp 2014-12-13T12:17:49Z admg quit (Quit: Laptop gone to sleep...) 2014-12-13T12:18:29Z protist: |3b|: haha, I doubt that could go all the way 2014-12-13T12:18:35Z protist: |3b|: but it is nifty 2014-12-13T12:22:15Z arpunk quit (Remote host closed the connection) 2014-12-13T12:29:25Z przl quit (Ping timeout: 260 seconds) 2014-12-13T12:39:10Z Ralt joined #lisp 2014-12-13T12:39:26Z ASau` is now known as ASau 2014-12-13T12:40:38Z keen___________1 joined #lisp 2014-12-13T12:41:42Z keen___________0 quit (Ping timeout: 256 seconds) 2014-12-13T12:44:28Z munksgaard quit (Read error: Connection reset by peer) 2014-12-13T12:47:05Z alexherbo2 quit (Quit: WeeChat 1.0.1) 2014-12-13T12:57:22Z yeticry quit (Ping timeout: 245 seconds) 2014-12-13T12:58:38Z _loic_ joined #lisp 2014-12-13T13:08:54Z EvW joined #lisp 2014-12-13T13:10:57Z urandom__ joined #lisp 2014-12-13T13:12:55Z devll joined #lisp 2014-12-13T13:13:48Z Beetny quit (Ping timeout: 250 seconds) 2014-12-13T13:14:27Z tomvos joined #lisp 2014-12-13T13:14:52Z attila_lendvai quit (Ping timeout: 245 seconds) 2014-12-13T13:16:00Z stassats joined #lisp 2014-12-13T13:19:47Z chu joined #lisp 2014-12-13T13:21:01Z attila_lendvai joined #lisp 2014-12-13T13:21:01Z attila_lendvai quit (Changing host) 2014-12-13T13:21:01Z attila_lendvai joined #lisp 2014-12-13T13:21:58Z khisanth_ joined #lisp 2014-12-13T13:23:43Z arcwest1 joined #lisp 2014-12-13T13:23:44Z Khisanth quit (Ping timeout: 244 seconds) 2014-12-13T13:24:30Z munksgaard joined #lisp 2014-12-13T13:29:32Z kami joined #lisp 2014-12-13T13:31:36Z stassats: i guess i shouldn't have used the APL name, it has nothing in common with APL, or i think it doesn't, since I don't know APL 2014-12-13T13:31:40Z stassats: and it's not serious indeed 2014-12-13T13:34:56Z stepnem joined #lisp 2014-12-13T13:35:04Z przl joined #lisp 2014-12-13T13:35:54Z fridim_ quit (Ping timeout: 250 seconds) 2014-12-13T13:36:43Z ROBcorp joined #lisp 2014-12-13T13:39:45Z przl quit (Ping timeout: 244 seconds) 2014-12-13T13:40:24Z pt1 joined #lisp 2014-12-13T13:42:05Z yeticry joined #lisp 2014-12-13T13:44:05Z tomvos left #lisp 2014-12-13T13:49:48Z oudeis quit (Quit: This computer has gone to sleep) 2014-12-13T14:03:41Z yeticry quit (Ping timeout: 260 seconds) 2014-12-13T14:04:20Z yeticry joined #lisp 2014-12-13T14:07:55Z c53100 joined #lisp 2014-12-13T14:09:16Z stassats quit (Ping timeout: 255 seconds) 2014-12-13T14:12:13Z lifenoodles quit (Ping timeout: 250 seconds) 2014-12-13T14:13:02Z yeticry quit (Quit: leaving) 2014-12-13T14:14:34Z lifenoodles joined #lisp 2014-12-13T14:17:37Z k-dawg joined #lisp 2014-12-13T14:21:11Z pt1 quit (Remote host closed the connection) 2014-12-13T14:25:49Z ROBcorp quit (Ping timeout: 258 seconds) 2014-12-13T14:30:46Z admg joined #lisp 2014-12-13T14:32:26Z LiamH joined #lisp 2014-12-13T14:33:23Z yeticry joined #lisp 2014-12-13T14:34:21Z przl joined #lisp 2014-12-13T14:39:51Z wasamasa is now known as vms 2014-12-13T14:40:26Z vms is now known as wasamasa 2014-12-13T14:41:13Z ehu joined #lisp 2014-12-13T14:44:06Z scymtym_ joined #lisp 2014-12-13T14:44:08Z pt1 joined #lisp 2014-12-13T14:57:21Z mdcox joined #lisp 2014-12-13T14:58:12Z isis_ quit (Read error: Connection reset by peer) 2014-12-13T14:59:00Z isis_ joined #lisp 2014-12-13T15:00:49Z Guthur quit (Remote host closed the connection) 2014-12-13T15:05:10Z isoraqathedh quit (Ping timeout: 250 seconds) 2014-12-13T15:06:01Z testin joined #lisp 2014-12-13T15:10:22Z wasamasa quit (Ping timeout: 250 seconds) 2014-12-13T15:10:36Z Karl_Dscc joined #lisp 2014-12-13T15:22:04Z MoALTz quit (Quit: Leaving) 2014-12-13T15:26:07Z yenda joined #lisp 2014-12-13T15:26:46Z wasa joined #lisp 2014-12-13T15:27:22Z Vutral quit (Ping timeout: 264 seconds) 2014-12-13T15:27:35Z isoraqathedh joined #lisp 2014-12-13T15:27:40Z wasa is now known as wasamasa 2014-12-13T15:35:29Z EvW quit (Ping timeout: 244 seconds) 2014-12-13T15:36:02Z Vutral joined #lisp 2014-12-13T15:37:33Z kam270 quit (Ping timeout: 244 seconds) 2014-12-13T15:41:01Z octophore_ joined #lisp 2014-12-13T15:41:02Z octophore_ quit (Excess Flood) 2014-12-13T15:41:31Z octophore_ joined #lisp 2014-12-13T15:42:36Z octophore_ quit (Read error: Connection reset by peer) 2014-12-13T15:42:42Z octophore-- joined #lisp 2014-12-13T15:42:43Z octophore-- quit (Excess Flood) 2014-12-13T15:43:16Z drdanmaku joined #lisp 2014-12-13T15:43:33Z octophore quit (Ping timeout: 260 seconds) 2014-12-13T15:43:37Z przl quit (Ping timeout: 240 seconds) 2014-12-13T15:44:01Z octophore joined #lisp 2014-12-13T15:45:50Z octophore_ joined #lisp 2014-12-13T15:47:17Z milosn quit (Ping timeout: 260 seconds) 2014-12-13T15:48:25Z octophore quit (Ping timeout: 250 seconds) 2014-12-13T15:48:31Z oleo is now known as Guest59678 2014-12-13T15:50:16Z oleo__ joined #lisp 2014-12-13T15:51:01Z Denommus joined #lisp 2014-12-13T15:51:57Z Guest59678 quit (Ping timeout: 260 seconds) 2014-12-13T15:52:05Z Denommus quit (Client Quit) 2014-12-13T15:52:21Z oleo__ quit (Client Quit) 2014-12-13T15:53:17Z Denommus joined #lisp 2014-12-13T15:56:32Z yenda quit (Ping timeout: 265 seconds) 2014-12-13T15:56:55Z octophore_ quit (Read error: Connection reset by peer) 2014-12-13T15:57:17Z hardenedapple quit (Quit: WeeChat 1.0.1) 2014-12-13T16:00:22Z munksgaard quit (Ping timeout: 264 seconds) 2014-12-13T16:03:11Z yenda joined #lisp 2014-12-13T16:04:42Z kushal joined #lisp 2014-12-13T16:08:33Z yenda quit (Ping timeout: 258 seconds) 2014-12-13T16:10:48Z ROBcorp joined #lisp 2014-12-13T16:11:57Z beach: I used to know the answer to this question, but I can't remember now: Why is (loop for element in *list* when (eql element 1) return element) 5 times as fast as (find 1 *list*) in SBCL? 2014-12-13T16:12:47Z beach: ... and what is the method by which one can convince FIND to perform equally well as the loop? 2014-12-13T16:15:20Z ggole: Unsubstantiated guess: (loop for ... in ...) is specialised to lists 2014-12-13T16:15:27Z ROBcorp quit (Ping timeout: 258 seconds) 2014-12-13T16:16:49Z kushal quit (Excess Flood) 2014-12-13T16:16:58Z 32NAAO9J8 joined #lisp 2014-12-13T16:16:59Z ggole: Having the concrete call to eql there might also help 2014-12-13T16:18:00Z kushal joined #lisp 2014-12-13T16:18:37Z vinleod quit (Excess Flood) 2014-12-13T16:18:47Z beach: Surprising though. I mean, FIND could start by checking for those things. 2014-12-13T16:19:03Z kjeldahl quit (Ping timeout: 272 seconds) 2014-12-13T16:19:26Z beach: I remember that there was a way of improving it, but I can't remember what that way was. 2014-12-13T16:19:46Z Shinmera: Try using THE to declare it of list type? 2014-12-13T16:20:08Z beach: In the call to FIND? 2014-12-13T16:20:08Z Shinmera is wildly guessing here, looking at the FIND definition in the SBCL sources is only confusing, unfortunately. 2014-12-13T16:20:11Z Shinmera: beach: yes 2014-12-13T16:20:46Z beach: No difference. 2014-12-13T16:20:51Z ggole: You can't specialise everything. 2014-12-13T16:20:53Z Shinmera: Welp, would've been too good. 2014-12-13T16:22:39Z beach: ggole: Not everything perhaps, but a lot. I failed in my first attempt with the SICL sequence module because just repeating the code made it impossible to test and maintain. I will make a new attempt using automatic transformations at the AST level. I don't like using a macro because then the algorithm is drowned out in macrology noise. 2014-12-13T16:24:29Z vinleod joined #lisp 2014-12-13T16:24:38Z ggole: Dynamic specialisation is an interesting attack on that problem. 2014-12-13T16:24:51Z kushal is now known as Guest90303 2014-12-13T16:24:53Z beach: It could be, yes. 2014-12-13T16:25:08Z ggole: Instead of statically laying which specialisations you have (and losing if you pick the wrong ones), you use feedback to specialise only in hot code. 2014-12-13T16:25:15Z ggole: Complicated though. 2014-12-13T16:25:40Z beach: I bit complicated, yes. 2014-12-13T16:26:26Z vinleod quit (Excess Flood) 2014-12-13T16:27:00Z beach: I don't think one can pick the wrong specialization though. I mean, check if the test is #'EQL or 'EQL and then use a version specialized for EQL. Same thing when the :KEY is #'IDENTITY. 2014-12-13T16:27:05Z kjeldahl joined #lisp 2014-12-13T16:27:29Z vinleod joined #lisp 2014-12-13T16:27:34Z beach: In the worst case, no special version exists, so you choose the default. 2014-12-13T16:27:42Z Grue`: looks like SBCL uses the same function for FIND and POSITION and throws away unneeded value 2014-12-13T16:28:26Z beach: Yeah, the two are very similar. 2014-12-13T16:28:58Z beach: In fact, they could be factored with no additional cost. 2014-12-13T16:29:07Z beach: Er, not quite true. 2014-12-13T16:29:10Z ggole: If you have N specialisations, you pay in code size and dispatch costs. If the costs outweigh the benefits of specialisation (eg, for short lists), you've chosen the wrong specialisation approach. 2014-12-13T16:29:44Z beach: ggole: Yeah, OK. 2014-12-13T16:30:19Z ggole: And yes, you can use things like type analysis to avoid or reduce dispatch in some cases, so it is a bit more interesting than that. 2014-12-13T16:31:15Z munksgaard joined #lisp 2014-12-13T16:31:58Z vinleod quit (Max SendQ exceeded) 2014-12-13T16:34:00Z innertracks joined #lisp 2014-12-13T16:34:03Z Guest90303 is now known as kushal 2014-12-13T16:34:15Z kushal quit (Changing host) 2014-12-13T16:34:15Z kushal joined #lisp 2014-12-13T16:35:03Z beach: I am also puzzled by the decision in SBCL (probably dates back to CMUCL or even Spice Lisp) to make the object NIL and CONS cells have the same type tag. Traversing a list then requires two tests in each iteration. It does make single calls to CAR and CDR faster, but I don't think that outweighs the additional list-traversal cost. 2014-12-13T16:37:32Z beach: Maybe it's one of those things where the premises change over time, so the best decision does too. 2014-12-13T16:40:17Z Bike: maybe they just wanted fast listp 2014-12-13T16:40:41Z Bike: I think they have to do some really weird things to have a symbol tagged as a list, though 2014-12-13T16:45:28Z oleo joined #lisp 2014-12-13T16:45:55Z beach: Yeah. 2014-12-13T16:46:46Z oleo quit (Read error: Connection reset by peer) 2014-12-13T16:46:49Z beach: I can only guess in how many places in the code where that special case has to be taken into account. 2014-12-13T16:47:07Z kushal quit (Quit: Leaving) 2014-12-13T16:47:09Z dkcl joined #lisp 2014-12-13T16:48:04Z theseb joined #lisp 2014-12-13T16:48:47Z oleo joined #lisp 2014-12-13T16:50:59Z dkcl is now known as dandersen 2014-12-13T16:52:51Z przl joined #lisp 2014-12-13T16:53:28Z beach: The followup question, then, is "why do they not change it?". 2014-12-13T16:53:33Z nell joined #lisp 2014-12-13T16:53:48Z towodo joined #lisp 2014-12-13T16:55:01Z Bike: i hear there are lots of places in the code where they have to take it into account 2014-12-13T16:56:03Z beach: It might be better then to bite the bullet and get rid of that special case once and for all. 2014-12-13T16:56:15Z egp_ joined #lisp 2014-12-13T16:56:24Z egp_ quit (Remote host closed the connection) 2014-12-13T16:58:04Z beach: Though, none of my business I guess. Who am I to tell the SBCL maintainers how to set priorities? 2014-12-13T16:59:29Z beach: OK, time for me to go spend some time with my (admittedly small) family. 2014-12-13T16:59:33Z beach left #lisp 2014-12-13T16:59:56Z EvW joined #lisp 2014-12-13T17:02:05Z munksgaard quit (Ping timeout: 250 seconds) 2014-12-13T17:04:25Z ack006 joined #lisp 2014-12-13T17:05:09Z ack006: requesting topic change: SBCL 1.2.6 has been out for a while 2014-12-13T17:05:10Z ack006: :-) 2014-12-13T17:06:04Z tcr joined #lisp 2014-12-13T17:07:28Z innertracks quit (Quit: innertracks) 2014-12-13T17:07:41Z Bike: topic change to what 2014-12-13T17:07:45Z Bike: oh, right 2014-12-13T17:07:51Z ack006: :-) 2014-12-13T17:07:52Z Bike: Common Lisp, the #1=(programmable . #1#) programming language 2014-12-13T17:07:55Z Bike: oops 2014-12-13T17:09:25Z ack006: now waiting for distros to pick it up, arch linux is still stuck at SBCL 1.2.2, which still has a serious asdf bug 2014-12-13T17:09:43Z Kanae joined #lisp 2014-12-13T17:10:11Z Bike changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language logs:|contact op if muted|yason 0.7.2, SBCL 1.2.6, Drakma 1.3.11 2014-12-13T17:10:24Z resttime joined #lisp 2014-12-13T17:10:43Z Bike: -t and all 2014-12-13T17:11:26Z wglb: Having a slime problem on one of my supposedly identical systems. Loading slime through quicklisp in the recommended manner. However when typing ',' at the slime repl, the "lo" shortcut is not recognized. Upon further examination, it seems that slime-contrib is not being loaded. ",h" at the repl gives about only 15 entries, whereas I expect on the order of 25. emacs load path seems correct, .emacs.d contains no suprious references to 2014-12-13T17:11:26Z wglb: slime. Any ideas where to look? 2014-12-13T17:11:53Z ack006: Bike: thanks! 2014-12-13T17:12:01Z Bike: are you loading slime-asdf in .emacs? 2014-12-13T17:12:11Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-13T17:12:28Z Grue`: what is C-h v slime-contribs? 2014-12-13T17:14:39Z wglb: Grue`: "Its value is (slime-fancy)" 2014-12-13T17:15:09Z wglb: Bike: .emacs has "(load (expand-file-name "~/quicklisp/slime-helper.el"))" 2014-12-13T17:15:58Z Grue`: put (slime-setup '(slime-asdf)) after that 2014-12-13T17:16:24Z kushal joined #lisp 2014-12-13T17:17:08Z wglb: Grue`: That works. Strange that it is needed only on this system. Thanks! 2014-12-13T17:18:50Z Grue`: from what I can see, slime-helper.el loads only slime-fancy, so i dunno how you got slime-asdf without that 2014-12-13T17:19:02Z Karl_Dscc quit (Remote host closed the connection) 2014-12-13T17:19:38Z kushal left #lisp 2014-12-13T17:19:42Z wglb: Upon further review, working system has equivalent. 2014-12-13T17:20:54Z wglb: And i overlooked that when i claimed "equivalent" 2014-12-13T17:23:00Z MoALTz joined #lisp 2014-12-13T17:23:50Z yenda joined #lisp 2014-12-13T17:24:40Z whatte joined #lisp 2014-12-13T17:27:30Z tesuji joined #lisp 2014-12-13T17:31:05Z tharugrim quit (Ping timeout: 264 seconds) 2014-12-13T17:31:08Z yenda quit (Ping timeout: 245 seconds) 2014-12-13T17:32:28Z tharugrim joined #lisp 2014-12-13T17:36:28Z dstatyvka joined #lisp 2014-12-13T17:40:36Z eudoxia quit (Quit: Leaving) 2014-12-13T17:41:06Z towodo quit (Quit: towodo) 2014-12-13T17:43:43Z Indecipherable joined #lisp 2014-12-13T17:47:47Z munksgaard joined #lisp 2014-12-13T17:49:22Z innertracks joined #lisp 2014-12-13T17:51:49Z protist quit (Quit: Konversation terminated!) 2014-12-13T17:52:19Z ski quit (Remote host closed the connection) 2014-12-13T17:53:19Z drewc quit (Quit: Leaving.) 2014-12-13T17:54:21Z drewc joined #lisp 2014-12-13T17:54:33Z innertracks quit (Quit: innertracks) 2014-12-13T17:55:04Z innertracks joined #lisp 2014-12-13T17:55:43Z aftershave quit (Quit: Textual IRC Client: www.textualapp.com) 2014-12-13T17:56:24Z EvW quit (Ping timeout: 265 seconds) 2014-12-13T17:56:52Z innertracks quit (Client Quit) 2014-12-13T17:57:21Z innertracks joined #lisp 2014-12-13T17:59:20Z Indecipherable quit (Ping timeout: 244 seconds) 2014-12-13T17:59:37Z innertracks quit (Client Quit) 2014-12-13T17:59:38Z ROBcorp joined #lisp 2014-12-13T17:59:58Z innertracks joined #lisp 2014-12-13T17:59:58Z k-dawg quit (Quit: This computer has gone to sleep) 2014-12-13T18:00:59Z drewc quit (Quit: Leaving.) 2014-12-13T18:01:10Z drewc joined #lisp 2014-12-13T18:02:13Z zacharias quit (Ping timeout: 272 seconds) 2014-12-13T18:02:31Z faitswulff joined #lisp 2014-12-13T18:02:36Z faitswulff left #lisp 2014-12-13T18:03:57Z ROBcorp quit (Ping timeout: 240 seconds) 2014-12-13T18:05:57Z sdemarre joined #lisp 2014-12-13T18:08:25Z innertracks quit (Quit: innertracks) 2014-12-13T18:08:41Z cmatei quit (Ping timeout: 260 seconds) 2014-12-13T18:08:49Z innertracks joined #lisp 2014-12-13T18:09:15Z ski joined #lisp 2014-12-13T18:09:35Z innertracks quit (Client Quit) 2014-12-13T18:10:04Z innertracks joined #lisp 2014-12-13T18:10:11Z innertracks quit (Client Quit) 2014-12-13T18:11:32Z yenda joined #lisp 2014-12-13T18:12:23Z pt1 quit (Remote host closed the connection) 2014-12-13T18:17:12Z innertracks joined #lisp 2014-12-13T18:18:11Z Fare joined #lisp 2014-12-13T18:18:16Z pt1 joined #lisp 2014-12-13T18:23:02Z whatte quit (K-Lined) 2014-12-13T18:25:29Z corni quit (Ping timeout: 260 seconds) 2014-12-13T18:25:39Z innertracks quit (Quit: innertracks) 2014-12-13T18:27:55Z pinupgeek quit (Quit: pinupgeek) 2014-12-13T18:33:38Z shka joined #lisp 2014-12-13T18:33:43Z shka: good evening lispers 2014-12-13T18:35:14Z lifenoodles quit (Ping timeout: 245 seconds) 2014-12-13T18:39:15Z 32NAAO9J8 quit (Quit: leaving) 2014-12-13T18:40:25Z lifenoodles joined #lisp 2014-12-13T18:41:06Z ROBcorp joined #lisp 2014-12-13T18:43:20Z ROBcorp quit (Client Quit) 2014-12-13T18:43:41Z BlueRavenGT joined #lisp 2014-12-13T18:47:08Z pt1 quit (Remote host closed the connection) 2014-12-13T18:52:20Z przl quit (Ping timeout: 244 seconds) 2014-12-13T18:57:40Z pt1 joined #lisp 2014-12-13T19:02:25Z pt1 quit (Remote host closed the connection) 2014-12-13T19:05:49Z milosn joined #lisp 2014-12-13T19:09:49Z lifenoodles quit (Ping timeout: 245 seconds) 2014-12-13T19:09:52Z Fare quit (Ping timeout: 256 seconds) 2014-12-13T19:12:24Z psy_ quit (Read error: Connection timed out) 2014-12-13T19:12:30Z EvW joined #lisp 2014-12-13T19:13:26Z hiroakip joined #lisp 2014-12-13T19:13:38Z psy_ joined #lisp 2014-12-13T19:13:45Z kristof joined #lisp 2014-12-13T19:14:09Z kristof is now known as Guest97747 2014-12-13T19:14:35Z psy_ quit (Max SendQ exceeded) 2014-12-13T19:14:46Z Guest97747 quit (Client Quit) 2014-12-13T19:15:02Z Clarice joined #lisp 2014-12-13T19:15:25Z Clarice is now known as Guest45539 2014-12-13T19:16:29Z Guest45539 left #lisp 2014-12-13T19:16:58Z lifenoodles joined #lisp 2014-12-13T19:17:37Z kristof joined #lisp 2014-12-13T19:17:47Z kristof quit (Changing host) 2014-12-13T19:17:47Z kristof joined #lisp 2014-12-13T19:18:02Z loz quit (Quit: Leaving.) 2014-12-13T19:18:37Z hardenedapple joined #lisp 2014-12-13T19:22:04Z kristof quit (Quit: WeeChat 1.0.1) 2014-12-13T19:22:19Z shka: question regarding good standards 2014-12-13T19:22:20Z kristof joined #lisp 2014-12-13T19:22:45Z shka: should i move functions that are supposed to be used by the library user to separate package? 2014-12-13T19:23:10Z Bike: internal symbols not good enough for you? 2014-12-13T19:23:11Z kristof is now known as Guest31854 2014-12-13T19:23:49Z Guest31854 left #lisp 2014-12-13T19:24:07Z kristof joined #lisp 2014-12-13T19:24:53Z Grue`: shka: no, that's not what packages are for 2014-12-13T19:25:04Z shka: ok 2014-12-13T19:25:29Z shka: Bike: thanks, i forgot that we have internal symbols… 2014-12-13T19:26:04Z les quit (Ping timeout: 255 seconds) 2014-12-13T19:26:54Z les joined #lisp 2014-12-13T19:28:37Z hiroakip quit (Ping timeout: 240 seconds) 2014-12-13T19:29:45Z admg quit (Quit: Bye) 2014-12-13T19:31:34Z JokerDoom joined #lisp 2014-12-13T19:31:52Z pinupgeek joined #lisp 2014-12-13T19:32:21Z hiroakip joined #lisp 2014-12-13T19:32:52Z _JokerDoom quit (Ping timeout: 258 seconds) 2014-12-13T19:34:16Z sleeperest joined #lisp 2014-12-13T19:34:21Z sleeperest: Hi :) 2014-12-13T19:35:01Z shka: sleeperest: good evening 2014-12-13T19:35:38Z sleeperest quit (Client Quit) 2014-12-13T19:44:15Z ROBcorp joined #lisp 2014-12-13T19:45:42Z pinupgeek quit (Read error: Connection reset by peer) 2014-12-13T19:46:31Z Hi-Angel joined #lisp 2014-12-13T19:47:44Z pinupgeek joined #lisp 2014-12-13T19:47:47Z pinupgeek quit (Changing host) 2014-12-13T19:47:47Z pinupgeek joined #lisp 2014-12-13T19:49:01Z ROBcorp quit (Ping timeout: 260 seconds) 2014-12-13T19:50:35Z tesuji quit (Read error: Connection reset by peer) 2014-12-13T19:50:38Z aleamb joined #lisp 2014-12-13T19:53:13Z Hi-Angel: What is the right way of the «quicklisp» in GNU/Linux? Tutorials refers to the way of «(load "/path/to/quicklisp.lisp")», but I have a feeling that something wrong with this, because the quicklisp is in repository, so, probably, I shouldn't write a path to quicklisp after it is installed, perhaps I must use some variable with a path, is it? 2014-12-13T19:53:34Z Hi-Angel: *the way to load «quicklisp» 2014-12-13T19:55:02Z Xach: After it is installed, you load the quicklisp/setup.lisp file from your Lisp init script (or you can load it manually) 2014-12-13T19:55:18Z hiroakip quit (Ping timeout: 245 seconds) 2014-12-13T19:55:31Z Xach: You only load quicklisp.lisp once, during initial installation. 2014-12-13T19:56:10Z defaultxr joined #lisp 2014-12-13T19:57:46Z Hi-Angel: Hm… So, since for I am call something with the prefix «cl:» and I am getting an error «No package with a name QL», probably this script for some reason wasn't executed during installation. Okay, thank you, I'll try to load it manually. 2014-12-13T19:59:36Z Grue`: you need to run (ql:add-to-init-file) after installation 2014-12-13T20:00:05Z Xach: Hi-Angel: Do you have a file named ~/quicklisp/setup.lisp? 2014-12-13T20:00:14Z rc- left #lisp 2014-12-13T20:01:12Z arcwest1 quit (Quit: Nettalk6 - www.ntalk.de) 2014-12-13T20:01:15Z Hi-Angel: Nope. But I am already found where did my package manager installed quicklisp, and executed «(load "/usr/share/cl-quicklisp/quicklisp.lisp")» 2014-12-13T20:01:49Z Xach: Oh, if you use a package manager to install Quicklisp, you should probably get support and help from whoever created the package. 2014-12-13T20:02:02Z Xach: I wouldn't recommend using a package for Quicklisp, though. 2014-12-13T20:02:14Z Hi-Angel: Why? 2014-12-13T20:02:22Z Xach: You can't follow the Quicklisp directions if you use a package manager to install it. 2014-12-13T20:02:29Z Xach: You must find appropriate directions elsewhere. 2014-12-13T20:02:56Z Hi-Angel: What directions? 2014-12-13T20:03:16Z Xach: Hi-Angel: the directions on www.quicklisp.org/beta/ 2014-12-13T20:03:28Z Xach: I do not know where the package is documented. 2014-12-13T20:04:27Z Hi-Angel: Btw, yes, for unknown reason the package manager only loaded the installation script, so I had to launch the installation manually. 2014-12-13T20:06:24Z Hi-Angel: And yes, it is indeed installed itself to «~/quicklisp» directory 2014-12-13T20:10:33Z arcwest1 joined #lisp 2014-12-13T20:10:41Z innertracks joined #lisp 2014-12-13T20:14:06Z devll quit (Remote host closed the connection) 2014-12-13T20:15:07Z yenda quit (Ping timeout: 265 seconds) 2014-12-13T20:16:34Z Hi-Angel: Hm… But why for I am giving the path argument to install to another directory, like «(quicklisp-quickstart:install :path "~/.quicklisp")», it says «not a directory ENOTDIR»? I am even tried to create it manually, tried to get a full path… It is doesn't want install there anyway 2014-12-13T20:17:37Z Xach: Hi-Angel: What implementation of CL are you using? 2014-12-13T20:17:51Z nydel quit (Quit: WeeChat 0.4.2) 2014-12-13T20:17:54Z Hi-Angel: CLisp 2014-12-13T20:18:28Z Xach: Hi-Angel: I don't know why you're getting that error. It might be because your quicklisp.lisp is old, or for some other reason. 2014-12-13T20:18:38Z Xach: Hi-Angel: If you want to use .quicklisp instead of quicklisp, you can do: "mv quicklisp .quicklisp". 2014-12-13T20:18:53Z Xach: You will have to adjust the paths in any init script that references quicklisp. 2014-12-13T20:19:21Z nydel joined #lisp 2014-12-13T20:20:16Z Hi-Angel: Hm… Okay… But how then could I find the name of the init file in which the path would be added by the command «(ql:add-to-init-file)»? 2014-12-13T20:20:36Z Xach: Hi-Angel: for clisp, it's something like ~/.clisprc.lisp or similar. 2014-12-13T20:20:47Z Hi-Angel: Thank you!! 2014-12-13T20:22:58Z Bicyclidine joined #lisp 2014-12-13T20:24:32Z drichards: geez, for the life of me I can't get this generic function to compile. 2014-12-13T20:25:10Z ejbs joined #lisp 2014-12-13T20:25:23Z Xach: drichards: what happens when you try? 2014-12-13T20:25:32Z Fare joined #lisp 2014-12-13T20:25:45Z Grue`: I think it's just ~/.clisprc 2014-12-13T20:26:07Z Xach: Grue`: it can use both, i think. quicklisp uses the .lisp variant. 2014-12-13T20:26:24Z Grue`: oh, i didn't know that 2014-12-13T20:26:24Z ggole quit 2014-12-13T20:26:26Z drichards: oh, I define it just fine: (defgeneric (setf name) (type type)) 2014-12-13T20:26:46Z drichards: but when I define a method, it complains that not enough arguments are provided 2014-12-13T20:26:50Z Xach: type type? 2014-12-13T20:26:54Z Bicyclidine: well, that has two arguments 2014-12-13T20:26:56Z jeti joined #lisp 2014-12-13T20:27:02Z Bicyclidine: did you maybe mean to have one argument 2014-12-13T20:27:04Z drichards: in this class integer and a class I defined 2014-12-13T20:27:10Z Grue`: is that even allowed, 2 arguments with the same name? 2014-12-13T20:27:17Z Hi-Angel: Grue`, it was «.clisprc.lisp». When I am executed «(ql:add-to-init-file)» it printed the name of the file. 2014-12-13T20:27:41Z pinupgeek quit (Ping timeout: 258 seconds) 2014-12-13T20:28:20Z towodo joined #lisp 2014-12-13T20:29:12Z drichards: I decided to let defmethod implicitly define the generic for now, when I have more patience I'll go back and debug it 2014-12-13T20:29:26Z Bicyclidine: it's really pretty simple, you messed up the argument list a bit 2014-12-13T20:29:39Z Bicyclidine: it should be (defgeneric (setf name) ((type type))) in all likelihood 2014-12-13T20:30:06Z Bicyclidine: well, that wouldn't make much sense for setf though 2014-12-13T20:30:53Z ejbs: I didn't even know that you could define methods for (setf *) 2014-12-13T20:30:54Z Grue`: Bicyclidine: that won't work with defgeneric 2014-12-13T20:31:20Z Xach: ejbs: you can define generic setf functions and add methods, sure. very handy. 2014-12-13T20:31:51Z drichards: let me try that really quickly 2014-12-13T20:31:56Z Bicyclidine: no, grue's right 2014-12-13T20:32:02Z Bicyclidine: can you paste the actual code, not with the "type" thing 2014-12-13T20:32:11Z Bicyclidine: unless you really did have "type" twice? 2014-12-13T20:33:06Z Grue`: yeah, what is even type in this context 2014-12-13T20:33:38Z Grue`: because methods don't specialize on types but on classes 2014-12-13T20:33:41Z Xach: I usually name the first argument new-value so I remember that's what it is. 2014-12-13T20:34:58Z drichards: no, I had tried that but no go. syntax error 2014-12-13T20:35:39Z Bicyclidine: yes, i was wrong. what was the first thin you tried that "wouldn't compile"? what's an example of a defmethod attempt? 2014-12-13T20:35:47Z Xach: drichards: it would possibly save lots of time if you pasted your defgeneric form and one of the defmethod forms that caused an error, and pasted the error too. 2014-12-13T20:35:52Z Grue`: ejbs: you can even flet (setf foo)s for extra fun 2014-12-13T20:35:57Z Xach: I think we could quickly cut to the heart of the matter 2014-12-13T20:40:24Z ejbs: Xach: I guess that's how :writer in defclass works? I mean, it is possible that that is how it works. 2014-12-13T20:40:46Z Bicyclidine: setf methods? yes 2014-12-13T20:41:00Z Grue`: :accessor too 2014-12-13T20:41:42Z drichards: ah dammit 2014-12-13T20:41:49Z drichards: I was chasing the wrong problem 2014-12-13T20:41:58Z Xach: in a way, we all were 2014-12-13T20:42:07Z drichards: there was an extra arg sitting right there at the end of the line I missed 2014-12-13T20:42:13Z drichards: god what an idiot 2014-12-13T20:42:55Z ejbs: Mental model corrected! 2014-12-13T20:43:37Z ejbs: drichards: Don't worry, we're all a bit stupid at times :) (even though not everyone shows off about it on IRC ;-)) 2014-12-13T20:44:05Z drichards: :) 2014-12-13T20:46:27Z drichards: I liked how bitchy sbcl's compiler is, but I am not overly fond the of the error text. 2014-12-13T20:47:07Z Shinmera: Error texts are sadly famous for being very cryptic at times :( 2014-12-13T20:47:34Z ejbs: Going from Python (the language) to SBCL was pure joy in terms of error messages (and don't get me started on restarts, oh boy!) 2014-12-13T20:47:47Z Xach: drichards: xof wrote a bit about how to parse them, i think. 2014-12-13T20:50:22Z zacharias joined #lisp 2014-12-13T20:53:31Z pt1 joined #lisp 2014-12-13T20:54:11Z ejbs: Hm, how do I set sbcl source now again for SLIME? 2014-12-13T20:54:50Z Xach: ejbs: the path to sbcl source? so M-. works? 2014-12-13T20:54:51Z oudeis joined #lisp 2014-12-13T20:55:10Z ejbs: Xach: I want to make M-. work (by telling SLIME where the sources are) 2014-12-13T20:55:22Z jeti: Hunchentoot question: documentation shows an example to start multiple acceptors on different ports. Is it possible to have multiple acceptors on different host addresses on the same port? 2014-12-13T20:55:25Z Xach: ejbs: sb-ext:set-sbcl-source-location 2014-12-13T20:56:20Z s00pcan_ quit (Ping timeout: 244 seconds) 2014-12-13T20:56:50Z hardenedapple quit (Quit: WeeChat 1.0.1) 2014-12-13T20:57:15Z Shinmera quit (Quit: しつれいしなければならないんです。) 2014-12-13T20:57:49Z Shinmera joined #lisp 2014-12-13T20:58:38Z shka quit (Quit: WeeChat 1.0.1) 2014-12-13T21:01:25Z mutley89 joined #lisp 2014-12-13T21:01:41Z pt1 quit (Remote host closed the connection) 2014-12-13T21:01:46Z Grue`: jeti: I think you'd have to put hunchentoot behind some general-purpose webserver (apache, nginx) for this 2014-12-13T21:04:24Z jeti: ok thx 2014-12-13T21:05:25Z Beetny joined #lisp 2014-12-13T21:07:30Z ejbs: Xach: Thanks! 2014-12-13T21:08:06Z Xach: i am always happy when one of the very few things i added to sbcl is useful to somebody 2014-12-13T21:08:58Z stacksmith: G'day. Do forms that are (eval-when (:compile-toplevel) ...) get evaluated when a file is compiled, or is it just from REPL? 2014-12-13T21:09:16Z Bicyclidine: when a file is compiled 2014-12-13T21:09:36Z stacksmith: So what qualifies as not toplevel? 2014-12-13T21:09:46Z Beetny quit (Read error: Connection reset by peer) 2014-12-13T21:09:58Z Xach: stacksmith: I don't know the justification, but the wisdom I've heard & followed is "always use all three options for eval-when all the time" 2014-12-13T21:10:04Z Bicyclidine: clhs 3.2.3.1 2014-12-13T21:10:04Z specbot: Processing of Top Level Forms: http://www.lispworks.com/reference/HyperSpec/Body/03_bca.htm 2014-12-13T21:10:13Z Denommus quit (Ping timeout: 260 seconds) 2014-12-13T21:10:14Z Bicyclidine: essentially anything that would take extra processing 2014-12-13T21:10:17Z ndrei quit (Ping timeout: 244 seconds) 2014-12-13T21:10:21Z Grue`: in eval-when :compile and :compile-toplevel, etc. are identical 2014-12-13T21:10:24Z Bicyclidine: e.g. (let ((x ...)) (foo)), (foo) is not toplevel 2014-12-13T21:10:25Z Xach: and "if you think you don't need all three, you're wrong, and it won't work the way you want" 2014-12-13T21:11:15Z Denommus joined #lisp 2014-12-13T21:11:37Z stacksmith: I am looking at expansion of a macro that defparameters a symbol; it expands to (eval-when (:compile toplevel) (sb-impl::%compiler-defvar 'mysymbol)) 2014-12-13T21:13:21Z stacksmith: I am concerned that it will not defparameter inside a let form... 2014-12-13T21:14:29Z Grue`: eval-when always evals code when not at toplevel 2014-12-13T21:14:33Z Bicyclidine: (let (...) (defvar ...)) doesn't have compile-time side-effects, no 2014-12-13T21:15:54Z Beetny joined #lisp 2014-12-13T21:16:14Z stacksmith: Hmm. I have to think about this some more. 2014-12-13T21:16:44Z stacksmith: Thanks 2014-12-13T21:17:51Z nyef joined #lisp 2014-12-13T21:23:02Z Denommus quit (Ping timeout: 256 seconds) 2014-12-13T21:23:11Z Grue`: oh, I was wrong, it actually ignores stuff without :execute even when not at top-level 2014-12-13T21:23:59Z Bicyclidine: yes, and anyway the point of compiler-defvar is to execute it in the compiler context, not at runtime. 2014-12-13T21:26:32Z theseb: Should I be excited about learning to use Emacs SLIME mode? i've heard good things about it 2014-12-13T21:26:41Z theseb: is it really the best thing this side of heaven? :) 2014-12-13T21:28:07Z nyef: theseb: I found it useful for a while, but eventually found it to be too fragile, though that may have been a quirk of my environment at the time. 2014-12-13T21:28:43Z theseb: nyef: really? 2014-12-13T21:29:24Z Beetny quit (Ping timeout: 245 seconds) 2014-12-13T21:29:31Z Grue`: i don't see how hearing good things about something equates it being a slice of heaven 2014-12-13T21:29:52Z nyef: Yeah, though this was a year and a half or more ago, so the general situation may well be different for you. 2014-12-13T21:30:04Z theseb: Grue`: if you heard some of the luv thrown at it you'd know what i mean 2014-12-13T21:30:11Z Petit_Dejeuner__: Grue`, Not many people give first hand accounts of heaven. 2014-12-13T21:30:12Z Beetny joined #lisp 2014-12-13T21:30:39Z c53100 quit (Ping timeout: 244 seconds) 2014-12-13T21:31:05Z theseb: Grue`: granted it was tongue-in-cheek but i remember one doc that said "if you don't use SLIME I won't talk to you" 2014-12-13T21:31:25Z theseb: i felt that kind of passion was mean SLIME was the cat's meow 2014-12-13T21:31:39Z theseb: s/was mean/meant 2014-12-13T21:31:50Z Grue`: every emacs mode is a Best Thing Ever for somebody: org, magit, evil, paredit, and so on 2014-12-13T21:31:55Z kjeldahl quit (Ping timeout: 272 seconds) 2014-12-13T21:32:25Z Xach: slime is a good and useful tool. 2014-12-13T21:32:55Z ROBcorp joined #lisp 2014-12-13T21:33:01Z kjeldahl joined #lisp 2014-12-13T21:33:15Z PinealGland quit (Quit: leaving) 2014-12-13T21:33:49Z drewc quit (Quit: Leaving.) 2014-12-13T21:33:51Z drewc1 joined #lisp 2014-12-13T21:37:34Z milosn quit (Ping timeout: 264 seconds) 2014-12-13T21:37:46Z ROBcorp quit (Ping timeout: 265 seconds) 2014-12-13T21:49:44Z yonkie joined #lisp 2014-12-13T21:49:58Z tcr quit (Quit: Leaving.) 2014-12-13T21:50:20Z oudeis quit (Quit: This computer has gone to sleep) 2014-12-13T21:50:31Z _loic_ quit (Remote host closed the connection) 2014-12-13T21:50:40Z milosn joined #lisp 2014-12-13T21:52:12Z Guthur joined #lisp 2014-12-13T21:57:40Z MoALTz_ joined #lisp 2014-12-13T21:58:50Z soggybre1d joined #lisp 2014-12-13T22:01:05Z MoALTz quit (Ping timeout: 260 seconds) 2014-12-13T22:01:34Z Hi-Angel quit (Ping timeout: 256 seconds) 2014-12-13T22:01:37Z soggybread quit (Ping timeout: 240 seconds) 2014-12-13T22:03:58Z aleamb quit (Ping timeout: 264 seconds) 2014-12-13T22:05:35Z gravicappa quit (Remote host closed the connection) 2014-12-13T22:14:28Z gabriel-artigue joined #lisp 2014-12-13T22:20:05Z towodo quit (Quit: towodo) 2014-12-13T22:21:47Z stacksmith: OK, I am not understanding this. Placing a defparameter directly into a macro (not into `whatever it expands to) seems to create a local binding -- as evidenced by (boundp 'mysymbol) right there... So how do I bind a global symbol in a macro? 2014-12-13T22:22:32Z Bicyclidine: You mean you have a defparameter that runs in the macro expander function, i.e. at compile time? 2014-12-13T22:22:40Z Bicyclidine: i think a paste of your code might help 2014-12-13T22:22:43Z stacksmith: Bicyclidine, correct. 2014-12-13T22:23:27Z Bicyclidine: defparameter will never establish a local binding 2014-12-13T22:23:35Z Bicyclidine: boundp also reports true on global dynamic variables 2014-12-13T22:24:34Z mrSpec quit (Remote host closed the connection) 2014-12-13T22:24:50Z stacksmith: Global reports nil. This, in a macro, reports bound:T... (defparameter name (make-instance 'module :name name :nets (make-hash-table :test 'eq) )) (format t "bound:~A~%" (boundp 'name)) 2014-12-13T22:25:41Z Bicyclidine: I guess because the runtime and compile time have different dynamic environments. You really shouldn't use side effects in macro expanders. 2014-12-13T22:25:48Z stacksmith: Oh, it's the parameter binding perhaps. 2014-12-13T22:26:08Z Bicyclidine: I don't think I understand your problem. What's wrong with (defmacro ... `(defparameter ,name (make-instance ...))) 2014-12-13T22:26:29Z kami quit (Ping timeout: 245 seconds) 2014-12-13T22:27:44Z stacksmith: There is a sequencing issue. I'd love to just create the data object and bind it to a global prior to macro-expanding &body, which invokes other macros etc. It's a pretty dense DSL. 2014-12-13T22:28:30Z Bicyclidine: Do you want the data object created at compile time or runtime? 2014-12-13T22:28:46Z Bicyclidine: well, or load-time, whatever 2014-12-13T22:28:57Z hiroakip joined #lisp 2014-12-13T22:29:43Z araujo joined #lisp 2014-12-13T22:29:43Z araujo quit (Changing host) 2014-12-13T22:29:43Z araujo joined #lisp 2014-12-13T22:29:57Z stacksmith: It can work either way. I started at compile time, then decided that I should just expand to avoid eval'ing, but now I am just scratching my head at the hot mess. 2014-12-13T22:30:22Z innertracks quit (Quit: innertracks) 2014-12-13T22:30:38Z Bicyclidine: if the code is too complicated and/or long to paste, maybe you could try explaining it? 2014-12-13T22:31:07Z stacksmith: I would like to start by creating the object at compile time, in the macro. Then, bind it to a global symbol, so it's available at REPL. 2014-12-13T22:31:27Z stacksmith: The macro &body then fills out some data slots in the object... 2014-12-13T22:32:02Z Bicyclidine: (defmacro ... (let ((object (make-object ...))) `(progn (defparameter ,name ,object) (setf (thing-property ,name) ...))))? 2014-12-13T22:32:19Z Bicyclidine: or `(progn (defparameter ...) ,@body) I guess I mean 2014-12-13T22:33:03Z stacksmith: That should work. Is it possible to move the defparameter out of `(..) form higher up? 2014-12-13T22:33:36Z Bicyclidine: What, have the defparameter at compile time? 2014-12-13T22:33:43Z ROBcorp joined #lisp 2014-12-13T22:34:17Z stacksmith: Yes? 2014-12-13T22:34:25Z Bicyclidine: What's the point of having a macro then? 2014-12-13T22:35:23Z kristof: Perhaps so that other macros can reference that variable during macroexpansion. 2014-12-13T22:35:25Z stacksmith: Well, the macro also parses some DSL that is weird, then expands &body that is LISP. 2014-12-13T22:36:03Z stacksmith: &body forms may be macros that need access to the symbol bound by the top macro. 2014-12-13T22:36:15Z Bicyclidine: need it /at macroexpansion time/, though? 2014-12-13T22:36:28Z angavrilov quit (Remote host closed the connection) 2014-12-13T22:37:16Z Bicyclidine: if you want your dsl thing done at compile time it sounds like you want load-time-value or something, not a macro 2014-12-13T22:37:46Z stacksmith: I have to rethink it. I do need macros to control evaluation of forms... 2014-12-13T22:38:00Z ROBcorp quit (Ping timeout: 250 seconds) 2014-12-13T22:38:29Z kristof: All this talk about macros, and I'm sitting here thinking about some C macros I need to write. Makes me wish I were using lisp. 2014-12-13T22:40:18Z stacksmith: kristof, my condolences. 2014-12-13T22:41:13Z stacksmith: OK, now I remember. I moved defparameter out of the `expanded code as it's inside a (let form), which makes it go away! 2014-12-13T22:42:16Z Bicyclidine: uh, you mean the macro-time let form? 2014-12-13T22:42:28Z Bicyclidine: that doesn't matter to toplevelness, toplevelness is a property of the generated code 2014-12-13T22:43:41Z stacksmith: The generated code is (let ((my (make-instance...)))), creating an anaphor for inner macros. Now I want to bind a global with the object's name, but I can't as it's in a let form... 2014-12-13T22:44:15Z Bicyclidine: why would you bother with an anaphor when you're already binding a global? 2014-12-13T22:44:40Z Bicyclidine: (if you want to anyway, just do `(progn (defparameter ,name (make-instance ...)) (let ((my ,name)) ,@body)) 2014-12-13T22:44:50Z stacksmith: Ah, I am parsing a dsl that creates named objects. So inner macros don't know what the global symbol is. 2014-12-13T22:44:51Z sdemarre quit (Ping timeout: 250 seconds) 2014-12-13T22:45:35Z stacksmith: That is probably the way to accomplish what I need... 2014-12-13T22:47:23Z stacksmith: Now should the top macro be in a let form, defparam will not happen as far as I can tell. 2014-12-13T22:48:01Z Bicyclidine: not the compile time effects, no 2014-12-13T22:49:34Z stacksmith: Yes, right. I wish I was just a little smarter to keep track of the 4 levels going on here. 2014-12-13T22:49:42Z mishoo quit (Ping timeout: 244 seconds) 2014-12-13T22:50:20Z Bicyclidine: of course, the compile time side effect of defvar and defparameter is just to declare the variable special 2014-12-13T22:50:40Z sol__ quit (Quit: Leaving) 2014-12-13T22:50:58Z Bicyclidine: so you could just do `(progn (defvar ,name) (let ((my (make-instance ...))) (setf ,name my) ,@body)) 2014-12-13T22:51:33Z White_Flame: I would still advocate either eliminating behavior during macroexpansion, and emit runtime code which does all the processing; or creating a non-macro parser which can view whatever scope it needs to whenever it needs it 2014-12-13T22:52:57Z stacksmith: White_Flame, you are probably right. It's just so close to Lisp that I don't want to throw out the baby with the bathwater, and have to deal with expression parsing etc directly... 2014-12-13T22:53:14Z White_Flame: then take the former approach 2014-12-13T22:53:16Z Bicyclidine: this is that same thing i got into an argument about before, huh 2014-12-13T22:53:50Z White_Flame: no defparameters, no state tracking, etc, within the macro processing itself. Generate code to do that after it's all manifested 2014-12-13T22:54:12Z stacksmith: Yea, sorry about dredging it up. I am going in circles a bit. 2014-12-13T22:54:30Z Bicyclidine: at least it means i know no matter how bad your code ends up it'll be better than xilinx 2014-12-13T22:55:03Z stacksmith: Hah, it already is and it's not working at all. 2014-12-13T22:55:03Z White_Flame: Another wrench in the works is that the compiler is allowed to expand a single macro instance multiple times 2014-12-13T22:55:15Z White_Flame: I've never been hit by that, but it's another indicator not to have side-effects in macros 2014-12-13T22:55:50Z stacksmith: Well, I will now try to expand only. I think I can keep enough information in the data object to make it all work. 2014-12-13T22:55:54Z Bicyclidine: yeah, you should definitely avoid side effects in macros. that doesn't mean it might not be sensible to use the load-time-value and/or load-form mechanisms, which don't have those problems 2014-12-13T22:56:05Z Bicyclidine: probably shouldn't mess with that unless you really have to though 2014-12-13T22:57:25Z stacksmith: I am new to Lisp, so it's hard to balance the desire to keep as much of Lisp as possible in the DSL with knowing when to bail. 2014-12-13T22:58:11Z White_Flame: yeah, there's a lot of finesse involved when your DSL lisp bodies are heavily tied to complex scope 2014-12-13T22:58:38Z dstatyvka left #lisp 2014-12-13T22:58:46Z MoALTz_ quit (Quit: Leaving) 2014-12-13T22:59:28Z stacksmith: There is a whole other level of the DSL, where the circuit is actually expanded, and instances of these data objects get parametrized... And generating a netlist that threads through the dynamic circuit construct into the instances into the module definitions and back... 2014-12-13T23:00:58Z stacksmith: It's a real brainf*ck. I got it working with C, but it became completely monolithic. And Greenspun's rule kicked in. 2014-12-13T23:02:34Z stacksmith: Anyway, I am really happy to be doing this in Lisp... 2014-12-13T23:02:36Z c53100 joined #lisp 2014-12-13T23:05:01Z isis__ joined #lisp 2014-12-13T23:05:15Z kristof: I'm happy you're doing it in Lisp, too 2014-12-13T23:05:22Z kristof continues to cludge preprocessor macros together 2014-12-13T23:06:05Z Fare quit (Ping timeout: 250 seconds) 2014-12-13T23:06:14Z goglosh joined #lisp 2014-12-13T23:06:28Z White_Flame: Another approach to the design is to wrap all the embedded Lisp bodies into lambdas, with parameters passed for everything it needs, and store those as objects in your tree instead of trying to evaluate them directly 2014-12-13T23:06:49Z White_Flame: that lets you defer execution to whenever is appropriate 2014-12-13T23:08:12Z stacksmith: I've thought about this, and may implement a direct form that allows deferred evaluation at the right time. (when-placing (...)) etc. 2014-12-13T23:08:12Z isis_ quit (Ping timeout: 245 seconds) 2014-12-13T23:09:50Z goglosh: does cl support keywords in macros? 2014-12-13T23:10:13Z kristof: Yes. 2014-12-13T23:10:17Z goglosh: nice 2014-12-13T23:11:11Z paul0 joined #lisp 2014-12-13T23:11:25Z stacksmith: There is really nothing I've seen better then Lisp macros. Even with all my bungling. 2014-12-13T23:11:31Z goglosh: so I could make a construct such as (for i in ls) right? 2014-12-13T23:11:53Z Bicyclidine: sure 2014-12-13T23:12:04Z Bicyclidine: a macro is just a lisp function that takes part of the source text as its arguments 2014-12-13T23:12:12Z Bicyclidine: so you can do whatever parsing you damn well please on it 2014-12-13T23:12:34Z Bicyclidine: are you aware of the loop macro 2014-12-13T23:12:36Z White_Flame: it does have a more powerful lambda list, though, with destructuring 2014-12-13T23:12:38Z kristof: minus the &body difference 2014-12-13T23:12:50Z goglosh: uh... what 2014-12-13T23:12:51Z Bicyclidine: "minus the &body difference"? 2014-12-13T23:12:52Z stacksmith: Bicyclidine, a macro takes sexps, not text, right? 2014-12-13T23:13:07Z Bicyclidine: stacksmith: yes, i mean "text" more generally than "a bunch of characters", sorry 2014-12-13T23:13:13Z kristof: Bicyclidine: Normal defuns don't accept &body in their arglist, I thought? 2014-12-13T23:13:20Z Bicyclidine: kristof: no, but they have &rest 2014-12-13T23:13:31Z Grue`: oh we're doing "are sexps code" thing again 2014-12-13T23:13:35Z Bicyclidine: kristof: &body is just part of the destructuring, like White_Flame said 2014-12-13T23:13:41Z kristof: K :P 2014-12-13T23:14:11Z Bicyclidine: goglosh: (loop for i in ls) is already standard lisp, the loop macro does keywords like you say 2014-12-13T23:14:15Z stacksmith: goglosh, as Bicyclidine pointed out, you can (loop for i in ls) 2014-12-13T23:14:28Z White_Flame: &body and &rest are effectively the same, except for how SLIME indents it :-P 2014-12-13T23:14:47Z goglosh: oh I see, lemme check that out 2014-12-13T23:15:42Z stacksmith: goglosh, as you explore what loop can do, you will go through all the stages, disbelief, anger, negotiation, etc... 2014-12-13T23:15:58Z goglosh: interdasting 2014-12-13T23:16:11Z goglosh: is lisp full of surprises? 2014-12-13T23:16:26Z stacksmith: Your brain on lisp is what's full of surprises. 2014-12-13T23:16:27Z Bicyclidine: like a meat piñata 2014-12-13T23:16:31Z Grue`: CLHS always surprises me when i read it 2014-12-13T23:16:33Z White_Flame: it's full of conses 2014-12-13T23:16:43Z goglosh: meat piñata 2014-12-13T23:17:03Z goglosh: I just hope using lisp doesn't earn me someone coming at me with a bat 2014-12-13T23:17:14Z goglosh: s/bat/club/ 2014-12-13T23:19:02Z nyef: ... or a "Chiroptera Appreciation Society"? 2014-12-13T23:19:18Z nyef: (Bat club.) 2014-12-13T23:19:24Z goglosh: lel 2014-12-13T23:20:01Z goglosh: that wouldn't be too bad 2014-12-13T23:20:31Z nyef: Or, perhaps, a melee weapon wielded by a character played by Adam West? 2014-12-13T23:22:45Z ehu quit (Ping timeout: 260 seconds) 2014-12-13T23:23:56Z ejbs quit (Ping timeout: 250 seconds) 2014-12-13T23:24:56Z stacksmith: So my macro that has a `(progn (defparameter ,name ...) (let ((my ,name)) ...) does not work as expected. It appears that ,name never gets bound in the global context... 2014-12-13T23:25:47Z kcj joined #lisp 2014-12-13T23:26:05Z Bicyclidine: i don't think i'm going to be able to help you without more information, because if your macro is at top level that is just not how it works 2014-12-13T23:26:30Z stacksmith: I'll work up a paste 2014-12-13T23:34:29Z ROBcorp joined #lisp 2014-12-13T23:38:47Z ROBcorp quit (Ping timeout: 244 seconds) 2014-12-13T23:51:33Z isis__ quit (Read error: Connection reset by peer) 2014-12-13T23:52:09Z Jubb quit (Read error: Connection reset by peer) 2014-12-13T23:52:10Z isis__ joined #lisp 2014-12-13T23:52:53Z linux_dream joined #lisp 2014-12-13T23:53:23Z kam270 joined #lisp 2014-12-13T23:59:04Z Fare joined #lisp