2015-12-23T00:00:09Z ASau` joined #lisp 2015-12-23T00:00:20Z mordocai: Looks like that is all in the runtime folder? 2015-12-23T00:00:26Z dreamaddict: then the real question here is: why am I the only programmer that I know who has even heard of LISP and how awesome it is? 2015-12-23T00:00:34Z dreamaddict: (I do know multiple programmers) 2015-12-23T00:00:54Z Jesin quit (Quit: Leaving) 2015-12-23T00:00:58Z mordocai: dreamaddict: You hang out with the wrong programmers :P 2015-12-23T00:01:04Z dreamaddict: obviously 2015-12-23T00:01:31Z mordocai: Seriously though, most programmers with interest/knowledge in language design probably at least know about lisp. 2015-12-23T00:01:37Z Xach: phoe_krk: sbcl is derived from cmucl, which has a C runtime now, but it didn't start that way. 2015-12-23T00:01:40Z dreamaddict: when I first took coding back up a few years ago, it looked like “well, either you like JS or C++ or…tough crap, that’s what people use” 2015-12-23T00:02:02Z sp: i'd be worried about someone who designs a modern language without knowing lisp 2015-12-23T00:02:04Z phoe_krk: CMUCL was able to compile itself without C? 2015-12-23T00:02:25Z dreamaddict: and then I learned about this magical language where instead of going “aw shucks, looks like the language doesn’t do that”, you make the language do that, like a real programming language is supposed to be 2015-12-23T00:02:26Z Xach: phoe_krk: yes. 2015-12-23T00:02:28Z mordocai: Yeah, I actually had thought there was no C until you pointed out otherwise phoe_krk. 2015-12-23T00:02:28Z phoe_krk: I mean, was it pure Lisp? 2015-12-23T00:02:34Z mordocai: assembly -> lisp 2015-12-23T00:02:35Z Xach: phoe_krk: no 2015-12-23T00:02:42Z dreamaddict: and…no one I know has heard of it. Well, you’re probably right about not knowing the right programmers :P 2015-12-23T00:02:43Z mordocai: well python is in there (not THAT python) 2015-12-23T00:02:52Z Xach: phoe_krk: I can't reach cons.org right now, but it has a cmucl history page that explains it a bit. 2015-12-23T00:02:57Z phoe_krk: I see. 2015-12-23T00:02:58Z Xach: http://webcache.googleusercontent.com/search?q=cache:CjBK1-A0Xn4J:www.cons.org/cmucl/doc/cmucl-history.html+&cd=2&hl=en&ct=clnk&gl=us is the cache. 2015-12-23T00:03:07Z Xach: >> The first target machine was the Perq, which was a microcoded graphics workstation inspired by the Xerox Alto and D-machines. We wrote our own Lisp instruction set in microcode. 2015-12-23T00:03:11Z ASau` is now known as ASau 2015-12-23T00:03:16Z phoe_krk: Ooh, Lisp and assembly. 2015-12-23T00:03:30Z Xach: C is a lot newer than Lisp. 2015-12-23T00:04:02Z sp: Xach: did someone mention it isn't? 2015-12-23T00:04:02Z dreamaddict: if you can write a lisp in assembly…that’s as awesome as it gets 2015-12-23T00:04:13Z Jesin joined #lisp 2015-12-23T00:04:30Z phoe_krk: dreamaddict: Lisp is God damn easy to implement 2015-12-23T00:04:33Z sp: i think you mean if your lisp is the assembly 2015-12-23T00:04:36Z phoe_krk: compared to Java or even C 2015-12-23T00:04:41Z Bicyclidine: plus C makes more sense when you're on a C-based operating system, which the alto at least probably wasn't 2015-12-23T00:04:45Z Xach: sp: Not that I know of. But the notion of "sbcl happened when someone awesome at both Lisp and C did it" makes it seem like the skills are somehow related in time. 2015-12-23T00:04:53Z phoe_krk: Bicyclidine: C is a language for writing Unix. 2015-12-23T00:05:01Z phoe_krk: as someone said some time ago. 2015-12-23T00:05:10Z sp: Xach: oh okay 2015-12-23T00:05:26Z phoe_krk: someone called Lisp a high-level assembler sometime, too. 2015-12-23T00:05:33Z sp: phoe_krk: and for implementing linked lists yet again :) 2015-12-23T00:05:43Z phoe_krk: sp: :P 2015-12-23T00:06:04Z Bicyclidine: the old edition of TAOCP v. 1 i read included complaining about lisp, it was pretty good 2015-12-23T00:06:12Z Bicyclidine: dunno if they've kept that 2015-12-23T00:06:24Z sp: what? that sounds like a great read 2015-12-23T00:06:47Z dreamaddict: what’s that one quote I read…”Lisp programmers know the value of everything and the cost of nothing” 2015-12-23T00:07:46Z mvilleneuve quit (Quit: This computer has gone to sleep) 2015-12-23T00:07:54Z sp: dreamaddict: of course, the value of nothing is NIL 2015-12-23T00:08:02Z sp: no wait 2015-12-23T00:08:46Z dreamaddict: implying that since you don’t have to manually do all of the low-level buggery that you can’t know what it all means, or something like that 2015-12-23T00:08:46Z pillton hates people that make large sweeping generalisations. 2015-12-23T00:08:51Z phoe_krk: dreamaddict: that quote is bullshit. 2015-12-23T00:09:12Z sp: phoe_krk: judging by the endless declaim/declare statements i see in the average CL program, yeah 2015-12-23T00:09:15Z dreamaddict: the more I learn about this language, the more bullshit it seems 2015-12-23T00:09:17Z phoe_krk: and C programmers love giving each other pointers until one of them dies of a segfault. 2015-12-23T00:09:27Z sp: lolol 2015-12-23T00:10:14Z phoe_krk: sp: some of the good advice I got is, always keep unoptimized versions of your code 2015-12-23T00:10:18Z phoe_krk: because they're readable. 2015-12-23T00:10:40Z phoe_krk: heavily-optimized Lisp is just as readable as C. meaning, not much. 2015-12-23T00:10:57Z dreamaddict: yeah they seem to intersect on that front 2015-12-23T00:10:57Z sp: wouldn't it be pretty simple to keep a separate list of the optimizations you want, and automatically apply them at compile time? 2015-12-23T00:10:59Z phoe_krk: a clear algorithm will always read better than hundreds of (proclaim 'independence) 2015-12-23T00:11:20Z sp: i've never done a large scale CL project, so i wouldn't know 2015-12-23T00:11:24Z phoe_krk: sp: it is simple, it's called (declaim ((speed 3))) 2015-12-23T00:11:27Z dreamaddict: but what’s nice about LISP is that you can start at the easy-to-comprehend version and then optimize 2015-12-23T00:11:28Z phoe_krk: if I got that right 2015-12-23T00:11:35Z phoe_krk: dreamaddict: never the other way around. 2015-12-23T00:11:41Z dreamaddict: never 2015-12-23T00:11:57Z dreamaddict: that was pissing me off about making things in C 2015-12-23T00:11:58Z phoe_krk: trying to optimize something that doesn't work at all yet isn't a good idea. 2015-12-23T00:12:02Z Jonsky: Just saw this discussoin 2015-12-23T00:12:22Z Xach: It's not so much a discussion as random declarations by people who don't know much about what they're talking about. 2015-12-23T00:12:22Z Jonsky: Some of the 99 Lisp problems are covered in The Little Schemeer and The Seasoned Schemer. 2015-12-23T00:12:24Z Jonsky: So cute 2015-12-23T00:12:24Z sp: phoe_krk: yes, but that applies to the whole program, right? 2015-12-23T00:12:50Z phoe_krk: sp: yes. for manual optimizations, you could easily write a macro. 2015-12-23T00:13:02Z sp: yeah, that's in line with what i was thinking. i'm just wondering, is it done? 2015-12-23T00:13:02Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T00:13:14Z phoe_krk: I don't know. 2015-12-23T00:13:18Z phoe_krk: Possibly might be done. 2015-12-23T00:13:25Z sp: because i'm lazy enough that i would probably do that 2015-12-23T00:13:27Z phoe_krk: Possibly not. 2015-12-23T00:13:32Z phoe_krk: sp: good instinct. 2015-12-23T00:13:34Z kyfho joined #lisp 2015-12-23T00:13:38Z sp: :) 2015-12-23T00:14:28Z phoe_krk: But it would be easy to do something like (with-optimization :speed 3 (var1 fixnum) (var2 fixnum) ...) 2015-12-23T00:14:38Z phoe_krk: with your functions and whatever else going in the ... 2015-12-23T00:14:54Z phoe_krk: so the macro can automatically declaim things wherever necessary. 2015-12-23T00:15:05Z sp: yeah, that's how i imagine it 2015-12-23T00:15:34Z phoe_krk: but I'd wait for others' voice on that, because I have no idea whether it was done and, if not, why. 2015-12-23T00:16:15Z sp: true, but if it's a dead-end, that would (presumably) become obvious soon enough 2015-12-23T00:16:21Z Zhivago: with-xxx are generally for local things, in which case, you can just use (locally ...) 2015-12-23T00:16:37Z phoe_krk: Zhivago: yes, and we mean local optimizations by that. 2015-12-23T00:16:37Z k-stz quit (Remote host closed the connection) 2015-12-23T00:17:19Z Zhivago: In which case, have your macro expand into (locally ...) :) 2015-12-23T00:17:33Z Zhivago: But then you'd only have it apply to local functions ... 2015-12-23T00:19:01Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T00:20:07Z kyfho joined #lisp 2015-12-23T00:20:16Z sp: well, i'll play around with it if i ever see myself going optimization-crazy 2015-12-23T00:20:30Z jasom: what's the current status of lisp on mobile? 2015-12-23T00:20:38Z jasom: IIRC there are now options other than mocl? 2015-12-23T00:21:39Z Zhivago: Well, dynamic compilation is generally problematic on mobile systems. 2015-12-23T00:22:07Z jasom: Zhivago: because of a lack of execute permissions on the data segment? 2015-12-23T00:22:33Z kyfho: when lisp phone? 2015-12-23T00:22:48Z wildlander quit (Quit: Saliendo) 2015-12-23T00:23:23Z resttime: jasom: I believe it's just that though if it counts, Clojure 2015-12-23T00:23:47Z jasom: resttime: specifically talking about common lisp 2015-12-23T00:24:11Z kyfho: no java 2015-12-23T00:24:17Z kyfho: oracle must die 2015-12-23T00:24:30Z phoe_krk: kyfho: it won't. 2015-12-23T00:24:55Z sp: kyfho: why does oracle have to die? why do you have to use their products? 2015-12-23T00:25:04Z phoe_krk: Zhivago: only interpreting is left, then? 2015-12-23T00:25:18Z Zhivago: Or ahead-of-time compilation, or some combination. 2015-12-23T00:25:29Z Zhivago: Although I may be out of date or mistaken, so ymmv. 2015-12-23T00:25:48Z phoe_krk: Zhivago: you can't do ahead-of-time compilation while defining a function by a REPL, I believe. 2015-12-23T00:25:59Z jasom: sbcl struggles with AoT compilation, IIRC it does compilation, e.g. on any make-instance with unique arguments 2015-12-23T00:26:09Z Zhivago: Sure, but you can call an AOT compiled function from a REPL using an interpreter. 2015-12-23T00:26:19Z phoe_krk: Hmmm. 2015-12-23T00:26:42Z Zhivago: sbcl does AOT compilation, producing fasls. 2015-12-23T00:26:51Z phoe_krk: That's troublesome nevertheless if there's problems with execute permissions. 2015-12-23T00:26:55Z jasom: Zhivago: and then it does more compilation at runtime 2015-12-23T00:27:12Z Zhivago: Sure, but that doesn't mean that it struggles with AoT. 2015-12-23T00:27:47Z jasom: Zhivago: it has several places where compilation is delayed; IMO that counts as struggling with AoT 2015-12-23T00:28:08Z jasom: though I can avoid CLOS, which should prevent most, if not all, of that 2015-12-23T00:28:59Z phoe_krk: Okay! Sleep time for me. 2015-12-23T00:29:02Z phoe_krk: Night, #parens 2015-12-23T00:29:51Z karswell joined #lisp 2015-12-23T00:31:52Z sp: phoe_krk: see ya mate 2015-12-23T00:32:27Z jasom: wait, LuaJIT works on android and iOS; if JITing is possible, then dynamic compilation should be, right? 2015-12-23T00:33:11Z jasom: ah "Note: the JIT compiler is disabled for iOS, because regular iOS Apps are not allowed to generate code at runtime. You'll only get the performance of the LuaJIT interpreter on iOS. This is still faster than plain Lua, but much slower than the JIT compiler. Please complain to Apple, not me. Or use Android. :-p" 2015-12-23T00:33:32Z jasom: so a fast interpreter would be useful for ios 2015-12-23T00:34:19Z bcoburn_n joined #lisp 2015-12-23T00:34:49Z phoe_krk: or a way to avoid that with a jailbreak if possible. 2015-12-23T00:34:51Z phoe_krk: night 2015-12-23T00:36:05Z bcoburn quit (Ping timeout: 260 seconds) 2015-12-23T00:38:32Z attila_lendvai quit (Read error: No route to host) 2015-12-23T00:39:07Z phoe_krk: http://stackoverflow.com/questions/4733847/can-you-build-dynamic-libraries-for-ios-and-load-them-at-runtime ! 2015-12-23T00:39:16Z phoe_krk: "Apple doesn't want you doing this for App Store apps, but the operating system certainly allows it. Jailbreak apps use this technique all the time. You basically use a standard UNIX technique to dynamically open a framework/library, and then use stuff in it." 2015-12-23T00:39:31Z phoe_krk: Therefore, a jailbroken Lisp should be able to dynamically compile your code. 2015-12-23T00:39:38Z phoe_krk: okay, night, take three. xD 2015-12-23T00:40:32Z attila_lendvai joined #lisp 2015-12-23T00:40:32Z attila_lendvai quit (Changing host) 2015-12-23T00:40:32Z attila_lendvai joined #lisp 2015-12-23T00:42:04Z Petit_Dejeuner joined #lisp 2015-12-23T00:49:02Z Pittman quit (Quit: Leaving) 2015-12-23T00:52:08Z wolfcore quit (Read error: Connection reset by peer) 2015-12-23T00:55:08Z eazar001 joined #lisp 2015-12-23T00:58:01Z eazar001 quit (Client Quit) 2015-12-23T00:58:01Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-23T01:00:13Z eazar001 joined #lisp 2015-12-23T01:00:18Z harish quit (Ping timeout: 265 seconds) 2015-12-23T01:02:19Z stepnem quit (Ping timeout: 260 seconds) 2015-12-23T01:03:20Z wolfcore joined #lisp 2015-12-23T01:03:44Z wolfcore is now known as Guest1487 2015-12-23T01:05:35Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T01:06:06Z kyfho joined #lisp 2015-12-23T01:13:36Z karswell quit (Remote host closed the connection) 2015-12-23T01:24:46Z Jonsky left #lisp 2015-12-23T01:25:20Z Karl_Dscc quit (Remote host closed the connection) 2015-12-23T01:33:52Z iddqd quit (Quit: Connection closed for inactivity) 2015-12-23T01:38:07Z ajf- quit (Quit: Textual IRC Client: www.textualapp.com) 2015-12-23T01:39:30Z grouzen quit (Ping timeout: 256 seconds) 2015-12-23T01:41:28Z FreeBirdLjj joined #lisp 2015-12-23T01:50:12Z badkins quit (Remote host closed the connection) 2015-12-23T01:51:20Z gabriel_ joined #lisp 2015-12-23T01:56:49Z BitPuffin|osx quit (Ping timeout: 245 seconds) 2015-12-23T01:57:07Z meowmeowmeow joined #lisp 2015-12-23T01:58:05Z gabriel_: dude? 2015-12-23T01:58:18Z gabriel_: meowmeowmeow? are you the guy from SDF? 2015-12-23T01:58:27Z manuel_ quit (Quit: manuel_) 2015-12-23T01:58:38Z meowmeowmeow: no, don't believe so 2015-12-23T02:00:57Z gabriel_: similar nickname, my bad :) 2015-12-23T02:02:09Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T02:05:45Z devmau quit (Quit: devmau) 2015-12-23T02:08:52Z kyfho joined #lisp 2015-12-23T02:09:24Z dark_amok joined #lisp 2015-12-23T02:13:00Z dark_amok quit (Client Quit) 2015-12-23T02:14:37Z warweasle joined #lisp 2015-12-23T02:16:39Z aap_ joined #lisp 2015-12-23T02:16:39Z aap quit (Read error: Connection reset by peer) 2015-12-23T02:17:50Z badkins joined #lisp 2015-12-23T02:17:57Z pilne quit (Quit: Quitting) 2015-12-23T02:18:07Z Warlock[29A] joined #lisp 2015-12-23T02:18:33Z badkins quit (Remote host closed the connection) 2015-12-23T02:19:08Z meowmeowmeow quit (Remote host closed the connection) 2015-12-23T02:22:17Z harish joined #lisp 2015-12-23T02:23:25Z pilne joined #lisp 2015-12-23T02:23:59Z warweasle: Anyone know how to make a cffi c-struct which acts like a clos class? 2015-12-23T02:24:55Z psy_ quit (Ping timeout: 240 seconds) 2015-12-23T02:26:04Z arescorpio joined #lisp 2015-12-23T02:28:07Z Bicyclidine: warweasle: "acts like" in what senses? 2015-12-23T02:29:01Z FreeBird_ joined #lisp 2015-12-23T02:29:45Z warweasle: Bicyclidine: It would be simple to initialize-instance (or constructor), automaticlly create accessors, and translate properly from defcfun functions. 2015-12-23T02:30:07Z warweasle can't seem to get it to work with define-foreign-type 2015-12-23T02:31:48Z FreeBirdLjj quit (Ping timeout: 255 seconds) 2015-12-23T02:31:51Z Bicyclidine: cffi docs have a self contradictory example. nice. 2015-12-23T02:32:29Z Bicyclidine: well, more like the example is just describing something completely different. 2015-12-23T02:33:44Z warweasle: Bicyclidine: FOr one, there is a reference to a :class option in defcstruct...which isn't mentioned anywhere else. 2015-12-23T02:34:01Z duggiefresh quit (Remote host closed the connection) 2015-12-23T02:34:49Z Bicyclidine: this documentation is so messed up i don't want to go off it. well, whatever 2015-12-23T02:37:10Z warweasle: Oh well. I'll just keep trying different things until something works. 2015-12-23T02:40:06Z attila_lendvai quit (Ping timeout: 240 seconds) 2015-12-23T02:43:29Z EvW quit (Ping timeout: 255 seconds) 2015-12-23T02:48:25Z kdub_ joined #lisp 2015-12-23T02:51:07Z kdub_ left #lisp 2015-12-23T02:51:17Z kdub_ joined #lisp 2015-12-23T02:52:10Z defaultxr joined #lisp 2015-12-23T03:04:33Z pilne quit (Quit: Quitting) 2015-12-23T03:08:33Z pilne joined #lisp 2015-12-23T03:11:17Z Quadrescence: oh yeah, that undocumented :class option 2015-12-23T03:11:28Z Quadrescence: i ran across that & never figured it out 2015-12-23T03:20:23Z Guest66141 quit (Ping timeout: 255 seconds) 2015-12-23T03:24:25Z mordocai: If I don't need regular expressions should I still use cl-ppcre for replacing items in a string or replace all here http://cl-cookbook.sourceforge.net/strings.html#manip or something else? Strings will be relatively small, but I'd prefer a quicklisp library over cl-cookbook copy paste. 2015-12-23T03:24:53Z Xach: cl-ppcre is pretty good to use 2015-12-23T03:27:10Z kyfho: wha tabuot irregex 2015-12-23T03:29:37Z OrangeShark quit (Quit: Leaving) 2015-12-23T03:35:38Z dkcl joined #lisp 2015-12-23T03:43:44Z wz1000 quit (Read error: Connection reset by peer) 2015-12-23T03:52:34Z Niac joined #lisp 2015-12-23T03:52:40Z Petit_Dejeuner quit (Ping timeout: 256 seconds) 2015-12-23T03:54:39Z gabriel_ quit (Read error: Connection reset by peer) 2015-12-23T03:55:16Z gabriel_ joined #lisp 2015-12-23T03:58:09Z rtoym_ joined #lisp 2015-12-23T03:58:55Z rtoym quit (Ping timeout: 240 seconds) 2015-12-23T03:59:04Z rtoym_ is now known as rtoym 2015-12-23T04:00:14Z kdub_ quit (Quit: kdub_) 2015-12-23T04:01:58Z rme joined #lisp 2015-12-23T04:03:18Z Niac quit (Read error: Connection reset by peer) 2015-12-23T04:03:36Z kdub_ joined #lisp 2015-12-23T04:04:03Z dreamaddict quit (Quit: dreamaddict) 2015-12-23T04:04:54Z pilne quit (Quit: Quitting) 2015-12-23T04:05:10Z kdub_ left #lisp 2015-12-23T04:05:52Z duggiefresh joined #lisp 2015-12-23T04:10:00Z qubitnerd joined #lisp 2015-12-23T04:12:15Z duggiefresh quit 2015-12-23T04:12:55Z gabriel_ quit (Read error: Connection reset by peer) 2015-12-23T04:13:40Z gabriel_ joined #lisp 2015-12-23T04:14:22Z FreeBird_ quit (Read error: Connection reset by peer) 2015-12-23T04:15:18Z FreeBirdLjj joined #lisp 2015-12-23T04:27:54Z Mon_Ouie quit (Quit: WeeChat 1.3) 2015-12-23T04:38:38Z zdm quit (Read error: Connection reset by peer) 2015-12-23T04:39:39Z sjw joined #lisp 2015-12-23T04:41:27Z mordocai: Hey everyone! I'm having trouble with mel-base. It claims this maildir directory doesn't exist, but it does! Any ideas? http://paste.lisp.org/display/284875 2015-12-23T04:41:38Z mordocai: If no one knows i'll just start diving into the code 2015-12-23T04:42:50Z DeadTrickster quit (Ping timeout: 272 seconds) 2015-12-23T04:42:51Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T04:43:39Z kyfho joined #lisp 2015-12-23T04:43:40Z mordocai: ah nvm, I see. My maildir is malformed. That would be a better message 2015-12-23T04:45:29Z warweasle quit (Quit: That floating skull came back again...) 2015-12-23T04:45:37Z Bicyclidine: http://quickdocs.org/lambda-reader/api well, that's a tad unfortunate 2015-12-23T04:47:49Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2015-12-23T04:49:51Z mbuf joined #lisp 2015-12-23T04:53:34Z zacharias quit (Read error: Connection reset by peer) 2015-12-23T04:53:40Z zacharias_ joined #lisp 2015-12-23T04:55:08Z DeadTrickster joined #lisp 2015-12-23T04:57:43Z FreeBird_ joined #lisp 2015-12-23T04:59:16Z treaki__ joined #lisp 2015-12-23T04:59:44Z FreeBirdLjj quit (Ping timeout: 245 seconds) 2015-12-23T05:01:48Z gaya- quit (Ping timeout: 256 seconds) 2015-12-23T05:02:24Z scymtym quit (Ping timeout: 250 seconds) 2015-12-23T05:03:06Z treaki_ quit (Ping timeout: 272 seconds) 2015-12-23T05:05:20Z gaya- joined #lisp 2015-12-23T05:07:58Z p_nathan joined #lisp 2015-12-23T05:09:29Z beach joined #lisp 2015-12-23T05:09:36Z beach: Good morning everyone! 2015-12-23T05:09:41Z blub: hi beach 2015-12-23T05:19:59Z ThePhoeron quit (Ping timeout: 246 seconds) 2015-12-23T05:22:46Z eli joined #lisp 2015-12-23T05:24:15Z s00pcan quit (Remote host closed the connection) 2015-12-23T05:24:36Z ThePhoeron joined #lisp 2015-12-23T05:26:00Z s00pcan joined #lisp 2015-12-23T05:33:01Z Bahman joined #lisp 2015-12-23T05:35:47Z reactor joined #lisp 2015-12-23T05:41:28Z defaultxr quit (Quit: gnight.) 2015-12-23T05:56:24Z arescorpio quit (Quit: Leaving.) 2015-12-23T06:07:24Z harish quit (Remote host closed the connection) 2015-12-23T06:07:35Z adhoc quit (Ping timeout: 246 seconds) 2015-12-23T06:08:21Z harish joined #lisp 2015-12-23T06:08:35Z Bahman quit (Remote host closed the connection) 2015-12-23T06:09:40Z Bahman joined #lisp 2015-12-23T06:10:07Z Intensity quit (Remote host closed the connection) 2015-12-23T06:12:04Z Petit_Dejeuner joined #lisp 2015-12-23T06:12:04Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T06:12:19Z kyfho joined #lisp 2015-12-23T06:12:22Z malbertife joined #lisp 2015-12-23T06:12:39Z harish quit (Ping timeout: 245 seconds) 2015-12-23T06:14:14Z malbertife quit (Client Quit) 2015-12-23T06:24:24Z qwan joined #lisp 2015-12-23T06:25:16Z Intensity joined #lisp 2015-12-23T06:27:53Z quazimodo quit (Ping timeout: 246 seconds) 2015-12-23T06:31:23Z vlatkoB joined #lisp 2015-12-23T06:31:25Z dkcl quit (Remote host closed the connection) 2015-12-23T06:33:51Z kushal joined #lisp 2015-12-23T06:44:10Z s00pcan quit (Ping timeout: 260 seconds) 2015-12-23T06:45:34Z s00pcan joined #lisp 2015-12-23T06:46:56Z beach left #lisp 2015-12-23T06:47:44Z blub quit (Remote host closed the connection) 2015-12-23T06:48:57Z Intensity quit (Remote host closed the connection) 2015-12-23T06:49:51Z Davidbrcz quit (Read error: Connection reset by peer) 2015-12-23T06:52:09Z Davidbrcz joined #lisp 2015-12-23T06:58:24Z blub joined #lisp 2015-12-23T06:59:02Z guicho joined #lisp 2015-12-23T06:59:19Z dkcl joined #lisp 2015-12-23T07:04:05Z Intensity joined #lisp 2015-12-23T07:04:05Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T07:04:19Z gabot quit (Ping timeout: 245 seconds) 2015-12-23T07:04:21Z kyfho joined #lisp 2015-12-23T07:04:59Z eli quit (Ping timeout: 276 seconds) 2015-12-23T07:12:45Z ASau quit (Ping timeout: 260 seconds) 2015-12-23T07:17:47Z treaki__ quit (Quit: Leaving) 2015-12-23T07:20:02Z treaki joined #lisp 2015-12-23T07:20:46Z Intensity quit (Remote host closed the connection) 2015-12-23T07:20:55Z futpib joined #lisp 2015-12-23T07:22:06Z quazimodo joined #lisp 2015-12-23T07:25:55Z Intensity joined #lisp 2015-12-23T07:27:40Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T07:27:58Z kyfho joined #lisp 2015-12-23T07:29:42Z quazimodo quit (Read error: No route to host) 2015-12-23T07:32:52Z kushal quit (Quit: Leaving) 2015-12-23T07:32:53Z kdas_ joined #lisp 2015-12-23T07:34:57Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T07:35:21Z kyfho joined #lisp 2015-12-23T07:36:46Z Demosthenex quit (Ping timeout: 240 seconds) 2015-12-23T07:37:58Z Demosthenex joined #lisp 2015-12-23T07:46:35Z futpib quit (Ping timeout: 276 seconds) 2015-12-23T07:47:11Z kdas_ quit (Quit: Leaving) 2015-12-23T07:47:34Z kushal joined #lisp 2015-12-23T07:49:04Z mishoo_ joined #lisp 2015-12-23T07:49:57Z quazimodo joined #lisp 2015-12-23T07:55:30Z manuel_ joined #lisp 2015-12-23T07:57:26Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T07:57:58Z kyfho joined #lisp 2015-12-23T07:58:22Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T07:59:50Z manuel_ quit (Ping timeout: 255 seconds) 2015-12-23T08:01:32Z adhoc joined #lisp 2015-12-23T08:02:58Z kyfho joined #lisp 2015-12-23T08:03:15Z Mon_Ouie joined #lisp 2015-12-23T08:07:49Z MrWoohoo joined #lisp 2015-12-23T08:08:11Z cadadar joined #lisp 2015-12-23T08:11:51Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T08:12:20Z kyfho joined #lisp 2015-12-23T08:13:50Z obskyrslok joined #lisp 2015-12-23T08:14:36Z obskyrslok quit (Client Quit) 2015-12-23T08:14:51Z obskyrslok joined #lisp 2015-12-23T08:15:09Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T08:15:13Z obskyrslok quit (Client Quit) 2015-12-23T08:16:28Z blub quit (Remote host closed the connection) 2015-12-23T08:16:29Z xrash joined #lisp 2015-12-23T08:17:14Z obskyrslok joined #lisp 2015-12-23T08:17:20Z kyfho joined #lisp 2015-12-23T08:19:08Z quazimodo quit (Ping timeout: 250 seconds) 2015-12-23T08:19:41Z happy-dude quit (Quit: Connection closed for inactivity) 2015-12-23T08:26:20Z zacharias_ is now known as zacharias 2015-12-23T08:33:10Z Th30n joined #lisp 2015-12-23T08:38:07Z stepnem joined #lisp 2015-12-23T08:40:35Z synchromesh quit (Ping timeout: 240 seconds) 2015-12-23T08:44:11Z yenda joined #lisp 2015-12-23T08:48:44Z phoe_krk: morning 2015-12-23T08:57:10Z reactor quit (Ping timeout: 260 seconds) 2015-12-23T08:57:15Z znpy quit (Ping timeout: 240 seconds) 2015-12-23T08:58:15Z runciter joined #lisp 2015-12-23T09:00:02Z znpy joined #lisp 2015-12-23T09:01:25Z TMM quit (Quit: Ex-Chat) 2015-12-23T09:03:03Z mvilleneuve joined #lisp 2015-12-23T09:06:35Z rme quit (Quit: rme) 2015-12-23T09:08:29Z momonta joined #lisp 2015-12-23T09:14:20Z mishoo_ quit (Ping timeout: 276 seconds) 2015-12-23T09:14:41Z mishoo joined #lisp 2015-12-23T09:15:12Z Demosthenex quit (Ping timeout: 244 seconds) 2015-12-23T09:16:02Z Demosthenex joined #lisp 2015-12-23T09:22:25Z runciter quit (Quit: Lost terminal) 2015-12-23T09:24:07Z mvilleneuve quit (Quit: This computer has gone to sleep) 2015-12-23T09:24:35Z Bahman_ joined #lisp 2015-12-23T09:24:45Z Bahman quit (Read error: Connection reset by peer) 2015-12-23T09:27:44Z ebrasca joined #lisp 2015-12-23T09:29:12Z mvilleneuve joined #lisp 2015-12-23T09:33:46Z quazimodo joined #lisp 2015-12-23T09:34:15Z AlphaAtom joined #lisp 2015-12-23T09:35:44Z AlphaAtom quit (Client Quit) 2015-12-23T09:36:43Z ralt quit (Remote host closed the connection) 2015-12-23T09:37:44Z synchromesh joined #lisp 2015-12-23T09:43:23Z TMM joined #lisp 2015-12-23T09:56:49Z quazimodo quit (Ping timeout: 245 seconds) 2015-12-23T10:00:44Z Karl_Dscc joined #lisp 2015-12-23T10:04:21Z Bahman_ quit (Remote host closed the connection) 2015-12-23T10:05:05Z qubitnerd quit (Quit: WeeChat 1.3) 2015-12-23T10:05:08Z knobo joined #lisp 2015-12-23T10:07:28Z mvilleneuve quit (Quit: This computer has gone to sleep) 2015-12-23T10:08:09Z Bahman joined #lisp 2015-12-23T10:24:44Z resttime quit (Quit: Bye bye!) 2015-12-23T10:26:26Z gabriel_ quit (Remote host closed the connection) 2015-12-23T10:26:26Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T10:26:44Z kyfho joined #lisp 2015-12-23T10:30:58Z fourier joined #lisp 2015-12-23T10:32:51Z sjw quit (Quit: = "") 2015-12-23T10:33:13Z gravicappa joined #lisp 2015-12-23T10:34:01Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T10:35:07Z kyfho joined #lisp 2015-12-23T10:41:26Z yenda quit (Remote host closed the connection) 2015-12-23T10:44:06Z cmatei quit (Ping timeout: 240 seconds) 2015-12-23T10:45:34Z ramky joined #lisp 2015-12-23T10:49:53Z obskyrslok quit (Remote host closed the connection) 2015-12-23T10:56:55Z Th30n_ joined #lisp 2015-12-23T10:57:58Z prxq joined #lisp 2015-12-23T11:00:17Z Th30n quit (Ping timeout: 276 seconds) 2015-12-23T11:04:44Z loke quit (Ping timeout: 272 seconds) 2015-12-23T11:05:12Z loke joined #lisp 2015-12-23T11:09:16Z quazimodo joined #lisp 2015-12-23T11:09:39Z cmatei joined #lisp 2015-12-23T11:12:05Z DeadTrickster: what can be used as portable alternative to sb-concurrency? 2015-12-23T11:12:33Z Guest1487 left #lisp 2015-12-23T11:12:45Z DeadTrickster: I'm particularly interested in mailboxes and receive-message with timeout parameter 2015-12-23T11:13:39Z p_nathan quit (Ping timeout: 260 seconds) 2015-12-23T11:15:35Z phoe_krk: I believe you could spend a while and rewrite https://github.com/sbcl/sbcl/tree/master/contrib/sb-concurrency with things like bordeaux-threads, the code makes some use of sb-only packages but it's not a lot of code. 2015-12-23T11:15:46Z phoe_krk: But that's a thing I'd do as a last resort. 2015-12-23T11:16:04Z phoe_krk: Because I don't know any portable alternatives. 2015-12-23T11:16:40Z phoe_krk: Other than, um, basically implementing https://github.com/sbcl/sbcl/tree/master/contrib/sb-concurrency again with bordeaux-threads instead. 2015-12-23T11:19:22Z phoe_krk: Which would end up being about the same as what I mentioned in the first step. 2015-12-23T11:23:34Z mishoo quit (Quit: (save-lisp-and-die)) 2015-12-23T11:26:46Z DeadTrickster: well I actually thought about it, but it's just way too complex. for example bt has no semaphores 2015-12-23T11:27:28Z DeadTrickster: however I'll maybe try to cherry-pick needed parts 2015-12-23T11:27:39Z DeadTrickster: copy paste yea 2015-12-23T11:28:02Z flambard joined #lisp 2015-12-23T11:29:22Z iddqd joined #lisp 2015-12-23T11:29:33Z bcoburn joined #lisp 2015-12-23T11:30:11Z knobo quit (Ping timeout: 276 seconds) 2015-12-23T11:30:11Z bcoburn_n quit (Ping timeout: 264 seconds) 2015-12-23T11:30:36Z DeadTrickster: also semaphore impl now expects condition-wait to return timeout left 2015-12-23T11:30:53Z DeadTrickster: I'm sure there is no match on other platforms 2015-12-23T11:31:54Z grouzen joined #lisp 2015-12-23T11:33:25Z mishoo joined #lisp 2015-12-23T11:34:24Z Bahman quit (Read error: Connection reset by peer) 2015-12-23T11:34:37Z Karl_Dscc quit (Remote host closed the connection) 2015-12-23T11:34:45Z jtza8 joined #lisp 2015-12-23T11:34:54Z Bahman joined #lisp 2015-12-23T11:38:15Z tanuzzo joined #lisp 2015-12-23T11:42:41Z Bahman quit (Quit: Ave atque vale) 2015-12-23T11:44:36Z attila_lendvai joined #lisp 2015-12-23T11:44:36Z attila_lendvai quit (Changing host) 2015-12-23T11:44:36Z attila_lendvai joined #lisp 2015-12-23T11:45:52Z EvW joined #lisp 2015-12-23T11:46:46Z attila_lendvai quit (Read error: Connection reset by peer) 2015-12-23T11:46:46Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T11:47:30Z kyfho joined #lisp 2015-12-23T11:48:59Z attila_lendvai joined #lisp 2015-12-23T11:48:59Z attila_lendvai quit (Changing host) 2015-12-23T11:48:59Z attila_lendvai joined #lisp 2015-12-23T11:49:42Z rme joined #lisp 2015-12-23T11:53:08Z aap_ is now known as aap 2015-12-23T11:53:17Z bhajana joined #lisp 2015-12-23T11:54:42Z flambard quit (Quit: kthxbai) 2015-12-23T11:58:56Z sjw joined #lisp 2015-12-23T11:59:00Z sjw is now known as zdm 2015-12-23T11:59:20Z phoe_krk: DeadTrickster: semaphores are implementable using locks 2015-12-23T11:59:37Z phoe_krk: about condition wait, hm... that's implementable as well AFAIK 2015-12-23T12:00:49Z DeadTrickster: phoe_krk, everything is implementable :-) however I still not sure I want to do it myself. Moreover I still wonder why it wasn't done before 2015-12-23T12:01:30Z DeadTrickster: no one needs semaphores except sbcl users? 2015-12-23T12:05:13Z Th30n_ is now known as Th30n 2015-12-23T12:05:47Z Yuuhi joined #lisp 2015-12-23T12:05:58Z guicho: or everyone do it by themselves when they need it 2015-12-23T12:09:47Z scymtym joined #lisp 2015-12-23T12:13:27Z prxq quit (Remote host closed the connection) 2015-12-23T12:15:40Z dreamaddict joined #lisp 2015-12-23T12:16:04Z dreamaddict: finally finished the first part of 99 LISP problems 2015-12-23T12:16:50Z dreamaddict: anyone bored enough to critique some code? 2015-12-23T12:17:26Z flip214: dreamaddict: post away 2015-12-23T12:19:41Z moore33 joined #lisp 2015-12-23T12:19:50Z dreamaddict: http://paste.lisp.org/display/288144 2015-12-23T12:20:03Z dreamaddict: I was using a 4 line TAB and I don’t think it caught that properly 2015-12-23T12:20:53Z dreamaddict: also I am a bit proud of finding a completely recursive solution to the packing problem, since apparently that wasn’t easy…but the rest of it, is not the fastest way to handle it 2015-12-23T12:20:57Z dreamaddict: a 4 space TAB... 2015-12-23T12:23:05Z blt joined #lisp 2015-12-23T12:27:05Z flip214: dreamaddict: I'd suggest to break the lines, eg. "(if (cdr list)\n" etc. 2015-12-23T12:27:05Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T12:27:06Z brian joined #lisp 2015-12-23T12:27:25Z kyfho joined #lisp 2015-12-23T12:27:29Z brian is now known as Guest44155 2015-12-23T12:27:38Z dreamaddict: yeah I’m kind of formatting by hand 2015-12-23T12:27:43Z dreamaddict: always break? 2015-12-23T12:27:50Z dreamaddict: sometimes it all fits OK on one line 2015-12-23T12:28:16Z mbuf quit (Read error: Connection reset by peer) 2015-12-23T12:28:56Z flip214: dreamaddict: my-nth: don't know the definition, but *I* would not do "= 0" but use zerop. or even try to check for negative, too 2015-12-23T12:29:29Z flip214: my-length isn't tail-recursive. 2015-12-23T12:29:31Z cadadar quit (Quit: Leaving.) 2015-12-23T12:29:41Z dreamaddict: that is true 2015-12-23T12:29:49Z dreamaddict: I learned a LOT about recursion just doing these exercises 2015-12-23T12:30:12Z dreamaddict: so at the beginning…not that good…but knowing what I know now, yeah, I’d go back and tail-recurse these 2015-12-23T12:30:30Z flip214: my-flatten has too long lines, IMO 2015-12-23T12:31:25Z dreamaddict: put the two branches of the if statement below the if...? 2015-12-23T12:32:03Z flip214: yes. "(append (list (car elements))" => "(cons (car elements) ...)" 2015-12-23T12:32:25Z flip214: in my-compress you're using that already, but only in one branch 2015-12-23T12:32:34Z blt quit (Quit: WeeChat 1.3) 2015-12-23T12:33:05Z guicho: my graduate advisor, who is also a lisper, always put everything in 1 line, says its more compact and easy to read... 2015-12-23T12:33:09Z flip214: sorry, doing something else. 2015-12-23T12:33:41Z AlphaAtom joined #lisp 2015-12-23T12:37:06Z dreamaddict: reformatting them up right now 2015-12-23T12:40:01Z zdm: guicho: sounds awful 2015-12-23T12:40:23Z Zhivago: As with most things, it depends. 2015-12-23T12:40:41Z Zhivago: (if a b c) is reasonable, but as those expressions become larger ... 2015-12-23T12:43:02Z pjb: DeadTrickster: there are people who argue that semaphores are not a good abstraction. Actually, none are good abstraction for multithreading. Yes, it's a little sad to have to implement semaphores on conditions and mutexes, when the OS itself provides semaphores (but you don't know how the OS implements them anyways!). Turtles… 2015-12-23T12:44:16Z pjb: dreamaddict: I'm lazy to revise. You can compare your solutions with mine: http://informatimago.com/develop/lisp/l99/index.html 2015-12-23T12:44:19Z dreamaddict: generally it is bad form to include (&optional accum) in the main defun for a function that is even pretending to be used by someone else, right? 2015-12-23T12:44:33Z zdm quit (Quit: = "") 2015-12-23T12:44:39Z pjb: dreamaddict: I would say so. 2015-12-23T12:44:51Z pjb: dreamaddict: but you can use it in a Q&D "prototype" ;-) 2015-12-23T12:44:59Z sjw joined #lisp 2015-12-23T12:45:09Z sjw is now known as zdm 2015-12-23T12:45:20Z pjb: dreamaddict: also, sometimes it can be meaningful and useful to let the user specify an initial accumulator value. 2015-12-23T12:45:28Z dreamaddict: true 2015-12-23T12:45:45Z dreamaddict: and I did look at some of informatigo’s solutions 2015-12-23T12:45:57Z pjb: good. 2015-12-23T12:46:06Z attila_lendvai quit (Ping timeout: 240 seconds) 2015-12-23T12:46:16Z dreamaddict: I sort of wanted to practice recursion with these, instead of using the LOOP macro for everything 2015-12-23T12:46:24Z dreamaddict: so I tried to find ways to do them without using LOOP 2015-12-23T12:46:42Z pjb: Yes, using recursion is a nice excercise. 2015-12-23T12:46:54Z dreamaddict: of course, then I read about tail-recursion and why the best recursion is basically iteration, which is what the LOOP macro is for apparently 2015-12-23T12:47:23Z manuel_ joined #lisp 2015-12-23T12:47:27Z dreamaddict: so I guess my solutions aren’t all the most efficient ones, but as a mental flossing they are wonderful and no lie, I think way better recursively now than I did before I started them, by a long shot 2015-12-23T12:47:50Z pjb: It doesn't really matter, since you can always implement a named let in CL to have a tail recursive calls expanded into an jump. 2015-12-23T12:48:18Z pjb: There are several such example published eg. in cll. 2015-12-23T12:49:00Z pjb: Now, of course, the question is whether news.google and your google-fu is good enough to retrieve it… :-( 2015-12-23T12:49:35Z dreamaddict: google-fu is decent, I can find it :) 2015-12-23T12:50:04Z pjb: It's group.google.com, not news.google.com, I always mix them :-( 2015-12-23T12:52:20Z pjb: groups even. 2015-12-23T12:53:12Z ggole joined #lisp 2015-12-23T12:54:44Z myrkraverk quit (Remote host closed the connection) 2015-12-23T12:55:11Z dreamaddict: http://paste.lisp.org/display/288564 2015-12-23T12:55:14Z dreamaddict: more readable 2015-12-23T12:55:26Z dreamaddict: ok time to bone up on tail recursion 2015-12-23T12:56:23Z kushal quit (Ping timeout: 246 seconds) 2015-12-23T12:56:35Z dreamaddict: jesus you can disassemble any function 2015-12-23T12:56:47Z dreamaddict: the REPL is already cooler than 90% of IDEs I’ve ever used 2015-12-23T13:00:09Z Guest44155 quit (Ping timeout: 252 seconds) 2015-12-23T13:03:35Z PlasmaStar quit (Ping timeout: 240 seconds) 2015-12-23T13:05:12Z PlasmaStar joined #lisp 2015-12-23T13:07:48Z phoe_krk: dreamaddict: does it mean that you can disassemble the disassemble function. 2015-12-23T13:08:18Z dreamaddict: yup 2015-12-23T13:09:31Z phoe_krk: dreamaddict: also look up trace. 2015-12-23T13:09:34Z phoe_krk: if you haven't yet. 2015-12-23T13:10:17Z flip214: DISASSEMBLE will soon enough be seen as weapons-grade functionality, and therefore become illegal. 2015-12-23T13:10:34Z DeadTrickster: pjb, do you know protable sb-conurrency alternative? 2015-12-23T13:11:34Z dreamaddict: oh wow disassemble and trace are both heavenly 2015-12-23T13:11:59Z dreamaddict: no more wondering “does this actually optimize the function” 2015-12-23T13:12:05Z flip214: DeadTrickster: http://cliki.net/concurrency 2015-12-23T13:12:27Z DeadTrickster: flip214, unfortunately this page isn't that helpful 2015-12-23T13:12:44Z flip214: DeadTrickster: well, Bordeaux-Threads might do what you want. 2015-12-23T13:12:52Z flip214: which functions would you need? 2015-12-23T13:12:54Z DeadTrickster: sadly not 2015-12-23T13:13:11Z DeadTrickster: I need mailboxes and queues from sb-concurrency 2015-12-23T13:13:19Z DeadTrickster: not stuff from sb-thread 2015-12-23T13:13:41Z flip214: http://cl-cookbook.sourceforge.net/process.html#mailbox 2015-12-23T13:14:00Z DeadTrickster: moreover I want receive-message (or dequeue) to support timeout parameter 2015-12-23T13:15:01Z ramky quit (Remote host closed the connection) 2015-12-23T13:16:06Z xristos: DeadTrickster: lparallel is portable 2015-12-23T13:16:26Z xristos: lot more functionality than just mailboxes and queues tho 2015-12-23T13:16:44Z DeadTrickster: this: https://github.com/deadtrickster/safe-queue/tree/master/src was extracted from clws and basically has two parts - sbcl-specific and other chanl-based one 2015-12-23T13:16:55Z xristos: i wouldn't use chanl 2015-12-23T13:17:04Z xrash quit (Read error: Connection reset by peer) 2015-12-23T13:18:20Z DeadTrickster: xristos, mailboxes in lparallel? 2015-12-23T13:20:48Z xristos: DeadTrickster: well, sort of 2015-12-23T13:21:08Z nonopposition quit (Ping timeout: 244 seconds) 2015-12-23T13:21:17Z DeadTrickster: hm 2015-12-23T13:21:22Z DeadTrickster: try-pop-queue 2015-12-23T13:21:27Z DeadTrickster: has timeout param 2015-12-23T13:21:38Z DeadTrickster: might be actually what I'm looking for 2015-12-23T13:23:09Z DeadTrickster: haha 2015-12-23T13:23:39Z DeadTrickster: my lparallel version still unaware of recent addition to bt: :timout to condition-wait was added 2015-12-23T13:23:59Z DeadTrickster: just really sad sad this trivial-smth bullshit so popular 2015-12-23T13:26:04Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T13:26:35Z kyfho joined #lisp 2015-12-23T13:26:50Z Xach: DeadTrickster: why? 2015-12-23T13:26:55Z grouzen quit (Ping timeout: 240 seconds) 2015-12-23T13:27:39Z DeadTrickster: Xach, because they always represent lowest common denominator and constantly failed to catch up with updates 2015-12-23T13:27:47Z DeadTrickster: take bt for example 2015-12-23T13:27:53Z DeadTrickster: it wasn't updated for years 2015-12-23T13:27:59Z Xach: DeadTrickster: I think that's because trivial-* was a fad, and the people that created them moved on to other projects. 2015-12-23T13:28:05Z Xach: And other languages. 2015-12-23T13:28:32Z Xach: They were good enough for a while, then no new people updated them. 2015-12-23T13:28:35Z DeadTrickster: Xach, here I'm talking about all this portability libs in general 2015-12-23T13:28:47Z Xach: DeadTrickster: I think the situation is similar for every portability library. 2015-12-23T13:29:01Z Xach: They are good enough for a while, but keeping them up to date requires more effort than is easily available. 2015-12-23T13:29:48Z DeadTrickster: Xach, all they usually give is functional uniformity however they leave user with raw type system for example 2015-12-23T13:30:19Z Xach: I think it is just a simple problem of available resources, or lack thereof. 2015-12-23T13:30:28Z DeadTrickster: sure 2015-12-23T13:30:29Z Xach: It is bad that there aren't enough resources. 2015-12-23T13:30:59Z Xach: I do not think it is a lack of desire to create worthy and useful things. 2015-12-23T13:31:01Z kobain joined #lisp 2015-12-23T13:31:16Z DeadTrickster: yeah better write new shiny webframework 2015-12-23T13:31:17Z DeadTrickster: oh wait 2015-12-23T13:31:20Z DeadTrickster: json parser 2015-12-23T13:31:30Z Xach: Effort is also not fungible. 2015-12-23T13:31:43Z Xach: People work on what they want to work on. 2015-12-23T13:32:20Z DeadTrickster: btw when I'm talking about type systems I mean this: there is no usocket:socket-p 2015-12-23T13:32:36Z DeadTrickster: and nothing to use with typecase 2015-12-23T13:32:37Z DeadTrickster: etc 2015-12-23T13:33:08Z Xach: I think usocket is not a great example 2015-12-23T13:33:16Z xristos: you can always try and get patches of your own committed 2015-12-23T13:33:17Z Xach: I think if you bring that to the attention of the usocket maintainer, you may get an update 2015-12-23T13:33:35Z Xach: "I want this nice thing, please do it" is more likely to work for usocket than for many other abandoned or semi-abandoned projects 2015-12-23T13:33:36Z xristos: although i generally dislike having dependencies on portability libraries 2015-12-23T13:33:46Z xristos: i'd rather support one or two implementations myself and write the extra code 2015-12-23T13:34:09Z xristos: usocket for example, i'd never use 2015-12-23T13:34:32Z DeadTrickster: Xach, nah I just stick with IOLib 2015-12-23T13:34:32Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T13:34:35Z xristos: it's bad enough that sbcl sockets are not as lean as i'd want them and have performance implications 2015-12-23T13:34:56Z kyfho joined #lisp 2015-12-23T13:37:51Z flip214: always possible to use sb-unix and low-level read()/write() 2015-12-23T13:38:16Z kobain quit (Max SendQ exceeded) 2015-12-23T13:38:25Z contrapunctus joined #lisp 2015-12-23T13:39:25Z Xach: using sb-unix is a good way to get broken after an upgrade. 2015-12-23T13:39:51Z kobain joined #lisp 2015-12-23T13:40:33Z Xach: i made my own socket stuff, too, but i think today i'd try basic-binary-ipc 2015-12-23T13:41:56Z flip214: Xach: is sb-posix better? what gets broken about sb-unix, I thought that's just bindings to the libc functions? 2015-12-23T13:42:08Z Xach: flip214: sb-unix is a private package for sbcl internal use only 2015-12-23T13:42:13Z Xach: flip214: sb-posix is not 2015-12-23T13:42:18Z flip214: oh, okay. 2015-12-23T13:43:34Z eudoxia joined #lisp 2015-12-23T13:43:54Z iddqd quit (Quit: Connection closed for inactivity) 2015-12-23T13:46:07Z dreamaddict: hey, how is LISP for security? as in, say I make a…a…web server or something, it runs on the REPL or at least some part of it, how is it making that secure against hackers and whatnot? 2015-12-23T13:46:19Z ebrasca quit (Remote host closed the connection) 2015-12-23T13:46:40Z Zhivago: It depends on the dialect, but CL has no support for sandboxing, etc. 2015-12-23T13:46:54Z xristos: sandboxing isn't really relevant here 2015-12-23T13:47:10Z xristos: at least nowhere near as relevant as memory safety 2015-12-23T13:47:17Z jackdaniel: you cant overflow an array 2015-12-23T13:47:32Z Zhivago: There are quite a lot of ways to produce undefined behaviour in CL. 2015-12-23T13:47:35Z jackdaniel: you dont have pointer arithm etc 2015-12-23T13:47:44Z xristos: jackdaniel: well you can and you do 2015-12-23T13:47:47Z xristos: but optionally 2015-12-23T13:47:55Z jackdaniel: ? 2015-12-23T13:47:56Z Zhivago: (setf (first '(1)) 2), for example. 2015-12-23T13:48:12Z xristos: jackdaniel: you can turn off bounds checking and you can manipulate raw memory in CL 2015-12-23T13:48:30Z DeadTrickster: dreamaddict, just don't read user input 2015-12-23T13:48:33Z moore33: There isn't any bounds checking specified in CL. That I know of. 2015-12-23T13:48:39Z DeadTrickster: and do not intern random stuff 2015-12-23T13:49:19Z DeadTrickster: and do not set safety to 0 at least on sbcl 2015-12-23T13:50:07Z DeadTrickster: however you are not so specific on what aspect of security you are interested in 2015-12-23T13:50:12Z manuel_ quit (Quit: manuel_) 2015-12-23T13:52:29Z dreamaddict: eh I don’t know…I was just mentioning to my friend how you can hot-recompile LISP and it’s super awesome (apparently nice for server-side things), and he mentioned security concerns 2015-12-23T13:52:57Z dreamaddict: I had heard that if you tricked LISP into reading or eval-ing something that it isn’t supposed to, that there can be problems that way 2015-12-23T13:53:03Z xristos: sure 2015-12-23T13:53:12Z xristos: that's kind of hard to do though 2015-12-23T13:53:22Z xristos: unless you want to do it 2015-12-23T13:53:32Z z0d: dreamaddict: this is a problem in any langauge 2015-12-23T13:53:37Z dreamaddict: really I have no idea how hard it is to do any of it, just curious about…security and whatnot 2015-12-23T13:54:16Z dreamaddict: one of my favorite things so far about LISP is how easy it is to work with and prototype 2015-12-23T13:54:19Z bogdanm quit (Ping timeout: 245 seconds) 2015-12-23T13:54:26Z xristos: dreamaddict: it's harder than getting an arbitrary c++ program to accept arbitrary binary code and execute it 2015-12-23T13:54:58Z xristos: that doesn't seem to stop ppl from using c++ in security-critical applications 2015-12-23T13:55:07Z moore33: xristos: Unless you use those easy-prototyping features and forget to turn them off... 2015-12-23T13:55:07Z bogdanm joined #lisp 2015-12-23T13:55:20Z xristos: moore33: human factor ;p 2015-12-23T13:55:47Z dwchandler: for any lang, "be careful how you respond to outside input" 2015-12-23T13:56:08Z LiamH joined #lisp 2015-12-23T13:56:13Z dwchandler: having an attacker inject code is only one issue 2015-12-23T13:56:34Z dwchandler: if an attacker can get you to exhaust a resource you have a DoS, etc. 2015-12-23T13:56:50Z xristos: sure 2015-12-23T13:56:55Z dreamaddict: dwchandler: that sounds more like logistics that apply to any language more than just LISP 2015-12-23T13:56:56Z dwchandler: be careful about assymetric responses 2015-12-23T13:57:02Z xristos: also having an attacker man-in-the-middle your quicklisp downloads 2015-12-23T13:57:08Z dreamaddict: ^ 2015-12-23T13:57:10Z dreamaddict: there we go 2015-12-23T13:57:10Z dwchandler: dreamaddict: yes, not just LISP 2015-12-23T13:57:11Z xristos: *cough* 2015-12-23T13:57:14Z xristos looks at Xach 2015-12-23T13:57:34Z dwchandler: Ruby, Python, etc. have eval 2015-12-23T13:57:48Z Xach: xristos: next thing to fix. but time is scarce. 2015-12-23T13:57:55Z dwchandler: Lisp isn't especially vulnerable, AFAIK 2015-12-23T13:59:06Z dreamaddict: sounds about the same level of practicality for a web server kind of app as most other languages 2015-12-23T13:59:10Z xristos: i think CL strikes a good balance compared to C, C++ 2015-12-23T13:59:30Z Zhivago: Let us say instead that popular lisp implementations are not especial vulnerable. 2015-12-23T13:59:38Z xristos: it still gives you plenty of rope to hang yourself 2015-12-23T13:59:48Z xristos: but at least that is *explicit* 2015-12-23T13:59:53Z xristos: not implicit as in c,c++ 2015-12-23T13:59:54Z Zhivago: Having been developed by people who dislike crashing while doing stupid things in a repl. 2015-12-23T14:00:22Z Zhivago: There's plenty of implicit stuff as well in the CL spec -- it just tends to get papered over with sane implementations. 2015-12-23T14:00:51Z DeadTrickster: also since cl processes usually long lived one can extract sensitive information from memory dump 2015-12-23T14:01:24Z DeadTrickster: as well as simply iterate over all packages and symbols 2015-12-23T14:01:30Z eudoxia quit (Quit: Leaving) 2015-12-23T14:02:15Z bogdanm quit (Ping timeout: 240 seconds) 2015-12-23T14:03:29Z bogdanm joined #lisp 2015-12-23T14:07:42Z dwchandler: DeadTrickster: if an attacker is looking at a memory dump or iterating over stuff then you've lost already ;-) 2015-12-23T14:08:17Z zdm: To know your enemy you must become the enemy; become the hacker. 2015-12-23T14:08:24Z zdm: :P 2015-12-23T14:09:35Z gravicappa quit (Ping timeout: 260 seconds) 2015-12-23T14:10:03Z Zhivago: Then you can kill yourself, reducing the ranks of your enemy. 2015-12-23T14:10:50Z scymtym quit (Read error: Connection reset by peer) 2015-12-23T14:11:34Z dwchandler: zdm: I wish more people would understand that idea, really. 2015-12-23T14:12:01Z DeadTrickster: dwchandler, that is why iterating over packages is actually enough 2015-12-23T14:12:26Z zdm: dwchandler: A common saying is 'You cant know how to defend if you don't know how to attack'. 2015-12-23T14:12:35Z zdm: I imagine its helpful to know both sides. 2015-12-23T14:12:45Z DeadTrickster: dwchandler, also core dumps can be disabled 2015-12-23T14:12:56Z zdm: *I'm not recommending any illegal activities of course* 2015-12-23T14:14:18Z dwchandler: zdm: you don't have to go hack systems and become a blackhat. You *do* have to be able to put yourself into an attacker role and look at your own systems 2015-12-23T14:14:37Z zdm: Thats what I meant. 2015-12-23T14:14:53Z dwchandler: right :) 2015-12-23T14:17:38Z mtl_: if I were writing say a terminal in C, i would probably make/get a fuzzer to test for buffer overflows 2015-12-23T14:17:46Z mtl_: terminal app* 2015-12-23T14:18:14Z zdm: Wouldnt you do that for any programs in C, regardless of the use/medium? 2015-12-23T14:18:51Z zdm: And hey mtl_, hows it going 2015-12-23T14:19:05Z mtl_: I'm sure it's more relevant in some contexts than others, sure 2015-12-23T14:19:10Z vaporatorius quit (Ping timeout: 260 seconds) 2015-12-23T14:19:33Z mtl_: if you're taking in a lot user input or data from the network 2015-12-23T14:28:20Z dwchandler: first comes architecture/design, then comes good coding practices, then comes stuff like fuzzers :) 2015-12-23T14:28:38Z mtl_: true 2015-12-23T14:28:57Z dwchandler: afl is nice for C 2015-12-23T14:28:57Z xristos: dwchandler: even that isn't gonna save you these days 2015-12-23T14:29:24Z xristos: fuzzers only scratch the surface 2015-12-23T14:29:59Z xristos: i'd guess that a lot of the 0days nation states (and other actors with capability) are using, would never be discovered by fuzzing 2015-12-23T14:30:11Z dwchandler: afl is instrumented, and actively explores code paths 2015-12-23T14:30:30Z zdm quit (Read error: Connection reset by peer) 2015-12-23T14:30:30Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T14:30:35Z xristos: dwchandler: yet it's pretty much useless against stateful protocols 2015-12-23T14:30:37Z dwchandler: nothing's perfect, but sometimes stuff gets better 2015-12-23T14:30:43Z xristos: afl is nice vs dumb parsers 2015-12-23T14:30:56Z dwchandler: it would be nice to do something like that for CL 2015-12-23T14:30:58Z zdm joined #lisp 2015-12-23T14:31:04Z kyfho joined #lisp 2015-12-23T14:31:08Z xristos: but the "bad guys" are not using afl 2015-12-23T14:31:20Z stepnem quit (Ping timeout: 265 seconds) 2015-12-23T14:32:11Z bhajana quit (Quit: WeeChat 1.3) 2015-12-23T14:32:24Z joneshf-laptop joined #lisp 2015-12-23T14:37:22Z warweasle joined #lisp 2015-12-23T14:37:39Z TMM quit (Ping timeout: 255 seconds) 2015-12-23T14:37:39Z smokeink quit (Ping timeout: 255 seconds) 2015-12-23T14:38:48Z jtza8 quit (Ping timeout: 272 seconds) 2015-12-23T14:39:27Z smokeink joined #lisp 2015-12-23T14:39:34Z dwchandler: xristos: it doesn't matter if you and the bad guys use the same tools. what matters is that you stop them from getting in, and if they get in can you mitigate 2015-12-23T14:40:06Z zdm: Maybe a good place to ask about security issues is ##security as well. 2015-12-23T14:40:19Z xristos: my point is that for some significant percentage of bad guys, this will never happen 2015-12-23T14:40:48Z xristos: assumption of compromise is pretty much a given these days 2015-12-23T14:41:41Z xristos: we can't even trust the *hardware* that *software* we're arguing about runs on 2015-12-23T14:42:36Z dwchandler: you can't even trust the physical premisis where the server is running, but you have to get on with life 2015-12-23T14:46:05Z xristos: http://blog.invisiblethings.org/papers/2015/x86_harmful.pdf <-- great read 2015-12-23T14:47:09Z Th30n quit (Quit: leaving) 2015-12-23T14:50:15Z kushal joined #lisp 2015-12-23T14:51:39Z EvW quit (Remote host closed the connection) 2015-12-23T14:51:47Z EvW joined #lisp 2015-12-23T14:52:16Z TMM joined #lisp 2015-12-23T14:52:50Z jtza8 joined #lisp 2015-12-23T14:57:35Z Karl_Dscc joined #lisp 2015-12-23T14:59:13Z nzambe joined #lisp 2015-12-23T15:00:20Z Oladon quit (Quit: Leaving.) 2015-12-23T15:01:29Z FreeBird_ quit (Remote host closed the connection) 2015-12-23T15:03:30Z bogdanm quit (Ping timeout: 272 seconds) 2015-12-23T15:03:51Z badkins joined #lisp 2015-12-23T15:05:08Z bogdanm joined #lisp 2015-12-23T15:07:28Z pbgc joined #lisp 2015-12-23T15:08:08Z dreamaddict left #lisp 2015-12-23T15:11:50Z zdm: Can I do this for docstrings?: 2015-12-23T15:11:52Z zdm: "Return snake-eyes or boxcars if the throw is 2 or 12, 2015-12-23T15:11:52Z zdm: otherwise return the sum of the throw" 2015-12-23T15:12:04Z zdm: Start it on one line, continue on the next 2015-12-23T15:12:27Z Denommus joined #lisp 2015-12-23T15:13:39Z mtl_: zdm: yeah, I think so 2015-12-23T15:14:25Z zdm: Yeah I can, I dont know why I asked that since I could have tested that for myself lol.. 2015-12-23T15:15:06Z mtl_: that's the great thing about lisp 2015-12-23T15:15:12Z developernotes joined #lisp 2015-12-23T15:15:19Z mtl_: or any language with a repl 2015-12-23T15:16:52Z newdan joined #lisp 2015-12-23T15:19:14Z eudoxia joined #lisp 2015-12-23T15:26:07Z zacharias quit (Ping timeout: 260 seconds) 2015-12-23T15:28:02Z zupoman joined #lisp 2015-12-23T15:28:02Z zupoman quit (Changing host) 2015-12-23T15:28:02Z zupoman joined #lisp 2015-12-23T15:29:05Z drmeister: I've asked about this before but one thing that seems very UN-do-it-oncey in Common Lisp is exporting symbols from packages/systems. 2015-12-23T15:29:35Z drmeister: I have to constantly jump around from packages.lisp and source code to keep the list of exported symbols up to date. I constantly miss symbols or leave symbols in that I don't want to export. 2015-12-23T15:29:55Z eudoxia: eh, I like that it's explicit and all collected in one place 2015-12-23T15:30:12Z eudoxia: I hate, hate, hate languages where I have to prefix 'public' or some crap before a function or class 2015-12-23T15:30:24Z drmeister: Why? 2015-12-23T15:30:30Z oleo_: lol 2015-12-23T15:30:42Z Denommus quit (Quit: rebooting) 2015-12-23T15:30:46Z drmeister: I'm not trying to start an argument - I'm trying to feel good about this. 2015-12-23T15:30:59Z eudoxia: because it clutters the code, and if there is no documentation, I have to search all over the place for what is public and what isn't 2015-12-23T15:31:03Z Zhivago: As opposed to prefix with either one or two :'s? :) 2015-12-23T15:31:18Z eudoxia: but in CL i can just go over to the defpackage and see, well, here's the list of exported symbols 2015-12-23T15:32:20Z Zhivago: drmeister: Why are you changing the exports a lot? Is this to implement CL, or in user code? 2015-12-23T15:32:54Z drmeister: This is in user code. 2015-12-23T15:33:12Z drmeister: I write code and then rewrite code. 2015-12-23T15:33:17Z newdan: drmeister: I don't know if there's a way to do what you want, but personally I do like the exported symbol list. It makes it easy to see/think about just the public interface of your package at a glance 2015-12-23T15:34:48Z drmeister: Zhivago: That's an interesting idea - would it be bad to use (defun pkg:name (...) ...) 2015-12-23T15:36:04Z drmeister: Then I could grep for [^:]: and find every symbol to export - I could then easily collect them into the list of exported symbols 2015-12-23T15:36:51Z drmeister: Does this cause anyone fits? 2015-12-23T15:36:53Z drmeister: https://www.irccloud.com/pastebin/HwZnTiay/ 2015-12-23T15:37:04Z drmeister: This is (in-package :tags) 2015-12-23T15:37:49Z Zhivago: drmeister: I see no reason why that would be bad. 2015-12-23T15:38:40Z Zhivago: But I'd suggest that the export list is the module's external interface. It probably shouldn't be changing that much. 2015-12-23T15:39:12Z jtza8 quit (Ping timeout: 264 seconds) 2015-12-23T15:39:31Z zupomanek joined #lisp 2015-12-23T15:39:33Z zupomanek quit (Remote host closed the connection) 2015-12-23T15:39:51Z fiddlerwoaroof quit (Quit: Lost terminal) 2015-12-23T15:40:41Z drmeister: Yeah, I don't have a problem really with the export list. I guess I'm looking more for a simple way to maintain its correctness. 2015-12-23T15:41:09Z drmeister: Doing this: grep 'tags:[^:]' tags.lisp isn't too bad. 2015-12-23T15:42:58Z drmeister: I just don't want to do anything too weird that would upset other CL programmers. I'll adapt to community norms. 2015-12-23T15:46:37Z attila_lendvai joined #lisp 2015-12-23T15:46:37Z attila_lendvai quit (Changing host) 2015-12-23T15:46:37Z attila_lendvai joined #lisp 2015-12-23T15:47:02Z synchromesh: drmeister: That's laudable, but I offer the classic George Bernard Shaw quote as a counterpoint: "The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man." So if you come up with a better idea, that would be great! :) 2015-12-23T15:48:30Z drmeister: synchromesh: That's the motto I live by - I'm implementing a new Common Lisp because I am an unreasonable man. But I chose Common Lisp because it's really well thought out already - so I often have to relearn the better way to do things in Common Lisp. 2015-12-23T15:49:58Z synchromesh: drmeister: Truly you are the right man for the job. Keep up the great work! 2015-12-23T15:53:28Z jusss joined #lisp 2015-12-23T15:55:23Z eudoxia quit (Ping timeout: 264 seconds) 2015-12-23T15:56:41Z Th30n joined #lisp 2015-12-23T15:59:14Z jusss: is there call/cc in cl ? 2015-12-23T15:59:21Z Zhivago: No. 2015-12-23T16:00:44Z jusss: so can ask a call/cc question here ? 2015-12-23T16:00:50Z jusss: can I 2015-12-23T16:02:09Z newdan: jusss: Why not #scheme? 2015-12-23T16:02:25Z moore33: Or #call/cc? :) 2015-12-23T16:02:58Z jusss: newdan: I tried, but it seems like no one is on line 2015-12-23T16:03:39Z Oddity quit (Ping timeout: 265 seconds) 2015-12-23T16:03:59Z phadthai quit (Ping timeout: 246 seconds) 2015-12-23T16:04:08Z phadthai joined #lisp 2015-12-23T16:12:47Z happy-dude joined #lisp 2015-12-23T16:14:28Z Oddity joined #lisp 2015-12-23T16:14:28Z Oddity quit (Changing host) 2015-12-23T16:14:28Z Oddity joined #lisp 2015-12-23T16:15:12Z Mon_Ouie quit (Quit: WeeChat 1.3) 2015-12-23T16:15:54Z moore33: Very stupid question: How do you access the documentation of a slot? 2015-12-23T16:16:48Z jtza8 joined #lisp 2015-12-23T16:18:21Z kushal quit (Quit: Leaving) 2015-12-23T16:19:43Z moore33: Ack. Nevermind. 2015-12-23T16:21:04Z gaya- quit (Quit: Leaving.) 2015-12-23T16:21:16Z gaya- joined #lisp 2015-12-23T16:22:15Z gaya- quit (Client Quit) 2015-12-23T16:23:33Z moore33: Next question: do people find slot documentation useful? :) 2015-12-23T16:25:52Z zupoman is now known as szpieg 2015-12-23T16:25:58Z szpieg is now known as szpieg__ 2015-12-23T16:26:32Z zdm: lol 2015-12-23T16:30:21Z TMM quit (Quit: Ex-Chat) 2015-12-23T16:33:07Z nyef: drmeister: In regards to your export problem, have you considered one-package-per-file style? 2015-12-23T16:34:22Z drmeister: nyef: Yes - I like that style in beach's code. 2015-12-23T16:37:20Z prxq joined #lisp 2015-12-23T16:37:51Z xantoz: i'm intrigued, examples of one-package-per-file style done right? 2015-12-23T16:38:41Z EvW quit (Ping timeout: 255 seconds) 2015-12-23T16:39:18Z nyef: xantoz: I don't have any easily to hand that I can share, unfortunately. 2015-12-23T16:41:06Z nyef: It's something that I came up with a few years ago (reinvented, really) and found that I rather liked, but I've mostly been working on existing projects where it would directly oppose the prevailing style or closed-source projects since then. 2015-12-23T16:41:27Z Denommus joined #lisp 2015-12-23T16:44:00Z nyef: The basic idea is that each source file starts with a package definition, with the package named after the source file, which either :USEs or :IMPORT-FROMs other packages to register its immediate dependencies (:IMPORT-FROM with no symbols is legal, after all). 2015-12-23T16:44:47Z mordocai: I'm trying to use mel-base and make a function that I can use to apply regex over the entire raw message (headers + body) and see if it matches. I'm having a hard time even finding the implementation for the message class though. Can anyone point me in the right direction? https://github.com/neonsquare/mel-base 2015-12-23T16:45:38Z nyef: With the additional rules that you're not allowed to use an internal symbol of another package, that you're not allowed to use public symbols of packages not mentioned in your dependencies, and file length limits, it can help to maintain some level of conceptual cohesion within a system. 2015-12-23T16:46:02Z algae joined #lisp 2015-12-23T16:48:00Z mordocai: Oh, i guess it is in rfc2822.lisp actually. 2015-12-23T16:51:23Z manuel_ joined #lisp 2015-12-23T16:51:23Z manuel_ quit (Client Quit) 2015-12-23T16:52:37Z manuel_ joined #lisp 2015-12-23T16:55:25Z Yuuhi quit (Remote host closed the connection) 2015-12-23T16:55:35Z guicho quit (Quit: さようなら) 2015-12-23T16:58:06Z gravicappa joined #lisp 2015-12-23T16:58:39Z paradoja joined #lisp 2015-12-23T16:59:53Z grouzen joined #lisp 2015-12-23T16:59:55Z DGASAU quit (Ping timeout: 260 seconds) 2015-12-23T17:01:07Z DGASAU joined #lisp 2015-12-23T17:03:43Z cadadar joined #lisp 2015-12-23T17:04:00Z Oddity quit (Read error: Connection reset by peer) 2015-12-23T17:05:12Z akkad joined #lisp 2015-12-23T17:05:57Z vaporatorius joined #lisp 2015-12-23T17:08:04Z smokeink quit (Remote host closed the connection) 2015-12-23T17:08:18Z Nikotiini joined #lisp 2015-12-23T17:08:46Z karswell joined #lisp 2015-12-23T17:10:47Z badkins quit (Ping timeout: 276 seconds) 2015-12-23T17:11:40Z beach joined #lisp 2015-12-23T17:11:46Z manuel_ quit (Quit: manuel_) 2015-12-23T17:11:47Z nyef: Hello beach. 2015-12-23T17:11:51Z beach: Good evening everyone! 2015-12-23T17:11:54Z beach: :) 2015-12-23T17:12:08Z beach: drmeister: I definitely do not use one-package-per-file style. 2015-12-23T17:12:27Z drmeister: nyef: I see what you mean. 2015-12-23T17:13:00Z drmeister: beach: now that nyef has explained what it is I see that. 2015-12-23T17:13:13Z beach: OK. 2015-12-23T17:13:41Z nyef: drmeister: Also, I believe that this is what asdf's package-inferred-system or whatever it got called is for. 2015-12-23T17:16:14Z cadadar quit (Quit: Leaving.) 2015-12-23T17:16:34Z mordocai: I am simultaneously impressed in mel-base. On one hand, it is pretty hard to follow. On the other, it is 11 years+ old and still works. 2015-12-23T17:16:48Z mordocai: impressed and disappointed in mel-base* 2015-12-23T17:17:01Z beach: mordocai: It works, but as it turns out, it is not very modular. 2015-12-23T17:17:20Z beach: I tried to use parts of it, but that turned out to be very hard. 2015-12-23T17:18:24Z mordocai: Yeah, i'm using it for a script to run mailfilter rules on existing mail (instead of having to run my emails back through mailfilter) and am currently mildly stuck on how to run regexes on the entire message since it doesn't appear to have a "raw message" accessor. Should figure it out tonight though. 2015-12-23T17:18:51Z mordocai: beach: If you know of a cleaner alternative to use with maildir i'd be interested. 2015-12-23T17:18:59Z mordocai: I don't need imap/pop3 support for my use case 2015-12-23T17:19:09Z beach: I don't know of anything that exists. 2015-12-23T17:19:15Z akkad: is there a generic profiler to show how much time was spent in a given function/num calls 2015-12-23T17:19:15Z Oddity joined #lisp 2015-12-23T17:19:15Z Oddity quit (Changing host) 2015-12-23T17:19:15Z Oddity joined #lisp 2015-12-23T17:19:17Z beach: A more modular library for email would be great. 2015-12-23T17:19:48Z mordocai: I would write it but my motivation is focused elsewhere right now. Hence why i'm trying to just use mel-base :) 2015-12-23T17:19:52Z beach: mordocai: I am sure mel-base contains all the right functionality, but it needs to be organized differently. 2015-12-23T17:20:15Z beach: Right. 2015-12-23T17:20:41Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-23T17:21:49Z zdm: I keep seeing people come in here asking if there is a library for x, and being constantly turned down. Seems that common lisp is lacking libraries 2015-12-23T17:22:18Z mordocai: zdm: Symptom of a relatively small community I think. 2015-12-23T17:22:23Z beach: zdm: Yes, correct, there are basically no libraries. I think you had better abandon Common Lisp for something else. 2015-12-23T17:22:25Z mordocai: And the NIH syndrome common. 2015-12-23T17:22:42Z p_l: g/act 2015-12-23T17:23:07Z zdm: beach: Thanks for the fantastic response 2015-12-23T17:23:28Z p_l: zdm: it's quite common that writing your own library fitting your tasks is "good and quick enough", resulting in lots of "does what I need, never published" code 2015-12-23T17:23:29Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T17:23:44Z p_l: it's a perverse case of ease of programming resulting in lower code sharing 2015-12-23T17:23:54Z mordocai: Yep 2015-12-23T17:24:07Z beach hopes at least *some* detected the irony. 2015-12-23T17:24:10Z kyfho joined #lisp 2015-12-23T17:24:22Z mordocai: Plus it is fun to write Common Lisp so it doesn't feel as much like work to write a library for what you are doing. 2015-12-23T17:24:33Z p_l: zdm: as for libraries - one of the reasons commercial implementations are still popular is because there's a lot of important batteries included 2015-12-23T17:25:03Z papachan quit (Read error: Connection reset by peer) 2015-12-23T17:25:14Z beach now fears nobody did. 2015-12-23T17:25:55Z badkins joined #lisp 2015-12-23T17:26:02Z zdm: mordocai: I'm having a lot of fun with common lisp, its my first language, heres my first small program (craps): https://pastee.org/ptxay 2015-12-23T17:26:13Z zdm: I know its crap code but I had so much fun doing that 2015-12-23T17:26:32Z blt joined #lisp 2015-12-23T17:26:41Z zdm: Only on chapter 5 of my book so I still dont really know the language and all its features 2015-12-23T17:26:49Z mordocai: zdm: Which book are you using? 2015-12-23T17:27:13Z zdm: Common Lisp - A Gentle Introduction To Symbolic Computation - David S. Touretzky 2015-12-23T17:27:36Z kushal joined #lisp 2015-12-23T17:27:46Z mordocai: zdm: Btw, throw is already in the standard. 2015-12-23T17:27:51Z mordocai tries to remember how to use the bot 2015-12-23T17:27:55Z zdm: Oh 2015-12-23T17:28:01Z beach: clhs throw 2015-12-23T17:28:01Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/s_throw.htm 2015-12-23T17:28:02Z zdm: I didnt know that 2015-12-23T17:28:03Z p_l: zdm: that book is great for learning your first language, IMO :) 2015-12-23T17:28:13Z mordocai: yeah, thanks beach 2015-12-23T17:28:33Z mordocai: Though due to the way Common Lisp works it'll be confusing but won't break anything. 2015-12-23T17:28:43Z mordocai: Since you are using it as a variable not a function 2015-12-23T17:28:56Z zdm has no idea what the documentation is talking about 2015-12-23T17:29:20Z mordocai: heh, yeah. The important thing there was just that that is a built-in function name. You don't need to worry about what it does yet 2015-12-23T17:29:34Z zdm: Im having problems coming up with good function names and variable names 2015-12-23T17:29:39Z zdm: I try to make them relevant 2015-12-23T17:29:43Z zdm: And descriptive 2015-12-23T17:29:46Z zdm: But its difficult 2015-12-23T17:29:48Z mordocai: Yep, one of the hardest problems in computer science/programming. 2015-12-23T17:30:52Z zdm: Also, I find that im repeating myself in a lot, too much repetitive 2015-12-23T17:30:56Z dkcl quit (Ping timeout: 276 seconds) 2015-12-23T17:31:13Z zdm: But I imagine when I figure out more of the languages features it'll but a lot better 2015-12-23T17:31:25Z beach: zdm: "I'm" with a capital I and an apostrophe between the two letters. 2015-12-23T17:31:50Z mordocai: zdm: I think that's a common problem, especially when starting out. It'll probably get better as you learn more, like you said. 2015-12-23T17:31:59Z mordocai: beach: Feeling trollish today? 2015-12-23T17:32:03Z zdm: beach: I could care less 2015-12-23T17:32:04Z zdm: im 2015-12-23T17:32:05Z zdm: im 2015-12-23T17:32:07Z zdm: :) 2015-12-23T17:32:20Z zdm: I couldnt care less 2015-12-23T17:32:24Z zdm: for the grammar nazis 2015-12-23T17:32:29Z beach: mordocai: I am in a rotten mood. 2015-12-23T17:33:22Z mordocai: beach: Ugh, sorry to hear that. 2015-12-23T17:33:31Z beach: zdm: It speaks to your attention to detail, and that, in turn, speaks to your ability to write the kind of programs that most people here on #lisp care about. 2015-12-23T17:33:35Z mordocai: Hope it gets better. 2015-12-23T17:33:54Z beach: mordocai: Absolutely. Don't worry. Thanks. 2015-12-23T17:33:58Z zdm: beach: Does it make you feel better taking your frustrations out on the way someone spells? 2015-12-23T17:34:24Z beach: Somewhat. Is your question the reason you came to #lisp today? 2015-12-23T17:34:49Z zdm: No, I came to talk about lisp but instead I'm having to deal with a cunt. 2015-12-23T17:34:55Z jasom: beach: ##c is the only channel in which I've seen native english speakers use a diaeresis on chat, so perhaps C programmers need to be even more detail oriented 2015-12-23T17:35:00Z zdm: But I'll /ignore 2015-12-23T17:35:05Z zdm shrugs 2015-12-23T17:35:29Z jackdaniel: that was at least rude zdm, please refrain yourself 2015-12-23T17:35:47Z zdm: jackdaniel: and beach hasnt been rude? 2015-12-23T17:35:48Z zdm: lol 2015-12-23T17:36:22Z qwan quit 2015-12-23T17:36:23Z mordocai: "Two wrongs don't make a right" :P 2015-12-23T17:36:32Z mordocai flashback to his mother telling him that. 2015-12-23T17:36:33Z beach: jasom: Not sure what you mean by "use a diaeresis on chat". 2015-12-23T17:37:38Z jasom: beach: as in used coördinate in a sentence 2015-12-23T17:37:46Z beach: Aha. Neat! :) 2015-12-23T17:38:46Z Jesin quit (Quit: Leaving) 2015-12-23T17:39:50Z dwchandler: zdm: that you noticed (and are presumably annoyed by) repeating yourself is a good sign 2015-12-23T17:41:18Z eudoxia joined #lisp 2015-12-23T17:42:03Z eudoxia: beach: re:email, I half-assed this https://github.com/eudoxia0/postmaster 2015-12-23T17:42:26Z eudoxia: it sends mail with cl-smtp, but I never got around to retrieving email through mel-base 2015-12-23T17:42:43Z eudoxia: I vaguely remember trying out some IMAP stuff on the REPL and having to use plenty of ::'s 2015-12-23T17:43:03Z beach: I am not surprised. 2015-12-23T17:43:10Z Jesin joined #lisp 2015-12-23T17:43:33Z beach: I don't want to complain about mel-base. He did a great job providing this. 2015-12-23T17:44:06Z eudoxia: sure I'm glad it exists and doesn't depend on iolib 2015-12-23T17:44:10Z beach: But it needs to be improved in order to be useful for software other than mel itself. 2015-12-23T17:44:44Z eudoxia: I would be satisfied with papering over the interface with Postmaster 2015-12-23T17:44:54Z eudoxia: maybe someday when I need to use it for something 2015-12-23T17:45:10Z beach: I understand. 2015-12-23T17:45:24Z mordocai: Yeah, i'm using it now but i'll be literally reading messages and moving them between folders and nothing else so i'm unlikely to need to improve it to scratch my itch. 2015-12-23T17:45:33Z moore33: beach: Do you have any opinion on the usefulness of slot documentation? 2015-12-23T17:45:40Z Lord_of_Life quit (Excess Flood) 2015-12-23T17:46:02Z beach: moore33: Since there is not useful way to access it, not terribly useful. 2015-12-23T17:46:06Z bcoburn quit (Ping timeout: 240 seconds) 2015-12-23T17:46:14Z beach: You need access to the slot object, as I recall. 2015-12-23T17:46:21Z moore33: beach: That what I'm finding... didn't realize that until now. 2015-12-23T17:46:51Z moore33: I guess that's doable with closer-mop and friends, but what a pain in the ass. 2015-12-23T17:46:52Z beach: It can be done, but (again, as I recall) you can't do that through CL:DOCUMENTATION. 2015-12-23T17:46:52Z blt quit (Quit: WeeChat 1.3) 2015-12-23T17:46:53Z nyef: I'd document the initargs and the accessors, but the slot itself? It shouldn't be part of the public interface, so there's not much point documenting it. 2015-12-23T17:47:08Z beach: Good point. 2015-12-23T17:47:24Z beach: Slots are "accidental". 2015-12-23T17:47:35Z eudoxia: sure it's useful 2015-12-23T17:47:38Z beach: Who came up with that terminology? Bertrand Mayer? 2015-12-23T17:47:50Z moore33: nyef: I think you're recommending that I explicitly define the generic function(s) for the slot accessor and document that? 2015-12-23T17:47:50Z eudoxia: e.g. http://commondoc.github.io/docs/nodes.html#basic-classes 2015-12-23T17:48:01Z moore33: My life is too short for that :) 2015-12-23T17:48:13Z nyef: Yes, that's what I'm recommending. 2015-12-23T17:48:13Z eudoxia: that big
    there is all extracted from slot :documentation strings 2015-12-23T17:48:20Z beach: moore33: Oh, you should definitely use accessors rather than slots. 2015-12-23T17:48:43Z TMM joined #lisp 2015-12-23T17:48:55Z beach: moore33: The only reason for slot names is so that inheritance can know two definitions of the same slot. 2015-12-23T17:48:55Z moore33: beach: I agree with using accessors instead of slot-value, but I'm not convinced about writing sepearte defgeneric forms. 2015-12-23T17:48:58Z moore33: all for now. 2015-12-23T17:49:06Z Lord_of_Life joined #lisp 2015-12-23T17:49:07Z moore33 quit (Quit: Leaving) 2015-12-23T17:49:51Z momonta quit (Remote host closed the connection) 2015-12-23T17:50:11Z nyef: I draw from my experience with CLIM here: I define the generic functions and such in one package, with any documentation, then :USE that from the package with the implementation. 2015-12-23T17:50:12Z beach guesses that moore33 was summoned to participate in dinner. 2015-12-23T17:50:32Z nyef: One defines the protocol, the other the implementation. 2015-12-23T17:50:58Z beach: nyef: I basically agree, except that I no longer :USE and instead use explicit package prefixes. 2015-12-23T17:51:28Z nyef: Too long for me, with the one-package-per-file style. 2015-12-23T17:51:42Z beach: Hmm, perhaps another reason not to use that style. :) 2015-12-23T17:51:43Z eudoxia: :import-from, you guys 2015-12-23T17:52:16Z beach: nyef: With Cluffer, I find myself doing (defclass bla ((%slot :reader package:slot))) 2015-12-23T17:52:44Z nyef: nq-clim/medium/line-style-protocol:line-style-joint-shape is longer than I particularly wish to use as a symbol name. 2015-12-23T17:52:51Z beach: eudoxia: I know. I also find it good to see in the source code that a symbol is from another package. 2015-12-23T17:53:07Z eudoxia: hmmm 2015-12-23T17:53:14Z eudoxia: maybe the editor should highlight it differently 2015-12-23T17:53:24Z beach: Good point. :) 2015-12-23T17:53:28Z nyef: Maybe... yeah, was just about to suggest package-aware syntax highlighting. (-: 2015-12-23T17:53:34Z beach: nyef: But those long package names are probably due to said style, no? 2015-12-23T17:53:35Z oleo_: ls-joint-shape 2015-12-23T17:53:59Z oleo_: lsj-shape, lsjs 2015-12-23T17:53:59Z nyef: oleo_: Constrained by the specification to be line-style-joint-shape, sorry. 2015-12-23T17:54:10Z oleo_: ah 2015-12-23T17:54:13Z reggy joined #lisp 2015-12-23T17:54:25Z EvW joined #lisp 2015-12-23T17:54:28Z oleo_: but you are writing your own ? 2015-12-23T17:54:35Z oleo_: spec ? 2015-12-23T17:54:43Z beach: No. 2015-12-23T17:54:50Z oleo_: oh ok 2015-12-23T17:54:54Z oleo_: then don't change it.... 2015-12-23T17:55:00Z nyef: beach: Yes, they are. 2015-12-23T17:55:10Z nyef: oleo_: It's an existing spec, yeah. 2015-12-23T17:55:26Z beach: minion: Please tell oleo about CLIM. 2015-12-23T17:55:26Z minion: CLIM: No definition was found in the first 5 lines of http://www.cliki.net/CLIM 2015-12-23T17:55:50Z oleo_: i know i know..... 2015-12-23T17:55:58Z phoe_krk: people, please correct if I'm wrong, but: 2015-12-23T17:57:32Z phoe_krk: drmeister: why not do a completely different thing? In all the functions you want to export, you could (defparameter :export nil) and then go (defun name (arg1 arg2) :export ...) which doesn't really change anything code-wise. 2015-12-23T17:58:31Z phoe_krk: With vars parameters, it would be a bit more troublesome, but doable nevertheless. 2015-12-23T17:58:41Z phoe_krk: Then write a function that scans all defuns/defvars/symbols in your sourcetree and regenerates package.lisp based on the :exports it finds. 2015-12-23T17:59:17Z phoe_krk: All in all, it would be an equivalent to "public" objects in Java. 2015-12-23T18:02:37Z phoe_krk: Or, which would be a more portable and more hackish way, (defun export-this-symbol (docstring) docstring) and wrap the required documentations string in (export-this-symbol "asdfasdfasdfasdf"). 2015-12-23T18:03:05Z phoe_krk: TWich would effectively change nothing when it comes to definitions, but would clearly mark the symbols you want to export. 2015-12-23T18:03:18Z phoe_krk: Which* 2015-12-23T18:03:31Z beach: phoe_krk: I am not going to comment on the absolute merits of you idea; for that I am too tired. However, generally speaking, Common Lisp has the power to make significant modifications to the language itself. The main question, then, is how much to take advantage of that, with the inconvenience of making it more difficult for others to read your code. 2015-12-23T18:04:40Z phoe_krk: beach: that's the first thing that came to my mind when drmeister mentioned the package.lisp issue and the exported symbols. There has to be a way to automate it that isn't essentially equivalent to package.lisp and, for that, one [>>] 2015-12-23T18:05:08Z eudoxia: i don't see why your solution is more automated than a normal defpackage form 2015-12-23T18:05:10Z yrdz quit (Remote host closed the connection) 2015-12-23T18:05:13Z eudoxia: you still have to mark which symbol will be exported 2015-12-23T18:05:16Z eudoxia: it's the same information 2015-12-23T18:05:20Z eudoxia: just in a different place 2015-12-23T18:05:26Z phoe_krk: [>>] has to somehow mark the exported symbols. And my idea conveys a sample hacky way of achieving that to dynamically regenerate package.lisp. 2015-12-23T18:05:41Z phoe_krk: eudoxia: it's spread out in the code though and not centralized in package.lisp. 2015-12-23T18:05:45Z eudoxia: anyways beach is right: your custom subset of CL might be comfortable for you, but it's lonely :) 2015-12-23T18:05:57Z eudoxia: phoe_krk: yes and that is a positive for me 2015-12-23T18:05:58Z jasom: phoe_krk: the other issue is that you aren't exporting functions or variables, you are exporting symbols. 2015-12-23T18:06:09Z contrapunctus quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2015-12-23T18:06:10Z eudoxia: yep 2015-12-23T18:06:12Z phoe_krk: jasom: that's an issue. 2015-12-23T18:06:17Z beach: eudoxia: Exactly! I am reminded of IF*. 2015-12-23T18:06:25Z eudoxia: now you need custom macros for defun, deftype, defmacro and defclass to handle those things 2015-12-23T18:06:34Z phoe_krk: eudoxia: no, I don't. 2015-12-23T18:06:38Z eudoxia: beach: oh my goddddddddddd i saw that once in Franz's IMAP code 2015-12-23T18:06:49Z jasom: phoe_krk: what I'm okay with is an annotation that says "assert that this symbol is exported" then you will know your package.lisp is up-to-date 2015-12-23T18:06:51Z phoe_krk: the documentation-string hack doesn't need def* redefined. 2015-12-23T18:06:59Z jasom: phoe_krk: regardless of whether it's automated or manual 2015-12-23T18:07:04Z phoe_krk: jasom: actually, wait. 2015-12-23T18:07:09Z phoe_krk: no need to involve CL in that. 2015-12-23T18:07:15Z phoe_krk: all it takes is an Emacs mode. 2015-12-23T18:07:22Z phoe_krk: that will somehow highlight the symbols which are exported. 2015-12-23T18:07:27Z phoe_krk: in their definition. 2015-12-23T18:07:33Z beach: phoe_krk: For what it's worth, I think docstrings near source code are noise. 2015-12-23T18:07:37Z newdan: jasom: I like that idea. Although really personally I don't mind maintaining the exported symbols list... 2015-12-23T18:07:51Z beach: phoe_krk: I recognize the advantage of keeping the two close... 2015-12-23T18:08:12Z jasom: newdan: I don't mind it either, but for browsing through other-people's code it is nice to see "oh, they intend for me to use this" or "oh this is unexported" 2015-12-23T18:08:15Z beach: phoe_krk: But I can also see that the target audience of the docstring is different from that of the source code. 2015-12-23T18:08:33Z phoe_krk: beach: that's a point. 2015-12-23T18:09:03Z beach: phoe_krk: The result of the common practice is often that programmers refrain from writing long docstrings. 2015-12-23T18:09:38Z beach: phoe_krk: My hypothesis is that if the docstring is physically separated from the code, the programmers would be inclined to write better docstrings. 2015-12-23T18:09:48Z jasom: the solution here is a symbol-macro for each function that expands to the docstring :) 2015-12-23T18:10:00Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-23T18:10:04Z phoe_krk: jasom: good idea for me 2015-12-23T18:10:27Z beach: What's wrong with cl:documentation? 2015-12-23T18:11:04Z phoe_krk: beach: doesn't documentation need you to put docstrings *in* source code? 2015-12-23T18:11:10Z beach: I mean, I know what is wrong, but I don't think the current discussion is addressing that problem. :) 2015-12-23T18:11:19Z beach: clhs documentation 2015-12-23T18:11:19Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_docume.htm 2015-12-23T18:11:19Z jasom: beach: I mean (define-symbol-macro frobnicate-foo-doc "long doc string") at the top of your file (or in a separate file that is a dependency) followed by (defun frobnicate-foo () frobnicate-foo-doc ...) 2015-12-23T18:11:32Z beach: phoe_krk: Nope, there is (SETF DOCUMENTATION). 2015-12-23T18:11:37Z phoe_krk: Oooh, that. 2015-12-23T18:11:45Z phoe_krk: And it's called by defun if a docstring is found, right? 2015-12-23T18:12:01Z jasom had no idea that documentation was an accessor 2015-12-23T18:12:02Z beach: Yes. 2015-12-23T18:12:31Z beach is happy that he taught not only phoe_krk something, but also jasom. :) 2015-12-23T18:12:44Z phoe_krk: That's a thing. 2015-12-23T18:12:46Z jasom: I like it 2015-12-23T18:12:49Z phoe_krk: I like it, tooo. 2015-12-23T18:12:54Z agumonkey quit (Quit: ZNC - http://znc.in) 2015-12-23T18:13:14Z phoe_krk: Anyway, back to the topic of package.lisp 2015-12-23T18:13:22Z beach: You guys instantly made me in a much better moood. 2015-12-23T18:13:22Z jasom: comments for people reading code, docstrings for people inquiring as to what a function does (either through reading generated documentation or using something like describe) 2015-12-23T18:13:24Z beach: mood. 2015-12-23T18:13:31Z phoe_krk: jasom: +1 2015-12-23T18:13:36Z beach: There is hope for humanity. Well, not much, but a bit more. 2015-12-23T18:13:36Z phoe_krk: Would an Emacs minor mode do for package.lisp though? 2015-12-23T18:13:46Z phoe_krk: Highlighting the symbols you export? 2015-12-23T18:14:00Z agumonkey joined #lisp 2015-12-23T18:14:05Z phoe_krk: Like, temporarily setting a different face for them, so you can toggle the mode, see what's going on, and toggle it off. 2015-12-23T18:14:33Z phoe_krk: Basically half-greying out the code and setting the exported symbols to something alike flashing neon green with dancing Mexicans around it. 2015-12-23T18:14:34Z jasom: phoe_krk: that would work; furthermore I wouldn't mind it on all the time if it were limited to the first argument to forms beginning with "DEF" 2015-12-23T18:14:46Z phoe_krk: yes 2015-12-23T18:14:48Z phoe_krk: verily so. 2015-12-23T18:15:02Z jasom: phoe_krk: minus the flashing neon-green, just a simple inverse or bold or something would be fine for on all the time 2015-12-23T18:15:03Z phoe_krk: drmeister: I think you'd like that, then. 2015-12-23T18:15:04Z beach: I like this discussion. Very productive. 2015-12-23T18:15:21Z mordocai likes this "doc strings separate from code" idea. 2015-12-23T18:15:59Z beach: mordocai: Thanks. I will sleep like a baby tonight. :) 2015-12-23T18:16:02Z phoe_krk: oh, Lisp security? 2015-12-23T18:16:15Z phoe_krk: when you have REPL access, you're compromised. simple. 2015-12-23T18:16:16Z mordocai: That even would allow you to make doc strings for multiple languages configurable based on something like the lang environment variable. 2015-12-23T18:16:21Z phoe_krk: mordocai: yes! 2015-12-23T18:16:27Z ggole quit 2015-12-23T18:16:33Z phoe_krk: when you are able to eval something that gives you REPL access, you're compromised. simple, too. 2015-12-23T18:16:46Z beach: mordocai: Check out "acclimation". 2015-12-23T18:16:52Z phoe_krk: jackdaniel: basically that. 2015-12-23T18:17:12Z beach: https://github.com/robert-strandh/Acclimation 2015-12-23T18:17:37Z mordocai: beach: Ah, nice. Yeah, that makes it easy. 2015-12-23T18:17:51Z beach: mordocai: You can do that by "loading" different docstrings based on the language. 2015-12-23T18:17:57Z mordocai: Right 2015-12-23T18:18:06Z beach: However, I don't like that, because I am thinking of a LispOS scenario. 2015-12-23T18:18:29Z beach: So, unfortunately, then Common Lisp forces us to use a different documentation system. 2015-12-23T18:18:31Z beach: But, 2015-12-23T18:19:05Z beach: (blabla:documentation ..) can always call cl:documentation when language is English. 2015-12-23T18:19:29Z phoe_krk: beach: Lisp isn't i18ned. 2015-12-23T18:19:41Z beach: Exactly. 2015-12-23T18:20:02Z beach: But we can use its flexibility to create something that will do. 2015-12-23T18:20:10Z phoe_krk: You'd really need to make a new standard for it to be internationalizable from the base upwards. 2015-12-23T18:20:22Z phoe_krk: Or. 2015-12-23T18:20:30Z futpib joined #lisp 2015-12-23T18:20:31Z beach: I need to use a different DOCUMENTATION function. 2015-12-23T18:20:38Z phoe_krk: Recreate a lot of standarized things, essentially achieving the same. 2015-12-23T18:20:50Z phoe_krk: Internationalizing lambda-lists would be fun, too. 2015-12-23T18:20:56Z phoe_krk: And errors. 2015-12-23T18:20:57Z beach: For condition reporting, there is a solution within the standard. 2015-12-23T18:21:01Z phoe_krk: Oh. 2015-12-23T18:21:02Z phoe_krk: I see. 2015-12-23T18:21:13Z beach: See acclimation again. 2015-12-23T18:21:22Z OrangeShark joined #lisp 2015-12-23T18:22:08Z prxq quit (Remote host closed the connection) 2015-12-23T18:22:18Z phoe_krk: That's fun. 2015-12-23T18:22:21Z beach: Use acclimation:condition as a superclass for your condition classes, and use acclimation:report-condition to report your condition. 2015-12-23T18:22:33Z beach: It takes an additional LANGUAGE argument. 2015-12-23T18:22:38Z phoe_krk: Documentation is not superclassable, then? 2015-12-23T18:22:43Z phoe_krk: Oh, wait. 2015-12-23T18:22:59Z phoe_krk: That would be a bit more troublesome. 2015-12-23T18:23:10Z beach: For DOCUMENTATION? Yes. 2015-12-23T18:23:25Z beach: But it's no big deal. 2015-12-23T18:23:32Z mordocai: beach: So for the simple english only docstrings, do you usually make like a documentation.lisp to put all the doc strings in or how do you prefer to handle that? 2015-12-23T18:23:36Z beach: Just decide to use a different DOCUMENTATION function. 2015-12-23T18:23:45Z phoe_krk: My idea is, create a en-documentation, pl-documentation, de-documentation, etc, etc... subfunctions. 2015-12-23T18:24:05Z phoe_krk: And i18n-documentation that takes all the args plus :LANGUAGE, and calls a proper subfunction then. 2015-12-23T18:24:10Z beach: mordocai: Yeah, docstrings-english.lisp 2015-12-23T18:24:21Z beach: and I use (SETF DOCUMENTATION). 2015-12-23T18:24:24Z jasom: aren't you allowed to specialize generic functions in CL? 2015-12-23T18:24:44Z jasom: s/in CL/in the common-lisp package/ 2015-12-23T18:25:04Z beach: That's correct. You aren't allowed to do that. 2015-12-23T18:25:58Z jasom: actually you are, so long as not all of the arguments are direct instances of standardized classes 2015-12-23T18:26:09Z mordocai: beach: I'm not very familiar with adsf/quicklisp yet. Do you have an example of a project that does this so I can see how the project file is setup? 2015-12-23T18:26:12Z beach: I was just about to write just that. 2015-12-23T18:26:12Z jasom: clhs 11.1.2.1.2 2015-12-23T18:26:12Z specbot: Constraints on the COMMON-LISP Package for Conforming Programs: http://www.lispworks.com/reference/HyperSpec/Body/11_abab.htm 2015-12-23T18:26:25Z mordocai: Curious how you'd make sure it is loaded. 2015-12-23T18:26:37Z beach: I am not sure how it is phrased in the Common Lisp HyperSpec, but the usual rule is that you must specialize on at least one of your own classes/whatever. 2015-12-23T18:27:11Z beach: mordocai: "does this"? 2015-12-23T18:27:23Z mordocai: beach: Sorry, the docstrings-english.lisp or similar 2015-12-23T18:27:32Z mordocai: beach: Just not sure how to pull it in on loading the library 2015-12-23T18:27:33Z phoe_krk: mordocai: http://xach.livejournal.com/278047.html 2015-12-23T18:27:35Z beach: mordocai: Hold on... 2015-12-23T18:27:42Z phoe_krk: Is this what you're looking for? 2015-12-23T18:28:04Z phoe_krk: Basically guides you through the whole process of running quickproject and explaining the basics of asdf. 2015-12-23T18:28:12Z beach: mordocai: https://github.com/robert-strandh/Clump 2015-12-23T18:28:14Z phoe_krk: There's another PDF for packages that I don't have a link to. 2015-12-23T18:28:30Z jasom: so you could specialize, e.g. (doc-type (eql 'function-français)) 2015-12-23T18:28:59Z beach: jasom: I suppose you could do that, yes. 2015-12-23T18:29:06Z DGASAU quit (Read error: Connection reset by peer) 2015-12-23T18:29:07Z beach: But it's not very convenient. 2015-12-23T18:29:16Z jasom: no 2015-12-23T18:29:18Z jusss quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2015-12-23T18:29:24Z DGASAU joined #lisp 2015-12-23T18:29:35Z mordocai: beach: Hmm.. so I guess just adding it to the components list works. Cool. 2015-12-23T18:29:40Z jasom: just thinking of what the least constraining version of using cl:documentation would be 2015-12-23T18:29:46Z k-stz joined #lisp 2015-12-23T18:29:50Z beach: I think it is better to declare CL:DOCUMENTATION to be about documentation in American English and just decide to use something more general. 2015-12-23T18:30:11Z kushal quit (Ping timeout: 264 seconds) 2015-12-23T18:30:27Z beach: jasom: I will be very happy to hear what you come up with. 2015-12-23T18:31:17Z beach: mordocai: Side note: I think acclimation is a fun project. I am about to contemplate how to define "oven temperature" and "weight of a person". 2015-12-23T18:31:22Z beach: Stuff like that. 2015-12-23T18:31:56Z beach: I hear in parts of UK they use "stones" for the weight of a person, but I don't know how many decimals they typically use. 2015-12-23T18:32:02Z hardenedapple joined #lisp 2015-12-23T18:32:07Z jasom: values that know their semantic types are very nice for ensuring correctness 2015-12-23T18:32:29Z jasom: beach: 11-stone 4 2015-12-23T18:32:42Z beach: I want the programmer to be able to say "present an oven temperature here" and have acclimation do the rest. 2015-12-23T18:32:43Z jasom: no decimal, stones and pounds 2015-12-23T18:32:51Z beach: Ah, nice. Thanks. 2015-12-23T18:33:57Z jasom: and I've never heard any of my Irish friends use a fraction of a pound when talking weight in stones and pounds 2015-12-23T18:34:29Z beach: That's precisely the kind of information I want to encode in acclimation. 2015-12-23T18:35:14Z jasom: and my mom calibrates her oven temperature to within 2C 2015-12-23T18:35:40Z beach: She will have to customize acclimation. Luckily, she can, since this is CLOS. 2015-12-23T18:36:11Z beach: The default is rounded to 5°C. 2015-12-23T18:36:28Z beach: ... and to 10°F. 2015-12-23T18:36:39Z beach: Anyway, you get the picture. 2015-12-23T18:36:54Z jasom: yeah, I read the page you linked 2015-12-23T18:37:14Z mordocai: Acclimation sounds great to me. I'll have to take a closer look at it when i'm not "working" 2015-12-23T18:37:28Z jasom: Is there a goal also to try to ensure unit correctness (e.g. I can multiply a length and width, but not add?) 2015-12-23T18:37:42Z jasom: or is this purely for conversion of existing values? 2015-12-23T18:39:21Z beach: jasom: I hadn't thought about any correctness of that kind. 2015-12-23T18:40:08Z beach: In my mind, it was about not having to write specific code for an international application. 2015-12-23T18:40:30Z DrCode quit (Read error: Connection reset by peer) 2015-12-23T18:40:33Z beach: I was thinking of some CLIM-like library of course. 2015-12-23T18:40:51Z beach: (present (weight person) *standard-output*) 2015-12-23T18:41:40Z beach: ... and if the user has a locale that mentions UK stuff, then it will be "11 stones 4" 2015-12-23T18:42:37Z rme left #lisp 2015-12-23T18:42:55Z kushal joined #lisp 2015-12-23T18:43:06Z beach: I am particularly sensitive to this stuff because I am a citizen of a country that uses SI units and ISO 8601, but I speak American English most of the time, and I live in France. 2015-12-23T18:44:18Z beach: So when Google (or whatever) insists on presenting things in French, or when dates show up in non-ISO 8601 just because I set my locale to what I thought was right, I am not happy. 2015-12-23T18:44:41Z mordocai wishes USA used iso8601 2015-12-23T18:44:43Z beach: Not to mention GitHub having Sunday first in the week. 2015-12-23T18:44:49Z devmau joined #lisp 2015-12-23T18:45:08Z beach: ... which I think is in acclimation already. 2015-12-23T18:45:56Z beach: mordocai: Worse, the EU seems to be forcing a different standard on countries that already adopted it. :( 2015-12-23T18:46:24Z beach: I haven't checked the detail, but it reminds me I need to send email to my EU Parliament representatives. 2015-12-23T18:46:45Z mau joined #lisp 2015-12-23T18:48:15Z mau quit (Remote host closed the connection) 2015-12-23T18:51:08Z Noname___ joined #lisp 2015-12-23T18:53:06Z Th30n quit (Quit: leaving) 2015-12-23T18:53:36Z DrCode joined #lisp 2015-12-23T18:53:58Z beach: With acclimation, I am probably way out of my leagues, and people like Zhivago would be much more qualified than I am. For that reason, I welcome improvements or alternatives to acclimation. 2015-12-23T18:54:26Z jtza8 quit (Ping timeout: 240 seconds) 2015-12-23T18:54:26Z mau2 joined #lisp 2015-12-23T18:54:35Z mau1 joined #lisp 2015-12-23T18:55:18Z nate_c joined #lisp 2015-12-23T18:56:46Z scymtym joined #lisp 2015-12-23T19:00:47Z Noname___: Hi guys 2015-12-23T19:01:18Z mau2 quit (Remote host closed the connection) 2015-12-23T19:02:18Z mau3 joined #lisp 2015-12-23T19:02:33Z devmau quit (Quit: devmau) 2015-12-23T19:02:39Z zdm quit (Ping timeout: 260 seconds) 2015-12-23T19:02:44Z kushal quit (Ping timeout: 256 seconds) 2015-12-23T19:03:35Z EvW quit (Ping timeout: 255 seconds) 2015-12-23T19:04:13Z Denommus quit (Quit: yes) 2015-12-23T19:04:31Z Noname___: I have a question: I know concatenate mult - strings to one string with (concatenate 'string "AA" "BB" "CC"). but what if I have a string list, (concatenate 'string '("AA" "BB" "CC")) doesn't work. I use another way like this: (loop for str in '("AA" "BB" "CC") 2015-12-23T19:04:33Z Noname___: for result = str then (concatenate 'string result str) 2015-12-23T19:04:35Z Noname___: finally (return result)) 2015-12-23T19:05:19Z Noname___: but I think there must be some better way than this, anyone konws that? 2015-12-23T19:05:25Z nyef: Noname___: (apply #'concatenate 'string '("AA" "BB" "CC")) 2015-12-23T19:05:44Z nyef: clhs apply 2015-12-23T19:05:44Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_apply.htm 2015-12-23T19:06:33Z eldariof joined #lisp 2015-12-23T19:06:37Z Noname___: oh, Good, Thanks! 2015-12-23T19:14:07Z nyef: You're welcome. 2015-12-23T19:17:42Z beach left #lisp 2015-12-23T19:18:41Z Noname___: I thought the 'string would be the arugment of 'apply not #'concatenate 2015-12-23T19:18:52Z Noname___: Thanks a lot 2015-12-23T19:19:48Z mordocai: Noname___: 'string is an argument of apply not #'concatenate. #'concatenate has no arguments, it is an atom. 2015-12-23T19:20:00Z warweasle quit (Remote host closed the connection) 2015-12-23T19:20:16Z kushal joined #lisp 2015-12-23T19:21:13Z mordocai: Noname___: To match what you said it'd loo like (apply (#'concatenate 'string) '("AA" "BB" "CC")) which doesn't work. 2015-12-23T19:21:19Z mordocai: look like* 2015-12-23T19:21:54Z Noname___: sorry, wrong description, you are right 2015-12-23T19:22:33Z mordocai: Noname___: No problem, just wanted to make sure you had it in your head correctly :). apply is super useful 2015-12-23T19:23:00Z Noname___: yes :-) 2015-12-23T19:25:13Z EvW joined #lisp 2015-12-23T19:25:38Z kyfho quit (Ping timeout: 255 seconds) 2015-12-23T19:25:50Z BitPuffin|osx joined #lisp 2015-12-23T19:27:35Z paradoja quit (Ping timeout: 240 seconds) 2015-12-23T19:28:40Z newdan quit (Quit: Lost terminal) 2015-12-23T19:30:24Z broken_clock joined #lisp 2015-12-23T19:32:21Z broken_clock quit (Read error: Connection reset by peer) 2015-12-23T19:35:56Z myrkraverk joined #lisp 2015-12-23T19:36:05Z vlatkoB quit (Remote host closed the connection) 2015-12-23T19:38:28Z broken_clock joined #lisp 2015-12-23T19:41:05Z eldariof quit 2015-12-23T19:50:30Z civos joined #lisp 2015-12-23T19:51:15Z nate_c quit (Ping timeout: 240 seconds) 2015-12-23T19:52:34Z moei quit (Quit: Leaving...) 2015-12-23T19:52:51Z ebrasca joined #lisp 2015-12-23T19:53:41Z mike7 joined #lisp 2015-12-23T19:54:01Z Warlock[29A] quit (Read error: Connection reset by peer) 2015-12-23T19:54:47Z developernotes quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-23T19:56:20Z ebrasca quit (Remote host closed the connection) 2015-12-23T19:56:24Z prxq joined #lisp 2015-12-23T19:57:34Z cadadar joined #lisp 2015-12-23T19:57:46Z kushal quit (Quit: Leaving) 2015-12-23T19:59:30Z cadadar quit (Client Quit) 2015-12-23T20:00:35Z Guest20174 quit (Ping timeout: 246 seconds) 2015-12-23T20:00:54Z jtza8 joined #lisp 2015-12-23T20:01:35Z Guest20174 joined #lisp 2015-12-23T20:02:13Z nate_c joined #lisp 2015-12-23T20:02:38Z sz0 quit (Quit: Bye.) 2015-12-23T20:04:55Z paul0 quit (Ping timeout: 240 seconds) 2015-12-23T20:05:42Z PlasmaStar quit (Ping timeout: 255 seconds) 2015-12-23T20:06:53Z PlasmaStar joined #lisp 2015-12-23T20:08:16Z developernotes joined #lisp 2015-12-23T20:12:14Z sjl joined #lisp 2015-12-23T20:15:55Z jsgrant joined #lisp 2015-12-23T20:18:54Z Guest20174 quit (Ping timeout: 250 seconds) 2015-12-23T20:20:47Z jsgrant left #lisp 2015-12-23T20:21:10Z jsgrant joined #lisp 2015-12-23T20:24:18Z hkian joined #lisp 2015-12-23T20:25:12Z hkian: Hey all. Anyone familiar enough with CFFI to answer a question? 2015-12-23T20:25:39Z oGMo: that question, or another question? 2015-12-23T20:25:49Z hkian: Another question :P 2015-12-23T20:25:51Z oGMo: (perhaps ask the actual question and see) 2015-12-23T20:25:58Z hkian: Ok 2015-12-23T20:26:11Z eudoxia: i consider myself competent in CFFI 2015-12-23T20:26:19Z broken_clock quit (Read error: Connection reset by peer) 2015-12-23T20:26:43Z hkian: Here's a link to the stackoverflow question 2015-12-23T20:26:44Z hkian: http://stackoverflow.com/questions/34442774/common-lisp-cffi-assign-a-struct-value-to-an-array-index 2015-12-23T20:27:49Z eudoxia: why are you mem-ref'ing x? 2015-12-23T20:27:55Z eudoxia: that doesn't look right 2015-12-23T20:28:02Z broken_clock joined #lisp 2015-12-23T20:28:03Z hkian: Because otherwise it's a pointer. 2015-12-23T20:28:10Z eudoxia: oh right 2015-12-23T20:28:54Z Guest20174 joined #lisp 2015-12-23T20:29:04Z eudoxia: well, if it's calling T-I-F-M, it probs thinks that struct thing is a Lisp value 2015-12-23T20:29:48Z eudoxia: I assume (:struct my-struct) is the same as (:struct jx:jx-value) 2015-12-23T20:29:49Z hkian: Yes it does. It always calls translate-into-foreign-memory when setf-ing mem-aref 2015-12-23T20:29:55Z hkian: Ah yes 2015-12-23T20:30:13Z hkian: Fixed 2015-12-23T20:30:34Z mordocai: eudoxia go answer it on stackoverflow and get that sweet karma! 2015-12-23T20:30:39Z eudoxia: hmmm 2015-12-23T20:30:43Z jsgrant: oGMo: :^) 2015-12-23T20:30:44Z eudoxia: what about 2015-12-23T20:30:50Z eudoxia: this thing says use mem-aptr http://lhealy.livejournal.com/15114.html 2015-12-23T20:31:09Z hkian: Let me try that 2015-12-23T20:32:49Z kyfho joined #lisp 2015-12-23T20:33:07Z hkian: (SETF CFF:MEM-APTR) is undefined 2015-12-23T20:34:15Z hkian: *CFFI:MEM-APTR 2015-12-23T20:35:42Z eudoxia: http://ircbrowse.net/browse/lisp?id=7417346×tamp=1334849682#t1334849682 2015-12-23T20:35:42Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T20:35:53Z Jesin quit (Quit: Leaving) 2015-12-23T20:37:23Z eudoxia quit (Quit: Leaving) 2015-12-23T20:37:50Z kyfho joined #lisp 2015-12-23T20:38:12Z hkian: I see, so if (SETF MEM-APTR) doesn't work, what's the alternative? 2015-12-23T20:38:14Z Jesin joined #lisp 2015-12-23T20:38:51Z mordocai: crying 2015-12-23T20:38:55Z mordocai doesn't know the real answer. 2015-12-23T20:39:56Z hkian: I guess I could add a c function to do this 2015-12-23T20:40:01Z pilne joined #lisp 2015-12-23T20:40:19Z hkian: And then wrap it, but that's not ideal 2015-12-23T20:40:54Z cadadar joined #lisp 2015-12-23T20:41:41Z cadadar quit (Client Quit) 2015-12-23T20:41:56Z switchp0rt: how do you copy the data from a cons cell? I am trying to do a deep copy 2015-12-23T20:42:10Z hkian: Basically my use case is: I need to pass an array of these structs to a function. Some of the elements in the array are lisp values that I need translated into foreign memory, some of them are already foreign objects that were returned from other foreign functions. 2015-12-23T20:43:10Z prxq: writing a c function and the wrapping it might be the easiest, most robust solution. 2015-12-23T20:44:19Z sjl quit (Ping timeout: 245 seconds) 2015-12-23T20:44:24Z hkian: I am using a 3rd party library. So this would mean either modifying their library or creating my own additional library that's dynamically linked against theirs. 2015-12-23T20:44:55Z joneshf-laptop quit (Ping timeout: 240 seconds) 2015-12-23T20:45:41Z prxq: otoh, if you are already linking in dynamic libraries, one more, one less... :-) 2015-12-23T20:46:00Z hkian: True 2015-12-23T20:47:35Z mordocai: Wouldn't something like (setf (mem-ref (mem-aptr))) work? 2015-12-23T20:47:39Z Demosthenex quit (Ping timeout: 245 seconds) 2015-12-23T20:47:45Z hkian: Tried that 2015-12-23T20:47:46Z mordocai: Obviously filling in the missing args 2015-12-23T20:48:30Z mordocai: hkian: What kind of error did you get? I see no logical reason why it'd fail from my limited knowledge. 2015-12-23T20:48:30Z hkian: Calling (SETF (MEM-REF x) y) is always going to call TRANSLATE-INTO-FOREIGN-MEMORY on y 2015-12-23T20:48:53Z eni joined #lisp 2015-12-23T20:48:58Z hkian: y is already a foreign object. 2015-12-23T20:49:47Z hardenedapple quit (Quit: WeeChat 1.3) 2015-12-23T20:49:49Z hkian: There's no function for copying the data inside Y into another pointer. 2015-12-23T20:49:58Z mordocai: Then make it a lisp value so that setf can work? 2015-12-23T20:50:54Z nyef: Define the translation from foreign memory to foreign memory? 2015-12-23T20:51:05Z jasom: memcopy? 2015-12-23T20:51:14Z hkian: Aha! 2015-12-23T20:51:17Z hkian: Memcopy 2015-12-23T20:51:17Z mordocai: Yeah, memcopy is what they want but I don't know if CFFI has it 2015-12-23T20:51:25Z mordocai: Though foreign call 2015-12-23T20:51:40Z phoe_krk: switchp0rt: what's in your cons cell? 2015-12-23T20:53:43Z sjl joined #lisp 2015-12-23T20:54:20Z hkian: (foreign-funcall "memcpy" :pointer (mem-aptr arr '(:struct my-struct) index) :pointer value :void) 2015-12-23T20:54:23Z hkian: That should do it 2015-12-23T20:54:45Z hkian: Where value is a pointer to '(:struct my-struct) 2015-12-23T20:55:06Z mordocai: LGTM 2015-12-23T20:55:23Z mordocai totally thought of memcpy a while ago but didn't think of foreign-funcall cause he's dumb. 2015-12-23T20:55:35Z foom quit (Ping timeout: 240 seconds) 2015-12-23T20:55:58Z hkian: Very helpful, all. Thank you. 2015-12-23T20:56:00Z phoe_krk: Do I need to call defgeneric before defmethod? 2015-12-23T20:56:05Z phoe_krk: Like, at all? 2015-12-23T20:56:11Z Bicyclidine: No, defmethod will make one up. 2015-12-23T20:56:17Z Bicyclidine: I usually try to though. 2015-12-23T20:56:24Z phoe_krk: That's interesting. 2015-12-23T20:56:32Z jackdaniel: you may use (:method …) in defgeneric 2015-12-23T20:56:50Z jsgrant quit (Remote host closed the connection) 2015-12-23T21:01:20Z gorthaur joined #lisp 2015-12-23T21:02:27Z gorthaur quit (Client Quit) 2015-12-23T21:03:33Z mike7 left #lisp 2015-12-23T21:04:25Z algae quit (Quit: leaving) 2015-12-23T21:04:26Z nyef: There's a small semantic difference between the generic functions created by defgeneric and those created implicitly by defmethod, I think it might be to do with keyword arguments, and it also shuts SBCL up about "implicitly creating generic function" if you use defgeneric. 2015-12-23T21:05:38Z Bicyclidine: yeah, and of course you can specify options to defgeneric 2015-12-23T21:08:53Z blt joined #lisp 2015-12-23T21:08:57Z Demosthenex joined #lisp 2015-12-23T21:08:59Z foom joined #lisp 2015-12-23T21:09:26Z gravicappa quit (Ping timeout: 240 seconds) 2015-12-23T21:09:29Z manuel_ joined #lisp 2015-12-23T21:09:37Z manuel_ quit (Client Quit) 2015-12-23T21:10:55Z ASau joined #lisp 2015-12-23T21:15:56Z developernotes quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-23T21:18:27Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T21:18:42Z kyfho joined #lisp 2015-12-23T21:20:17Z dkcl joined #lisp 2015-12-23T21:20:28Z hkian quit (Quit: hkian) 2015-12-23T21:22:06Z dkcl quit (Read error: Connection reset by peer) 2015-12-23T21:22:20Z dkcl joined #lisp 2015-12-23T21:28:48Z developernotes joined #lisp 2015-12-23T21:28:57Z moei joined #lisp 2015-12-23T21:28:58Z moei quit (Client Quit) 2015-12-23T21:29:09Z eni quit (Remote host closed the connection) 2015-12-23T21:33:00Z eni joined #lisp 2015-12-23T21:34:06Z zygentoma joined #lisp 2015-12-23T21:38:35Z szpieg__ is now known as Zupoman 2015-12-23T21:40:31Z badkins quit (Read error: Connection reset by peer) 2015-12-23T21:40:31Z attila_lendvai quit (Read error: Connection reset by peer) 2015-12-23T21:42:19Z attila_lendvai joined #lisp 2015-12-23T21:42:19Z attila_lendvai quit (Changing host) 2015-12-23T21:42:19Z attila_lendvai joined #lisp 2015-12-23T21:43:53Z Joreji joined #lisp 2015-12-23T21:44:48Z moei joined #lisp 2015-12-23T21:48:11Z josemanuel joined #lisp 2015-12-23T21:53:18Z sjl quit (Ping timeout: 256 seconds) 2015-12-23T21:54:41Z pbgc joined #lisp 2015-12-23T21:55:25Z atgreen quit (Remote host closed the connection) 2015-12-23T21:56:06Z Xach_ joined #lisp 2015-12-23T21:56:24Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T21:57:36Z kyfho joined #lisp 2015-12-23T21:58:20Z Xach quit (Ping timeout: 272 seconds) 2015-12-23T22:03:17Z peyton joined #lisp 2015-12-23T22:04:56Z Jesin quit (Quit: Leaving) 2015-12-23T22:05:53Z broken_clock quit (Ping timeout: 246 seconds) 2015-12-23T22:08:10Z dilated_dinosaur joined #lisp 2015-12-23T22:10:42Z futpib quit (Ping timeout: 250 seconds) 2015-12-23T22:12:55Z Jesin joined #lisp 2015-12-23T22:14:18Z sjl joined #lisp 2015-12-23T22:14:21Z peyton quit (Quit: Leaving) 2015-12-23T22:17:37Z badkins joined #lisp 2015-12-23T22:18:18Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-23T22:18:30Z wildlander joined #lisp 2015-12-23T22:18:52Z zygentoma quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2015-12-23T22:18:53Z Zupoman quit (Ping timeout: 276 seconds) 2015-12-23T22:19:39Z Karl_Dscc quit (Remote host closed the connection) 2015-12-23T22:21:13Z earl-ducaine joined #lisp 2015-12-23T22:23:35Z pbgc joined #lisp 2015-12-23T22:28:26Z jtza8 quit (Remote host closed the connection) 2015-12-23T22:33:04Z dkcl quit (Remote host closed the connection) 2015-12-23T22:36:14Z dkcl joined #lisp 2015-12-23T22:41:25Z josemanuel quit (Quit: Saliendo) 2015-12-23T22:42:43Z sweater joined #lisp 2015-12-23T22:43:07Z sweater is now known as Guest91078 2015-12-23T22:47:11Z ralt joined #lisp 2015-12-23T22:47:20Z AlphaAtom joined #lisp 2015-12-23T22:48:49Z AlphaAtom quit (Client Quit) 2015-12-23T22:49:59Z developernotes quit (Quit: Textual IRC Client: www.textualapp.com) 2015-12-23T22:50:16Z warweasle joined #lisp 2015-12-23T22:51:16Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T22:51:32Z LiamH quit (Quit: Leaving.) 2015-12-23T22:51:32Z kyfho joined #lisp 2015-12-23T22:52:21Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-23T22:52:47Z AlphaAtom joined #lisp 2015-12-23T22:54:43Z blt quit (Quit: WeeChat 1.3) 2015-12-23T23:01:25Z iddqd joined #lisp 2015-12-23T23:03:37Z prxq quit (Remote host closed the connection) 2015-12-23T23:05:32Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T23:05:35Z Joreji quit (Ping timeout: 240 seconds) 2015-12-23T23:06:05Z kyfho joined #lisp 2015-12-23T23:06:19Z eni quit (Remote host closed the connection) 2015-12-23T23:06:59Z sjl quit (Ping timeout: 276 seconds) 2015-12-23T23:08:46Z cmack quit (Ping timeout: 250 seconds) 2015-12-23T23:09:12Z pbgc joined #lisp 2015-12-23T23:12:54Z EvW quit (Ping timeout: 255 seconds) 2015-12-23T23:13:26Z cadadar joined #lisp 2015-12-23T23:19:29Z EvW joined #lisp 2015-12-23T23:20:15Z mishoo quit (Ping timeout: 260 seconds) 2015-12-23T23:24:11Z pilne left #lisp 2015-12-23T23:26:53Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-23T23:31:00Z joneshf-laptop joined #lisp 2015-12-23T23:32:42Z yvm quit (Ping timeout: 272 seconds) 2015-12-23T23:34:28Z k-stz` joined #lisp 2015-12-23T23:36:55Z moore33 joined #lisp 2015-12-23T23:37:56Z k-stz quit (Ping timeout: 246 seconds) 2015-12-23T23:38:59Z k-stz` quit (Ping timeout: 246 seconds) 2015-12-23T23:39:10Z warweasle quit (Quit: Gotta catch'em all!) 2015-12-23T23:39:23Z ACE_Recliner joined #lisp 2015-12-23T23:40:23Z joneshf-laptop quit (Ping timeout: 246 seconds) 2015-12-23T23:44:27Z scymtym_ joined #lisp 2015-12-23T23:48:37Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T23:49:02Z kyfho joined #lisp 2015-12-23T23:53:00Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T23:53:27Z heurist quit (Ping timeout: 265 seconds) 2015-12-23T23:54:00Z kyfho joined #lisp 2015-12-23T23:54:44Z pjb: xristos: you can compile clisp without FFI support, and without any C module that would let you manipulate raw memory. You could patch other implementations to remove those features too. 2015-12-23T23:54:46Z kyfho quit (Read error: Connection reset by peer) 2015-12-23T23:55:42Z xristos: pjb: sure, i was mostly referring to codebases that use FFI (and other unsafe features) for performance and so on 2015-12-23T23:56:12Z pjb: Clearly, a choice has to be made. 2015-12-23T23:58:57Z kyfho joined #lisp