2018-09-01T00:00:03Z kushal quit (Remote host closed the connection) 2018-09-01T00:01:03Z kushal joined #lisp 2018-09-01T00:03:39Z azimut joined #lisp 2018-09-01T00:04:47Z regreg joined #lisp 2018-09-01T00:13:07Z fikka joined #lisp 2018-09-01T00:14:44Z eschulte quit (Ping timeout: 272 seconds) 2018-09-01T00:18:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-01T00:19:16Z lumm quit (Quit: lumm) 2018-09-01T00:40:40Z Lycurgus quit (Quit: Exeunt) 2018-09-01T00:41:18Z AeroNotix: wish I could combine my two passions, lisp and snooker 2018-09-01T00:41:44Z regreg: AeroNotix: write a snooker video game in lisp :) 2018-09-01T00:42:35Z AeroNotix: regreg: unfortunately most of the "fun" work is done already. IIRC there's "libbilliards" that takes care of the majority of the ball physics 2018-09-01T00:42:51Z trocado quit (Ping timeout: 252 seconds) 2018-09-01T00:43:10Z regreg: AeroNotix: even better then, you will have less coding to do 2018-09-01T00:43:22Z AeroNotix: I always wondered why there isn't a cheap over head table system that tracks ball positions. For match games where balls need to be reset (foul and a miss) then it's quite a manual job placing the balls back. 2018-09-01T00:43:22Z regreg: AeroNotix: you could publish it and make money from it 2018-09-01T00:43:46Z AeroNotix: regreg: yeah me and the five other open source and snooker nerds would love it 2018-09-01T00:43:49Z Bike: dive bars don't have such niceties 2018-09-01T00:43:59Z AeroNotix: snooker isn't played in dive bars! 2018-09-01T00:44:38Z Bike: we'll see about that 2018-09-01T00:44:39Z AeroNotix: Bike: that overhead table system I was mainly thinking about it being used in big matches. There's a rule in snooker which sometimes requires balls to be reset to their positions they were in before a foul. 2018-09-01T00:45:08Z AeroNotix: and it can take a lot of back and forth between replays to get the positions just right 2018-09-01T00:45:32Z AeroNotix: the balls are brightly coloured, the game is literally played on a green screen. Seems like it should be trivial 2018-09-01T00:46:08Z AeroNotix: https://patents.google.com/patent/EP0435910B1/nl boooo 2018-09-01T00:46:14Z Bike: nothing about image processing is "trivial", but i'm sure it's possible 2018-09-01T00:46:18Z regreg: AeroNotix: if there are 4 games worth a $20million market, then with one extra good quality game you can take 1/5 of that market, meaning $4million, assuming your game quality is similar or better 2018-09-01T00:46:49Z Bike: this uses lasers rather than just a camera 2018-09-01T00:47:15Z AeroNotix: Bike: I was thinking using image processing of the state of the game play by play and use lasers to indicate older positions, if needed 2018-09-01T00:47:45Z AeroNotix: or as a training aid. Snooker schools in the UK are big deals 2018-09-01T00:47:51Z Bike: i mean, lasers to detecxt the ball positions, if i have this right 2018-09-01T00:47:55Z Bike: i guess you could also make a fancy table 2018-09-01T00:48:05Z Bike: something something magnets 2018-09-01T00:48:18Z Bike: for extra fancy, let it move the balls too, for infinite cheating opportunities 2018-09-01T00:48:27Z AeroNotix: Bike: I wondered about putting something inside the balls but pros would be up in arms about stuff like that 2018-09-01T00:48:33Z Bike: yeah 2018-09-01T00:48:35Z AeroNotix: there are regulations about ball weight and deviation 2018-09-01T00:48:43Z Bike: cheatin' 2018-09-01T00:49:01Z AeroNotix: snooker rarely has any cheating going on. It's a very civilized sport 2018-09-01T00:49:13Z Bike: again, we'll see about that 2018-09-01T00:49:23Z AeroNotix: often players will claim their own fouls even when the ref misses it 2018-09-01T00:49:35Z AeroNotix: anyway ot 2018-09-01T00:50:30Z AeroNotix: in other news my lisp z80 emulator can now run my z80 brainfuck interpreter code ;) 2018-09-01T00:51:37Z regreg: AeroNotix: I'm making an OS that is supposed to run on Z80! 2018-09-01T00:51:47Z AeroNotix: regreg: interesting 2018-09-01T00:51:49Z AeroNotix: link? 2018-09-01T00:52:00Z regreg: AeroNotix: from Z80 up to zArch mainframes 2018-09-01T00:52:24Z regreg: a sort of powerful DOS that has optional need for an MMU 2018-09-01T00:52:24Z AeroNotix: I'm always looking for bigger and bigger roms to run on the emulator. I'm having isues assembling zexdoc/zexall with linux assemblers. Seems they're designed for ancient windows assemblers. 2018-09-01T00:52:35Z AeroNotix: regreg: real hardware? 2018-09-01T00:52:50Z regreg: AeroNotix: ZX Spectrum 2018-09-01T00:52:54Z AeroNotix: oh ok 2018-09-01T00:53:04Z AeroNotix: English then? 2018-09-01T00:53:31Z regreg: no, Romanian, ZX Spectrum compatibles were very popular in EEU 2018-09-01T00:54:03Z AeroNotix: indeed. There were loads of them behind the iron curtain. Clones and all sorts. All the way past the 32 bit era. People writing stuff like mortal combat for z80 based machines 2018-09-01T00:54:19Z AeroNotix: just mentioned English cause the speccy was dead popular in the UK 2018-09-01T00:54:19Z regreg: I'm thinking of providing a powerful BASIC dialect 2018-09-01T00:54:24Z AeroNotix: screw basic 2018-09-01T00:54:26Z AeroNotix: lisp 2018-09-01T00:54:42Z AeroNotix: take a look at ulisp. Something like that would be cool 2018-09-01T00:54:53Z regreg: I intend to extend the DEF FN command so that it can implement arbitrary functions 2018-09-01T00:55:08Z AeroNotix: in my z80 emulator I have a plan (currently kind of almost working) where you can write a subset of CL that will compile to z80 machine code 2018-09-01T00:55:16Z regreg: I see.. 2018-09-01T00:55:22Z regreg: I'm not a big fan of lisp 2018-09-01T00:55:27Z regreg: I'm more of a TCL fan 2018-09-01T00:55:34Z Bike: why are you in this channel...? 2018-09-01T00:55:40Z vsync: AeroNotix: ooooh 2018-09-01T00:55:45Z regreg: Bike: there are cool people here :) 2018-09-01T00:55:52Z AeroNotix: sick burn 2018-09-01T00:56:10Z Bike: to talk about lisp 2018-09-01T00:56:12Z Bike: anyway, what subset? 2018-09-01T00:56:31Z regreg: I like CLOS a lot 2018-09-01T00:56:32Z AeroNotix: Bike: functions, some iteration primitives, control forms, structs 2018-09-01T00:57:11Z Bike: i mean, i think all the base semantics aren't too hard to implement 2018-09-01T00:57:15Z Bike: or could just throw cleavir at it 2018-09-01T00:57:32Z AeroNotix: yeah. To be honest calling it a "subset of CL" is a bit strong. It's more "a shitty version of lisp" 2018-09-01T00:58:00Z Bike: look on the bright side. lisp started as a shitty version of lisp too 2018-09-01T00:58:53Z AeroNotix: well, the z80 can by default access 64k of memory. I know in "my" version of lisp that this is oodles of memory, with plenty to spare for user programs 2018-09-01T00:59:29Z Bike: well yeah the main thing would be not doing all thousand functions 2018-09-01T00:59:53Z Bike: who really needs format 2018-09-01T00:59:54Z AeroNotix: The idea was just that you would define your own functions (+ a set that make sense built in) that compile directly to machine code 2018-09-01T01:00:04Z AeroNotix: Bike: format on z80 might be fuken rad actually 2018-09-01T01:00:17Z AeroNotix: but probably also 500 bytes on its own 2018-09-01T01:00:44Z vsync: AeroNotix: can you get more RAM by bank switching? 2018-09-01T01:00:52Z AeroNotix: vsync: yes 2018-09-01T01:00:55Z vsync: guess that might be "cheating"... depends the goal of your project 2018-09-01T01:00:59Z regreg: cheating 2018-09-01T01:01:08Z regreg: will it load from tape? 2018-09-01T01:01:09Z regreg: :) 2018-09-01T01:01:32Z vsync learned from Computer Science that the tape can be infinite 2018-09-01T01:02:43Z AeroNotix: vsync: it's just more complicated to create. With only a handful of chips you can create a useful z80 "computer" 2018-09-01T01:04:13Z AeroNotix: I need to actually get some hw. I've mostly been focused on creating the emulator and development tools 2018-09-01T01:05:47Z pierpal quit (Ping timeout: 240 seconds) 2018-09-01T01:05:58Z |3b|` joined #lisp 2018-09-01T01:07:06Z |3b| quit (Ping timeout: 264 seconds) 2018-09-01T01:07:10Z ozzloy quit (Ping timeout: 268 seconds) 2018-09-01T01:07:56Z dvdmuckle quit (Ping timeout: 272 seconds) 2018-09-01T01:10:05Z dvdmuckle joined #lisp 2018-09-01T01:15:01Z xificurC quit (Remote host closed the connection) 2018-09-01T01:24:13Z Roy_Fokker quit (Quit: Leaving) 2018-09-01T01:27:49Z |3b|` is now known as |3b| 2018-09-01T01:33:24Z it3ration joined #lisp 2018-09-01T01:38:58Z it3ration quit (Ping timeout: 272 seconds) 2018-09-01T01:39:48Z gendl: Hi, is there a portable way to delete a package nickname? 2018-09-01T01:41:10Z buffergn0me joined #lisp 2018-09-01T01:42:30Z logicmoo quit (Read error: Connection reset by peer) 2018-09-01T01:42:59Z Bike: rename-package 2018-09-01T01:44:17Z phax joined #lisp 2018-09-01T01:46:54Z dmiles joined #lisp 2018-09-01T01:50:21Z stardiviner joined #lisp 2018-09-01T01:55:21Z lonjil quit (Ping timeout: 252 seconds) 2018-09-01T01:56:44Z igemnace joined #lisp 2018-09-01T01:57:08Z joast quit (Quit: Leaving.) 2018-09-01T01:57:41Z joast joined #lisp 2018-09-01T02:01:48Z pjb: But notice that rename-package has "undefined consquences if new-name or any new-nickname conflicts with any existing package names." 2018-09-01T02:02:02Z fikka joined #lisp 2018-09-01T02:02:05Z vsync: of all the things to leave undefined 2018-09-01T02:02:13Z pjb: I interpret that strictly, to mean that if there is already a package with the same name or nickname, rename-package can fail. 2018-09-01T02:02:16Z vsync: I like almost everything about the package system fine, except nicknames 2018-09-01T02:02:24Z Bike: hm? 2018-09-01T02:02:31Z dddddd quit (Remote host closed the connection) 2018-09-01T02:02:43Z pjb: So I call it twice, using a temp name, like in com.informatimago.common-lisp.cesarum.package:add-nickname 2018-09-01T02:02:43Z pjb: 2018-09-01T02:03:11Z pjb: But perhaps "nickname conflicts" are only when the name-package association is different? 2018-09-01T02:04:17Z pjb: In that case, removing a nickname could be done conformingly with (rename-package package (package-name package) (remove old-nickname (package-nicknames package))) 2018-09-01T02:04:48Z pjb: + :test (function string=) ; sorry. 2018-09-01T02:07:28Z fikka quit (Ping timeout: 272 seconds) 2018-09-01T02:16:37Z jeosol_ joined #lisp 2018-09-01T02:20:59Z pierpal joined #lisp 2018-09-01T02:23:04Z pierpal quit (Remote host closed the connection) 2018-09-01T02:24:48Z phax quit (Quit: phax) 2018-09-01T02:33:04Z meepdeew joined #lisp 2018-09-01T02:33:51Z bradcomp joined #lisp 2018-09-01T02:40:32Z pyx joined #lisp 2018-09-01T02:42:06Z meepdeew quit (Ping timeout: 252 seconds) 2018-09-01T02:47:42Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-01T02:48:49Z pierpa quit (Quit: Page closed) 2018-09-01T02:50:05Z Pixel_Outlaw joined #lisp 2018-09-01T02:50:35Z krwq joined #lisp 2018-09-01T02:52:56Z pyx quit (Quit: WeeChat 2.1) 2018-09-01T02:56:24Z buffergn0me quit (Ping timeout: 250 seconds) 2018-09-01T02:58:25Z danielxvu quit (Remote host closed the connection) 2018-09-01T03:00:18Z SaganMan joined #lisp 2018-09-01T03:00:53Z danielxvu joined #lisp 2018-09-01T03:01:26Z aeth: So normally I simplify something by making something a symbol or a list. i.e. in ((foo bar) (baz barfoo)) the first sublist binds bar to foo, but (foo (baz barfoo)) would bind foo to foo. 2018-09-01T03:02:09Z aeth: I can't do that in my particular case here, though, because I have (binding thing &key ...) instead of (binding thing) 2018-09-01T03:02:45Z aeth: The next best thing I can think of is having some symbol imply repetition, e.g. (foo * :some-key 42) 2018-09-01T03:03:20Z aeth: What symbol would be the most intuitive for not writing foo twice when I'm binding foo to the variable foo? 2018-09-01T03:06:29Z no-defun-allowed: is it possible to tell sbcl to do sin with single-floats? 2018-09-01T03:06:44Z no-defun-allowed: i can coerce from double to single but i think that's a waste 2018-09-01T03:08:47Z Bike: you mean, pass it a double and have it return a single? 2018-09-01T03:29:40Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-01T03:29:59Z jkordani_ quit (Read error: Connection reset by peer) 2018-09-01T03:32:09Z v0|d quit (Ping timeout: 244 seconds) 2018-09-01T03:33:26Z APic quit (Ping timeout: 255 seconds) 2018-09-01T03:34:01Z igemnace quit (Quit: WeeChat 2.2) 2018-09-01T03:34:22Z it3ration joined #lisp 2018-09-01T03:34:41Z bradcomp joined #lisp 2018-09-01T03:39:13Z it3ration quit (Ping timeout: 246 seconds) 2018-09-01T03:39:49Z APic joined #lisp 2018-09-01T03:41:03Z buffergn0me joined #lisp 2018-09-01T03:44:28Z anewuser joined #lisp 2018-09-01T03:49:18Z russellw: FAQ: 'If using REMOVE and DELETE to filter a sequence, don't use the :test-not keyword or the REMOVE-IF-NOT or DELETE-IF-NOT functions. Use COMPLEMENT to complement the predicate and the REMOVE-IF or DELETE-IF functions instead.' - a curious recommendation. Is there a reason for it? 2018-09-01T03:51:54Z Bike quit (Quit: Lost terminal) 2018-09-01T03:55:30Z aeth: As far as scary loops go, how does this one rank? https://gitlab.com/zombie-raptor/zombie-raptor/blob/d5023f05b40a20d3e0cfe96d0a6c4a85e39c4792/util/array.lisp#L115-149 2018-09-01T03:56:22Z |3b| finds DO at the end of previous clause pretty scary in LOOP :p 2018-09-01T04:00:28Z |3b| also wonders why it should be correctable if ROW-OF isn't an integer, but if it is any integer other than 2,3,4 that is fatal 2018-09-01T04:01:05Z aeth: |3b|: It isn't actually correctable because check-type in macros isn't actually correctable, at least in SBCL where I do my testing. 2018-09-01T04:01:32Z mfiano: Yes, I think `do` at the end of a clause is quite scary as well. 2018-09-01T04:02:10Z aeth: Well I get my LOOP style from Python and in Python you put the : at the end of a line 2018-09-01T04:02:23Z aeth: loop is just an ALGOL language. 2018-09-01T04:02:48Z Fade: I don't see it. 2018-09-01T04:02:52Z aeth: And in ALGOL you put DO at the end, too. https://en.wikipedia.org/wiki/ALGOL 2018-09-01T04:02:59Z aeth: "FOR A:= 0.0 STEP D UNTIL 6.3 DO" 2018-09-01T04:03:04Z |3b|: DO ... AND COLLECT makes more sense to me than UNLESS ... AND COLLECT 2018-09-01T04:03:37Z |3b|: (which is how i read it) 2018-09-01T04:03:43Z aeth: |3b|: Honestly, I think that's an issue with SLIME's loop indentation 2018-09-01T04:03:52Z aeth: and should line up with the setf not with the unless 2018-09-01T04:04:17Z |3b| would be equally confused then 2018-09-01T04:04:19Z aeth: even if I violate ALGOL style and put the DO at the start of the line, that still won't happen 2018-09-01T04:04:40Z |3b|: if loop clauses are at the left, it is easier to scan the loop logic 2018-09-01T04:04:47Z |3b|: *clauses start at the left 2018-09-01T04:05:37Z aeth: What I don't like about the loop I wrote is that I parse slot twice to get the slot-name twice, once in the loop body and once in the destructuring-bind that parses the whole thing if it's a list 2018-09-01T04:05:51Z mfiano: If you use keyword symbol loop keywords (loop uses symbol-name anyway), with the proper SLIME variable set, your clauses will line up (it might even be the default - it's been a long time since I used SLIME). 2018-09-01T04:06:06Z meepdeew joined #lisp 2018-09-01T04:06:13Z mfiano: Which makes it so much more readable 2018-09-01T04:06:14Z aeth: mfiano: ime, the keyword ones aren't formatted correctly 2018-09-01T04:06:19Z |3b|: you could do part of the destructuring in the LOOP and only parse the keys in the inner part 2018-09-01T04:06:25Z aeth: mfiano: I rarely write loops so it could have changed 2018-09-01T04:07:05Z |3b|: might also canonicalize the slot first instead of constantly checking for listp 2018-09-01T04:07:44Z |3b|: for .slot in slots for slot = (if (atom slot) (list slot slot) slot) ... or whatever makes the rest work without testing 2018-09-01T04:08:22Z aeth: oh good point, that removes one of the two tests 2018-09-01T04:09:05Z |3b|: then for (binding slot-name . keys) = slot and only destructure keys 2018-09-01T04:09:45Z mfiano: It seems Sly behaves sanely even without keyword symbol loop keywords https://files.lispcoder.net/images/screenshots/img-20180901000917.png I really don't miss SLIME if it does that. 2018-09-01T04:09:46Z |3b|: (still seems a bit messy, but hard to clean up more without writing it out) 2018-09-01T04:10:45Z meepdeew quit (Ping timeout: 252 seconds) 2018-09-01T04:12:19Z aeth: mfiano: oh, hmm, keywords work correctly 2018-09-01T04:12:23Z aeth: I guess I'll use keywords 2018-09-01T04:12:56Z aeth: I guess I'll put the first with on its own line so it lines up 2018-09-01T04:13:23Z caltelt joined #lisp 2018-09-01T04:13:56Z aeth: |3b|: Your solution is clever but it doesn't actually simplify much because I still collect something differently if it's a list so I still need to do the test the second time 2018-09-01T04:15:49Z Fade: have any of you guys built abcl lately? 2018-09-01T04:15:59Z |3b| also wonders about the semantics of that macro with duplicated slot names 2018-09-01T04:16:52Z |3b|: (if they can't be meaningfully duplicated, why bother with the hash to avoid making extra gensyms, if they can be, does it actually work as intended?) 2018-09-01T04:17:36Z aeth: |3b|: The macro looks like this in actual use: https://gitlab.com/zombie-raptor/zombie-raptor/blob/d5023f05b40a20d3e0cfe96d0a6c4a85e39c4792/render/gl.lisp#L195-206 2018-09-01T04:17:39Z mfiano: Also wonder why you spend this much time refactoring macros into a completely different form from using mapcar. 2018-09-01T04:18:06Z mfiano: I actually had that file open in my browser for a couple days, and I was looking at the tabs side by side and something didn't add up 2018-09-01T04:18:13Z aeth: The only thing that I changed in my refactoring is adding :elt so that I could use destructuring-bind 2018-09-01T04:20:05Z |3b|: aeth: what is the corresponding macroexpansion for that use? 2018-09-01T04:20:34Z aeth: |3b|: The idea is that when accessing 2D arrays, the row is constant, but the column in the row can change, as can the array. 2018-09-01T04:21:58Z aeth: It can also be a 1D array (if neither :elt nor :row-of is given) so there can e.g. be a bit array whose index corresponds to another array row number. 2018-09-01T04:21:59Z |3b|: ah, maybe that DO at end confused me again 2018-09-01T04:22:28Z aeth: The row (or index if it's 1D) is called "ID" because in my engine it almost always represents an ID 2018-09-01T04:22:31Z meepdeew joined #lisp 2018-09-01T04:22:39Z aeth: oh sorry, it's called "index" isn't it 2018-09-01T04:23:03Z aeth: This is what happens when you have a large program gradually refactored over many years 2018-09-01T04:23:15Z aeth: My engine is about as consistent as a team of people writing it in one year 2018-09-01T04:23:55Z |3b| should probably go sleep instead of failing to read code correctly :) 2018-09-01T04:23:56Z mfiano: It doesn't help that you have changed game ideas 3-4 times since I heard you talking about your engine 2018-09-01T04:24:26Z aeth: mfiano: To make them smaller in scope each time. The only substantial change was going from first person to third person motion so I wouldn't need anywhere near as much physics completed 2018-09-01T04:25:09Z Fade: it looks like anything > jdk8 is a no go zone. 2018-09-01T04:27:56Z aeth: mfiano: do you think it would look better if I have (loop\n so that all of the keywords line up? 2018-09-01T04:28:41Z mfiano: No, just no. 2018-09-01T04:30:43Z aeth: Okay, so I just switched them to keywords and put the :do at the start of the line https://gitlab.com/zombie-raptor/zombie-raptor/blob/839c898ba33e35003244e630edb58b01d5fce3b6/util/array.lisp#L115-149 2018-09-01T04:31:17Z mfiano: Wow, your SLIME is very strange. 2018-09-01T04:32:07Z mfiano: I really sort of feel sorry for ewhoever has to read that. It's pretty hard to scan and get an idea at a glance...I have to try to understand it :/ 2018-09-01T04:33:01Z aeth: mfiano: This macro and the ECS macros are just inherently incredibly complicated. 2018-09-01T04:33:45Z aeth: mfiano: One of the reasons it's going to be a *long* time before I encourage anyone to use this is because of some of these macros 2018-09-01T04:33:47Z mfiano: No, I'm talking purely style and proper indentation. 2018-09-01T04:33:50Z aeth: ah 2018-09-01T04:34:44Z mfiano: Copying that into my Emacs: https://files.lispcoder.net/images/screenshots/img-20180901003426.png 2018-09-01T04:34:58Z mfiano: No modifications made 2018-09-01T04:35:42Z aeth: mfiano: well something broke in my .emacs then because the reason I used symbol loops instead of keyword loops is because symbol loops indented properly and now they're both... broken 2018-09-01T04:35:44Z mfiano: If I made modifications to the style, it would be arguably even easier to read 2018-09-01T04:36:37Z X-Scale quit (Ping timeout: 246 seconds) 2018-09-01T04:44:28Z ealfonso joined #lisp 2018-09-01T04:46:08Z _sfiguser: guys which compiler do you suggest for lisp i see that the most common ones are "abcl" "ccl" "clisp" "ecl" "sbcl" 2018-09-01T04:46:09Z ealfonso: I wonder if anyone is active right now... Is there a built-in function to extract a common prefix from a set of pathnames or strings? 2018-09-01T04:46:17Z _sfiguser: which one should i use ? 2018-09-01T04:46:21Z _sfiguser: i m new to lisp 2018-09-01T04:46:32Z ealfonso: _sfiguser I use sbcl and I'm happy with it 2018-09-01T04:46:38Z jgkamat: _sfiguser: sbcl is the most 'mainstream' one 2018-09-01T04:46:51Z jgkamat: I like clisp as well 2018-09-01T04:47:08Z _sfiguser: is mainstream but i heard is the one not anymore mantained ? 2018-09-01T04:47:42Z aeth: _sfiguser: The most are afaik actually SBCL and CCL in that order. CCL has better support for threading on macOS and has a faster compiler. ECL should be your next choice if neither works. It's designed to be embedded into C programs as a scripting language, hence the "E" in its name. ABCL is niche (the niche is the JVM). 2018-09-01T04:48:17Z aeth: _sfiguser: CLISP is maintained, but they haven't had a new release in a long time. i.e. its git (or SVN?) is still being updated, but the activity isn't enough for a new actual released version at the moment 2018-09-01T04:49:34Z aeth: I would personally avoid CLISP and ABCL unless you need what they offer because they have quirks that make them different. (I've run a lot of the same code in almost every Common Lisp, using Roswell.) Yeah, they conform to the standard, but lots of *your* assumptions might not. 2018-09-01T04:50:23Z aeth: Quite a few libraries don't work in ABCL, CLISP, or CMUCL. 2018-09-01T04:52:20Z aeth: (In case I was unclear, CCL compiles faster. SBCL's compiler produces faster code, in general.) 2018-09-01T04:54:46Z _sfiguser: okok thanks a lot aeth ! i will stick to sbcl then 2018-09-01T04:56:38Z beach: Good morning everyone! 2018-09-01T04:57:44Z beach: _sfiguser: You asked before why Lisp is not popular, despite being so good. That question assumes something that is just not true in the real world, namely that people are rational and that they choose the best things for what they need to do. 2018-09-01T04:58:07Z Lycurgus joined #lisp 2018-09-01T05:03:24Z stardiviner quit (Remote host closed the connection) 2018-09-01T05:04:52Z _sfiguser: also the racket lang seems uinteresting 2018-09-01T05:05:07Z beach: _sfiguser: There is a huge difference. 2018-09-01T05:05:36Z beach: _sfiguser: Common Lisp is a language with a standard, published by an independent standards orginaization. 2018-09-01T05:06:17Z _sfiguser: what about racket? 2018-09-01T05:06:20Z beach: _sfiguser: Racket is an implementation that has no independent specification. It can change over night and break all your software. Or it can be abandoned because the current maintainers get tired of it. 2018-09-01T05:07:03Z beach: _sfiguser: When I give talks to industry, I say that a project leader that chooses a language without an independent published standard should be fired. 2018-09-01T05:07:24Z beach: Because that project leader puts the product and sometimes the entire company in a very difficult situation. 2018-09-01T05:07:38Z FreeBirdLjj joined #lisp 2018-09-01T05:07:57Z nebunez joined #lisp 2018-09-01T05:08:18Z buffergn0me: Like everyone stuck on Python 2.7 right now 2018-09-01T05:08:29Z _sfiguser: ok beach but for exmple does python have a standard ? the one you talk about ? 2018-09-01T05:09:15Z beach: _sfiguser: Python does not have an independent standard. 2018-09-01T05:09:24Z buffergn0me: Have a client with a system on 2.7 right now, the "upgrade" path is to rewrite in node.js... 2018-09-01T05:10:14Z buffergn0me: In contrast two weeks ago I migrated another client's Common Lisp system to a new server two weeks ago. Has not been touched in almost a decade and still runs fine. 2018-09-01T05:11:02Z _sfiguser: buffergn0me, who uses lisp in industry and for what reason ? 2018-09-01T05:11:52Z buffergn0me: For pretty much anything? 2018-09-01T05:11:57Z beach: _sfiguser: People already answered that question for you. 2018-09-01T05:12:10Z buffergn0me: I started out in Lisp because of Mirai (3d graphics/animation system) 2018-09-01T05:12:11Z beach: Google, Grammarly, ... 2018-09-01T05:12:30Z aeth: _sfiguser: You just got a new reason. Stuff from 1994 will run fine today without any modifications, and stuff before Common Lisp from the 1970s will run with very minimal modifications, if any. 2018-09-01T05:12:32Z buffergn0me: The client I mentioned is a charter airline tour operator 2018-09-01T05:12:46Z buffergn0me: That runs their reservation system on Common Lisp 2018-09-01T05:14:24Z beach: Oh, and Igor (score editor) is written in Lisp as well. 2018-09-01T05:14:38Z _sfiguser: is common lisp performance comparable to C ? 2018-09-01T05:14:54Z beach: _sfiguser: Yes, it can be. Read the articles by Didier Verna. 2018-09-01T05:15:09Z _sfiguser: okok thans 2018-09-01T05:15:36Z beach: https://pdfs.semanticscholar.org/presentation/fb4b/bf38068e9044acc007c723e8a13cfb14ba48.pdf 2018-09-01T05:15:50Z aeth: _sfiguser: It's usually in the 3x to 5x slower range, e.g. (as SBCL) https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fast.html 2018-09-01T05:16:10Z beach: _sfiguser: Besides, as I often say in my talks, it is impossible to write a C++ program that is both fast and maintainable. 2018-09-01T05:16:10Z aeth: Very comparable to Java, except AOT instead of JIT. 2018-09-01T05:17:21Z jackdaniel: imho in moderate size applications and bigger most bottlenecks come from bad architecture / data structures / algorithms 2018-09-01T05:17:36Z buffergn0me: Technically every Common Lisp implementation with a compiler is a JIT 2018-09-01T05:17:56Z buffergn0me: There are just no CL implementations that do tracing or profile-guided optimizations 2018-09-01T05:18:05Z aeth: _sfiguser: For the most part, if it's slower it's because not as much attention is put into compilers compared to something like GCC or LLVM, which will do some amazing optimizations. (Except those optimiziations don't make the language *that* much faster!) 2018-09-01T05:18:19Z jackdaniel: buffergn0me: I'd say "may be a jit" not "is a jit" 2018-09-01T05:18:26Z aeth: The unavoidable overhead is the GC, but there are better GCs that could be used. 2018-09-01T05:18:42Z buffergn0me: jackdaniel: good point 2018-09-01T05:19:11Z jackdaniel: clisp does some jit compilation with gnu lightning afaik 2018-09-01T05:19:23Z jackdaniel: (unreleased version at least) 2018-09-01T05:19:28Z _sfiguser: thanks guys 2018-09-01T05:19:37Z beach: So heisig just told me that there is a paper that allocating an instance in CLOS is faster than allocating an instance in C++, for the simple reason that malloc()/free() is slower than most GC systems used by Common Lisp. 2018-09-01T05:19:37Z aeth: jackdaniel: Where Lisp really shines is where you need to do something messy but can hide it in a macro so it still is readable 2018-09-01T05:19:55Z beach: .. there is a paper stating that... 2018-09-01T05:20:35Z jackdaniel: aeth: where lisp looks really ugly is where you need to cut some bullshit abstraction hidden behind macros 2018-09-01T05:20:48Z jackdaniel: (and mixin spaghetti) 2018-09-01T05:20:57Z buffergn0me: jackdaniel: Does lightning do tracing? I thought it was just an assembler-as-a-library 2018-09-01T05:21:03Z aeth: jackdaniel: as long as it's not a code-walker it's not normally bad. Code walkers are evil, though. 2018-09-01T05:21:15Z aeth: Anything beyond symbol-macrolet shouldn't be done 2018-09-01T05:21:38Z jackdaniel: buffergn0me: I'd expect JIT on clisp part *using* gnu lightning; but I'd have to read into clisp to confirm that 2018-09-01T05:25:41Z Lycurgus quit (Quit: Exeunt) 2018-09-01T05:25:53Z jackdaniel: https://sourceforge.net/p/clisp/patches/25/ 2018-09-01T05:26:01Z jackdaniel: buffergn0me: ↑ 2018-09-01T05:27:01Z _sfiguser quit (Quit: Leaving) 2018-09-01T05:27:21Z aeth: buffergn0me: Do CL implementations have enough to JIT Foo when you have a Foo->CL compiler? e.g. JS->CL. JS basically relies on JIT. 2018-09-01T05:28:33Z aeth: (With all that volume maybe 1f-6% is useful.) 2018-09-01T05:30:21Z buffergn0me: jackdaniel: Yeah I heard about that. CLISP is using lightning to native code compile their bytecode. So in that sense every CL implementation with a compiler can be a JIT, and Lisp is the "original" JITed language. The problem is today people have started using the phrase JIT to refer to tracing- and/or profile-based runtime optimization. Which is a very different technique. 2018-09-01T05:31:34Z buffergn0me: aeth: Yeah, CL-JavaScript is definitely a JIT JS implementation. And it was faster than Seamonkey when it first came out. 2018-09-01T05:32:11Z buffergn0me: IDK if it's still faster now, but it certainly is a lot more memory efficient 2018-09-01T05:35:10Z it3ration joined #lisp 2018-09-01T05:36:11Z drmeister: Is anyone good with writing setf forms? I've got one that's not quite what I need and I'm a bit stuck with it. 2018-09-01T05:36:27Z drmeister: https://www.irccloud.com/pastebin/iqaiUEMA/ 2018-09-01T05:36:53Z aeth: buffergn0me: Probably not. I'm reminded of https://accidentallyquadratic.tumblr.com/post/142387131042/nodejs-left-pad 2018-09-01T05:37:03Z drmeister: I have alists that look like (list (cons "x" ) (cons "y" ) ... ) 2018-09-01T05:37:25Z drmeister: I need to go (setf ([] alist "key") value) 2018-09-01T05:37:51Z drmeister: If the value doesn't appear in alist - then I need (cons "key" value) to be pushed into the alist. 2018-09-01T05:38:16Z drmeister: Or does anyone know if such a macro exists somewhere? 2018-09-01T05:39:12Z drmeister: I'm kind of stuck with strings as keys because I'm translating a bunch of stupid Python to Common Lisp. 2018-09-01T05:40:21Z jackdaniel: drmeister: (let ((list ())) (setf (alexandria:assoc-value list :foo) 4) list) ;? 2018-09-01T05:40:24Z it3ration quit (Ping timeout: 252 seconds) 2018-09-01T05:42:03Z jackdaniel: assoc-value takes test predicate too 2018-09-01T05:42:48Z drmeister: Yeah - that's been suggested to me - but I'd like to bury the test in the macro. 2018-09-01T05:43:03Z drmeister: I have a hundred of these. 2018-09-01T05:43:22Z drmeister: It makes me miss x[y] = z 2018-09-01T05:44:04Z drmeister: I'll dig the code out of alexandria 2018-09-01T05:44:08Z jackdaniel: then take define-alist-get assoc from alexandria and tweak its define-setf-expander expansion to suit your needs 2018-09-01T05:51:24Z buffergn0me: drmeister: sounds like you need a property list instead of an alist 2018-09-01T05:52:34Z parjanya quit (Remote host closed the connection) 2018-09-01T05:54:25Z drmeister: buffergn0me: No - I'm kind of stuck with alists - it's the closest thing to Python's dictionaries that work with **keys. 2018-09-01T05:54:47Z drmeister: jackdaniel: Good suggestion - I did that. 2018-09-01T05:56:14Z dale quit (Quit: dale) 2018-09-01T05:56:21Z dim: drmeister: what about using an hash table there? 2018-09-01T05:57:22Z dim: I guess I don't understand what makes the **keys calling convention in Python something interesting for your CL design here 2018-09-01T05:58:23Z buffergn0me: I'm confused, property lists seem like a better fit for ** than alists 2018-09-01T05:58:36Z drmeister: Well, (1) we started with alists and now we are kind of stuck with them (2) we have a LOT of very small dictionaries - so alists aren't such a bad idea. 2018-09-01T05:58:59Z dim: very small dicts, alist and plist might be better than hash tables, yeah 2018-09-01T06:00:04Z dim: each time I'm using alist or plist directly I wish I had done some abstraction layer to use a gethash like API on top of them 2018-09-01T06:00:05Z drmeister: buffergn0me: Yeah - you are right about plists and **keys. There are a couple of other things I haven't mentioned. Namely someone else chose the alists and so we are kind of stuck with them. 2018-09-01T06:00:11Z dim: but I tend to be too lazy about it 2018-09-01T06:00:44Z phoe: drmeister: so, basicall, you have an alist (("a" . 1) ("b" . 2) ("c" . 3)) 2018-09-01T06:00:49Z jackdaniel: buffergn0me: arguably alists are better organized, each entry has both key and value and there is no mistake about which entry is what (separate lists) 2018-09-01T06:00:53Z drmeister: phoe: Yep 2018-09-01T06:01:01Z phoe: And you go (setf ([] alist "d") 4) 2018-09-01T06:01:12Z phoe: At which point you just push ("d" . 4) into the alist 2018-09-01T06:01:24Z jackdaniel: s/separate lists/separate conses/ 2018-09-01T06:01:38Z drmeister: Yeppers 2018-09-01T06:01:41Z dim: drmeister: how much work would you anticipate moving from alist to your own abstraction would be here? 2018-09-01T06:01:49Z phoe: Except if you go (setf ([] alist "d") 3) you want this to become a no-op, because the value 3 is already present in ("c" . 3) 2018-09-01T06:01:57Z drmeister: It would be quite a lot - and we don't have the time. 2018-09-01T06:01:59Z phoe: Do I understand it correctly? 2018-09-01T06:02:08Z drmeister: Phoe: Yes. 2018-09-01T06:02:19Z drmeister: I already have the setf code in place - stolen from Alexandria 2018-09-01T06:02:37Z buffergn0me: Haha, that is a fair point. I was just reading an article by Wirth about how no one ever uses abstract data types... 2018-09-01T06:02:58Z dim: drmeister: nobody ever has the time, when you look at it that way, the other angle being how much time are you going to spend because you did NOT move from alist to your own abstraction? how much deeper do you want to dig this hole? 2018-09-01T06:02:59Z drmeister: See, we translated jupyter widgets to Common Lisp. Then we translated nglview (a molecular viewer) and now we are translating bqplot (Bloomberg plotting library). 2018-09-01T06:03:11Z dim: sorry about not answering your immediate question here, that said 2018-09-01T06:03:15Z drmeister: In total - it's about 30,000 lines of code that uses these alists extensively. 2018-09-01T06:03:28Z drmeister: Anyone want to volunteer to switch to hash-tables? 2018-09-01T06:03:49Z buffergn0me: That is so 70s style 2018-09-01T06:03:54Z dim: as you said we're not sure hash-table is going to be better 2018-09-01T06:03:59Z phoe: drmeister: I think you can use alexandria's SETF ASSOC-VALUE 2018-09-01T06:04:08Z dim: lots of small one, the cost of building them might be just too big 2018-09-01T06:04:16Z aeth: I would suspect that hash-table would benchmark better in almost every case in SBCL 2018-09-01T06:04:22Z phoe: except you wrap the actual code in a check, (unless (rassoc-value alist key) ...) 2018-09-01T06:04:37Z drmeister: I don't think a hash-table would be better - they have a large constant cost. 2018-09-01T06:04:57Z phoe: this means to me, "do all of the mutation unless the key is already present in the alist somewhere" 2018-09-01T06:05:01Z dim: drmeister: my remark is more to the level of “hiding it in a macro”, I think you might consider making it obvious in a data structure / api 2018-09-01T06:05:25Z jackdaniel: phoe: what's the point of such juggling if he can simply hardcode test in setf expanded copied from alexandria? 2018-09-01T06:05:29Z phoe: AFAIR, for less than 20 entries in a dictionary, hashtables are going to be slower 2018-09-01T06:05:50Z drmeister: dim: It made the code very hard to read with all the (cdr (assoc key table :test 'string=)) 2018-09-01T06:05:53Z phoe: jackdaniel: that's what I mean - he can insert that test into the setf-expander from alexandris 2018-09-01T06:05:56Z phoe: alexandria 2018-09-01T06:06:00Z drmeister: I changed it to ([] table key) 2018-09-01T06:06:08Z buffergn0me: The last number I encountered from someone that benchmarked was 100 entries for list vs hash table break-even 2018-09-01T06:06:19Z dim: (defstruct param key value) (defstruct dict params) and some api on-top? 2018-09-01T06:06:31Z jackdaniel: I've seen a lot of "if, unless, conditionally", sounds much more compliacted. but maybe I'm not following careful enough 2018-09-01T06:06:43Z dim: drmeister: oh that's what your [] is? ugly but to the point ;-) 2018-09-01T06:06:50Z buffergn0me: That was about a decade ago, it's probably even worse for hash tables today because of larger cache sizes 2018-09-01T06:08:07Z phoe: Xach: did you already release the dist update? 2018-09-01T06:09:06Z dim: drmeister: do you know of https://github.com/gwkkwg/cl-containers ? 2018-09-01T06:11:57Z dim: I think you might find https://github.com/gwkkwg/cl-containers/blob/master/tests/test-containers.lisp#L142 relevant to your current situation 2018-09-01T06:14:06Z drmeister: dim: What should I draw from that? 2018-09-01T06:14:49Z dim: API hints to solve your setf push-or-replace situation, I guess, mostly 2018-09-01T06:15:35Z dim: your main immediate problem is providing an API that handles both push or replace a value for a given dictionnary key, right? 2018-09-01T06:15:49Z dim: (your dictionnary currently being an alist) 2018-09-01T06:15:59Z drmeister: Yes ([] dict "a") is ugly - it makes me almost wish for Python's dict["a"]. 2018-09-01T06:16:12Z drmeister: 1 point to house Slytherin for compactness. 2018-09-01T06:18:25Z dim: well anyway good luck, my day is done. You seem to always have interesting problems to solve drmeister, have fun! 2018-09-01T06:20:18Z drmeister: Good night - thanks for the feedback! 2018-09-01T06:35:03Z nebunez quit (Ping timeout: 244 seconds) 2018-09-01T06:36:20Z doubledup joined #lisp 2018-09-01T06:40:13Z vlatkoB joined #lisp 2018-09-01T06:59:55Z nika joined #lisp 2018-09-01T07:00:07Z caltelt quit (Ping timeout: 240 seconds) 2018-09-01T07:10:40Z meepdeew quit (Remote host closed the connection) 2018-09-01T07:25:34Z azimut quit (Ping timeout: 240 seconds) 2018-09-01T07:25:56Z azimut joined #lisp 2018-09-01T07:26:48Z lonjil joined #lisp 2018-09-01T07:27:01Z orivej joined #lisp 2018-09-01T07:28:06Z buffergn0me quit (Ping timeout: 250 seconds) 2018-09-01T07:30:28Z azimut quit (Ping timeout: 245 seconds) 2018-09-01T07:31:24Z lonjil quit (Ping timeout: 252 seconds) 2018-09-01T07:31:58Z anewuser quit (Ping timeout: 246 seconds) 2018-09-01T07:32:22Z lonjil joined #lisp 2018-09-01T07:32:58Z azimut joined #lisp 2018-09-01T07:35:46Z itruslove quit (Remote host closed the connection) 2018-09-01T07:36:10Z it3ration joined #lisp 2018-09-01T07:41:14Z it3ration quit (Ping timeout: 272 seconds) 2018-09-01T07:41:35Z pjb quit (Read error: Connection reset by peer) 2018-09-01T07:43:03Z dddddd joined #lisp 2018-09-01T07:47:39Z itruslove joined #lisp 2018-09-01T08:00:16Z asarch joined #lisp 2018-09-01T08:00:34Z krwq quit (Remote host closed the connection) 2018-09-01T08:02:08Z Copenhagen_Bram quit (Ping timeout: 245 seconds) 2018-09-01T08:02:53Z orivej quit (Ping timeout: 244 seconds) 2018-09-01T08:04:36Z aindilis quit (Ping timeout: 260 seconds) 2018-09-01T08:20:47Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-01T08:25:22Z rumbler31 joined #lisp 2018-09-01T08:30:53Z orivej joined #lisp 2018-09-01T08:37:52Z light2yellow joined #lisp 2018-09-01T08:51:28Z housel quit (Read error: Connection reset by peer) 2018-09-01T08:51:58Z housel joined #lisp 2018-09-01T08:53:10Z azimut quit (Ping timeout: 246 seconds) 2018-09-01T08:54:20Z _death: [] is a terrible name.. there is an association between trying to ape other languages and envy of them 2018-09-01T08:59:11Z asarch quit (Quit: Leaving) 2018-09-01T08:59:30Z doubledup quit (Quit: Leaving) 2018-09-01T09:00:13Z doubledup joined #lisp 2018-09-01T09:15:16Z random-nick joined #lisp 2018-09-01T09:17:04Z ismay joined #lisp 2018-09-01T09:18:16Z rumbler31 quit (Remote host closed the connection) 2018-09-01T09:19:06Z nowhere_man joined #lisp 2018-09-01T09:21:54Z josemanuel joined #lisp 2018-09-01T09:25:27Z SaganMan quit (Ping timeout: 240 seconds) 2018-09-01T09:35:17Z azimut joined #lisp 2018-09-01T09:36:20Z yoonkn joined #lisp 2018-09-01T09:37:03Z it3ration joined #lisp 2018-09-01T09:38:35Z SaganMan joined #lisp 2018-09-01T09:39:35Z yoonkn quit (Read error: Connection reset by peer) 2018-09-01T09:41:05Z yoonkn joined #lisp 2018-09-01T09:41:51Z it3ration quit (Ping timeout: 252 seconds) 2018-09-01T09:42:52Z nowhere_man quit (Ping timeout: 246 seconds) 2018-09-01T09:46:23Z lumm joined #lisp 2018-09-01T09:50:39Z azimut quit (Ping timeout: 252 seconds) 2018-09-01T09:50:45Z nopf joined #lisp 2018-09-01T09:52:30Z azimut joined #lisp 2018-09-01T09:55:53Z orivej quit (Ping timeout: 245 seconds) 2018-09-01T09:56:18Z yoonkn quit (Ping timeout: 245 seconds) 2018-09-01T10:03:16Z ismay quit (Remote host closed the connection) 2018-09-01T10:04:10Z Jachy quit (Remote host closed the connection) 2018-09-01T10:04:11Z Manny8888 quit (Remote host closed the connection) 2018-09-01T10:04:24Z no-defun-allowed quit (Read error: Connection reset by peer) 2018-09-01T10:05:20Z nowhere_man joined #lisp 2018-09-01T10:12:13Z yoonkn joined #lisp 2018-09-01T10:14:07Z quazimodo quit (Ping timeout: 244 seconds) 2018-09-01T10:16:04Z quazimodo joined #lisp 2018-09-01T10:17:27Z lavaflow joined #lisp 2018-09-01T10:19:56Z X-Scale joined #lisp 2018-09-01T10:21:47Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-01T10:26:17Z Manny8888 joined #lisp 2018-09-01T10:32:27Z Xach: phoe: yes - why do you ask? 2018-09-01T10:33:31Z phoe: Xach: nothing of big importance 2018-09-01T10:34:52Z Xach: this was not as smooth as i would like 2018-09-01T10:35:03Z Xach: stiil recovering from hardware failure to a degree :( 2018-09-01T10:35:26Z phoe: ouch 2018-09-01T10:41:47Z pierpal joined #lisp 2018-09-01T10:51:37Z makomo joined #lisp 2018-09-01T10:57:56Z nika quit (Quit: Leaving...) 2018-09-01T11:05:28Z lnostdal quit (Ping timeout: 245 seconds) 2018-09-01T11:14:43Z pjb joined #lisp 2018-09-01T11:14:47Z doubledup quit (Ping timeout: 240 seconds) 2018-09-01T11:17:19Z lnostdal joined #lisp 2018-09-01T11:19:04Z doubledup joined #lisp 2018-09-01T11:24:09Z lnostdal quit (Ping timeout: 252 seconds) 2018-09-01T11:32:08Z trittweiler quit (Ping timeout: 244 seconds) 2018-09-01T11:36:30Z lnostdal joined #lisp 2018-09-01T11:38:01Z it3ration joined #lisp 2018-09-01T11:39:33Z milanj quit (Quit: This computer has gone to sleep) 2018-09-01T11:40:00Z yoonkn quit (Ping timeout: 272 seconds) 2018-09-01T11:41:12Z lnostdal quit (Ping timeout: 252 seconds) 2018-09-01T11:41:44Z lnostdal joined #lisp 2018-09-01T11:42:58Z it3ration quit (Ping timeout: 245 seconds) 2018-09-01T11:47:09Z lonjil quit (Ping timeout: 252 seconds) 2018-09-01T11:49:27Z lnostdal quit (Ping timeout: 252 seconds) 2018-09-01T11:57:42Z hvxgr quit (Ping timeout: 252 seconds) 2018-09-01T12:00:56Z lnostdal joined #lisp 2018-09-01T12:02:40Z Inline quit (Quit: Leaving) 2018-09-01T12:03:24Z Inline joined #lisp 2018-09-01T12:03:55Z yoonkn joined #lisp 2018-09-01T12:04:36Z hvxgr joined #lisp 2018-09-01T12:05:17Z pjb: drmeister: you have 3 solutions: 1- wrap your (cdr (assoc key table :test 'string=)) in a functional abstraction. 2- intern those strings into some package (intern key "PYTHON-SYMBOL"). 3- internalize the strings themselves: (setf (gethash key *interned-strings*) key) with (defparmeter *interned-strings* (make-hash-table :test 'equal) or 'equalp for case insensitivity. 2018-09-01T12:05:44Z housel quit (Read error: Connection reset by peer) 2018-09-01T12:05:56Z pjb: then (cdr (assoc (intern key "PYTHON-SYMBOLS" table))) or (cdr (assoc (gethash key *interned-strings* table))) 2018-09-01T12:06:01Z pjb: (yes, apply 1- in any case). 2018-09-01T12:07:02Z pjb: drmeister: it's rather trivial to write either a macro or a reader macro so that dict["a"] can be interpreted as ([] dict "a"). 2018-09-01T12:07:44Z xificurC joined #lisp 2018-09-01T12:09:31Z trittweiler joined #lisp 2018-09-01T12:13:15Z Bike joined #lisp 2018-09-01T12:15:17Z lonjil joined #lisp 2018-09-01T12:17:15Z oni-on-ion: cool 2018-09-01T12:24:55Z Lycurgus joined #lisp 2018-09-01T12:28:58Z Arcaelyx joined #lisp 2018-09-01T12:40:28Z yoonkn quit (Remote host closed the connection) 2018-09-01T12:52:44Z nowhere_man quit (Ping timeout: 244 seconds) 2018-09-01T13:02:27Z Achylles joined #lisp 2018-09-01T13:09:08Z pfdietz quit (Ping timeout: 250 seconds) 2018-09-01T13:10:00Z pjb quit (Remote host closed the connection) 2018-09-01T13:11:30Z elfmacs joined #lisp 2018-09-01T13:21:56Z elfmacs quit (Ping timeout: 260 seconds) 2018-09-01T13:25:11Z lavaflow joined #lisp 2018-09-01T13:29:05Z jeosol_ quit (Quit: Page closed) 2018-09-01T13:30:22Z lavaflow quit (Ping timeout: 246 seconds) 2018-09-01T13:35:05Z shlemas joined #lisp 2018-09-01T13:36:46Z varjag joined #lisp 2018-09-01T13:38:58Z it3ration joined #lisp 2018-09-01T13:44:08Z it3ration quit (Ping timeout: 272 seconds) 2018-09-01T13:44:46Z easye: Anyone know of any open concolic testing CL code ? 2018-09-01T13:45:14Z makomo_ joined #lisp 2018-09-01T13:46:10Z mkolenda quit (Remote host closed the connection) 2018-09-01T13:46:14Z easye: err, the language tested doesn't have to be Common Lisp (actually I am interested in many others: JavaScript, EVM, etc.), but is there any concolic testing analysis expressed in CL? 2018-09-01T13:46:50Z mkolenda joined #lisp 2018-09-01T13:47:27Z makomo quit (Ping timeout: 240 seconds) 2018-09-01T13:52:33Z lnostdal quit (Ping timeout: 245 seconds) 2018-09-01T13:52:46Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-01T13:53:06Z rumbler31 joined #lisp 2018-09-01T13:57:33Z rumbler31 quit (Remote host closed the connection) 2018-09-01T14:00:41Z shlemas quit (Quit: shlemas) 2018-09-01T14:01:11Z drmeister: pjb: Thank you - but I've welcomed S-expressions into my heart. 2018-09-01T14:02:05Z kushal quit (Remote host closed the connection) 2018-09-01T14:02:43Z kushal joined #lisp 2018-09-01T14:05:31Z lnostdal joined #lisp 2018-09-01T14:13:43Z veinofsony is now known as veinof 2018-09-01T14:14:30Z Pixel_Outlaw joined #lisp 2018-09-01T14:14:59Z Roy_Fokker joined #lisp 2018-09-01T14:19:12Z edgar-rft quit (Remote host closed the connection) 2018-09-01T14:21:20Z cage_ joined #lisp 2018-09-01T14:23:53Z Lycurgus quit (Quit: Exeunt) 2018-09-01T14:27:17Z lavaflow joined #lisp 2018-09-01T14:28:03Z igemnace joined #lisp 2018-09-01T14:30:18Z pjb joined #lisp 2018-09-01T14:31:15Z phoe: drmeister: fun trivia, dict["a"] is an M-expression, which was the proposed syntax for Lisp back in the day 2018-09-01T14:33:45Z pjb: https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/index.html 2018-09-01T14:33:59Z pjb: and it reads as (dict "a"). 2018-09-01T14:39:51Z Achylles quit (Ping timeout: 252 seconds) 2018-09-01T14:43:24Z spm_ joined #lisp 2018-09-01T14:50:56Z ebrasca quit (Remote host closed the connection) 2018-09-01T14:59:45Z Achylles joined #lisp 2018-09-01T15:00:18Z acolarh quit (Ping timeout: 252 seconds) 2018-09-01T15:05:43Z acolarh joined #lisp 2018-09-01T15:07:50Z pierpal quit (Quit: Poof) 2018-09-01T15:08:11Z pierpal joined #lisp 2018-09-01T15:10:34Z astalla joined #lisp 2018-09-01T15:17:57Z asarch joined #lisp 2018-09-01T15:19:24Z light2yellow quit (Quit: gtg) 2018-09-01T15:21:45Z Achylles quit (Remote host closed the connection) 2018-09-01T15:34:27Z acolarh quit (Ping timeout: 240 seconds) 2018-09-01T15:38:37Z acolarh joined #lisp 2018-09-01T15:39:52Z it3ration joined #lisp 2018-09-01T15:41:08Z gendl: Hi, any idea why asdf would suddenly start ignoring asdf/output-translations:*output-translations* ? 2018-09-01T15:41:25Z gendl: asdf/output-translations:*output-translations* 2018-09-01T15:41:35Z gendl: (((#P"/Users/dcooper8/.cache/common-lisp/ccl-1.11-f96-macosx-x64/**/*.*" T) (T T) (T #P"/Users/dcooper8/.cache/common-lisp/ccl-1.11-f96-macosx-x64/**/*.*"))) 2018-09-01T15:41:47Z gendl: ^ that's my current value of *output-translations* 2018-09-01T15:41:48Z gendl: but: 2018-09-01T15:42:01Z gendl: (asdf:output-files 'asdf:monolithic-compile-bundle-op :pro) --> 2018-09-01T15:42:09Z gendl: (#P"/Users/dcooper8/genworks/gdl/frosting/pro/pro--all-systems.dx64fsl") 2018-09-01T15:42:39Z gendl: same thing with compiling systems etc -- the fasls are just going directly in with the sources 2018-09-01T15:43:17Z gendl: i'm not sure when this started happening, as far as I know I didn't touch my asdf version... have been running 3.3.1 for a while. 2018-09-01T15:44:27Z it3ration quit (Ping timeout: 240 seconds) 2018-09-01T15:46:48Z bradcomp joined #lisp 2018-09-01T15:51:25Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-01T15:56:02Z gingerale joined #lisp 2018-09-01T16:05:07Z Achylles joined #lisp 2018-09-01T16:17:15Z gendl: ... working on it... Just started a bare vanilla lisp with asdf, and the output-file is working correctly. So, apparently we're doing something to step on the output-translations at some point. Tracking it down... 2018-09-01T16:21:08Z rozenglass joined #lisp 2018-09-01T16:21:10Z madearl joined #lisp 2018-09-01T16:26:02Z gendl: Just cleared all old .fasl files, in ~/.cache/common-lisp, quicklisp/cache/, and the ones which were ending up next to source files, restarted, and now it seems back to normal. 2018-09-01T16:26:38Z gendl: apparently something was reading one or more stale .fasl files which was causing things to get wedged. 2018-09-01T16:27:37Z Copenhagen_Bram joined #lisp 2018-09-01T16:28:54Z pjb: ok. 2018-09-01T16:34:07Z azimut quit (Ping timeout: 246 seconds) 2018-09-01T16:41:19Z SenasOzys joined #lisp 2018-09-01T16:45:20Z Oladon joined #lisp 2018-09-01T16:47:24Z azimut joined #lisp 2018-09-01T16:51:22Z fortitude_ joined #lisp 2018-09-01T16:51:57Z azimut quit (Ping timeout: 252 seconds) 2018-09-01T16:55:09Z rocx joined #lisp 2018-09-01T17:13:32Z aijony joined #lisp 2018-09-01T17:16:47Z pjb quit (Read error: Connection reset by peer) 2018-09-01T17:17:53Z pjb joined #lisp 2018-09-01T17:20:46Z easye quit (*.net *.split) 2018-09-01T17:20:46Z Xof quit (*.net *.split) 2018-09-01T17:20:54Z easye joined #lisp 2018-09-01T17:23:22Z dueyfinster joined #lisp 2018-09-01T17:26:04Z madearl quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-01T17:27:12Z kristof joined #lisp 2018-09-01T17:32:23Z jinkies joined #lisp 2018-09-01T17:36:09Z jinkies quit (Read error: Connection reset by peer) 2018-09-01T17:38:58Z bradcomp joined #lisp 2018-09-01T17:39:59Z buffergn0me joined #lisp 2018-09-01T17:40:53Z it3ration joined #lisp 2018-09-01T17:42:33Z lavaflow quit (Ping timeout: 245 seconds) 2018-09-01T17:43:25Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-01T17:45:41Z it3ration quit (Ping timeout: 244 seconds) 2018-09-01T17:48:11Z lavaflow joined #lisp 2018-09-01T17:48:52Z thodg joined #lisp 2018-09-01T17:56:31Z luis quit (*.net *.split) 2018-09-01T17:56:31Z Oddity quit (*.net *.split) 2018-09-01T17:56:31Z ecraven quit (*.net *.split) 2018-09-01T17:56:31Z johs quit (*.net *.split) 2018-09-01T17:56:31Z umpc quit (*.net *.split) 2018-09-01T17:56:31Z ft quit (*.net *.split) 2018-09-01T17:56:32Z exit70 quit (*.net *.split) 2018-09-01T17:56:32Z emma quit (*.net *.split) 2018-09-01T17:56:32Z mjl quit (*.net *.split) 2018-09-01T17:56:32Z billstclair quit (*.net *.split) 2018-09-01T17:59:10Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-01T17:59:13Z luis joined #lisp 2018-09-01T17:59:22Z SenasOzys quit (Ping timeout: 272 seconds) 2018-09-01T18:01:52Z Lycurgus joined #lisp 2018-09-01T18:01:56Z ecraven joined #lisp 2018-09-01T18:02:36Z umpc joined #lisp 2018-09-01T18:03:12Z gendl: I finally found the issue. aserve.asd from https://github.com/franzinc/aserve is disabling output-translations. 2018-09-01T18:03:37Z ebrasca joined #lisp 2018-09-01T18:06:01Z wws joined #lisp 2018-09-01T18:06:45Z Oddity joined #lisp 2018-09-01T18:07:57Z ebrasca quit (Remote host closed the connection) 2018-09-01T18:09:00Z ebrasca joined #lisp 2018-09-01T18:10:40Z orivej joined #lisp 2018-09-01T18:12:48Z rpg joined #lisp 2018-09-01T18:12:55Z pjb: gendl: that's how you know it's a low quality library. 2018-09-01T18:13:12Z pjb: How much time did that make you lose? 2018-09-01T18:13:20Z thodg quit (Remote host closed the connection) 2018-09-01T18:13:22Z azimut joined #lisp 2018-09-01T18:13:23Z gendl: pjb: way more than i'd like to admit. 2018-09-01T18:13:52Z gendl: tbf the aserve.asd is not used by Franz themselves - it was just contributed by somebody. 2018-09-01T18:15:09Z gendl: I assume Franz includes it in their distribution as a courtesy. 2018-09-01T18:15:59Z gendl: but yeah, doing that sort of thing borders on malicious. 2018-09-01T18:16:33Z gendl: although I don't assign any malicious intent to anyone in this case, the effect it has can be felt as malicious. 2018-09-01T18:17:11Z gendl: the library itself is anything but low-quality, when used with Allegro (or now, zacl). 2018-09-01T18:17:40Z Achylles quit (Ping timeout: 252 seconds) 2018-09-01T18:17:56Z gendl: I'm going to lodge a pull request to delete that (asdf:disable-output-translations) - I don't see where it serves any possible useful purpose. Maybe 20 years ago it did. 2018-09-01T18:18:50Z gendl: there are a few other minor tweaks needed to make current aserve work with zacl on SBCL and CCL - someone (and it might end up being me as well) needs to lodge a pull request for those as well. 2018-09-01T18:19:13Z gendl: otherwise a very slightly forked version of aserve will have to be carried by Quicklisp. 2018-09-01T18:19:16Z fe[nl]ix: I remember a complaint buy sombody at Franz a few years ago, that output translations broke their special build system which relied heavily on symlinks 2018-09-01T18:19:29Z fe[nl]ix: so I'm pretty sure they use ASDF internally to some extent 2018-09-01T18:20:48Z gendl: Hmm well the original contributor of that aserve.asd file was James Anderson. 2018-09-01T18:21:14Z gendl: If anyone knows if/where he's still around, I can ask him his original intention there (if he remembers from 20+ years ago). 2018-09-01T18:22:06Z joni joined #lisp 2018-09-01T18:22:18Z fe[nl]ix: hahaha 2018-09-01T18:23:11Z fe[nl]ix: James likes to use logical output translations and ASDF doesn't work with those 2018-09-01T18:23:34Z gendl: I can understand people wanting to disable or tweak output-translations for certain build environments, but 1) it sure doesn't seem like that should ever be done in an actual .asd file(!), and 2) there should be some temporary way to do it, which "bounces back" when the special build environment comes out of scope (I'm not sure the canonical way to tweak or disable output-translations "temporarily"). 2018-09-01T18:24:27Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-01T18:24:58Z rpg joined #lisp 2018-09-01T18:35:43Z runejuhl quit (Quit: WeeChat 2.1) 2018-09-01T18:40:05Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-01T18:41:00Z v0|d joined #lisp 2018-09-01T18:44:11Z SenasOzys joined #lisp 2018-09-01T18:47:58Z azimut quit (Ping timeout: 245 seconds) 2018-09-01T18:48:50Z gravicappa joined #lisp 2018-09-01T18:51:33Z cage_ quit (Quit: Leaving) 2018-09-01T18:54:22Z azimut joined #lisp 2018-09-01T18:57:37Z joni quit (Ping timeout: 246 seconds) 2018-09-01T19:05:30Z groovy2shoes quit (Ping timeout: 252 seconds) 2018-09-01T19:10:27Z Fare joined #lisp 2018-09-01T19:17:22Z pierpa joined #lisp 2018-09-01T19:18:09Z Manny8888 quit (Remote host closed the connection) 2018-09-01T19:20:50Z Elon_Satoshi joined #lisp 2018-09-01T19:22:33Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-01T19:23:07Z igemnace quit (Quit: WeeChat 2.2) 2018-09-01T19:25:50Z Achylles joined #lisp 2018-09-01T19:26:54Z ft joined #lisp 2018-09-01T19:28:53Z Achylles quit (Remote host closed the connection) 2018-09-01T19:29:20Z Elon_Satoshi is now known as Copenhagen_Bram 2018-09-01T19:31:37Z aleamb joined #lisp 2018-09-01T19:31:46Z dale joined #lisp 2018-09-01T19:33:35Z aleamb nas 2018-09-01T19:34:50Z doubledup quit (Remote host closed the connection) 2018-09-01T19:34:58Z Manny8888 joined #lisp 2018-09-01T19:38:53Z dreamcompiler joined #lisp 2018-09-01T19:40:33Z doubledup joined #lisp 2018-09-01T19:41:33Z vlatkoB quit (Remote host closed the connection) 2018-09-01T19:41:39Z it3ration joined #lisp 2018-09-01T19:42:34Z aleamb quit (Ping timeout: 240 seconds) 2018-09-01T19:42:39Z aleamb joined #lisp 2018-09-01T19:46:56Z it3ration quit (Ping timeout: 260 seconds) 2018-09-01T20:08:08Z rumbler31 joined #lisp 2018-09-01T20:12:59Z joni joined #lisp 2018-09-01T20:14:28Z rumbler31 quit (Remote host closed the connection) 2018-09-01T20:21:07Z kristof quit (Ping timeout: 240 seconds) 2018-09-01T20:42:53Z Fare quit (Ping timeout: 250 seconds) 2018-09-01T20:50:40Z gravicappa quit (Ping timeout: 246 seconds) 2018-09-01T20:58:16Z Fare joined #lisp 2018-09-01T21:03:28Z Jesin quit (Quit: Leaving) 2018-09-01T21:08:03Z Jesin joined #lisp 2018-09-01T21:19:20Z bradcomp joined #lisp 2018-09-01T21:23:34Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-01T21:26:47Z orivej quit (Ping timeout: 240 seconds) 2018-09-01T21:35:51Z makomo_ quit (Quit: WeeChat 2.2) 2018-09-01T21:36:11Z makomo joined #lisp 2018-09-01T21:39:59Z josemanuel quit (Quit: leaving) 2018-09-01T21:42:38Z it3ration joined #lisp 2018-09-01T21:47:33Z it3ration quit (Ping timeout: 245 seconds) 2018-09-01T21:50:28Z shlemas joined #lisp 2018-09-01T21:57:15Z dreamcompiler quit (Quit: dreamcompiler) 2018-09-01T22:00:39Z kushal quit (Remote host closed the connection) 2018-09-01T22:00:58Z kushal joined #lisp 2018-09-01T22:09:59Z joni quit (Ping timeout: 250 seconds) 2018-09-01T22:11:46Z random-nick quit (Ping timeout: 244 seconds) 2018-09-01T22:13:06Z peccu quit (Ping timeout: 264 seconds) 2018-09-01T22:14:35Z makomo: hello. a question regarding the style of "read-modify-write" macros. c/p incoming. 2018-09-01T22:14:40Z makomo: http://clhs.lisp.se/Body/05_ac.htm lists a couple of "read-modify-write" macros, describes their general form as "(operator preceding-form* place following-form*)" and defines the order of evaluation of their subforms. what i'm interested in particular is points (3) and (4) -- do you think (3) (4) is a better order than (4) (3)? 2018-09-01T22:14:42Z makomo: personally i think the order (3) (4) is weird, because one would expect the value to be read (point (4)) right after the place's subforms are evaluated (before (3)), and not at the end of evaluating "following-forms" (after (3)). 2018-09-01T22:14:49Z makomo: even define-modify-macro defines macros that work this way because their general form is (disregarding the multiple evaluation problem of the place's subforms) "(setf ,reference (function ,reference ,arg1 ,arg2 ...))". the order here is (2) (4) (3). 2018-09-01T22:14:52Z makomo: the page above doesn't even list any macros that have "following-forms" and that use (3) (4) and i don't know of any examples off the top of my head. are there even any? 2018-09-01T22:14:54Z makomo: this question of style might vary from macro to macro, but as a concrete example, what order would you expect from the macro "_f" given by https://i.imgur.com/ucUEOP0.png? disregard the actual implementation and try to only look at the call to the macro. here are the two implementations but with the modification that "op" isn't a symbol but a form that is evaluated to get a function: 2018-09-01T22:14:56Z makomo: https://plaster.tymoon.eu/view/903#903. 2018-09-01T22:16:43Z makomo: the macro "_f" is from On Lisp, p. 171 2018-09-01T22:23:02Z bradcomp joined #lisp 2018-09-01T22:24:06Z drmeister: How would I get a slot-definition given the slot name and the class of an object? 2018-09-01T22:24:19Z drmeister: Do I need to loop through the clos:class-slots ? 2018-09-01T22:24:48Z Bike: the find thing you were already doing 2018-09-01T22:25:00Z Bike: find with :key #'slot-definition-name 2018-09-01T22:25:52Z drmeister: Ah - ok. 2018-09-01T22:27:00Z v0|d: drmeister: mind the diff btw slot-def and effective-slot-def. 2018-09-01T22:27:24Z drmeister: What is the difference? 2018-09-01T22:27:34Z drmeister: My copy of AMOP is a couple of miles away. 2018-09-01T22:28:14Z v0|d: Basically, default values are copied into effective one while subclassing. 2018-09-01T22:28:17Z Bike: effective slot definitions incorporate information from superclasses 2018-09-01T22:28:29Z Bike: class-slots return them, and they're what you usually care about 2018-09-01T22:29:19Z doubledup quit (Remote host closed the connection) 2018-09-01T22:29:29Z bradcomp quit (Ping timeout: 250 seconds) 2018-09-01T22:44:39Z dale quit (Quit: dale) 2018-09-01T22:48:56Z drmeister: Thank you 2018-09-01T22:53:13Z nowhere_man joined #lisp 2018-09-01T22:55:44Z stardiviner joined #lisp 2018-09-01T22:55:46Z varjag quit (Ping timeout: 272 seconds) 2018-09-01T23:07:04Z astalla quit (Ping timeout: 240 seconds) 2018-09-01T23:07:36Z lemonpepper24 quit (Ping timeout: 252 seconds) 2018-09-01T23:13:14Z shlemas quit (Quit: shlemas) 2018-09-01T23:29:32Z pjb: makomo: I don't understand it. (let ((v (vector 0 0 0 0 0 0)) (i 0)) (incf (aref v (incf i)) (incf i)) v) #| --> #(0 2 0 0 0 0) |# (in all implementations). 2018-09-01T23:29:46Z pjb: makomo: that shows that (incf i) are evaluted strictly from left to right. 2018-09-01T23:30:00Z pjb: (inside the outer incf form). 2018-09-01T23:31:06Z gector quit (Read error: Connection reset by peer) 2018-09-01T23:31:52Z gector joined #lisp 2018-09-01T23:31:55Z Oladon quit (Quit: Leaving.) 2018-09-01T23:32:55Z Oladon joined #lisp 2018-09-01T23:33:23Z makomo: pjb: the analogy in your example would be "when is the place given by (aref v (incf i)) read? 2018-09-01T23:33:53Z makomo: is it right after all of the subforms of AREF are evaluated, or only when all of the subforms of the outer INCF have been evaluated? 2018-09-01T23:34:17Z makomo: you have nothing in your example that would affect the AREF place though, so it's not a very good example 2018-09-01T23:34:28Z makomo: take a look at my example that i linked 2018-09-01T23:35:02Z pjb: How would you have anything affecting the operator of the place, when the purpose of define-modify-macro (and other setf-expanders), is to make sure that the subforms are evaluated once for all? 2018-09-01T23:35:16Z pjb: Any evaluation occuring on the right just cannot affect them. 2018-09-01T23:35:27Z pjb: Only the read itself. 2018-09-01T23:36:03Z pjb: (let ((v (vector 0 0 0 0 0 0)) (i 0)) (incf (aref v (incf i)) (progn (setf (aref v 1) 42) (incf i))) v) #| --> #(0 44 0 0 0 0) |# 2018-09-01T23:36:14Z pjb: So this is what is specified by 5.1.3. 2018-09-01T23:36:46Z pjb: The preceding-forms are actually the subforms of the place expression. 2018-09-01T23:37:28Z buffergn0me quit (Ping timeout: 250 seconds) 2018-09-01T23:37:32Z makomo: pjb: from what i can see in 5.1.3 that's not correct. preceding-forms are handled in (1). the subforms of the place are handled in (2) 2018-09-01T23:37:44Z makomo: what i'm talking about is the ordering of (3) and (4) 2018-09-01T23:37:59Z makomo: i get that incf & co. work however they work, but i'm wondering about defining your own place-based macros 2018-09-01T23:38:11Z pjb: makomo: I don't know if (4) (3) would be better than (3) (4), but the later order, as specified, seems more logical to me. 2018-09-01T23:38:52Z makomo: pjb: none of the macros listed in the figure ever use (3), because they don't have any following-forms 2018-09-01T23:39:07Z makomo: and i don't know of any from the CL that do 2018-09-01T23:39:09Z pjb: Ok, they evaluate the subforms of the place in (2). I don't know what the preceding-forms in (1) are. 2018-09-01T23:39:16Z pjb: or incf, it's the increment. 2018-09-01T23:39:25Z pjb: (incf place following-form) 2018-09-01T23:39:29Z pjb: where's the preceding-form? 2018-09-01T23:39:40Z makomo: it doesn't exist, that's why there's a "*" on the syntax 2018-09-01T23:39:45Z makomo: but take PUSH for example 2018-09-01T23:39:48Z makomo: (push obj place) 2018-09-01T23:39:52Z makomo: obj is a preceding-form 2018-09-01T23:40:03Z Fare quit (Ping timeout: 245 seconds) 2018-09-01T23:40:04Z pjb: (push preceding-form place) ; ok. 2018-09-01T23:40:18Z makomo: but no place-based macro has a following-form, so i don't have any examples (3) (4) vs. (4) (3) 2018-09-01T23:40:27Z makomo: place-based macro within the CL spec, that is 2018-09-01T23:40:36Z makomo: however, the macro _f i gave does have following-forms 2018-09-01T23:40:49Z makomo: and now i'm wondering whether (3) (4) or (4) (3) is better style 2018-09-01T23:40:54Z pjb: incf decf remf have following forms. 2018-09-01T23:41:05Z makomo: oh wait, you're right 2018-09-01T23:41:12Z pjb: with (3) (4) we get: (let ((v (vector 0 0 0 0 0 0)) (i 0)) (incf (aref v (incf i)) (progn (setf (aref v 1) 42) (incf i))) v) #| --> #(0 44 0 0 0 0) |# 2018-09-01T23:41:23Z pjb: with (4) (3) we'd have: (let ((v (vector 0 0 0 0 0 0)) (i 0)) (incf (aref v (incf i)) (progn (setf (aref v 1) 42) (incf i))) v) #| --> #(0 2 0 0 0 0) |# 2018-09-01T23:41:36Z makomo: i got stuck thinking that incf and decf increment/decrement by 1, bleh... 2018-09-01T23:41:44Z pjb: so the setf would be inoperative. The first option gives us more semantic alternatives. 2018-09-01T23:42:58Z pjb: Also, 5.1.3 specifies two separate phases: evaluation of the forms an subforms. Then read-compute-storee. Both phases can be performed thus easily by different parts: a macro for the eval, a function for the update. 2018-09-01T23:43:15Z pjb: It would be harder to implement with (4) (3). 2018-09-01T23:43:31Z it3ration joined #lisp 2018-09-01T23:43:40Z makomo: i also prefer to use "compute" instead of "modify" :-) 2018-09-01T23:43:42Z pjb: Now, who will write a modify macro where there are both preceding-forms and following-forms? 2018-09-01T23:43:46Z makomo: hm, i guess that makes sense 2018-09-01T23:43:53Z makomo: pjb: take a look at my link :-) 2018-09-01T23:44:09Z makomo: https://plaster.tymoon.eu/view/903#903 2018-09-01T23:44:11Z makomo: this one 2018-09-01T23:46:06Z makomo: idk, in this case i think i would prefer (4) (3), because _f almost looks like a normal function call, except that is modifies its first argument (which is given as a place) 2018-09-01T23:46:18Z makomo: it* 2018-09-01T23:46:19Z pjb: Yes. Nice example. Indeed, if you want to be consistent with 5.1.3, you will have to use _f34. 2018-09-01T23:46:30Z makomo: right, but i think _f43 is more intuitive. 2018-09-01T23:46:53Z makomo: so i wanted to hear what other people think and what they would expect 2018-09-01T23:47:08Z pjb: Well, there's always the left-to-right order of evaluation. At least, _f34 respects that. 2018-09-01T23:48:42Z makomo: hm what do you mean? don't they both respect the left-to-right order? (i'm not treating reading the place as an evaluation btw. i'm only taking into account the subforms of the macro and the place) 2018-09-01T23:48:45Z it3ration quit (Ping timeout: 252 seconds) 2018-09-01T23:48:46Z pjb: Sorry, I've got a harder time understanding what the values of (car yo) will be in the various subexpressions of _f43. 2018-09-01T23:50:03Z pjb: I see what you mean. Yes, perhaps it's easier in _f43. 2018-09-01T23:50:52Z makomo: i agree that both examples are pretty horrible :-D, but f43 might be a little easier to think about 2018-09-01T23:52:02Z stacksmith quit (Ping timeout: 276 seconds) 2018-09-01T23:52:26Z pjb: Are you sure such a macro would be useful? Instead, you could write a macro to generate a bunch of define-modify-macro forms for all the functions you need? 2018-09-01T23:53:09Z pjb: Will you have things like: (_f43 (case (random 3) (0 (function sin)) (1 (function cos)) (3 (function atan))) (car yo)) ? 2018-09-01T23:53:33Z makomo: hm well, i'm not sure yet, but wouldn't that be like defining lots of little useless functions instead of just using LAMBDA? 2018-09-01T23:54:07Z makomo: i.e. _f allows you to use a function "on-the-spot", without having to define a one-off read-compute-update macro for it 2018-09-01T23:54:29Z pjb: The question is whether the functions will always be known at compilation time, or whether they will be decided at run-time. In the former case, I don't think a macro like _f43 or _f34 is justified. 2018-09-01T23:54:57Z makomo: hm why not? 2018-09-01T23:55:15Z pjb: perhaps yes. Choose a good name for it! 2018-09-01T23:55:23Z makomo: btw, from what i can see, (4) (3) is how it's implemented in On Lisp https://i.imgur.com/LXmuDG8.png 2018-09-01T23:55:43Z makomo: assuming "OP" has left-to-right evaluation semantics of course 2018-09-01T23:55:55Z makomo: otherwise you're screwed :D 2018-09-01T23:56:03Z pjb: Yes. :-) 2018-09-01T23:56:05Z makomo: (Graham's _f uses a symbol instead of a function) 2018-09-01T23:56:06Z pjb: (no both remarks). 2018-09-01T23:56:55Z pjb: So for consistency you could still want to use _f34. Just so (incf …) and (_f34 '+ …) give the same results. 2018-09-01T23:57:09Z pjb: s/no/to/ 2018-09-01T23:59:10Z makomo: i guess that's a good point. i'm not sure whether that or "it almost looks like a function call and i expect left-to-right evaluation" is more compelling 2018-09-02T00:00:01Z kozy quit (Remote host closed the connection) 2018-09-02T00:00:32Z makomo: an unrelated but interesting thing is that, theoretically, getting a place's value could yield different results depending on how you get the value: (1) by treating the place as a form or (2) by using code generated by get-setf-expansion 2018-09-02T00:00:51Z kozy joined #lisp 2018-09-02T00:01:15Z makomo: because (2) might arrange a different order of evaluation that what you would get from (1) by relying on normal left-to-right rules 2018-09-02T00:01:45Z makomo: are there any places which you *can't* treat as forms even? 2018-09-02T00:02:03Z malpas joined #lisp 2018-09-02T00:02:13Z makomo: and if not, are there any for which (1) and (2) don't produce the same results? 2018-09-02T00:02:34Z makomo: s/that/than/ 2018-09-02T00:03:13Z pjb: You mean things that you can put as first argument of setf, but couldn't be used to get an object? Kind of write-only forms? 2018-09-02T00:03:27Z makomo: yes, i suppose so 2018-09-02T00:03:33Z pjb: I guess you can do it easily with (defun (setf foo) (new-value where) …) without a defun foo. 2018-09-02T00:03:57Z makomo: yeah, true, but i was aiming for the standardized ones 2018-09-02T00:04:05Z pjb: IIRC, I've done that a couple of times, for write-only slots of some CLOS instances. 2018-09-02T00:04:09Z pjb: Not very often. 2018-09-02T00:04:23Z aleamb quit (Ping timeout: 250 seconds) 2018-09-02T00:04:24Z pjb: AFAICR, not for the standardized ones. 2018-09-02T00:05:00Z makomo: mhm 2018-09-02T00:05:39Z lumm quit (Quit: lumm) 2018-09-02T00:07:28Z pjb: There's very few write-only stuff in CL. IIRC, there must be one or two, but not with accessors. 2018-09-02T00:07:52Z pjb: There's the character syntax, that cannot be read IIRC, only copied. 2018-09-02T00:13:10Z Fare joined #lisp 2018-09-02T00:14:56Z groovy2shoes joined #lisp 2018-09-02T00:18:01Z malpas quit (Quit: Leaving) 2018-09-02T00:20:32Z stacksmith joined #lisp 2018-09-02T00:27:45Z siraben joined #lisp 2018-09-02T00:28:27Z Fare quit (Ping timeout: 240 seconds) 2018-09-02T00:30:54Z Fare joined #lisp 2018-09-02T00:42:26Z dented42 joined #lisp 2018-09-02T00:47:52Z aeth: does loop support a loop in a loop? 2018-09-02T00:49:18Z aeth: or should a nested loop/mapcar/etc. be used inside of a loop? 2018-09-02T00:53:55Z makomo: the latter: (loop ... :do (loop ...)) 2018-09-02T00:54:04Z aeth: I have an incredibly complicated loop (yes, more than the one from yesterday) because it collects twice, appends twice, and also generates an integer value that's used. https://gitlab.com/zombie-raptor/zombie-raptor/blob/master/entity/entity.lisp#L164-225 2018-09-02T00:55:06Z aeth: This loop is better in one big loop than in five different ones 2018-09-02T00:55:29Z aeth: It still has a nested mapcar, though. 2018-09-02T00:55:56Z pjb: (loop for i in (loop repeat 4 collect 42) for j from 0 collect (loop for k below j collect (list i k))) #| --> (nil ((42 0)) ((42 0) (42 1)) ((42 0) (42 1) (42 2))) |# 2018-09-02T00:56:47Z pjb: aeth: a function must do a single thing. Unless you're looping over a multidimensional array, there should be as single loop per function. 2018-09-02T00:57:00Z pjb: makomo: ^ too. 2018-09-02T00:57:18Z pjb: /makomo: ^ too./d 2018-09-02T00:57:20Z aeth: Oh I did find a way to fix my emacs's indentation and clean up yesterday's loop a bit. https://gitlab.com/zombie-raptor/zombie-raptor/blob/b10b0ce00d4c27ec20860991907baae11e188040/util/array.lisp#L113-151 2018-09-02T00:57:53Z pjb: aeth: in lisp there are no statements. Therefore you can combine expressions at will! 2018-09-02T00:58:07Z aeth: pjb: it is one loop, looping over one list 2018-09-02T00:58:19Z aeth: It just makes 5 things from that list and places them in various parts of a macro 2018-09-02T00:58:31Z makomo: pjb: true :-) 2018-09-02T00:58:42Z Fare quit (Ping timeout: 252 seconds) 2018-09-02T00:59:01Z pjb: Notice that if you change it into 5 different loops, it still remains O(n). 2018-09-02T00:59:24Z pjb: In case you'd be worried by the readability. 2018-09-02T00:59:34Z aeth: pjb: yes, but the five different loops (only two were actually LOOPs) were harder to follow because there were a bunch of things I combined when I combined them 2018-09-02T00:59:44Z pjb: sure. 2018-09-02T01:00:23Z aeth: e.g. now I collect a gensym that's generated each iteration into a list of gensyms, instead of generating that list of gensyms and using it both in the loops and in the macro, which then requires MAPCARing over two lists, which is more complicated than over one 2018-09-02T01:00:25Z pjb: You can write directly :for (table . accesors) :in tables-and-accessors. 2018-09-02T01:00:43Z aeth: it works with :in? ok 2018-09-02T01:01:02Z aeth: And, yes, I use ? here instead of -p because it's a query mini-language (as the name suggests) 2018-09-02T01:01:17Z aeth: it queries a big, complicated data structure and symbol-macrolets away the implementation details to the variables you provide 2018-09-02T01:01:20Z AeroNotix: prefer ? personally 2018-09-02T01:01:29Z pjb: aeth: try to split it out in 5 loops. I'm sure you'll like the result. 2018-09-02T01:02:02Z aeth: pjb: I had it in 5 separate loops (well two were LOOPs and two were MAPCAR and one was REDUCE) and I couldn't read it 2018-09-02T01:02:52Z aeth: I could possibly spin out the boolean-set number generation into its own function because it isn't heavily tied to the rest. 2018-09-02T01:02:54Z pjb: (,changed?-array (changed? ,ecs)) is probably a bug: you're not using the aprameter. 2018-09-02T01:03:50Z aeth: pjb: I stored it in a slot in ECS accessed via changed? 2018-09-02T01:03:56Z aeth: I probably could call it changed-bits or something 2018-09-02T01:03:59Z aeth: too much changed? 2018-09-02T01:04:19Z aeth: then I can rename %changed? to changed? without being too confusing 2018-09-02T01:04:34Z aeth: (I made it %changed? to make it clear that it shouldn't be used directly anywhere) 2018-09-02T01:05:13Z aeth: Essentially this is a dirty bit for the renderer, but I don't like calling it dirty 2018-09-02T01:06:05Z aeth: Any mutation that changes the visuals of the engine must make changed? T and if you need to access the value of changed (but not set it!) you use LET-CHANGED? to get the result of `(= 1 ,%changed?) 2018-09-02T01:09:10Z aeth: pjb: okay, I fixed the accessor name and simplified the destructuring. https://gitlab.com/zombie-raptor/zombie-raptor/blob/a6b92a4ed50ad49cf709604bd15def274a3b97f5/entity/entity.lisp#L166-224 2018-09-02T01:11:43Z elfmacs joined #lisp 2018-09-02T01:14:37Z pjb: aeth: whata bout: https://gitlab.com/snippets/1750355 2018-09-02T01:14:45Z aeth: 404 2018-09-02T01:14:50Z aeth: I think you made it private 2018-09-02T01:15:16Z pjb: How do I make it public? 2018-09-02T01:15:46Z aeth: it's an option when you edit it 2018-09-02T01:16:13Z pjb: Try again. 2018-09-02T01:16:42Z aeth: pjb: that's very similar to what I had before 2018-09-02T01:16:47Z pjb: of course. 2018-09-02T01:18:04Z aeth: I think the big loop is more readable if I can replace the append, with the possible exception of the boolean-set part, which I could just spin off into a function and put at the top of the loop in another :with 2018-09-02T01:18:16Z aeth: s/replace the append/replace the complicated append/ 2018-09-02T01:18:39Z pjb: But it may (reload it I missed the bindings function) be easier to read, since the naming of the important data is clearer in the let* form, and we can abstract away parts such as the bindings function (we could do the same for array-bindings and boolean-set); those functions could be reusable, etc. 2018-09-02T01:19:31Z aeth: pjb: Well, in one intermediate step I had the loop return multiple values into a multiple-value-bind. It seemed kind of pointless, *but* if I moved the loop into a separate function, it could be cleaner 2018-09-02T01:19:45Z pjb: The thing is that by writing separate loops, you can extract the computing of each list in a separate function. 2018-09-02T01:19:59Z pjb: And since it remains O(n), it's ok, moreso at macroexpansion time. 2018-09-02T01:20:25Z Fare joined #lisp 2018-09-02T01:23:03Z pjb: ok, now, magic stick! I need all my past lisppaste pastebin etc, moved into snippets. 2018-09-02T01:25:44Z pjb: Actually, I've got a backup of lisppaste with almost all of them. And scanning the irc logs, I could recover almost all the other urls… 2018-09-02T01:26:11Z Oladon quit (Quit: Leaving.) 2018-09-02T01:26:20Z aeth: pjb: How about this for now? https://gitlab.com/zombie-raptor/zombie-raptor/blob/69615bd70dae5627096702ee0a7e2a3564fd07de/entity/entity.lisp#L164-228 2018-09-02T01:26:33Z aeth: I'll probably move back the boolean-set one to a reduce in its own function, though. 2018-09-02T01:28:03Z aeth: array-bindings is the non-trivial part I have to figure out how to deal with (whether in its own loop or not). 2018-09-02T01:28:20Z kdas_ joined #lisp 2018-09-02T01:29:14Z aeth: oh, it probably has to be in the same loop because it uses the same name gensym. 2018-09-02T01:31:30Z kushal quit (Quit: ZNC 1.7.0 - https://znc.in) 2018-09-02T01:33:04Z makomo quit (Ping timeout: 240 seconds) 2018-09-02T01:34:04Z Arcaelyx quit (Ping timeout: 240 seconds) 2018-09-02T01:35:47Z slyrus1 quit (Ping timeout: 240 seconds) 2018-09-02T01:35:50Z dddddd quit (Remote host closed the connection) 2018-09-02T01:41:22Z trocado joined #lisp 2018-09-02T01:44:31Z it3ration joined #lisp 2018-09-02T01:48:43Z aeth: With the reduce in its own function. https://gitlab.com/zombie-raptor/zombie-raptor/blob/4d0f226962d3c699ebc3fe3f208b5fd7b5e09bfa/entity/entity.lisp#L166-235 2018-09-02T01:49:56Z it3ration quit (Ping timeout: 272 seconds) 2018-09-02T01:53:04Z azimut quit (Ping timeout: 246 seconds) 2018-09-02T01:53:36Z azimut joined #lisp 2018-09-02T01:59:33Z Arcaelyx joined #lisp 2018-09-02T02:03:12Z jinkies joined #lisp 2018-09-02T02:12:15Z ebzzry quit (Read error: Connection reset by peer) 2018-09-02T02:12:59Z rozenglass quit (Read error: Connection reset by peer) 2018-09-02T02:16:30Z rozenglass joined #lisp 2018-09-02T02:20:44Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T02:21:26Z aindilis joined #lisp 2018-09-02T02:26:02Z Khisanth quit (Ping timeout: 272 seconds) 2018-09-02T02:26:13Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-02T02:28:25Z siraben quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-02T02:29:10Z pierpa quit (Quit: Page closed) 2018-09-02T02:39:09Z Khisanth joined #lisp 2018-09-02T02:41:33Z acolarh quit (Ping timeout: 252 seconds) 2018-09-02T02:42:37Z igemnace joined #lisp 2018-09-02T02:48:38Z fortitude_ quit (Quit: Leaving) 2018-09-02T02:53:19Z FreeBirdLjj joined #lisp 2018-09-02T02:55:57Z acolarh joined #lisp 2018-09-02T03:07:55Z beach: Good morning everyone! 2018-09-02T03:19:41Z jinkies quit (Read error: Connection reset by peer) 2018-09-02T03:20:07Z jinkies joined #lisp 2018-09-02T03:20:30Z k-hos quit (Read error: Connection reset by peer) 2018-09-02T03:31:04Z Denommus joined #lisp 2018-09-02T03:36:56Z drewc quit (Ping timeout: 268 seconds) 2018-09-02T03:37:04Z k-hos joined #lisp 2018-09-02T03:40:02Z trocado quit (Remote host closed the connection) 2018-09-02T03:44:39Z jinkies quit (Read error: Connection reset by peer) 2018-09-02T03:45:09Z panji joined #lisp 2018-09-02T03:45:17Z it3ration joined #lisp 2018-09-02T03:49:16Z jinkies joined #lisp 2018-09-02T03:49:47Z it3ration quit (Ping timeout: 240 seconds) 2018-09-02T03:52:03Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-02T03:54:32Z Bike quit (Quit: Lost terminal) 2018-09-02T04:00:28Z jinkies quit (Read error: Connection reset by peer) 2018-09-02T04:01:53Z jinkies joined #lisp 2018-09-02T04:10:00Z elfmacs quit (Ping timeout: 252 seconds) 2018-09-02T04:15:03Z _whitelogger quit (Remote host closed the connection) 2018-09-02T04:15:12Z drmeister: Say I have a vector of some number type and I want to convert it to a vector of single-floats - I have to convert the elements one by one - right? 2018-09-02T04:17:15Z _whitelogger joined #lisp 2018-09-02T04:19:22Z beach: Yes, (map-into v #'float v) 2018-09-02T04:20:39Z beach: Or something slightly more complicated. 2018-09-02T04:21:20Z beach: (map-into v (lambda (x) (float x 1s0)) v) 2018-09-02T04:23:44Z igemnace quit (Read error: Connection reset by peer) 2018-09-02T04:24:37Z igemnace joined #lisp 2018-09-02T04:34:40Z LdBeth joined #lisp 2018-09-02T04:35:10Z LdBeth: Good evening 2018-09-02T04:35:21Z Pixel_Outlaw quit (Remote host closed the connection) 2018-09-02T04:41:45Z beach: Hello LdBeth. 2018-09-02T05:01:51Z drmeister: Plotting graphs in jupyterlab using Common Lisp... 2018-09-02T05:01:54Z drmeister: https://usercontent.irccloud-cdn.com/file/0CgQZAFY/image.png 2018-09-02T05:09:21Z no-defun-allowed joined #lisp 2018-09-02T05:15:14Z panji quit (Remote host closed the connection) 2018-09-02T05:17:37Z drmeister: https://usercontent.irccloud-cdn.com/file/31VxUYkw/image.png 2018-09-02T05:20:43Z no-defun-allowed: nice 2018-09-02T05:20:55Z bradcomp joined #lisp 2018-09-02T05:23:42Z charh joined #lisp 2018-09-02T05:25:00Z SaganMan: Morning Peeps 2018-09-02T05:27:32Z SaganMan: Morning beach. How are you? How is your research going? 2018-09-02T05:28:03Z kdas_ is now known as kushal 2018-09-02T05:32:43Z beach: SaganMan: I am fine, thank you. I have been making excellent progress on bootstrapping the past few days. What about you? 2018-09-02T05:33:24Z SaganMan: beach: I'm good. The business is going fine. 2018-09-02T05:33:35Z beach: Great! What is your business? 2018-09-02T05:34:38Z SaganMan: beach: I'm in my family business. It's real estate and construction. We take land for development and construct apartments. 2018-09-02T05:34:47Z beach: Nice! 2018-09-02T05:35:12Z SaganMan: beach: this is our latest project http://www.ashirvaadbuildtech.com/ 2018-09-02T05:35:46Z beach: Impressive. 2018-09-02T05:36:00Z SaganMan: beach: It's in Bangalore which is IT hub in India. 2018-09-02T05:36:06Z caltelt_ joined #lisp 2018-09-02T05:36:14Z beach: I see, yes. 2018-09-02T05:37:10Z no-defun-allowed: hi beach 2018-09-02T05:37:32Z beach: Hey no-defun-allowed. 2018-09-02T05:37:38Z SaganMan: beach: We don't usually do projects on that grand scale. That is the biggest investment in mine and my father's life. It looks impressive but it's great risk and stress. 2018-09-02T05:39:30Z beach: I can imagine. 2018-09-02T05:41:09Z rocx quit (Remote host closed the connection) 2018-09-02T05:43:26Z no-defun-allowed: i think i could generalise the cl-vep image generator a bit 2018-09-02T05:45:07Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-02T05:46:18Z it3ration joined #lisp 2018-09-02T05:51:12Z it3ration quit (Ping timeout: 252 seconds) 2018-09-02T06:00:53Z vlatkoB joined #lisp 2018-09-02T06:15:57Z caltelt_ quit (Ping timeout: 252 seconds) 2018-09-02T06:16:34Z dented42 joined #lisp 2018-09-02T06:18:03Z phoe: Hey hi 2018-09-02T06:20:13Z beach: Hello phoe. 2018-09-02T06:20:48Z no-defun-allowed: well my ffmpeg interface is still shitslow at 4fps but the videos aren't broken now 2018-09-02T06:25:16Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T06:25:32Z FreeBirdLjj joined #lisp 2018-09-02T06:25:42Z CrazyEddy quit (Ping timeout: 268 seconds) 2018-09-02T06:25:54Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-02T06:30:14Z dented42 joined #lisp 2018-09-02T06:37:43Z elfmacs joined #lisp 2018-09-02T06:49:32Z CrazyEddy joined #lisp 2018-09-02T06:58:29Z zaquest quit (Remote host closed the connection) 2018-09-02T07:00:28Z Fare quit (Ping timeout: 245 seconds) 2018-09-02T07:08:52Z doubledup joined #lisp 2018-09-02T07:09:09Z doubledup quit (Max SendQ exceeded) 2018-09-02T07:09:32Z doubledup joined #lisp 2018-09-02T07:20:47Z razzy quit (Ping timeout: 240 seconds) 2018-09-02T07:21:34Z flazh quit (Ping timeout: 240 seconds) 2018-09-02T07:24:31Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-02T07:26:41Z quazimodo joined #lisp 2018-09-02T07:40:08Z orivej joined #lisp 2018-09-02T07:40:23Z razzy joined #lisp 2018-09-02T07:47:10Z it3ration joined #lisp 2018-09-02T07:51:49Z it3ration quit (Ping timeout: 246 seconds) 2018-09-02T07:52:35Z cage_ joined #lisp 2018-09-02T08:10:24Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-02T08:10:57Z libre-man quit (Ping timeout: 240 seconds) 2018-09-02T08:17:03Z asarch quit (Ping timeout: 252 seconds) 2018-09-02T08:24:17Z libre-man joined #lisp 2018-09-02T08:32:12Z light2yellow joined #lisp 2018-09-02T08:34:06Z astalla joined #lisp 2018-09-02T08:38:57Z runejuhl joined #lisp 2018-09-02T08:45:33Z flazh joined #lisp 2018-09-02T08:47:18Z jinkies quit (Remote host closed the connection) 2018-09-02T08:50:03Z igemnace quit (Quit: WeeChat 2.2) 2018-09-02T08:53:24Z SlashLife quit (Ping timeout: 252 seconds) 2018-09-02T08:58:30Z SlashLife joined #lisp 2018-09-02T08:59:37Z varjag joined #lisp 2018-09-02T09:22:33Z lavaflow quit (Ping timeout: 245 seconds) 2018-09-02T09:33:46Z steiner quit (Read error: Connection reset by peer) 2018-09-02T09:33:56Z fikka joined #lisp 2018-09-02T09:41:24Z moei quit (Quit: Leaving...) 2018-09-02T09:48:10Z it3ration joined #lisp 2018-09-02T09:49:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T09:51:59Z stardiviner quit (Ping timeout: 250 seconds) 2018-09-02T09:52:47Z it3ration quit (Ping timeout: 240 seconds) 2018-09-02T09:55:12Z random-nick joined #lisp 2018-09-02T09:55:31Z fikka joined #lisp 2018-09-02T09:58:34Z SaganMan quit (Ping timeout: 240 seconds) 2018-09-02T10:00:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T10:12:34Z elfmacs quit (Ping timeout: 240 seconds) 2018-09-02T10:13:34Z razzy quit (Ping timeout: 246 seconds) 2018-09-02T10:15:50Z fikka joined #lisp 2018-09-02T10:19:10Z razzy joined #lisp 2018-09-02T10:20:03Z [X-Scale] joined #lisp 2018-09-02T10:20:28Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T10:22:27Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-02T10:22:28Z [X-Scale] is now known as X-Scale 2018-09-02T10:25:28Z azimut quit (Ping timeout: 245 seconds) 2018-09-02T10:26:17Z fikka joined #lisp 2018-09-02T10:26:38Z azimut joined #lisp 2018-09-02T10:30:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T10:33:15Z moei joined #lisp 2018-09-02T10:36:10Z fikka joined #lisp 2018-09-02T10:41:03Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T10:46:34Z fikka joined #lisp 2018-09-02T10:51:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T10:56:33Z steiner joined #lisp 2018-09-02T10:56:55Z fikka joined #lisp 2018-09-02T11:00:07Z makomo joined #lisp 2018-09-02T11:01:43Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T11:07:19Z fikka joined #lisp 2018-09-02T11:11:31Z elfmacs joined #lisp 2018-09-02T11:11:57Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T11:18:03Z _whitelogger quit (Remote host closed the connection) 2018-09-02T11:19:26Z lavaflow joined #lisp 2018-09-02T11:20:17Z _whitelogger joined #lisp 2018-09-02T11:21:27Z dddddd joined #lisp 2018-09-02T11:23:06Z steiner quit (Remote host closed the connection) 2018-09-02T11:23:06Z Lycurgus quit (Ping timeout: 272 seconds) 2018-09-02T11:23:51Z lavaflow quit (Ping timeout: 250 seconds) 2018-09-02T11:24:02Z steiner joined #lisp 2018-09-02T11:26:09Z makomo: pjb: i managed to find one occurence of the (4) (3) ordering, https://www.hexstreamsoft.com/libraries/place-utils/#funcallf-applyf 2018-09-02T11:26:39Z makomo: granted, funcallf is just _f in disguise, but the evaluation order has been explictily documented (and therefore thought through) 2018-09-02T11:27:24Z fikka joined #lisp 2018-09-02T11:27:44Z elfmacs quit (Quit: WeeChat 2.2) 2018-09-02T11:27:59Z veinof is now known as veinofsortain 2018-09-02T11:32:36Z fikka quit (Ping timeout: 272 seconds) 2018-09-02T11:40:50Z quazimodo quit (Ping timeout: 272 seconds) 2018-09-02T11:42:33Z quazimodo joined #lisp 2018-09-02T11:45:03Z steiner quit (Remote host closed the connection) 2018-09-02T11:46:32Z steiner joined #lisp 2018-09-02T11:47:10Z azimut quit (Ping timeout: 272 seconds) 2018-09-02T11:47:38Z fikka joined #lisp 2018-09-02T11:48:44Z pierpal quit (Read error: Connection reset by peer) 2018-09-02T11:48:55Z pierpal joined #lisp 2018-09-02T11:48:58Z it3ration joined #lisp 2018-09-02T11:50:24Z lavaflow joined #lisp 2018-09-02T11:52:39Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T11:54:12Z it3ration quit (Ping timeout: 252 seconds) 2018-09-02T11:55:37Z Bike joined #lisp 2018-09-02T11:56:29Z azimut joined #lisp 2018-09-02T12:01:57Z pierpal quit (Quit: Poof) 2018-09-02T12:02:15Z pierpal joined #lisp 2018-09-02T12:04:45Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-02T12:06:41Z quazimodo joined #lisp 2018-09-02T12:07:07Z random-nick quit (Ping timeout: 240 seconds) 2018-09-02T12:08:23Z fikka joined #lisp 2018-09-02T12:13:00Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T12:14:41Z adlai: "risk and stress" ... yep, that sounds like components of the construction Hamiltonian. story checks out! 2018-09-02T12:15:08Z Lycurgus joined #lisp 2018-09-02T12:18:44Z SpikeMaster joined #lisp 2018-09-02T12:18:47Z SpikeMaster: hello lisp. 2018-09-02T12:20:23Z phoe: woooo boy 2018-09-02T12:20:25Z phoe: ftp://ftp.ai.mit.edu/people/naha/WordNet/WordNet.html 2018-09-02T12:20:38Z phoe: I wonder if this runs on contemporary Lisps 2018-09-02T12:25:27Z azimut quit (Ping timeout: 240 seconds) 2018-09-02T12:27:17Z phoe: #+Genera (scl:defsystem WordNet ...) 2018-09-02T12:27:20Z phoe: aaah~ 2018-09-02T12:27:44Z phoe: This code was done in 1995 2018-09-02T12:28:39Z fikka joined #lisp 2018-09-02T12:29:52Z azimut joined #lisp 2018-09-02T12:34:02Z fikka quit (Ping timeout: 272 seconds) 2018-09-02T12:35:52Z phoe: ...and it does contain curse words 2018-09-02T12:35:58Z phoe: I already like it 2018-09-02T12:37:14Z beach: Hello SpikeMaster. 2018-09-02T12:45:38Z light2yellow quit (Quit: brb) 2018-09-02T12:47:08Z random-nick joined #lisp 2018-09-02T12:47:45Z phoe: This is crazy. 2018-09-02T12:48:12Z phoe: I'm running code that's fifteen years old and the only thing that was really required is fixing it to use ASDF. 2018-09-02T12:48:45Z azimut quit (Ping timeout: 252 seconds) 2018-09-02T12:49:00Z fikka joined #lisp 2018-09-02T12:49:28Z beach: Nice. 2018-09-02T12:50:02Z phoe: I have something for you, beach - this thing has a CLIM browser. (: 2018-09-02T12:50:43Z SenasOzys quit (Ping timeout: 246 seconds) 2018-09-02T12:51:01Z smokeink joined #lisp 2018-09-02T12:52:05Z _death: phoe: check copyright date range @ https://bitbucket.org/dfmorrison/roan/src/e43b5ae8af0aba6930f0183a4afbc7e3e004da1e/roan.lisp?at=master&fileviewer=file-view-default 2018-09-02T12:52:34Z phoe: _death: oh goodness 2018-09-02T12:53:13Z beach: phoe: I saw that. 2018-09-02T12:53:27Z azimut joined #lisp 2018-09-02T12:53:31Z fikka quit (Ping timeout: 246 seconds) 2018-09-02T12:53:42Z astalla quit (Ping timeout: 252 seconds) 2018-09-02T12:57:16Z Fare joined #lisp 2018-09-02T12:59:17Z SenasOzys joined #lisp 2018-09-02T13:00:03Z azimut quit (Ping timeout: 245 seconds) 2018-09-02T13:00:07Z fikka joined #lisp 2018-09-02T13:00:53Z azimut joined #lisp 2018-09-02T13:04:10Z SpikeMaster quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-09-02T13:04:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T13:04:47Z SpikeMaster joined #lisp 2018-09-02T13:04:58Z SpikeMaster quit (Remote host closed the connection) 2018-09-02T13:05:22Z SpikeMaster joined #lisp 2018-09-02T13:05:33Z SpikeMaster left #lisp 2018-09-02T13:07:33Z azimut quit (Ping timeout: 245 seconds) 2018-09-02T13:08:46Z smokeink: compiling nodes question http://pastecode.ru/8ef7b9/ 2018-09-02T13:08:59Z shka_ joined #lisp 2018-09-02T13:09:24Z shka_: good afternoon 2018-09-02T13:09:40Z smokeink: good afternoon 2018-09-02T13:10:12Z fikka joined #lisp 2018-09-02T13:10:18Z pjb: phoe: https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/wang.html if you can run that, then wordnet! 2018-09-02T13:10:28Z Bike: smokeink: no. as a parameter to f, A is a lexical variable. 2018-09-02T13:10:33Z phoe: pjb: yes 2018-09-02T13:11:06Z Bike: i'm not really sure what you're trying to do here, though. 2018-09-02T13:11:43Z pjb: smokeink: add a (declare (special a) in the lambda. 2018-09-02T13:12:10Z pjb: smokeink: have a look at https://www.informatimago.com/articles/usenet.html#C-like-pointers-in-Lisp 2018-09-02T13:13:31Z pjb: Sorry, I mean (declare (special myvar) in the let. 2018-09-02T13:14:02Z pjb: err, not yet. 2018-09-02T13:14:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T13:15:18Z pjb: smokeink: your code is full of bug, that's why I cannot say anything consistent about it. 2018-09-02T13:15:52Z pjb: (quote apple) is not a function, so compile-node will return nil anyways. 2018-09-02T13:16:18Z pjb: and there's no link between f and compile-node. 2018-09-02T13:17:06Z phoe: (defun foo (...) (declare (values ...))) 2018-09-02T13:17:08Z phoe: huh 2018-09-02T13:17:16Z phoe: That's a strange declaration 2018-09-02T13:17:24Z smokeink: pjb: ignore f, I first typed that f function to specifically ask whether myvar can access that a in some way or not 2018-09-02T13:17:28Z Bike: that's in what, clisp or something? to indicate return value types 2018-09-02T13:17:43Z Bike: it's not standard 2018-09-02T13:17:44Z smokeink: I have two types of nodes , I only presented one type of node in that "example" 2018-09-02T13:17:55Z smokeink: terminal nodes have symbols in them 2018-09-02T13:18:05Z smokeink: nonterminal nodes have functions in them (instead of that 'apple ) 2018-09-02T13:18:17Z phoe: Bike: it's code from 1995 2018-09-02T13:18:26Z pjb: smokeink: it can. Just declare a as special. 2018-09-02T13:18:29Z Bike: still nonstandard 2018-09-02T13:18:32Z phoe: yep 2018-09-02T13:18:52Z pjb: smokeink: why do you use lists with the quote symbol as first element? 2018-09-02T13:18:59Z pjb: This is useless and confusing. 2018-09-02T13:18:59Z smokeink: I just wrote a snippet, I didn't paste my actual code because the actual code has other unnecessary details 2018-09-02T13:19:03Z azimut joined #lisp 2018-09-02T13:19:27Z smokeink: pjb: that was a typo , that node is just `(root apple) , nothing else 2018-09-02T13:19:38Z pjb: Well, they you get those answers above, instead of the actual answer. 2018-09-02T13:19:47Z pjb: I'll try to add typoes too. 2018-09-02T13:19:55Z fikka joined #lisp 2018-09-02T13:20:28Z smokeink: I should have typed it as `(root apple) or as (list 'root 'apple) 2018-09-02T13:21:48Z phoe: (get-synonyms "horse" :noun) ;=> (("horse" 0) ("horse_cavalry" 1) ("cavalry" 1) ("horse" 0) ("Equus_caballus" 0) ("horse" 3) ("gymnastic_horse" 0) ("sawhorse" 0) ("horse" 1) ("sawbuck" 0) ("buck" 0)) 2018-09-02T13:21:53Z phoe: woah, this thing workd! 2018-09-02T13:21:55Z phoe: works!* 2018-09-02T13:22:57Z pjb: smokeink: you test for (functionp myvar) and then in the case you test for symbols. Therefore the case will always return nil, if myvar is bound to a function, and the IF will return nil if not. 2018-09-02T13:23:38Z pjb: smokeink: a compiler can detect that at compilation time, so it can generate (lambda (a b) (declare (ignore a b)) nil) instead. 2018-09-02T13:23:46Z smokeink: ahh , I had a funcall there, forgot to type it 2018-09-02T13:24:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T13:25:02Z smokeink: http://pastecode.ru/9430ad/ fixed the two typos 2018-09-02T13:25:51Z pjb: smokeink: ok, better. Now what is the question? 2018-09-02T13:26:22Z pjb: This compile-node function seems to be doing something. 2018-09-02T13:27:09Z smokeink: no question for now, I'll first try to see if declaring vars special will work well or not 2018-09-02T13:27:30Z steiner quit (Read error: Connection reset by peer) 2018-09-02T13:27:37Z smokeink: thanks for the quick response 2018-09-02T13:27:47Z steiner joined #lisp 2018-09-02T13:28:19Z pjb: https://gitlab.com/snippets/1750435 2018-09-02T13:28:22Z pjb: smokeink: ^ 2018-09-02T13:29:53Z flazh quit (Ping timeout: 244 seconds) 2018-09-02T13:30:18Z fikka joined #lisp 2018-09-02T13:31:31Z pjb: smokeink: reload https://gitlab.com/snippets/1750435 I've added a few lines. 2018-09-02T13:32:58Z smokeink: cool, thank you 2018-09-02T13:33:16Z steiner quit (Read error: Connection reset by peer) 2018-09-02T13:33:31Z steiner joined #lisp 2018-09-02T13:34:44Z flazh joined #lisp 2018-09-02T13:34:51Z Jesin quit (Quit: Leaving) 2018-09-02T13:34:56Z phoe: Sigh 2018-09-02T13:35:00Z phoe: How is that code licensed though? 2018-09-02T13:35:15Z phoe: I assume it has been published back in the day when hardly anyone thought of licenses 2018-09-02T13:35:28Z fikka quit (Ping timeout: 272 seconds) 2018-09-02T13:35:31Z phoe: But it would be bold for me to assume any license at all if the author put none on it. 2018-09-02T13:36:28Z pjb: Just locate the author and ask them. 2018-09-02T13:36:47Z phoe: pjb: I did. All I have is the email address @ai.mit.edu which might or might not work after all these years. 2018-09-02T13:39:01Z phoe: And googling for the person reveals last traces of activity in 2001. 2018-09-02T13:39:18Z phoe: Wait. No. This code is 23 years old. 2018-09-02T13:42:00Z jinkies joined #lisp 2018-09-02T13:42:14Z pjb: (- 2018 2001) #| --> 17 |# it's consistent. 2018-09-02T13:43:41Z oni-on-ion: wordnet? o_o 2018-09-02T13:47:20Z phoe: Well. Last traces of activity are from 17 years ago. 2018-09-02T13:47:35Z phoe: And the domain .ai.mit.edu is no longer active - it redirects elsewhere. 2018-09-02T13:49:57Z it3ration joined #lisp 2018-09-02T13:50:23Z fikka joined #lisp 2018-09-02T13:51:05Z phoe: pjb: there's no mailserver at ai.mit.edu. I have no direct means of contacting the author. 2018-09-02T13:51:52Z steiner quit (Remote host closed the connection) 2018-09-02T13:54:27Z azimut quit (Ping timeout: 240 seconds) 2018-09-02T13:54:45Z it3ration quit (Ping timeout: 252 seconds) 2018-09-02T13:55:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T13:57:03Z pjb: phoe: the "copyright" seems to be: 1995, Mark Nahabedian 2018-09-02T13:57:14Z azimut joined #lisp 2018-09-02T13:58:00Z phoe: pjb: yes, exactly, I've googled the person. 2018-09-02T13:58:05Z pjb: phoe: since it comes from the MIT, it might be under the MIT license. But you'd need confirmation. 2018-09-02T13:59:22Z Denommus quit (Remote host closed the connection) 2018-09-02T13:59:39Z pjb: Have you tried Mark Nahabedian ? 2018-09-02T13:59:45Z pjb: s/. // 2018-09-02T14:00:04Z phoe: pjb: there's no mailserver at ai.mit.edu. 2018-09-02T14:01:29Z pjb: phoe: it might be at Google/ITA: https://imagebin.ca/v/4EK069bhAQj2 2018-09-02T14:01:34Z pjb: s/it/he/ 2018-09-02T14:04:10Z phoe: https://groups.google.com/forum/?hl=uk&nomobile=true#!topic/golang-nuts/Lo0UPRd0wb4 2018-09-02T14:04:13Z phoe: Ha! 2018-09-02T14:04:19Z phoe: They seemingly do Golang nowadays. 2018-09-02T14:04:37Z phoe: That message is from just a few days ago. 2018-09-02T14:04:39Z phoe: pjb: thanks! 2018-09-02T14:04:59Z pjb: naha@mit.edu :-) 2018-09-02T14:05:08Z phoe: Yessss 2018-09-02T14:05:19Z phoe: Oh boy, not only I'm doing programming, I'm also doing archaeology 2018-09-02T14:05:30Z nika joined #lisp 2018-09-02T14:05:31Z pjb: lisp is fun. 2018-09-02T14:05:35Z phoe: Definitely is 2018-09-02T14:08:47Z flazh quit (Ping timeout: 240 seconds) 2018-09-02T14:10:02Z Lycurgus quit (Quit: Exeunt) 2018-09-02T14:10:47Z oni-on-ion: aeth: check out recent release notes if you havnt already, http://www.sbcl.org/all-news.html , like 1.4.10 adding or subtracting 1 from a fixnum does not cons. =) 2018-09-02T14:11:03Z fikka joined #lisp 2018-09-02T14:11:18Z smokeink: optimization question http://pastecode.ru/3b8a06/ 2018-09-02T14:12:11Z ski quit (Quit: leaving) 2018-09-02T14:12:15Z pjb: smokeink: define "better". 2018-09-02T14:12:33Z pjb: smokeink: have a look at the sources of the sbcl or sicl compilers? 2018-09-02T14:13:15Z pjb: smokeink: I wouldn't worry about that for now. Just build your system, and make it work. If there remain time then, you will be able to have more philosophical questions… 2018-09-02T14:13:24Z smokeink: Since my code is a bit complicated than this snippet, it might result into many ifs and cases , and that's not very nice. Just wondering if you guys can spot a different solution 2018-09-02T14:13:41Z phoe: smokeink: you're basically doing a big typecase, aren't you? 2018-09-02T14:13:56Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T14:14:03Z pjb: smokeink: the alternative to code, is data. 2018-09-02T14:14:11Z trocado joined #lisp 2018-09-02T14:14:12Z smokeink: perhaps a big typecase will do 2018-09-02T14:14:14Z phoe: if yes, you might want to instead go CLOS and use a generic function; this will move the dispatch from a massive CASE into individual methods 2018-09-02T14:14:32Z phoe: you could define a single GF and dispatch based on classes 2018-09-02T14:15:05Z phoe: (defclass apple ...) (defclass banana ...) (defgeneric frobnicate (fruit)) (defmethod frobnicate ((apple apple)) ...) (defmethod frobnicate ((banana banana)) ...) 2018-09-02T14:15:12Z smokeink: okay 2018-09-02T14:15:21Z pjb: You could have a table of predicate and functions to generate the code, so you'd just write (funcall (optimization-generate (find-if (lambda (predicate) (funcall predicate myvar)) table :key (function optimization-predicate)))) 2018-09-02T14:15:32Z pjb: or use CLOS as phoe indicates. 2018-09-02T14:15:44Z phoe: CLOS already has the kind of dispatch you seem to want 2018-09-02T14:15:46Z fikka quit (Ping timeout: 246 seconds) 2018-09-02T14:16:19Z pjb: even (typecase myvar (function …) ((eql apple) …) ((eql banana) …)) 2018-09-02T14:16:38Z jackdaniel: the question is: what is easier to optimize: a few symbols + typecase or a few classes + gf dispatch 2018-09-02T14:16:45Z jackdaniel: by a compiler 2018-09-02T14:17:13Z jackdaniel: as of constant values, you may consider compiler macros for functions 2018-09-02T14:17:46Z phoe: CLOS might be much cleaner code-wise if you have multiple typecases 2018-09-02T14:18:39Z pjb: See, you need to define "better". And this depends a lot on your program. 2018-09-02T14:18:56Z phoe: as for performance, a typecase might be faster if all of your types are classes and therefore type comparison is going to be pointer equality 2018-09-02T14:18:56Z jackdaniel: clos might be but doesn't have to be cleaner. it is easy to do a mixin spaghetti with unobvious method invocation structure 2018-09-02T14:19:13Z phoe: jackdaniel: yep, I was thinking about the simple case 2018-09-02T14:21:30Z fikka joined #lisp 2018-09-02T14:22:15Z SaganMan joined #lisp 2018-09-02T14:22:49Z francogrex joined #lisp 2018-09-02T14:25:01Z oni-on-ion: also structs work with gf 2018-09-02T14:25:16Z pjb: smokeink: for example, a given optimization may need to do things or generate expressions at several places, to prepare the optimization or complete it. You may need temp variables, initializations, cleanup, in addition to the code generated at the place of interest. Then you will need several functions (or methods) for a given optimization. This would exclude the typecase solution. (CLOS methods or a table managed by yourself w 2018-09-02T14:25:16Z pjb: do)> 2018-09-02T14:25:38Z pjb: smokeink: but what is "better" depends on whether you have such needs for your optimizations. 2018-09-02T14:25:49Z pjb: oni-on-ion: all lisp objects work with gf. 2018-09-02T14:25:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T14:26:28Z oni-on-ion: "what is easier to optimize" seems a clear question to me. CLOS is slower for GF because classes can change in runtime. as opposed to say julia where all code paths are decided before runtime 2018-09-02T14:27:43Z pjb: oni-on-ion: CLOS can reach the 2 JSR on GF calls. Just like Objective-C. Can julia dispatch in less than 2 JSR? 2018-09-02T14:29:48Z oni-on-ion: oh its faster than objective-c definately 2018-09-02T14:30:31Z phoe: pjb: what's JSR? 2018-09-02T14:30:49Z aindilis quit (Ping timeout: 246 seconds) 2018-09-02T14:30:50Z pjb: jump to sub routine. 2018-09-02T14:30:56Z pjb: the assembler equivalent of funcall. 2018-09-02T14:31:32Z fikka joined #lisp 2018-09-02T14:32:24Z rippa joined #lisp 2018-09-02T14:32:33Z orivej quit (Ping timeout: 245 seconds) 2018-09-02T14:33:38Z oni-on-ion: i think often julia does not do any jumps, when the code is called "type stable" the compiler can already know the code path and lay it out before eval (all code is compiled with llvm) with or without declaring inline 2018-09-02T14:34:38Z oni-on-ion: this feature of clos is exactly why i need lisp right now though (to update code in a live server) 2018-09-02T14:35:26Z flazh joined #lisp 2018-09-02T14:36:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T14:38:24Z FreeBirdLjj joined #lisp 2018-09-02T14:41:31Z fikka joined #lisp 2018-09-02T14:42:35Z Shinmera quit (Remote host closed the connection) 2018-09-02T14:43:47Z nowolfer quit (Ping timeout: 240 seconds) 2018-09-02T14:44:35Z smokeink: tried to make myvar special but it doesn't seem to work: http://pastecode.ru/c4d5d/ 2018-09-02T14:45:12Z Shinmera joined #lisp 2018-09-02T14:45:23Z smokeink: if I manage to capture a's value via myvar then I can simplify my code to a simple cond 2018-09-02T14:45:31Z zooey quit (Ping timeout: 250 seconds) 2018-09-02T14:45:33Z isoraqathedh quit (Quit: No Ping reply in 180 seconds.) 2018-09-02T14:45:46Z nowolfer joined #lisp 2018-09-02T14:46:04Z Bike: because it's special in the let, but not as a function binding 2018-09-02T14:46:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T14:46:18Z Bike: (defun f (a) (declare (special a)) (let ((myvar 'a)) (symbol-value myvar))) 2018-09-02T14:46:25Z Bike: i'm not sure this is a good idea, though 2018-09-02T14:46:52Z smokeink: worked. Yes it looks a bit dangerous 2018-09-02T14:47:00Z sabrac: jdz: Looking at your postmodern changes now. 2018-09-02T14:47:07Z pjb: smokeink: first, you should read: https://groups.google.com/forum/#!msg/comp.lang.lisp/4VyopdWcFI4/1sDQU-3H8VgJ 2018-09-02T14:47:43Z zooey joined #lisp 2018-09-02T14:47:49Z isoraqathedh joined #lisp 2018-09-02T14:48:05Z pjb: smokeink: and https://groups.google.com/forum/#!msg/comp.lang.lisp/4VyopdWcFI4/1sDQU-3H8VgJ 2018-09-02T14:48:54Z francogrex: comp.lang.lisp is still alive and kicking? 2018-09-02T14:48:56Z Colleen quit (Ping timeout: 272 seconds) 2018-09-02T14:49:16Z phoe: francogrex: mostly a spamhouse and trollfest 2018-09-02T14:49:24Z Colleen joined #lisp 2018-09-02T14:49:28Z Bike: is that guy, wz or whatever, still doing it 2018-09-02T14:51:09Z pjb: a "guy"? I expect the bot eventually to start replying to his own messages! 2018-09-02T14:53:20Z light2yellow joined #lisp 2018-09-02T14:53:52Z smokeink: haha 2018-09-02T14:54:31Z smokeink: pjb: that link is really useful 2018-09-02T14:55:17Z francogrex: but then aside from this chat here, what is the goto forum to post cl related messages? don't tell me it's stackoverflow now! 2018-09-02T14:55:29Z pjb: nope. cll. 2018-09-02T14:55:41Z pjb: I only answer on irc and on cll. 2018-09-02T14:56:10Z francogrex: ok 2018-09-02T14:56:32Z russellw quit 2018-09-02T14:57:05Z oni-on-ion: reddit ? 2018-09-02T14:59:42Z smokeink quit (Remote host closed the connection) 2018-09-02T15:02:14Z fikka joined #lisp 2018-09-02T15:04:35Z francogrex quit (Remote host closed the connection) 2018-09-02T15:07:01Z fikka quit (Ping timeout: 250 seconds) 2018-09-02T15:08:57Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T15:09:00Z Roy_Fokker joined #lisp 2018-09-02T15:10:43Z azimut quit (Ping timeout: 246 seconds) 2018-09-02T15:11:33Z francogrex joined #lisp 2018-09-02T15:12:19Z francogrex: I wonder how come almost all implementations still fail a good chunck of the ansi-tests? does that mean those tests are bollocks? 2018-09-02T15:12:38Z fikka joined #lisp 2018-09-02T15:14:02Z shenghi joined #lisp 2018-09-02T15:14:42Z asarch joined #lisp 2018-09-02T15:14:55Z pjb: francogrex: 80-20 2018-09-02T15:17:09Z francogrex: what's that? 2018-09-02T15:17:15Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T15:17:30Z pjb: https://en.wikipedia.org/wiki/Pareto_principle 2018-09-02T15:20:00Z francogrex: 20 percent of the code has 80 percent of the errors? 2018-09-02T15:20:21Z francogrex: still doesn't explain why and why it's not fixable 2018-09-02T15:22:29Z fikka joined #lisp 2018-09-02T15:22:54Z steiner joined #lisp 2018-09-02T15:27:10Z fikka quit (Ping timeout: 244 seconds) 2018-09-02T15:32:00Z loke: pjb & Bike: Oddly enough, wj doesn't seem to have posted his usual garbage for over a week? 2018-09-02T15:32:15Z loke: Perhaps he's charging up for another onslaught? 2018-09-02T15:32:48Z Bike: a /week/? last time i looked at that place was like two years ago 2018-09-02T15:32:50Z Bike: god damn 2018-09-02T15:33:38Z loke: To most recent message from him that I can see was from 14'th July 2018-09-02T15:33:45Z loke: so it's a month and a half 2018-09-02T15:33:56Z loke: I don't think he's been off for that long... ever? 2018-09-02T15:34:18Z loke: did he fianlly get bored? 2018-09-02T15:35:44Z shka_: loke: no 2018-09-02T15:35:48Z shka_: spam is still on 2018-09-02T15:36:18Z loke: shka_: I'm checkin gon Google Reader, which to my knowledge doesn't filter spam at all. 2018-09-02T15:36:30Z loke: i mean groups 2018-09-02T15:36:33Z shka_: but #lisp is for just registered people now 2018-09-02T15:36:47Z shka_: loke: i got spam at #clnoobs last week 2018-09-02T15:36:59Z steiner quit (Ping timeout: 244 seconds) 2018-09-02T15:38:35Z FreeBirdLjj joined #lisp 2018-09-02T15:40:38Z light2yellow quit (Quit: brb) 2018-09-02T15:42:40Z jinkies: pjb: what is cll? 2018-09-02T15:42:50Z fikka joined #lisp 2018-09-02T15:43:05Z beach: comp.lang.lisp 2018-09-02T15:43:19Z beach: A Usenet news group. 2018-09-02T15:47:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T15:50:50Z it3ration joined #lisp 2018-09-02T15:53:16Z fikka joined #lisp 2018-09-02T15:53:50Z fikka quit (Read error: Connection reset by peer) 2018-09-02T15:55:34Z it3ration quit (Ping timeout: 240 seconds) 2018-09-02T15:55:35Z steiner joined #lisp 2018-09-02T15:57:54Z makomo quit (Quit: WeeChat 2.2) 2018-09-02T15:57:58Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-02T15:58:17Z quazimodo joined #lisp 2018-09-02T15:59:34Z kajo quit (Ping timeout: 240 seconds) 2018-09-02T16:00:18Z phoe: francogrex: #lisp on IRC, Lisp Discord server and /r/common_lisp first and foremost 2018-09-02T16:00:27Z phoe: also a little bit of stackoverflow 2018-09-02T16:00:39Z phoe: and a little bit of cll (if you're willing to moderate it yourself). 2018-09-02T16:03:35Z fikka joined #lisp 2018-09-02T16:04:28Z azimut joined #lisp 2018-09-02T16:05:44Z francogrex: in sbcl when you disassemble you get the mem address of the function in the output. in ccl it's not output but does anyone recall how to get the memory address otherwise? 2018-09-02T16:08:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T16:08:48Z azimut quit (Ping timeout: 245 seconds) 2018-09-02T16:09:29Z steiner quit (Remote host closed the connection) 2018-09-02T16:12:15Z shka_ quit (Ping timeout: 252 seconds) 2018-09-02T16:14:07Z francogrex: it's ok. in most cases i suppose (inspect 'function-name) can do just that 2018-09-02T16:15:20Z phoe: francogrex: why do you need the address at all? 2018-09-02T16:23:12Z wigust joined #lisp 2018-09-02T16:23:22Z francogrex: examing the assembly instructions of a function by attaching to gdb (yeah) 2018-09-02T16:23:44Z francogrex: but it's ok 2018-09-02T16:23:52Z fikka joined #lisp 2018-09-02T16:25:14Z francogrex quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-02T16:25:54Z steiner joined #lisp 2018-09-02T16:26:08Z drmeister: What's the best infix math library for Common Lisp? 2018-09-02T16:26:31Z drmeister: https://github.com/ruricolist/infix-math ? 2018-09-02T16:26:32Z phoe: drmeister: what operators do you want to have in there? 2018-09-02T16:26:39Z phoe: +-:/% and what else? 2018-09-02T16:26:56Z drmeister: I want infix arithmetic in Common Lisp without tears. 2018-09-02T16:27:23Z phoe: drmeister: yes, but what exactly do you mean by "infix arithmetic"? 2018-09-02T16:27:31Z phoe: Which operators? 2018-09-02T16:27:50Z phoe: ruricolist's library is generic and should work decently 2018-09-02T16:28:19Z phoe: oh, it does have a list of operators it recognizes in the README 2018-09-02T16:28:20Z drmeister: All the most popular ones. I'm building a web based scientific programming environment and I'd like to be able to transcribe equations without converting them into s-expressions. 2018-09-02T16:28:21Z light2yellow joined #lisp 2018-09-02T16:28:33Z drmeister: Optionally - mind you. I'm not taking anything away. 2018-09-02T16:28:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T16:28:44Z phoe: You could use that library, I think 2018-09-02T16:29:05Z drmeister: I recall looking into this a year ago and I thought I was working with a different library. 2018-09-02T16:29:23Z phoe: if someone inputs "2 + 2" you could (eval (cons $ (read-from-string (concatenate 'string "(" "2 + 2" ")")))) 2018-09-02T16:29:28Z phoe: uh I mean 2018-09-02T16:29:39Z phoe: (eval (cons '$ (read-from-string (concatenate 'string "(" input ")")))) 2018-09-02T16:29:46Z phoe: for any INPUT that the user inserts 2018-09-02T16:30:52Z phoe: I wonder if $ errors on unknown operators; if yes, then it would solve a part of input sanitization problem 2018-09-02T16:31:09Z shka_ joined #lisp 2018-09-02T16:33:13Z oni-on-ion: http://folk.uio.no/jornv/infpre/infpre.html ? 2018-09-02T16:33:40Z oni-on-ion: https://stackoverflow.com/questions/25434538/define-function-for-evaluating-infix-expressions-in-lisp ~ 2018-09-02T16:34:15Z fikka joined #lisp 2018-09-02T16:36:22Z pjb: as soon as they make a gnus plugin for discod and stackoverflow.. 2018-09-02T16:36:48Z drmeister: Ok - thank you - I'll work from those. 2018-09-02T16:37:59Z _death: I thought lobste.rs might be interesting because it exposes a mailing list format, which can then be fed to gmane and read using gnus.. but I've no lobste.rs account 2018-09-02T16:38:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T16:38:51Z drmeister: Now that I've got things like this working... 2018-09-02T16:38:53Z drmeister: https://usercontent.irccloud-cdn.com/file/pxkfBFkt/image.png 2018-09-02T16:39:10Z drmeister: My mind starts to wander to infix arithmetic 2018-09-02T16:39:50Z _death: but now I remember that gmane is part dead.. at least gwene is OK.. and then there's that gnusdumps thing I wrote back then 2018-09-02T16:39:52Z Bike: btw, pi is a constant, so you can just do (* 2 pi) 2018-09-02T16:40:12Z drmeister: Is it? Neat - Common Lisp has everything. 2018-09-02T16:41:22Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-02T16:42:35Z pjb: (defconstant 2pi (* 2 pi)) 2018-09-02T16:42:46Z pjb: (defconstant pi/2 (/ pi 2)) ; etc. 2018-09-02T16:43:31Z quazimodo joined #lisp 2018-09-02T16:43:37Z shrdlu68 joined #lisp 2018-09-02T16:43:53Z drmeister: Gotcha - thanks! 2018-09-02T16:43:54Z drmeister: https://usercontent.irccloud-cdn.com/file/q3Eptb2R/image.png 2018-09-02T16:44:39Z light2yellow quit (Quit: brb) 2018-09-02T16:45:13Z jmercouris joined #lisp 2018-09-02T16:45:49Z rumbler31 joined #lisp 2018-09-02T16:46:06Z rumbler31 quit (Remote host closed the connection) 2018-09-02T16:47:18Z azimut joined #lisp 2018-09-02T16:49:10Z shrdlu68: Good evening, fellow Eukaryota. In http://www.sbcl.org/manual/#Hash-Table-Extensions, in the explanation for :weakness, what does "live" mean? 2018-09-02T16:49:41Z Bike: "accessible" is synonymous 2018-09-02T16:49:44Z phoe: shrdlu68: something else that's not a weak pointer must have a reference to it. 2018-09-02T16:49:55Z phoe: "otherwise accessible" is kind of that term 2018-09-02T16:50:08Z phoe: if this value is pointed to only by weak pointers, then it's not live and may be collected at any time. 2018-09-02T16:50:29Z drmeister: A live object is in memory and has not been garbage collected. 2018-09-02T16:50:40Z shrdlu68: I see, thanks! 2018-09-02T16:51:06Z phoe: drmeister: that word is used in a slightly different context here 2018-09-02T16:51:16Z beach: drmeister: No, that's not how it is typically used. 2018-09-02T16:51:23Z drmeister: Which word? 2018-09-02T16:51:24Z phoe: we're thinking weak hash tables, in which values may be garbage collected 2018-09-02T16:51:26Z phoe: "live" 2018-09-02T16:51:28Z beach: drmeister: A live object is one that is reachable from the roots. 2018-09-02T16:51:41Z drmeister: This is why I don't tend to answer questions. (sigh) 2018-09-02T16:51:46Z beach: drmeister: ... whether it has been collected or not. 2018-09-02T16:51:54Z drmeister: Ok. 2018-09-02T16:52:05Z drmeister: At least I learned something. 2018-09-02T16:53:25Z drmeister returns to muddling through with his own flawed perspective of the world. 2018-09-02T16:54:20Z fikka joined #lisp 2018-09-02T16:55:21Z kajo joined #lisp 2018-09-02T16:56:13Z pjb: Weak references can reference not only live objects, but also zombies. 2018-09-02T16:56:28Z drmeister: Sorry - that all sounded a bit defensive - I appreciate the feedback very much. 2018-09-02T16:56:30Z pjb: weak references are not life-insuffling references. 2018-09-02T16:56:49Z phoe: drmeister: I understand how it is - no problem 2018-09-02T16:56:55Z pjb: weak-references are live-or-dead warrants :-) 2018-09-02T16:59:04Z azimut quit (Ping timeout: 240 seconds) 2018-09-02T16:59:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T17:01:28Z steiner quit (Remote host closed the connection) 2018-09-02T17:02:29Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T17:02:58Z FreeBirdLjj joined #lisp 2018-09-02T17:03:15Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T17:03:32Z FreeBirdLjj joined #lisp 2018-09-02T17:04:02Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T17:04:18Z FreeBirdLjj joined #lisp 2018-09-02T17:04:48Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T17:05:07Z FreeBirdLjj joined #lisp 2018-09-02T17:05:11Z fikka joined #lisp 2018-09-02T17:05:24Z drmeister: On a different topic: I swear, every time we (:use ...) anything other than :common-lisp in a defpackage - I've committed to spending time in the future ripping it out and dealing with explicitly adding the package name in front of symbols. 2018-09-02T17:05:34Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T17:05:53Z FreeBirdLjj joined #lisp 2018-09-02T17:06:07Z _death: yes, only :use :cl and packages controlled by yourself.. otherwise, :import-from 2018-09-02T17:06:21Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-02T17:06:58Z shka_: i simply have dedicated package in each project just to import and reexport ;-) 2018-09-02T17:10:00Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T17:11:15Z pjb: or let's use package versions in the package names… 2018-09-02T17:14:10Z johs joined #lisp 2018-09-02T17:15:49Z vsync: oooohhh http://www.sbcl.org/manual/#Package_002dLocal-Nicknames 2018-09-02T17:21:51Z pierpal quit (Read error: Connection reset by peer) 2018-09-02T17:23:17Z pierpal joined #lisp 2018-09-02T17:24:36Z lemonpepper24 joined #lisp 2018-09-02T17:24:53Z phoe: oh goodness 2018-09-02T17:24:59Z phoe: this wordnet code is so old it uses symbol properties 2018-09-02T17:25:06Z phoe: clhs get 2018-09-02T17:25:06Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_get.htm 2018-09-02T17:25:10Z pjb: I love it. 2018-09-02T17:25:15Z fikka joined #lisp 2018-09-02T17:25:30Z pjb: phoe: notice that since CL has packages, it just does not matter at all! 2018-09-02T17:26:05Z pjb: And while you keep optimizing your access time into O(1) slow gethash accesses, ccl readtable uses an a-list for reader macros… 2018-09-02T17:26:32Z pierpal quit (Client Quit) 2018-09-02T17:26:49Z phoe: pjb: I know it doesn't matter, it's just that I had to `clhs get` to remember what that part of CL does 2018-09-02T17:26:53Z pierpal joined #lisp 2018-09-02T17:29:00Z sz0 quit (Quit: Connection closed for inactivity) 2018-09-02T17:29:31Z rozenglass quit (Read error: Connection reset by peer) 2018-09-02T17:29:34Z azimut joined #lisp 2018-09-02T17:30:01Z fikka quit (Ping timeout: 246 seconds) 2018-09-02T17:30:30Z light2yellow joined #lisp 2018-09-02T17:30:37Z astalla joined #lisp 2018-09-02T17:35:40Z fikka joined #lisp 2018-09-02T17:36:07Z kuwze joined #lisp 2018-09-02T17:37:42Z nowolfer quit (Quit: leaving) 2018-09-02T17:40:03Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T17:40:29Z Denommus joined #lisp 2018-09-02T17:41:38Z light2yellow quit (Quit: light2yellow) 2018-09-02T17:45:42Z fikka joined #lisp 2018-09-02T17:48:13Z nika quit (Quit: Leaving...) 2018-09-02T17:50:17Z fikka quit (Ping timeout: 244 seconds) 2018-09-02T17:51:47Z it3ration joined #lisp 2018-09-02T17:55:41Z fikka joined #lisp 2018-09-02T17:56:37Z it3ration quit (Ping timeout: 246 seconds) 2018-09-02T18:00:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-02T18:06:31Z fikka joined #lisp 2018-09-02T18:08:06Z Oladon joined #lisp 2018-09-02T18:10:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-02T18:12:53Z azimut quit (Read error: No route to host) 2018-09-02T18:13:20Z cage_ quit (Quit: Leaving) 2018-09-02T18:15:34Z azimut joined #lisp 2018-09-02T18:16:20Z fikka joined #lisp 2018-09-02T18:19:10Z aeth: oni-on-ion: but there are lots of things that you would expect from an optimizing compiler in 2018 that SBCL does not yet (afaik) do, like when looping over short arrays of known length (e.g. 3), it doesn't loop unroll afaik even with (speed 3) (space 0). 2018-09-02T18:19:29Z lumm joined #lisp 2018-09-02T18:20:01Z oni-on-ion: whoa 2018-09-02T18:20:11Z oni-on-ion: ive heard that sbcl was really advanced 2018-09-02T18:20:41Z oni-on-ion: ive been impressed so far with julia's compiler , helped with its type system for knowing dispatch paths at compile time 2018-09-02T18:21:17Z fikka quit (Ping timeout: 244 seconds) 2018-09-02T18:21:52Z aeth: oni-on-ion: SBCL was really advanced, it's just that it has to keep up with the competition 2018-09-02T18:24:49Z oni-on-ion: why does it have to keep up? 2018-09-02T18:25:14Z oni-on-ion: ghc is advanced, ocaml is advanced, and gcc is advanced, erlang is advanced... those are single implementations though 2018-09-02T18:25:49Z oni-on-ion: julia as well. doesnt sbcl have limits of what it can do, considering how many kinds of lisp there could be ? 2018-09-02T18:26:53Z Bike: fundamental limits on compilers are due to basic CS theory 2018-09-02T18:27:01Z Bike: i don't know what "how many kinds of lisp there could be" is supposed to mean 2018-09-02T18:27:30Z aeth: oni-on-ion: If SBCL is 3x slower than C/C++ on some benchmarks then that means there's still room for improvements. 2018-09-02T18:28:21Z oni-on-ion: Bike: variations on lisp forms. for eg more strict syntax compilers have certain assumptions they can make 2018-09-02T18:28:44Z Bike: syntax is not relevant to most of the interesting parts of a compiler 2018-09-02T18:29:39Z oni-on-ion: say, being able to do (let ((..)) (defun ...)) and other acrobatics, i am thinking the compiler can find less opportunities for optimisation 2018-09-02T18:29:57Z Bike: closures make things hard, yes. that's semantics, not syntax. 2018-09-02T18:30:09Z oni-on-ion: whereas say haskell and julia compilers can make assumptions based on types 2018-09-02T18:30:13Z oni-on-ion: ah hmm 2018-09-02T18:30:14Z aeth: There might be a limit to CL because of its GC because different advanced GCs probably have different tradeoffs in what they can do. 2018-09-02T18:30:24Z Bike: types are not directly related 2018-09-02T18:30:27Z oni-on-ion: i thought sbcl was in the same "order of magnitide" as c, aeth 2018-09-02T18:31:03Z oni-on-ion: Bike: types being i guess semantics. which are helpful hints if not guarantees for a compiler to make 2018-09-02T18:31:32Z Bike: what a "type" is means different things in different languages. 2018-09-02T18:31:38Z aeth: oni-on-ion: Personally I think well-written SBCL is where C would be if C and C++ compilers didn't turn into incredibly ridiculous optimizations in recent years. That actually would be easy to test, though. Write the same thing in SBCL and in C with optimizations off (or perhaps a smaller, more minimal C compiler) 2018-09-02T18:31:42Z oni-on-ion: yes. yeah, not sure why that needs clarification 2018-09-02T18:32:04Z aeth: s/turn into/turn to/ 2018-09-02T18:32:41Z oni-on-ion: Bike: i guess an analogy: if i knew my way to the store, i can take shortcuts easily. if i dont know where i am going, this is a different story 2018-09-02T18:33:01Z oni-on-ion: aeth: hmm. 2018-09-02T18:33:04Z aeth: oni-on-ion: It's a bit of a lie to say that SBCL is as fast as Foo, though, because if you look at the SBCL that is benchmarked well, it has type declarations all over the place and is essentially statically typed in addition to dynamically typed. 2018-09-02T18:33:18Z aeth: It's probably not the CL style most people are writing. 2018-09-02T18:33:45Z oni-on-ion: aeth: yeah.. however i like the idea that one can write/prototype quickly , then amend and freeze in the types afterward 2018-09-02T18:35:37Z aeth: oni-on-ion: That would be great. I'd say the main weakness is that the "frozen" types are generally just lexical variables from things like a LET or a DEFUN, and not in data structures, though. The main exceptions are certain specialized array types and (possibly) slots with :type in defstruct since (iirc) slot accessors can be inlined because redefining a struct is undefined behavior. 2018-09-02T18:36:13Z oni-on-ion: ahh, true hmm. 2018-09-02T18:36:24Z aeth: Being able to notice a type that you're using for all of the contents (or keys!) for a hash table and make them specialized like an array would be nice. 2018-09-02T18:36:40Z fikka joined #lisp 2018-09-02T18:37:05Z p_l: aeth: ehhhh, it shows that something can be fast, and partially shows the amount of work needed 2018-09-02T18:39:19Z azimut quit (Ping timeout: 246 seconds) 2018-09-02T18:40:18Z azimut joined #lisp 2018-09-02T18:41:26Z fikka quit (Ping timeout: 244 seconds) 2018-09-02T18:43:54Z Bike: anyone know where the cffi issues tracker is? i don't see it on github 2018-09-02T18:43:57Z pjb: It's rather silly. Nowadays, when I want fast, I go cuda. 2018-09-02T18:44:15Z pjb: So a CL implementation would better integrate better with cuda, than optimize lisp code… 2018-09-02T18:45:05Z Jesin joined #lisp 2018-09-02T18:45:06Z p_l: Depends on the goal, but one could do some "little language" that compiled to PTX assembly, yes 2018-09-02T18:45:15Z aeth: p_l: If you're replying to the 3x slower means there's room for improvements, then yes, it is a lot of work, but there's afaik diminishing returns each time so even if C/C++ compilers (lumped together because they're usually the same compiler afaik) have the same rate of effort spent on them each year, they shouldn't really pull away from CL in performance, and CL might actually get closer over time. 2018-09-02T18:45:18Z p_l: Just like GCC does in recent versions 2018-09-02T18:46:10Z p_l: (Also, CUDA simply does not work in performant way once your work stops being nicely SIMD-able) 2018-09-02T18:46:36Z aeth: pjb: There should be more Lispy DSLs that target SPIR-V for Vulkan/OpenCL. (Forget CUDA, that's just nvidia. AMD and Intel need to step up and help promote the open standards more so nvidia is forced to follow them.) 2018-09-02T18:46:56Z pjb: And let's remember that this race to speed in C and its underlying processors, is what leads to the Meltdown bug et al. 2018-09-02T18:47:09Z pierpal quit (Ping timeout: 250 seconds) 2018-09-02T18:47:38Z PuercoPop: Bike: https://bugs.launchpad.net/cffi 2018-09-02T18:47:46Z Bike: Thank you 2018-09-02T18:47:54Z pjb: Getting correct results, and getting them safely, should be the only concern that should matter. 2018-09-02T18:48:26Z PuercoPop: At least that is where their website points to 2018-09-02T18:48:48Z azimut quit (Ping timeout: 245 seconds) 2018-09-02T18:48:57Z aeth: pjb: I'd say Meltdown/Spectre makes optimizing compilers like SBCL *more* important because the "free" hardware speedups can't be relied on if the price is security. 2018-09-02T18:49:23Z pjb: In a way… 2018-09-02T18:49:28Z Bike: yeah i'll just buy a machine with no branch predictor 2018-09-02T18:49:36Z pjb: Good luck! 2018-09-02T18:49:53Z Bike: this tracker has messages as of this summer, guess that's good enough 2018-09-02T18:50:14Z Bike: what i'm wondering about is, foreign-alloc has a compiler macro that works if the type is constant and the count is constant or not provided and nothing else is provided 2018-09-02T18:50:43Z Bike: hypothetically, if both are constant and :initial-contents is provided, it could still skip a runtime foreign-type-size and fill up the thing in a loop (maybe with a memcpy kind of function) 2018-09-02T18:51:17Z Bike: i thought i remembered someone complaining about this before, but it's not on the tracker that i can see 2018-09-02T18:51:26Z azimut joined #lisp 2018-09-02T18:53:44Z p_l: pjb: Meltdown had, IMO, more in common with Intel internal management practices than with optimising for C 2018-09-02T18:54:04Z pjb: It's the speed to race. 2018-09-02T18:54:07Z aeth: I think the 2020s is the decade when we have to rely on software to get the continuous performance improvements that we all expect in computing. I wouldn't be surprised if single-threaded hardware gets only 3x or 4x faster in 2030 vs. 2020. 2018-09-02T18:54:12Z pjb: The race to speed I mean. 2018-09-02T18:54:28Z pjb: If they weren't racing for speed, but for safetly, they'd implement a lisp machine processor. 2018-09-02T18:54:38Z pjb: Capabilities in the hardware. 2018-09-02T18:54:40Z SenasOzys quit (Ping timeout: 272 seconds) 2018-09-02T18:56:38Z p_l: pjb: it got lost in the deluge of claims about C being responsible, but it was cost-cutting at Intel that led (at least partially) to current state 2018-09-02T18:57:01Z fikka joined #lisp 2018-09-02T18:57:44Z p_l: I'd argue that part of why CL can get significant optimisation gains (and Java already does) is that it isn't hobbled by C's "emulate PDP-11" model which is only made performant by putting a shitton of undefined behaviour 2018-09-02T18:57:50Z aeth: p_l: Can you blame them for cost cutting if each process node is exponentially more expensive? 7 nm will only have a handful of companies. I wonder if by 5 nm we'll have one or two. 2018-09-02T18:57:54Z stacksmith: And general problem of corporate goals vs doing things right... 2018-09-02T18:58:10Z p_l: undefined behaviour whose "typical" behaviours are actually depended on by people 2018-09-02T18:58:16Z Xof joined #lisp 2018-09-02T18:58:26Z makomo joined #lisp 2018-09-02T18:58:34Z p_l: aeth: the cost-cutting happened when they were racing to reverse the NetBurst issue 2018-09-02T18:58:48Z jinkies quit (Ping timeout: 245 seconds) 2018-09-02T18:59:06Z p_l: and from time to time there were voices about letting the cpus return erroneous values for speed 2018-09-02T18:59:25Z p_l: aeth: there's even a lisp story in all of that, though I do not know if AMD still uses ACL2 2018-09-02T18:59:47Z aeth: p_l: On the other hand, CL does have a lot of mutability, including mutable dynamic global variables! So it has its own performance challenges. 2018-09-02T19:00:16Z shrdlu68 left #lisp 2018-09-02T19:00:20Z aeth: (in the multicore world, I mean) 2018-09-02T19:01:04Z aeth: I think the usual solution is that you can't actually rely on *foo* between threads 2018-09-02T19:01:04Z jmercouris quit (Ping timeout: 240 seconds) 2018-09-02T19:02:16Z fikka quit (Ping timeout: 272 seconds) 2018-09-02T19:06:09Z SenasOzys joined #lisp 2018-09-02T19:06:20Z p_l: aeth: but it doesn't really stop you if you work on CSP-style programs 2018-09-02T19:06:28Z p_l: which have significant benefits in NUMA world 2018-09-02T19:06:53Z p_l: (especially when you deal with things like the new 4-die threadrippers, which have significant differences between NUMA zones) 2018-09-02T19:08:20Z aeth: CSP? 2018-09-02T19:08:27Z p_l: some of the issues on them most people haven't seen since Marvel platform Alphas 2018-09-02T19:08:34Z p_l: aeth: Communicating Sequential Processes 2018-09-02T19:08:55Z aeth: ah, okay. There's quite a name conflict with that acronym. https://en.wikipedia.org/wiki/CSP#Computing 2018-09-02T19:11:45Z vlatkoB quit (Remote host closed the connection) 2018-09-02T19:11:46Z azimut quit (Ping timeout: 272 seconds) 2018-09-02T19:14:19Z existential1 joined #lisp 2018-09-02T19:14:43Z azimut joined #lisp 2018-09-02T19:15:05Z H4ns joined #lisp 2018-09-02T19:17:40Z fikka joined #lisp 2018-09-02T19:19:58Z doubledup quit (Remote host closed the connection) 2018-09-02T19:22:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T19:23:00Z orivej joined #lisp 2018-09-02T19:26:08Z Timzi joined #lisp 2018-09-02T19:26:27Z random-nick quit (Ping timeout: 240 seconds) 2018-09-02T19:28:09Z fikka joined #lisp 2018-09-02T19:28:42Z Timzi: what does the #| |# notation mean in CL? Seems like it runs shell code, but I'm having issues searching for docs 2018-09-02T19:29:02Z oni-on-ion: multiline comment 2018-09-02T19:29:03Z p_l: Timzi: block comment, like /* */ in C 2018-09-02T19:32:36Z aeth: It's uncommon because usually people use their tools to comment out multiple lines, e.g. M-x comment-region in emacs. And that uses the more common ;; line comment. 2018-09-02T19:33:09Z Timzi: so when it has bash commands inside that's just the shell reading through and executing what it finds? 2018-09-02T19:33:17Z Timzi: here's the snippet I'm looking at 2018-09-02T19:33:18Z fikka quit (Ping timeout: 272 seconds) 2018-09-02T19:33:21Z Timzi: https://codeshare.io/lisp 2018-09-02T19:34:55Z Timzi: @aeth that's probably why I haven't seen it I agree 2018-09-02T19:35:02Z aeth: that's someone being clever and having a file that's bilingual 2018-09-02T19:35:21Z aeth: #| is seen as a line comment to bash and a block comment to CL, so bash skips that line and CL skips until |# 2018-09-02T19:36:13Z Timzi: ohh okay that's quirky but I like the result 2018-09-02T19:36:22Z Timzi: thanks people! 2018-09-02T19:40:42Z pjb: p_l: nope. They're like (* *) in pascal. 2018-09-02T19:40:51Z pjb: p_l: everything's defective in C, even comments! 2018-09-02T19:43:27Z azimut quit (Ping timeout: 240 seconds) 2018-09-02T19:43:47Z azimut joined #lisp 2018-09-02T19:47:12Z pjb: Timzi: have a look at: https://github.com/informatimago/happy 2018-09-02T19:47:41Z pjb: Timzi: and more on-topic: https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/intersection-r5rs-common-lisp-emacs-lisp/index.html 2018-09-02T19:48:12Z fikka joined #lisp 2018-09-02T19:49:59Z regreg quit (Read error: Connection reset by peer) 2018-09-02T19:50:27Z azimut quit (Ping timeout: 240 seconds) 2018-09-02T19:50:55Z Timzi: pjb: very interesting, a four language program exploiting just the grammars 2018-09-02T19:51:39Z Timzi: the lisp one is neat too, might be worth switching to clisp just for the command line launcher lol 2018-09-02T19:52:35Z it3ration joined #lisp 2018-09-02T19:52:49Z fikka quit (Ping timeout: 246 seconds) 2018-09-02T19:55:56Z random-nick joined #lisp 2018-09-02T19:57:13Z light2yellow joined #lisp 2018-09-02T19:58:00Z it3ration quit (Ping timeout: 272 seconds) 2018-09-02T19:58:25Z makomo quit (Ping timeout: 246 seconds) 2018-09-02T19:58:37Z fikka joined #lisp 2018-09-02T20:03:42Z fikka quit (Ping timeout: 272 seconds) 2018-09-02T20:08:04Z orivej quit (Ping timeout: 240 seconds) 2018-09-02T20:08:10Z light2yellow quit (Quit: light2yellow) 2018-09-02T20:08:56Z fikka joined #lisp 2018-09-02T20:12:48Z makomo joined #lisp 2018-09-02T20:13:42Z shka_ quit (Ping timeout: 252 seconds) 2018-09-02T20:13:49Z fikka quit (Ping timeout: 250 seconds) 2018-09-02T20:15:06Z pierpal joined #lisp 2018-09-02T20:19:19Z fikka joined #lisp 2018-09-02T20:20:50Z existential1 quit (Quit: Leaving.) 2018-09-02T20:21:15Z azimut joined #lisp 2018-09-02T20:23:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T20:27:10Z jmercouris joined #lisp 2018-09-02T20:27:25Z jmercouris: let's say I have a list of 12 elements, how can I iterate through it 4 elements at a time? 2018-09-02T20:27:28Z jmercouris: ideally using loop macro, and not iterate 2018-09-02T20:28:04Z oni-on-ion: loop by 2018-09-02T20:28:28Z oni-on-ion: i dont have a mouse so i cannot search more detail, but there is a :by 2018-09-02T20:28:36Z jmercouris: I could use subseq of course.. 2018-09-02T20:28:43Z phoe: (loop for (a b c d) on list by #'cddddr ...) 2018-09-02T20:28:52Z jmercouris: oni-on-ion: doesn't :by just change the interval? 2018-09-02T20:29:09Z fikka joined #lisp 2018-09-02T20:29:10Z azimut quit (Read error: No route to host) 2018-09-02T20:29:17Z oni-on-ion: oops, one sec 2018-09-02T20:29:19Z Bike: for list iteration, it changes how you iterate. 2018-09-02T20:30:03Z azimut joined #lisp 2018-09-02T20:30:06Z oni-on-ion: just use loop in a macro for the 4 times. =P 2018-09-02T20:30:13Z jmercouris: lol 2018-09-02T20:30:21Z oni-on-ion: (loop ... `(loop ..)) 2018-09-02T20:30:26Z jmercouris: also I don't like the cdddr solution 2018-09-02T20:30:34Z jmercouris: though that does work 2018-09-02T20:30:35Z light2yellow joined #lisp 2018-09-02T20:30:46Z Bike: what about it do you not like 2018-09-02T20:31:13Z jmercouris: it just seems convoluted, I would look at the code later and wonder, why is it jumping by 4 cons cells?? 2018-09-02T20:31:27Z jmercouris: like, it isn't clear what the purpose is 2018-09-02T20:31:30Z Bike: because you want four elements at a time? 2018-09-02T20:31:38Z jmercouris: and I would still within the body need to traverse those four elements 2018-09-02T20:31:47Z trittweiler: jmercouris, I usually use (let ((the-list ...)) (loop while the-list for a = (pop the-list) for b = (pop the list) ... ) you can play with the exit condition depending how you want to deal with a list of length that is not a multiple of 4 2018-09-02T20:31:48Z Bike: er, what? 2018-09-02T20:31:51Z jmercouris: maybe I'm best off making a few cons' and making a list of lists 2018-09-02T20:31:58Z Bike: no, no, what are you even talking about 2018-09-02T20:31:58Z pjb: jmercouris: (loop for (a b c d) on list by (lambda (list) (nthcdr 4 list))) 2018-09-02T20:32:04Z light2yellow quit (Client Quit) 2018-09-02T20:32:31Z Bike: (loop for (a b c d) on '(1 2 3 4 3 3 3 3 1 2 1 2) by #'cddddr collect (+ a b c d)) => (10 12 6), is that not what you want? 2018-09-02T20:32:47Z jmercouris: that is not what I want 2018-09-02T20:32:53Z Bike: Oh. What do you want? 2018-09-02T20:33:32Z pjb: jmercouris: for complex walks, you might want to (coerce list 'vector)… 2018-09-02T20:33:35Z jmercouris: Instead of (a b c d), I'd like a symbol pointing to a list of length 4 2018-09-02T20:33:52Z pjb: for list-of-four instead of for (a b c d) 2018-09-02T20:33:55Z jmercouris: of course I could within the body do (list a c d) 2018-09-02T20:33:58Z Bike: oh, you'll have to allocate new sublists then. 2018-09-02T20:34:03Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T20:34:03Z Bike: so maybe list of lists would be better. 2018-09-02T20:34:05Z pjb: jmercouris: the key word here is :ON. 2018-09-02T20:34:11Z jmercouris: :ON? 2018-09-02T20:34:30Z aindilis joined #lisp 2018-09-02T20:34:33Z pjb: (loop for 4-elems ON list by #'cddddr ...) 2018-09-02T20:34:45Z jmercouris: ah 2018-09-02T20:34:51Z pjb: Oh, it's true that it gives all the rest. 2018-09-02T20:35:05Z pjb: so you'd have to (subseq 4-elems 0 4)… 2018-09-02T20:35:48Z jmercouris: so we are back to subseq :P 2018-09-02T20:35:57Z jmercouris: I'll just make the cons then, no big deal 2018-09-02T20:36:16Z jmercouris: I'll cache the sublists for efficiency 2018-09-02T20:36:42Z pjb: (loop for 4elems in (com.informatimago.common-lisp.cesarum.sequence:group-by (iota 22) 4) collect 4elems) #| --> ((0 1 2 3) (4 5 6 7) (8 9 10 11) (12 13 14 15) (16 17 18 19) (20 21)) |# 2018-09-02T20:37:28Z pjb: jmercouris: do you receive PMs? 2018-09-02T20:37:30Z p_l: aeth: btw, regarding drop in QA at intel: https://danluu.com/cpu-bugs/ 2018-09-02T20:37:46Z caltelt_ joined #lisp 2018-09-02T20:38:27Z jmercouris: pjb: Ah sorry, my modeline hadn't updated 2018-09-02T20:38:51Z _death: pjb: what's the point of the loop here 2018-09-02T20:39:48Z slyrus1 joined #lisp 2018-09-02T20:40:43Z pjb: _death: probably you will do something else than collect; Here collect is to show what's bound to 4elems. 2018-09-02T20:41:11Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-02T20:43:48Z caltelt_ quit (Ping timeout: 245 seconds) 2018-09-02T20:44:51Z Timzi left #lisp 2018-09-02T20:47:35Z regreg joined #lisp 2018-09-02T20:49:28Z fikka joined #lisp 2018-09-02T20:54:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T20:54:28Z svillemot quit (Quit: ZNC 1.6.5+deb1+deb9u1 - http://znc.in) 2018-09-02T20:55:23Z makomo: is it possible to use slime's in-place expansion features to expand local macros such as macrolets? 2018-09-02T20:56:09Z svillemot joined #lisp 2018-09-02T20:56:37Z Denommus` joined #lisp 2018-09-02T20:57:33Z Denommus quit (Ping timeout: 245 seconds) 2018-09-02T20:59:56Z phoe: makomo: yes 2018-09-02T20:59:58Z fikka joined #lisp 2018-09-02T21:00:03Z phoe: (macrolet ((foo (x) `(+ 2 ,x))) (foo 2)) 2018-09-02T21:00:21Z phoe: with cursor on the last "foo" I get the correct expansion, (macrolet ((foo (x) `(+ 2 ,x))) (+ 2 2)) 2018-09-02T21:00:29Z fikka quit (Read error: Connection reset by peer) 2018-09-02T21:00:45Z makomo: hmm, nothing happens for me 2018-09-02T21:01:03Z makomo: using SLIME 2.22 2018-09-02T21:01:04Z wigust quit (Ping timeout: 246 seconds) 2018-09-02T21:02:09Z makomo: i'm using slime-macroexpand-all-inplace btw 2018-09-02T21:02:58Z azimut quit (Ping timeout: 245 seconds) 2018-09-02T21:02:58Z random-nick quit (Ping timeout: 245 seconds) 2018-09-02T21:03:15Z makomo: slime-macroexpand-all works when my point is on the top-level form 2018-09-02T21:03:31Z pierpal quit (Ping timeout: 244 seconds) 2018-09-02T21:04:30Z phoe: macrostep-expand 2018-09-02T21:04:33Z phoe: that's what I use 2018-09-02T21:04:48Z lumm quit (Quit: lumm) 2018-09-02T21:06:52Z azimut joined #lisp 2018-09-02T21:07:35Z makomo: hmm, i'll have to check out all of the different macroexpansion functions slime provides 2018-09-02T21:08:48Z FreeBirdLjj joined #lisp 2018-09-02T21:10:11Z fikka joined #lisp 2018-09-02T21:15:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-02T21:15:24Z azimut quit (Ping timeout: 244 seconds) 2018-09-02T21:18:33Z existential1 joined #lisp 2018-09-02T21:19:25Z bradcomp joined #lisp 2018-09-02T21:23:15Z azimut joined #lisp 2018-09-02T21:25:31Z wigust joined #lisp 2018-09-02T21:25:57Z it3ration joined #lisp 2018-09-02T21:26:49Z it3ration quit (Remote host closed the connection) 2018-09-02T21:26:57Z it3ration joined #lisp 2018-09-02T21:28:14Z fikka joined #lisp 2018-09-02T21:29:17Z russellw joined #lisp 2018-09-02T21:33:49Z trittweiler: jmercouris, See pop-n at https://pastebin.com/PQHv4YJU - this will destructively modify the input and not cons 2018-09-02T21:34:54Z jmercouris: trittweiler: interesting approach, thanks for sharing 2018-09-02T21:38:02Z trittweiler: it goes through the list twice, though. Should store (nthcdr (1- ,num) ,old-head) in a variable tmp, then bind ,new-head to (cdr ,tmp) and change the setf down there to (setf (cdr ,tmp) nil) 2018-09-02T21:40:26Z makomo: place-based macros are really fun :D 2018-09-02T21:41:16Z makomo: this library i found today has some cool ones if you want to take a look and have some fun: https://www.hexstreamsoft.com/libraries/place-utils 2018-09-02T21:43:24Z makomo: phoe: seems like "macrostep" is the package i'm looking for (and the SLIME contrib which uses it, called slime-macrostep) 2018-09-02T21:43:49Z makomo: slime can do it by itself, but only if you use one of the *-all variants and by placing your point on the whole macrolet form 2018-09-02T21:44:32Z makomo: which isn't as neat because you can't do the expansion in steps obviously 2018-09-02T21:44:42Z j`ey joined #lisp 2018-09-02T21:45:20Z j`ey: is there a difference between (let ((n 0)), and (dotimes (n 1)..? 2018-09-02T21:45:38Z Bike: dotimes has an implicit tagbody and stuff 2018-09-02T21:45:39Z Bike: why? 2018-09-02T21:45:40Z j`ey: Im seeing behaviour that suggest there is, just not sure why 2018-09-02T21:46:04Z phoe: what do you mean? 2018-09-02T21:46:10Z j`ey: well I would have expected the code to act the same between the two 2018-09-02T21:46:18Z Bike: nope 2018-09-02T21:46:21Z j`ey: or is that a wrong assumption? 2018-09-02T21:46:23Z Bike: there's also an implicit block 2018-09-02T21:46:50Z rumbler31 joined #lisp 2018-09-02T21:46:51Z j`ey: what do you meant? 2018-09-02T21:46:54Z phoe: you can't RETURN from a LET 2018-09-02T21:46:56Z j`ey: *mean 2018-09-02T21:46:58Z phoe: but you can RETURN from a DOTIMES 2018-09-02T21:47:26Z j`ey: hm, looks like the other way around for me :P 2018-09-02T21:47:34Z Bike: then you are mistaken 2018-09-02T21:47:49Z Bike: (let ((n 0)) (return n)) => error 2018-09-02T21:47:50Z j`ey: ohh 2018-09-02T21:47:58Z Bike: a compile time warning, even 2018-09-02T21:48:12Z j`ey: does RETURN inside DOTIMES only "return" to the scope of the dotimes? 2018-09-02T21:48:16Z phoe: yes 2018-09-02T21:48:24Z j`ey: ahh 2018-09-02T21:48:30Z phoe: it returns to the scope of the most recently established block named NIL 2018-09-02T21:48:37Z phoe: which is exactly what DOTIMES implicitly establishes 2018-09-02T21:48:43Z no-defun-allowed: Hi Lithpers 2018-09-02T21:48:50Z j`ey: before the return from the let* was returning from the function 2018-09-02T21:48:52Z phoe: Hi no-dephun-allowed 2018-09-02T21:49:02Z phoe: j`ey: actually it's not supposed to either 2018-09-02T21:49:04Z j`ey: so is there a way to return from the entire function? 2018-09-02T21:49:11Z phoe: DEFUN establishes a block named after the function 2018-09-02T21:49:12Z Bike: (return-from name-of-function ...) 2018-09-02T21:49:19Z phoe: (defun foo () (return-from foo 42) 24) 2018-09-02T21:49:22Z j`ey: thanks 2018-09-02T21:49:23Z phoe: (foo) ;=> 42 2018-09-02T21:49:28Z Bike: your original code had something else going on, though 2018-09-02T21:49:34Z Bike: since normally there'd be no NIL block 2018-09-02T21:49:44Z j`ey: I have cond and let 2018-09-02T21:49:51Z Bike: can i see? 2018-09-02T21:49:51Z j`ey: and when and progn 2018-09-02T21:50:15Z j`ey: http://sprunge.us/ehttD0?scheme 2018-09-02T21:50:35Z Bike: it returned from the outer dotimes. 2018-09-02T21:50:38Z Bike: the (length moves) one. 2018-09-02T21:50:48Z j`ey: oh right 2018-09-02T21:51:03Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-02T21:51:11Z j`ey: thanks, works now 2018-09-02T21:51:18Z Bike: no problem. 2018-09-02T22:04:33Z dented42 joined #lisp 2018-09-02T22:04:48Z jmercouris quit (Ping timeout: 252 seconds) 2018-09-02T22:12:31Z v0|d quit (Remote host closed the connection) 2018-09-02T22:12:34Z existential1 quit (Quit: Leaving.) 2018-09-02T22:13:48Z iskander quit (Ping timeout: 245 seconds) 2018-09-02T22:15:23Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-02T22:19:20Z lnostdal quit (Read error: Connection reset by peer) 2018-09-02T22:27:46Z asarch quit (Quit: Leaving) 2018-09-02T22:33:39Z it3ration: I don't spose there are current bindings to vulcan / osx metal / et al for Common Lisp 2018-09-02T22:36:52Z pjb: Is it not implemented in CL? 2018-09-02T22:36:54Z pjb: Why not? 2018-09-02T22:37:04Z pjb: Implement it in CL! 2018-09-02T22:38:03Z AeroNotix: makomo: cool library 2018-09-02T22:38:27Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-02T22:38:34Z makomo: AeroNotix: yeah, i like it :-) 2018-09-02T22:39:13Z sauvin quit (Ping timeout: 245 seconds) 2018-09-02T22:39:31Z AeroNotix: I've wrote some of those in the past and literally just wrote my own UPDATEF 2018-09-02T22:41:15Z sauvin joined #lisp 2018-09-02T22:42:34Z aeth: it3ration: You probably don't want to use Metal. Just use a Foo->Metal wrapper like https://moltengl.com/moltenvk/ 2018-09-02T22:42:39Z Blukunfando quit (Ping timeout: 252 seconds) 2018-09-02T22:42:42Z aeth: Will Metal even still be around in 5 years? 2018-09-02T22:43:12Z aeth: it3ration: As far as Vulkan goes, there's https://github.com/3b/cl-vulkan/ but it's incomplete because most people just use OpenGL via https://github.com/3b/cl-opengl/ 2018-09-02T22:43:31Z aeth: For Vulkan's added performance to matter and be worth it (in exchange for added complexity) you need a very large application. 2018-09-02T22:43:33Z makomo: AeroNotix: WITH-RESOLVED-PLACES is also pretty cool, because it's basically ONCE-ONLY but for places -- it solves the multiple evaluation problem for subforms of a place 2018-09-02T22:43:44Z aeth: it3ration: Just use OpenGL imo 2018-09-02T22:43:56Z makomo: i wonder if a "better" name could have been chosen though, one similar to ONCE-ONLY 2018-09-02T22:44:07Z it3ration quit (Ping timeout: 240 seconds) 2018-09-02T22:44:09Z Bike: i'm not sure i understand how with-resolved-places is distinct from once-only 2018-09-02T22:44:46Z makomo: it does part of the job of a setf expander for you 2018-09-02T22:44:51Z j`ey: does CONTINUE work in DO-TIMES work like I would expect? 2018-09-02T22:45:01Z Bike: nope. 2018-09-02T22:45:07Z makomo: you don't have to manually call GET-SETF-EXPANSION, bind the exprs to temps, etc. 2018-09-02T22:45:28Z Bike: that is, if how you expect is to go to the next loop iteration, like in a C loop. 2018-09-02T22:45:31Z makomo: it does all of that for you, and just leaves you with the getter/setter forms 2018-09-02T22:45:42Z Bike: makomo: i'd probably have to use it 2018-09-02T22:45:55Z makomo: check out the example: https://www.hexstreamsoft.com/libraries/place-utils/#with-resolved-places 2018-09-02T22:46:00Z makomo: it's not correctly indented though 2018-09-02T22:46:04Z makomo: so it threw me off the first time 2018-09-02T22:46:06Z Bike: yeah, that was tripping me up 2018-09-02T22:46:14Z j`ey: Bike: that's what I expected 2018-09-02T22:46:40Z Bike: j`ey: usually we write loops so that continue isn't necessary- move conditions out, that kind of thing 2018-09-02T22:46:50Z Bike: j`ey: if that's not in the cards for you, you can use the implicit tagbody 2018-09-02T22:47:02Z Bike: (dotimes (...) ... (go continue) ... continue) 2018-09-02T22:47:10Z j`ey: im just going to wrap the body in an if for now 2018-09-02T22:47:17Z Bike: yeah, that's what i mean. 2018-09-02T22:47:23Z Bike: i'd prefer that to the tagbody. 2018-09-02T22:53:06Z pierpa joined #lisp 2018-09-02T23:01:28Z mange joined #lisp 2018-09-02T23:02:12Z pierpal joined #lisp 2018-09-02T23:06:27Z pierpal quit (Ping timeout: 240 seconds) 2018-09-02T23:09:53Z AeroNotix: makomo: so glad I found this library! There are a few macros I wanted to write myself but couldn't be bothered ;) 2018-09-02T23:10:08Z it3ration joined #lisp 2018-09-02T23:10:26Z makomo: AeroNotix: :-) 2018-09-02T23:13:11Z existential1 joined #lisp 2018-09-02T23:16:53Z rpg joined #lisp 2018-09-02T23:17:58Z it3ration quit (Ping timeout: 245 seconds) 2018-09-02T23:22:37Z phoe: so 2018-09-02T23:22:46Z phoe: this morning I found an olllld WordNet library 2018-09-02T23:23:19Z phoe: this evening I have a functioning Qtools interface to its modernized and bugfixed version 2018-09-02T23:23:22Z phoe: https://streamable.com/36uox 2018-09-02T23:23:31Z phoe: I consider this to be a good day 2018-09-02T23:24:04Z phoe: good night, #lisp 2018-09-02T23:24:28Z no-defun-allowed: night phoe 2018-09-02T23:28:57Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-02T23:29:26Z Oladon quit (Quit: Leaving.) 2018-09-02T23:31:01Z quazimodo joined #lisp 2018-09-02T23:31:50Z makomo: phoe: that's awesome. good night :-) 2018-09-02T23:36:27Z razzy quit (Ping timeout: 244 seconds) 2018-09-02T23:43:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-02T23:45:46Z it3ration joined #lisp 2018-09-02T23:49:45Z fikka joined #lisp 2018-09-02T23:51:30Z phenoble quit (Ping timeout: 264 seconds) 2018-09-02T23:53:27Z astalla quit (Ping timeout: 240 seconds) 2018-09-02T23:54:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-02T23:55:33Z emaczen quit (Read error: Connection reset by peer) 2018-09-02T23:56:09Z Kaisyu joined #lisp 2018-09-02T23:56:21Z phenoble joined #lisp 2018-09-02T23:56:54Z Copenhagen_Bram quit (Read error: Connection reset by peer) 2018-09-02T23:59:23Z fikka joined #lisp 2018-09-03T00:00:38Z smokeink joined #lisp 2018-09-03T00:04:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T00:06:57Z jinkies joined #lisp 2018-09-03T00:11:58Z emaczen joined #lisp 2018-09-03T00:15:47Z Copenhagen_Bram joined #lisp 2018-09-03T00:19:40Z fikka joined #lisp 2018-09-03T00:23:28Z Copenhagen_Bram quit (Read error: Connection reset by peer) 2018-09-03T00:24:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T00:25:31Z Copenhagen_Bram joined #lisp 2018-09-03T00:30:11Z fikka joined #lisp 2018-09-03T00:30:18Z makomo: Bike: on a second thought, WITH-RESOLVED-PLACES isn't exactly like ONCE-ONLY. the typical use case would be wanting to avoid multiple evaluation of subforms of a place within a macro -- for that you would use WITH-RESOLVED-PLACES within the expansion but with a gensym'd name for the binding 2018-09-03T00:31:50Z makomo: a place version of ONCE-ONLY would use WITH-RESOLVED-PLACES for you so you don't have to. in essence, WITH-RESOLVED-PLACES is like the LET within the final expansion -- the one that does the evaluation 2018-09-03T00:32:07Z makomo: i've created PLACE-ONLY, which automates that work: http://plaster.tymoon.eu/view/905#905 :-D 2018-09-03T00:33:38Z makomo: (...) like the LET at the beginning of the final expansion of a macro that uses ONCE-ONLY* 2018-09-03T00:34:12Z makomo: AeroNotix: you might find this interesting as well ^ 2018-09-03T00:35:24Z fikka quit (Ping timeout: 272 seconds) 2018-09-03T00:35:34Z makomo: PLACE-ONLY and ONCE-ONLY have a lot in common. perhaps another higher-order macro should be made to avoid code duplication -- triple backquotes? :^) 2018-09-03T00:36:56Z makomo: WITH-RESOLVED-PLACES and SETF-EXPANDERLET are damn cool 2018-09-03T00:38:12Z AeroNotix: I'm surprised a lot of these weren't included in the standard. Especially things like updatef/applyf 2018-09-03T00:40:34Z pierpa quit (Quit: Page closed) 2018-09-03T00:41:33Z makomo: true. it's also amazing how the setf expander machinery even allows you to design stuff like this today, a couple of decades afterwards 2018-09-03T00:44:01Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-03T00:45:15Z Bike: define modify macro is supposed to do updatef, since usually the function is fixed 2018-09-03T00:45:24Z pierpal joined #lisp 2018-09-03T00:48:34Z it3ration quit (Ping timeout: 240 seconds) 2018-09-03T00:49:40Z makomo: UPDATEF is almost like FUNCALLF, except that it doesn't take any extra arguments but allows multiple place-function pairs instead 2018-09-03T00:50:07Z fikka joined #lisp 2018-09-03T00:50:44Z lnostdal joined #lisp 2018-09-03T00:55:12Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T00:56:55Z ealfonso quit (Disconnected by services) 2018-09-03T00:57:12Z ealfonso joined #lisp 2018-09-03T00:57:47Z makomo: why doesn't EVERY have :start and :end keys ;__; 2018-09-03T00:58:04Z no-defun-allowed: cause it wouldn't be every then 2018-09-03T00:58:38Z makomo: hah 2018-09-03T00:59:41Z no-defun-allowed: it'd be, er, partly 2018-09-03T01:00:57Z fikka joined #lisp 2018-09-03T01:01:24Z Bike: because ti takes an arbitreary number of sequences and then it's messy 2018-09-03T01:01:25Z jinkies quit (Read error: Connection reset by peer) 2018-09-03T01:03:20Z makomo: Bike: ohh, good point 2018-09-03T01:05:39Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T01:10:52Z fikka joined #lisp 2018-09-03T01:11:29Z smokeink quit (Remote host closed the connection) 2018-09-03T01:14:49Z jinkies joined #lisp 2018-09-03T01:15:31Z fikka quit (Ping timeout: 246 seconds) 2018-09-03T01:16:51Z Oladon joined #lisp 2018-09-03T01:19:30Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-03T01:20:14Z makomo: are there any tricks to COND-like macros that would allow me to reuse certain variables from a COND clause's test-form? 2018-09-03T01:20:34Z makomo: for example, in order to test for a case i need to do an exepensive computation but also reuse it later on within the body of the clause 2018-09-03T01:20:49Z makomo: s/to/or/ 2018-09-03T01:21:20Z fikka joined #lisp 2018-09-03T01:22:19Z makomo: hm, i guess there's ACOND but it's not really what i want 2018-09-03T01:22:33Z makomo: basically i want a clause-wide LET 2018-09-03T01:24:03Z it3ration joined #lisp 2018-09-03T01:25:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T01:27:05Z loli: makomo: you could just let lazy variables that get evaluated in the cond test case 2018-09-03T01:27:21Z pjb quit (Remote host closed the connection) 2018-09-03T01:27:25Z makomo: that would work too, but it's a bit ugly :c 2018-09-03T01:27:45Z makomo: but i'll try to implement a macro over it :D 2018-09-03T01:27:47Z loli: I've done something similar to save (if (let (if (let into (let (cond 2018-09-03T01:28:28Z pjb joined #lisp 2018-09-03T01:30:26Z schjetne quit (Ping timeout: 268 seconds) 2018-09-03T01:31:19Z fikka joined #lisp 2018-09-03T01:31:53Z pierpal quit (Quit: Poof) 2018-09-03T01:32:11Z pierpal joined #lisp 2018-09-03T01:34:15Z it3ration quit (Ping timeout: 252 seconds) 2018-09-03T01:36:50Z fikka quit (Ping timeout: 272 seconds) 2018-09-03T01:41:21Z fikka joined #lisp 2018-09-03T01:45:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-03T01:47:28Z rumbler31 joined #lisp 2018-09-03T01:48:25Z Lycurgus joined #lisp 2018-09-03T01:50:14Z PuercoPop: makomo: there is cond-let 2018-09-03T01:50:39Z housel joined #lisp 2018-09-03T01:51:09Z it3ration joined #lisp 2018-09-03T01:51:34Z rumbler31 quit (Ping timeout: 246 seconds) 2018-09-03T01:51:44Z makomo: PuercoPop: unfortunately that introduces bindings which are visible to all of the clauses 2018-09-03T01:51:45Z fikka joined #lisp 2018-09-03T01:52:19Z fikka quit (Read error: Connection reset by peer) 2018-09-03T01:52:26Z makomo: welp, here's what i came up with: http://plaster.tymoon.eu/view/906#906 2018-09-03T01:53:06Z aeth: Is there a list somewhere of cities used for names of utility libraries? 2018-09-03T01:53:10Z potatonomicon joined #lisp 2018-09-03T01:53:14Z aeth: e.g. Alexandria is taken, Carthage is (afaik) not taken. 2018-09-03T01:53:35Z Bike: i thought alexandria had that name cos of the library. 2018-09-03T01:53:52Z aeth: yes 2018-09-03T01:54:00Z aeth: it's clearly a 'library of alexandria' pun 2018-09-03T01:54:18Z makomo: COND-LET is found within "serapeum" https://github.com/ruricolist/serapeum/blob/master/control-flow.lisp#L338 2018-09-03T01:54:26Z makomo: "Serapeum of Alexandria" 2018-09-03T01:54:29Z makomo: hah 2018-09-03T01:54:35Z Bike: not a city, tho 2018-09-03T01:54:39Z makomo: we must continue the tradition :D 2018-09-03T01:54:41Z makomo: true 2018-09-03T01:54:42Z aeth: Bike: but now it's time for a second-order pun, i.e. utility library for Common Lisp named after an ancient city because alexandria is 2018-09-03T01:54:49Z makomo: but anything related to alexandria will do :D 2018-09-03T01:55:07Z aeth: Bike: so even though there is no notable great library of Carthage, the name Carthage would be a fitting name for a utility library because alexandria is so notable 2018-09-03T01:55:07Z k-hos quit (Ping timeout: 240 seconds) 2018-09-03T01:55:11Z Bike: alexandria is still like, around 2018-09-03T01:55:20Z Bike: is carthage? i guess it would be in tunisia 2018-09-03T01:55:22Z Bike: doesn't look like it 2018-09-03T01:55:29Z aeth: carthage is in tunisia 2018-09-03T01:55:34Z potatonomicon is now known as k-hos 2018-09-03T01:55:37Z aeth: https://en.wikipedia.org/wiki/Carthage 2018-09-03T01:56:02Z Bike: modern municipality has a population on the order of that of my hometown 2018-09-03T01:56:04Z Bike: so nah 2018-09-03T01:56:06Z aeth: It actually got rebuilt and was one of the major cities of the Roman Empire. It would make a good name for a utility library because both Alexandria and Carthage were major Roman cities in Africa 2018-09-03T01:56:28Z it3ration quit (Ping timeout: 272 seconds) 2018-09-03T01:56:28Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-03T01:58:31Z jinkies quit (Remote host closed the connection) 2018-09-03T01:58:40Z aeth: Rome, Antioch, Carthage, Constantinople, etc. would make good names for CL utility libraries because Alexandria exists. Except, of course, if you called your library Rome it better be the best utility library in history. 2018-09-03T01:58:48Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-03T01:58:59Z Copenhagen_Bram joined #lisp 2018-09-03T02:01:11Z makomo: hm, i'm wondering whether it's possible to create a "conditional place". it would be named IFF and would be used like (IFF cond then-place else-place) 2018-09-03T02:01:25Z makomo: it would delegate to one of the two places depending on the truthness of cond 2018-09-03T02:02:00Z fikka joined #lisp 2018-09-03T02:02:10Z makomo: the expander for IFF can do some merging of the expansions for the two places, but i'm not sure how to avoid multiple evaluations of cond 2018-09-03T02:02:19Z makomo: because i don't know where i would put that evaluation 2018-09-03T02:02:44Z makomo: it would have to happen outside all of the expressions produced by the setf expander :^( 2018-09-03T02:06:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T02:08:22Z dale joined #lisp 2018-09-03T02:08:43Z it3ration joined #lisp 2018-09-03T02:11:06Z kajo quit (Ping timeout: 252 seconds) 2018-09-03T02:12:16Z joni joined #lisp 2018-09-03T02:12:26Z fikka joined #lisp 2018-09-03T02:12:55Z buffergn0me joined #lisp 2018-09-03T02:17:07Z fikka quit (Ping timeout: 246 seconds) 2018-09-03T02:22:31Z fikka joined #lisp 2018-09-03T02:22:51Z dddddd quit (Remote host closed the connection) 2018-09-03T02:23:39Z dented42 joined #lisp 2018-09-03T02:27:16Z fikka quit (Ping timeout: 246 seconds) 2018-09-03T02:32:28Z fikka joined #lisp 2018-09-03T02:36:36Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T02:37:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T02:37:10Z emaczen joined #lisp 2018-09-03T02:38:42Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-03T02:43:21Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T02:44:21Z emaczen joined #lisp 2018-09-03T02:48:29Z Copenhagen_Bram joined #lisp 2018-09-03T02:52:49Z fikka joined #lisp 2018-09-03T02:53:09Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-03T02:54:55Z Denommus` quit (Ping timeout: 246 seconds) 2018-09-03T02:57:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T02:59:48Z Xof quit (Ping timeout: 272 seconds) 2018-09-03T03:03:38Z fikka joined #lisp 2018-09-03T03:08:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T03:08:26Z rpg joined #lisp 2018-09-03T03:08:49Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T03:09:49Z Copenhagen_Bram quit (Ping timeout: 250 seconds) 2018-09-03T03:10:24Z aindilis quit (Remote host closed the connection) 2018-09-03T03:12:30Z Copenhagen_Bram joined #lisp 2018-09-03T03:16:18Z quazimodo quit (Ping timeout: 245 seconds) 2018-09-03T03:18:29Z quazimodo joined #lisp 2018-09-03T03:21:22Z emaczen joined #lisp 2018-09-03T03:23:40Z fikka joined #lisp 2018-09-03T03:26:11Z FreeBirdLjj joined #lisp 2018-09-03T03:28:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T03:30:34Z beach: Good morning everyone! 2018-09-03T03:30:50Z joni quit (Ping timeout: 272 seconds) 2018-09-03T03:31:42Z sabrac: Morning beach 2018-09-03T03:31:56Z bradcomp joined #lisp 2018-09-03T03:34:09Z fikka joined #lisp 2018-09-03T03:38:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T03:40:19Z Oddity quit (Ping timeout: 244 seconds) 2018-09-03T03:40:47Z no-defun-allowed: hi beach 2018-09-03T03:41:37Z ealfonso quit (Disconnected by services) 2018-09-03T03:41:54Z ealfonso joined #lisp 2018-09-03T03:46:53Z Oddity joined #lisp 2018-09-03T03:47:12Z p_l: beach: 'morning 2018-09-03T03:49:13Z Fare: 'night 2018-09-03T03:49:39Z Fare: Hello from the land of strong static types. 2018-09-03T03:50:00Z beach: Don't worry, you won't be lost forever. 2018-09-03T03:50:03Z no-defun-allowed: that doesn't sound like a fun place to live 2018-09-03T03:50:36Z aeth: Fare: the land of sb-ext:*derive-function-types*? 2018-09-03T03:53:18Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-03T03:54:09Z fikka joined #lisp 2018-09-03T03:54:53Z p_l: is it maybe the land of strong static types and dynamic scope for all practical purpose? 2018-09-03T03:56:46Z Lycurgus quit (Quit: Exeunt) 2018-09-03T03:57:02Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-03T03:58:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-03T04:02:01Z bradcomp quit (Ping timeout: 244 seconds) 2018-09-03T04:02:18Z Oddity quit (Ping timeout: 252 seconds) 2018-09-03T04:04:05Z makomo quit (Ping timeout: 244 seconds) 2018-09-03T04:04:56Z fikka joined #lisp 2018-09-03T04:09:09Z Oddity joined #lisp 2018-09-03T04:09:54Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T04:10:04Z bradcomp joined #lisp 2018-09-03T04:10:51Z Fare: I miss dynamic scope A LOT in OCaml. 2018-09-03T04:11:36Z Fare: The types are often a big burden, but they do come with nice benefits when you learn to go with them. 2018-09-03T04:11:52Z Fare: Like, large refactorings that just work. 2018-09-03T04:13:25Z ealfonso quit (Disconnected by services) 2018-09-03T04:13:43Z ealfonso joined #lisp 2018-09-03T04:14:25Z ealfonso` joined #lisp 2018-09-03T04:14:50Z fikka joined #lisp 2018-09-03T04:15:24Z ealfonso`: what is a recommended resource for CL best practices, like how to organize a project into packages, formatting conventions, linter? 2018-09-03T04:19:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T04:21:58Z SaganMan: Morning Peeps 2018-09-03T04:22:30Z p_l: Fare: heh, I had thought of Nix with that comment 2018-09-03T04:22:38Z SaganMan: ealfonso`: what kind of project are you working on? 2018-09-03T04:24:55Z ealfonso`: I wanted to factor out a youtube data api client library currently embedded into another project 2018-09-03T04:25:17Z fikka joined #lisp 2018-09-03T04:25:39Z ealfonso`: I just want to learn and follow best practices if there is a convention 2018-09-03T04:27:13Z beach: ealfonso`: I don't think there are any general guidelines. I use an ASDF file and a package file for each "module". 2018-09-03T04:27:36Z beach: ealfonso`: Then I use a global ASDF file for the entire project. 2018-09-03T04:28:03Z housel quit (Remote host closed the connection) 2018-09-03T04:28:10Z beach: ealfonso`: I stick each "module" in a separate directory in the file hierarchy. 2018-09-03T04:29:25Z beach: ealfonso`: If you want an example, I am pretty proud of Cluffer: https://github.com/robert-strandh/Cluffer 2018-09-03T04:29:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T04:30:48Z beach: ealfonso`: It also contains tests using my favorite testing technique (random test against a reference implementation), and documentation. 2018-09-03T04:35:21Z fikka joined #lisp 2018-09-03T04:37:00Z aeth: ealfonso`: the three styles are generally one-package-per-file (sometimes combined with package inferred system), one-package-per-directory, and one-package and everything top level. The latter two are the more popular styles. 2018-09-03T04:39:20Z ealfonso`: beach aeth thanks 2018-09-03T04:39:37Z aeth: ealfonso`: The compiler usually fills the role of the linter. Indentation is usually enforced by the editor, which is usually Emacs. 2018-09-03T04:39:55Z fikka quit (Ping timeout: 246 seconds) 2018-09-03T04:40:22Z aeth: (Some compilers, like SBCL, give style warnings.) 2018-09-03T04:40:46Z ealfonso`: I can look at a project like hunchentoot or beach's recommendation Cluffer as guidance. aeth that makes sense 2018-09-03T04:41:13Z ealfonso`: I probably just need to understand the packaging conventions and testing 2018-09-03T04:41:22Z loke: ealfonso: there are multiple packages conventions. My recommendation is that you create a single package for your project, and never IMPORT (or :USE) any packages. Always refer to symbols in other packages by a full PACKAGE:SYMBOL name. THat will reduce any problems. 2018-09-03T04:41:46Z igemnace joined #lisp 2018-09-03T04:43:04Z buffergn0me: Random tests against reference implementation is such an awesome thing to do whenever you can 2018-09-03T04:43:16Z beach: loke: Why a single package? I think that depends on the size of the project. Even for a modest-size project like Cluffer, I have 8 packages so that each "module" only exports its protocol. 2018-09-03T04:43:50Z Lycurgus joined #lisp 2018-09-03T04:44:01Z buffergn0me: One thing I would advise is to make your package names long and unambiguous 2018-09-03T04:44:06Z beach: buffergn0me: It is very powerful, yes, and it saves a lot of time trying to enumerate all test cases manually. 2018-09-03T04:44:34Z buffergn0me: Short package names should be left available to end users 2018-09-03T04:44:39Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-03T04:44:51Z beach: Right. I always prefix my package names and ASDF system definitions. Like in SICL, they are all named sicl-* and in Cluffer, they are all named cluffer-* 2018-09-03T04:45:22Z fikka joined #lisp 2018-09-03T04:46:09Z aeth: Iirc the style ASDF/UIOP prefers is foo/bar rather than foo-bar. So if the package represents the directory bar for the project foo, it would be foo/bar. 2018-09-03T04:46:12Z buffergn0me: Parenscript had a package named "JS" for a long time. Well of course JavaScript came out and also had a package named "JS" 2018-09-03T04:46:19Z loke: beach: Because one has to have a reasonably deep understanding of packages to make that work. Packages are actually quite difficult to understand for beginners, even though the concept is actually remarkably simple. 2018-09-03T04:46:37Z beach: loke: Who was talking about beginners? 2018-09-03T04:46:41Z quazimodo joined #lisp 2018-09-03T04:47:07Z buffergn0me: Glad I got rid of "JS" from Parenscript, still feeling bad about having a "PS" package though 2018-09-03T04:47:41Z aeth: it's fine until someone writes a way to generate postscript 2018-09-03T04:48:05Z loke: beach: It seemed ealfonso is a beginner, based on the questions he asked. 2018-09-03T04:48:13Z beach: Ah. 2018-09-03T04:49:20Z buffergn0me: aeth: Are there not any CL Postscript libraries? 2018-09-03T04:49:45Z buffergn0me: Anyway, "PS" is getting removed in two releases 2018-09-03T04:50:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T04:50:07Z buffergn0me: Also don't forget about the Java-style naming convention for packages. Another option 2018-09-03T04:50:37Z loke: buffergn0me: without package nicknames (not supported by all implementations) java-style packages are horrible. 2018-09-03T04:50:41Z beach: One neat trick is to do what Common Lisp itself does and also CLIM. There is one package that contains only the symbols that are exported. Then there are potentially several "implementation packages" that provide the real definitions of those symbols. But any symbols naming helper functions, helper classes, etc., are strictly private to the implementation packages. 2018-09-03T04:50:44Z no-defun-allowed: indeed 2018-09-03T04:51:45Z beach: That way, the "implementation packages" are totally independent and can be maintained separately without any risk of stepping on helper symbols in other implementation packages. 2018-09-03T04:53:10Z beach: So in SICL, to name an example, I have packages like sicl-clos, sicl-boot sicl-reader, sicl-printer, sicl-loop, sicl-format, etc. 2018-09-03T04:54:02Z loke: beach: with multiple backend “private” packages there is the question about which “private” sumbols should be exported though 2018-09-03T04:54:20Z beach: Sometimes they should. 2018-09-03T04:54:33Z loke: Because there is no way you can make a private package, well, “private”. That means that any exported symbols from a private package becomes candidates in code completion. 2018-09-03T04:55:06Z loke: I have resorted to using :: when having cross-package references between private packages. It's not ideal. 2018-09-03T04:55:28Z loke: CLIM works around it by having almost everything stuffed intop a single clim-itnernals package. 2018-09-03T04:55:30Z beach: There is no rule against exporting some symbols from those implementation packages. 2018-09-03T04:55:48Z beach: Like in sicl-loop, I export symbols that allow for customization of the LOOP expansion. 2018-09-03T04:56:04Z loke: beach: True, no rule. but... once they are exported, they end up being proposed in the symbol-completion of SLIME 2018-09-03T04:56:14Z beach: Sure, that's no problem. 2018-09-03T04:56:25Z beach: If they are exported, they are meant to be used. 2018-09-03T04:56:31Z loke: beach: But what if I have two private packages, let' 2018-09-03T04:56:55Z loke: beach: But what if I have two private packages, let's call then FOO and BAR... Now I have some functions in FOO that BAR should see, but they should never be exposed to regular users. 2018-09-03T04:56:59Z beach: The CLIM solution with a single implementation package is not ideal, because it defeats the independence I was referring to. 2018-09-03T04:57:11Z loke: I'd like those functions to remain completely non-exported 2018-09-03T04:57:30Z beach: loke: Then it is questionable whether you should have two packages. 2018-09-03T04:57:42Z beach: loke: What you need for that situation is first-class global environments. 2018-09-03T04:57:48Z loke: beach: Exactly. That's my point. 2018-09-03T04:58:05Z beach: Sure the package system does not solve all problems. 2018-09-03T04:58:13Z beach: ... which is why I invented first-class global environments. 2018-09-03T04:58:28Z loke: beach: right. that's pretty much the point I was trying to make; the package system could be better. 2018-09-03T04:58:42Z loke: beach: It's the right solution. 2018-09-03T04:58:42Z beach: loke: Oh, please don't go there. 2018-09-03T04:59:17Z loke: If only the implementations I use supported it... That's currently SBCL, ABCL and ECL (and sometimes CCL) 2018-09-03T04:59:21Z beach: " is not good in Common Lisp. We need an improved standard! Why did the creators of Common Lisp not think about that?" 2018-09-03T04:59:29Z loke: at least that's teh im,plementations I care about. 2018-09-03T05:00:10Z beach: loke: I have no influence over those. 2018-09-03T05:00:40Z beach: All I can hope for is that, once SICL exists, some of the techniques I use will be also be used by other implementations. 2018-09-03T05:00:42Z loke: beach: I know. I was just lamenting the fact that implementations are not following your lead here. 2018-09-03T05:00:43Z caltelt_ joined #lisp 2018-09-03T05:01:18Z beach: loke: It would require some significant work, so I can understand why they would be reluctant. 2018-09-03T05:02:14Z beach: loke: Using my fast generic dispatch might make it more practical to use generic functions, so that the implementation is more modular. That, too, will require a lot of work in existing implementations. 2018-09-03T05:04:47Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-03T05:06:05Z fikka joined #lisp 2018-09-03T05:07:24Z Inline quit (Quit: Leaving) 2018-09-03T05:08:13Z beach: The fundamental problem is that existing implementations are not very modular. Fundamental implementation decisions are scattered all over the code, as opposed to being isolated in separate modules. Therefore, changing one of those decisions requires looking at a large part of the code. 2018-09-03T05:09:44Z gpiero quit (Remote host closed the connection) 2018-09-03T05:09:50Z beach: Plus, for bootstrapping reasons, some code might be written in a subset of Common Lisp, like the compiler not using generic functions, for instance. Such restrictions make it very hard to work on the internals. 2018-09-03T05:10:44Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T05:10:48Z Lycurgus quit (Quit: Exeunt) 2018-09-03T05:11:48Z ebzzry joined #lisp 2018-09-03T05:20:52Z it3ration quit (Ping timeout: 246 seconds) 2018-09-03T05:21:03Z existential1 left #lisp 2018-09-03T05:23:04Z steiner joined #lisp 2018-09-03T05:26:03Z nirved joined #lisp 2018-09-03T05:26:20Z fikka joined #lisp 2018-09-03T05:28:04Z doubledup joined #lisp 2018-09-03T05:30:12Z steiner quit (Ping timeout: 252 seconds) 2018-09-03T05:31:24Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T05:45:03Z _whitelogger quit (Remote host closed the connection) 2018-09-03T05:46:41Z fikka joined #lisp 2018-09-03T05:47:17Z _whitelogger joined #lisp 2018-09-03T05:48:31Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-03T05:50:30Z quazimodo joined #lisp 2018-09-03T05:50:47Z eddof13 quit (Ping timeout: 240 seconds) 2018-09-03T05:51:33Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T05:52:11Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-03T05:53:30Z vlatkoB joined #lisp 2018-09-03T05:54:58Z jackdaniel: recently on cl-pro mailing list there was a suggestion, that dividing software into multiple packages gets in a way of the programmer 2018-09-03T05:55:41Z jackdaniel: I don't have a strong opinion on that topic, but there certainly is a merit in a claim, that juggling packages may be tedious and confusing (i.e answering the question "what is where?") 2018-09-03T05:57:00Z jackdaniel: loke: chaotic development (i.e without a centralized "lead") has some profound qualities, i.e it is more reisistant for mistakes and it grows in many different (competing) directions 2018-09-03T05:57:19Z jackdaniel: then you are able to "pick" something what suits you best, or there may raise a consensus what is "the right choice" 2018-09-03T06:00:25Z razzy joined #lisp 2018-09-03T06:04:34Z Arcaelyx quit (Ping timeout: 240 seconds) 2018-09-03T06:07:21Z fikka joined #lisp 2018-09-03T06:07:43Z orivej joined #lisp 2018-09-03T06:12:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T06:13:25Z it3ration joined #lisp 2018-09-03T06:16:27Z Bike quit (Quit: Lost terminal) 2018-09-03T06:16:48Z loke: jackdaniel: I find it hard enough to juggle when I'm doing personal projects. 2018-09-03T06:20:05Z buffergn0me: Another thing to consider is breaking up packages along domain specific language boundaries. 2018-09-03T06:20:47Z scymtym quit (Ping timeout: 240 seconds) 2018-09-03T06:21:31Z trittweiler quit (Ping timeout: 244 seconds) 2018-09-03T06:22:08Z aindilis joined #lisp 2018-09-03T06:23:06Z it3ration quit (Ping timeout: 272 seconds) 2018-09-03T06:23:40Z ludston joined #lisp 2018-09-03T06:27:42Z fikka joined #lisp 2018-09-03T06:32:21Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T06:32:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T06:32:59Z nika_ joined #lisp 2018-09-03T06:33:37Z crsc joined #lisp 2018-09-03T06:34:06Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-03T06:35:02Z ludston quit (Read error: Connection reset by peer) 2018-09-03T06:36:35Z emaczen joined #lisp 2018-09-03T06:38:51Z aeth: jackdaniel: I :USE internally even though USE in general is discouraged, so that gets around the major inconvenience of separate packages. 2018-09-03T06:39:10Z Copenhagen_Bram joined #lisp 2018-09-03T06:39:17Z aeth: i.e. my style rule is "USE" only "CL" and any internal package for the same project 2018-09-03T06:40:52Z aeth: Then the only inconvenience is what to export 2018-09-03T06:43:03Z aeth: I have some macros that greatly cut down on exports. It's mostly just the one macro for defining with-foo-accessors. (with-foo-accessors ((foo foo) (bar bar)) ...) behaves like with-accessors, except it will intern and prefix the accessor, so it's really (with-accessors ((foo foobar::my-foo-foo) (bar foobar::my-foo-bar)) ...) 2018-09-03T06:46:39Z trittweiler joined #lisp 2018-09-03T06:47:59Z fikka joined #lisp 2018-09-03T06:53:30Z fikka quit (Ping timeout: 272 seconds) 2018-09-03T06:54:36Z _death: this misses the point of packages, as can be seen by use of :: 2018-09-03T06:59:00Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T07:00:16Z shrdlu68 joined #lisp 2018-09-03T07:01:31Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-03T07:04:09Z scymtym joined #lisp 2018-09-03T07:05:57Z trittweiler quit (Ping timeout: 244 seconds) 2018-09-03T07:06:09Z emaczen joined #lisp 2018-09-03T07:06:27Z Copenhagen_Bram joined #lisp 2018-09-03T07:07:15Z _death: also, I find that with-accessors is a bad idea on several counts.. it's meant to lessen verbosity, but is itself verbose.. it's an under-the-carpet macro since the verbosity is a symptom of bad interface 2018-09-03T07:08:14Z aeth: _death: You don't see the :: 2018-09-03T07:08:25Z _death: or cramming too much code into the function's body 2018-09-03T07:08:45Z fikka joined #lisp 2018-09-03T07:09:08Z aeth: _death: having foo::bar internally in a macro is perfectly okay as long as it doesn't fit in any of the cases that makes (gensym) necessary 2018-09-03T07:09:12Z shka_ joined #lisp 2018-09-03T07:09:54Z _death: aeth: yes, but it means the user doesn't distinguish between external and internal symbols.. so no point in packages 2018-09-03T07:11:30Z aeth: _death: the only public way to access these symbols is through the macro 2018-09-03T07:11:53Z _death: it loses the idea of symbol identity, since the second symbol in the "binding" is used only for its name in another context.. this makes it difficult to distinguish internal and external, and to extend as well 2018-09-03T07:13:22Z _death: https://adeht.org/usenet-gems/data-hygiene.txt 2018-09-03T07:13:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T07:14:39Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T07:15:55Z fikka joined #lisp 2018-09-03T07:16:07Z shrdlu68 quit (Ping timeout: 240 seconds) 2018-09-03T07:17:05Z aeth: _death: Extensibility is a valid criticism of this sort of approach, but these aren't really meant for outside use. This gets around exporting issues when using many *internal* packages. 2018-09-03T07:17:33Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-03T07:17:48Z aeth: Extending these internal structure-objects and standard-objects will almost certainly break something. 2018-09-03T07:18:38Z _death: what are the exporting issues? 2018-09-03T07:19:03Z aeth: _death: make a package for every file and you soon find yourself writing packages with literally dozens of exported symbols 2018-09-03T07:19:32Z aeth: Most of these will be accessors needed in multiple files. 2018-09-03T07:20:03Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T07:20:03Z _death: I would say that this is a sign that you need to change your design 2018-09-03T07:20:13Z astalla joined #lisp 2018-09-03T07:20:21Z aeth: The alternative is dozens of function arguments :-) 2018-09-03T07:20:50Z _death: why do you have dozens of accessors 2018-09-03T07:20:59Z Copenhagen_Bram joined #lisp 2018-09-03T07:21:23Z aeth: _death: you only need a few large objects for something like that 2018-09-03T07:22:08Z _death: this leads to the obvious "why do you need large objects" 2018-09-03T07:22:19Z aeth: Consider window settings. There's title, width, height, fullscreen, vsync (if graphically accelerated), etc. 2018-09-03T07:22:31Z aeth: e.g. https://gitlab.com/zombie-raptor/zombie-raptor/blob/63e9a3906476b1e54040597e45636fd2da6c3417/core/settings.lisp 2018-09-03T07:23:03Z aeth: I mean, I could probably split that into (for example) three objects, but that just means I either pass in 3 objects instead of 1 or I have one object-of-objects and now have 3 more accessors! 2018-09-03T07:23:04Z _death: separation of concerns 2018-09-03T07:23:51Z aeth: I think most Lispers just would use a dozen global special variables, which is even more problematic 2018-09-03T07:24:13Z _death: or a plist 2018-09-03T07:25:12Z aeth: Notice that each element in the struct has a :type argument. This is checked reliably in some implementations. The plist approach would require a CHECK-TYPE at moment of access from the plist, in a different part of the program. 2018-09-03T07:25:30Z aeth: There's just a ton of complexity in a game engine, no matter how you choose to arrange it. 2018-09-03T07:26:22Z _death: if you want to deemphasize symbol identity, you can use keywords which is very easy to see the pros and cons of.. a macro like with-foo-accessors lets you "feel with but go without" (not sure about the english idiom for this..) 2018-09-03T07:26:46Z _death: *which make it very easy to see 2018-09-03T07:28:45Z emaczen joined #lisp 2018-09-03T07:29:01Z flamebeard joined #lisp 2018-09-03T07:29:45Z aeth: If I used keywords to abstract over struct and standard-object accessors, I would have to write a considerably more complicated macro than with-foo-accessors, and without the benefit of the reader basically seeing what I mean just by the name of it. 2018-09-03T07:30:23Z aeth: I mean, I do use keywords in other places. But that's basically as a part of a DSL. 2018-09-03T07:30:36Z _death: but the point is that you don't access your settings by having an accessor for each one 2018-09-03T07:31:52Z _death: and a Lisper could just use one special variable for holding them, by the way.. 2018-09-03T07:32:43Z _death: you don't need to do type checking at each access.. you can do it when you create or modify the object 2018-09-03T07:33:08Z aeth: Do you want zombie-raptor/core/settings:settings-title, an explicit import-from for the 5 settings you happen to access in that package, the package to :USE that package, etc? Pretty much every way to access is messy. 2018-09-03T07:33:33Z _death: (setting :title) 2018-09-03T07:33:43Z aeth: And I use zero special variables (besides redefinitions of *standard-output*/etc.) because they don't play nice with threads. 2018-09-03T07:33:57Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-03T07:34:02Z aeth: I can't even temporarily use them for temporary hacks because of the threading. 2018-09-03T07:34:23Z shka_: aeth: that's why you want to have minimal number of special variables 2018-09-03T07:34:30Z shka_: but for settings, one will do 2018-09-03T07:34:40Z Shinmera: ???? special variables work just fine with threads 2018-09-03T07:34:42Z _death: once again we see that we have different design values ;) luckily lisp allows both 2018-09-03T07:35:03Z aeth: Shinmera: afaik, only if you yourself are making the call to bordeaux-threads 2018-09-03T07:35:10Z Shinmera: what 2018-09-03T07:35:34Z shka_: aeth: you are having troubles rebinding special variables? 2018-09-03T07:37:30Z aeth: I had weird things happen with special variables and threads. Now I just take the extra few minutes to pass objects around and get better performance and a clearer idea with what's going on. 2018-09-03T07:38:31Z aeth: It actually isn't that big of a deal to pass a variable 6 levels down a call-stack as special variable proponents claim. 2018-09-03T07:38:59Z Shinmera: if that's what you believe 2018-09-03T07:39:07Z aeth: Special variables are very useful for I/O though 2018-09-03T07:39:26Z aeth: standard-output is essentially irrelvant 95% of the time, so it would just pollute the API 2018-09-03T07:40:15Z _death: I think settings is also a classic use case for special variables 2018-09-03T07:40:56Z _death: it is a big deal from the point of view of interactive development 2018-09-03T07:41:12Z _death: in addition to the fact that it's just clutter 2018-09-03T07:41:21Z aeth: That means that I would have to write my application with the assumption that the settings could change at any moment to anything. 2018-09-03T07:42:58Z _death: you are right that this is something to think about.. you can tell the user not to do that (this isn't java after all :).. or you could actually handle it correctly.. think Cells :) 2018-09-03T07:43:51Z _death: but I don't see how with-foo-accessors solve it 2018-09-03T07:44:19Z _death: or are you saying that you just won't pass a settings object there.. which then make it troublesome to inspect settings 2018-09-03T07:44:24Z vsync: aeth, _death: yes always consider vsync 2018-09-03T07:45:30Z aeth: _death: the easiest way to inspect this is to recompile a function to insert a (break) in the middle of it ime 2018-09-03T07:45:56Z aeth: otherwise there would be dozens of objects (not just settings) that would need to be saved into debug globals 2018-09-03T07:46:00Z _death: I mean for the function to inspect a setting 2018-09-03T07:46:49Z mange quit (Remote host closed the connection) 2018-09-03T07:47:51Z aeth: with-settings-accessors means that you just pass settings in. 2018-09-03T07:48:27Z aeth: it also means that it's very clear when something is accessing one 2018-09-03T07:48:57Z _death: in short you choose not to use the mechanism of special variables for something they are quite useful for (context).. many programmers do that, usually because they lack that mechanism.. and then there are programmers that make a conscious choice.. I think we can put Schemers in that category 2018-09-03T07:50:00Z aeth: _death: Special variables means that the whole program and all outsiders access settings. A settings object means only the functions that are passed the object (and, obviously, the programmer if debugging or whatever from the REPL) access it. 2018-09-03T07:50:31Z aeth: The whole world doesn't need access to vsync 2018-09-03T07:52:06Z aeth: *standard-output*, on the other hand, is useful for the whole world to have access to 2018-09-03T07:52:09Z Shinmera: ? special variables are still bound to a symbol, just like your macro 2018-09-03T07:52:41Z doubledup quit (Quit: Leaving) 2018-09-03T07:52:45Z aeth: Shinmera: I'm assuming _death wants it to be an exported symbol 2018-09-03T07:53:37Z _death: this is a familiar argument (protect the programmer from himself) and we can agree to disagree about it.. there is a small technical point that the special variable has a name like *settings* which may be imported or not and so there's a way to indicate use or not use 2018-09-03T07:53:38Z vsync is available to everyone! 2018-09-03T07:53:46Z vsync:#lisp- equal opportunity 2018-09-03T07:54:02Z aeth: vsync: you shouldn't be. You don't have earmuffs 2018-09-03T07:54:15Z vsync LOLs, dies 2018-09-03T07:54:31Z aeth: vsync: there's actually a correct response 2018-09-03T07:54:32Z aeth * 2018-09-03T07:54:56Z no-defun-allowed: Oh no, vsync died! My monitor's not syncing up now. 2018-09-03T07:55:09Z aeth: no-defun-allowed: now I have scanlines! 2018-09-03T07:55:43Z vsync: aeth: oh nice heh 2018-09-03T07:55:49Z aeth: _death: The programmer can do whatever they want in the CL environment, including access private things. This makes tests a lot easier to write, for instance. It also helps with REPL-based debugging, even though it might be annoying to write out a full package followed by :: 2018-09-03T07:56:00Z vsync: anyway +vsync+ because it must always be 60Hz which is the correct refresh rate 2018-09-03T07:56:03Z _death: we always used the term "vertical retrace" :) 2018-09-03T07:56:16Z aeth: vsync: the human eye can't see more than 30 Hz 2018-09-03T07:56:25Z vsync: pah false 2018-09-03T07:56:53Z vsync: _death: I think of vsync vblank vtrace as different aspects of the same thing 2018-09-03T07:56:55Z no-defun-allowed: Compare these two pictures. 2018-09-03T07:57:04Z aeth: vsync: a trinity of sorts 2018-09-03T07:57:08Z vsync: different avatars of the divine 2018-09-03T07:57:12Z vsync: heh beat me to it 2018-09-03T07:57:15Z _death: aeth: right.. and a special variable is transparent.. things that don't use it don't need to pass it around.. unlike a settings object where you need some non-users to pass it around to users 2018-09-03T07:57:47Z aeth: _death: nothing's stopping the user from saving it into cl-user::*settings* 2018-09-03T07:57:51Z _death: *settings parameter 2018-09-03T07:58:09Z _death: aeth: right.. but then he needs to pass it on his own to the "roots" 2018-09-03T07:58:38Z _death: aeth: and internally, there's also the need to pass it around.. like I said, this hurts interactive development 2018-09-03T07:58:41Z aeth: _death: in my architecture, everything's passed into the init. The programmer owns the data. I don't even support reading in textures. I might eventually but in all of my tests that needed it, I just load in a PNG myself. 2018-09-03T07:59:13Z aeth: _death: Since the programmer passes everything in, the programmer can save it into a special variable first 2018-09-03T08:00:01Z aeth: (I actually prefer saving it into a LET, though) 2018-09-03T08:01:08Z aeth: _death: That's also why I prefer structs with typed-slots or standard-objects with a metaclass that ensures that preconditions are held. I want errors to happen before passing the data in. 2018-09-03T08:01:34Z _death: vsync: does the number #x3DA says anything to you.. (maybe a more indicative notation, &H3DA) 2018-09-03T08:02:34Z Fare quit (Ping timeout: 246 seconds) 2018-09-03T08:03:48Z trittweiler joined #lisp 2018-09-03T08:04:04Z vsync: no :-( 2018-09-03T08:04:50Z p_l: aeth: human eye doesn't have fixed refresh rate or anything like that 2018-09-03T08:05:04Z aeth: p_l: but 24 is cinematic! 2018-09-03T08:05:15Z p_l: aeth: yes, and it involves being *trained* for it 2018-09-03T08:05:47Z p_l: it also involves the issue of uncanny valley of 2D display looking *too* real 2018-09-03T08:05:51Z vsync: well that but also it's effectively 48Hz/2 in its proper form 2018-09-03T08:06:05Z vsync: each frame displays twice with a shutter flicker in the middle 2018-09-03T08:06:17Z vsync: the flashing tricks your brain into interpolating motion in the interim 2018-09-03T08:06:41Z vsync: wonder if you could get ultimate frame rate by inserting a tiny flicker at some frequency 2018-09-03T08:07:19Z p_l: vsync: ultimate in what sense? which data channel are you even targeting? 2018-09-03T08:07:44Z aeth: p_l: I was joking about 30 Hz btw 2018-09-03T08:07:53Z p_l: aeth: Poe's law 2018-09-03T08:08:07Z vsync: real ultimate power 2018-09-03T08:08:55Z p_l notes that all of the data channels in visual path are continuous wave with various levels latency involved in processing them 2018-09-03T08:09:42Z aeth: continuous? So the ultimate is infinite? 2018-09-03T08:10:12Z _death: vsync: it was the port of the VGA status word register.. to wait for vertical retrace you'd wait for the 3rd bit to be set there 2018-09-03T08:10:16Z p_l: the fastest (pure motion matrix) had been recognized at 255 fps if not more 2018-09-03T08:10:47Z _death: vsync: many basic programs had a "wait &h3da, 8" statement :) 2018-09-03T08:11:02Z vsync: _death: oh cool, think the code I saw just hooked the interrupt 2018-09-03T08:11:10Z vsync: whatever Andre LaMothe told me to do 2018-09-03T08:12:40Z _death: (fourth bit, obviously) 2018-09-03T08:18:03Z SenasOzys quit (Remote host closed the connection) 2018-09-03T08:18:40Z it3ration joined #lisp 2018-09-03T08:22:18Z SenasOzys joined #lisp 2018-09-03T08:22:18Z SenasOzys quit (Remote host closed the connection) 2018-09-03T08:22:38Z fikka joined #lisp 2018-09-03T08:22:39Z SenasOzys joined #lisp 2018-09-03T08:23:27Z it3ration quit (Ping timeout: 244 seconds) 2018-09-03T08:23:57Z SenasOzys quit (Remote host closed the connection) 2018-09-03T08:24:22Z SenasOzys joined #lisp 2018-09-03T08:30:06Z lavaflow joined #lisp 2018-09-03T08:30:43Z zfree joined #lisp 2018-09-03T08:34:26Z shrdlu68 joined #lisp 2018-09-03T08:34:35Z shrdlu68: Running `sh make.sh` in the latest SBCL tarball from github says it can't run `git describe`. 2018-09-03T08:34:38Z lavaflow quit (Ping timeout: 245 seconds) 2018-09-03T08:34:52Z Shinmera: >>#sbcl 2018-09-03T08:35:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-03T08:37:49Z no-defun-allowed: The variable |>>#SBCL| is undefined. 2018-09-03T08:41:02Z shrdlu68: I have some code that runs in 14s in SBCL, and way too long in other implementations. It heavily (ab)uses a hashtable, I'm fairly certain that's the biggest factor in the difference. Now I'm curious what exactly makes SBCL's hash table faster. 2018-09-03T08:41:23Z shrdlu68: Probably their #'sxhash 2018-09-03T08:41:45Z Shinmera: sxhash is not actually used for hash tables 2018-09-03T08:42:38Z shrdlu68: Really? 2018-09-03T08:42:41Z Shinmera: and hash-tables with test equal or equalp are probably not tables at all, but trees. 2018-09-03T08:42:46Z Shinmera: yes 2018-09-03T08:43:31Z shrdlu68: I defined a custom hash table test and used sxhash with virtually indistinguishible results from :test #'equal 2018-09-03T08:46:23Z Shinmera: For one, the result of sxhash can change for some objects over time. 2018-09-03T08:47:15Z Shinmera: notably objects whose equivalence is not covered by equal 2018-09-03T08:47:34Z Shinmera: So standard-objects and so on 2018-09-03T08:48:11Z igemnace quit (Quit: WeeChat 2.2) 2018-09-03T08:48:26Z Shinmera: or rather, whose content-equivalence 2018-09-03T08:48:29Z shka_: sxhash is pointless in sbcl if eq is used 2018-09-03T08:49:23Z shrdlu68: I wonder where this massive difference stems from, then. In ECL, it runs for over 2m, I had to interrupt it. Similarly dismal on CCL. 2018-09-03T08:49:57Z Shinmera: profile it 2018-09-03T08:50:50Z jackdaniel: ecl is espcially bad with generic function dispatch, I would be suprised if hashtable were that much subpar 2018-09-03T08:50:53Z astalla quit (Ping timeout: 245 seconds) 2018-09-03T08:51:10Z _death: CL hash tables are complicated creatures.. several times I saw advice to implement your own hash tables and see resulting performance 2018-09-03T08:52:07Z shrdlu68: jackdaniel: Would or would not? 2018-09-03T08:54:35Z shrdlu68: Shinmera: I think I need a primer to profiling CL code. 2018-09-03T08:55:48Z fikka joined #lisp 2018-09-03T08:56:45Z jochens joined #lisp 2018-09-03T08:56:52Z shrdlu68: Ah, think I'll use Slime's profiling. 2018-09-03T09:00:31Z Shinmera: on sbcl the statistical profiler is very nice 2018-09-03T09:01:17Z shka_: yes 2018-09-03T09:01:24Z shka_: it is very useful 2018-09-03T09:03:27Z jackdaniel: shrdlu68: would be suprised, hash tables are optimized on ecl to a reasonable degree 2018-09-03T09:05:54Z ealfonso` quit (Ping timeout: 252 seconds) 2018-09-03T09:10:45Z sz0 joined #lisp 2018-09-03T09:26:57Z it3ration joined #lisp 2018-09-03T09:27:16Z shrdlu68: Now I'm even more curious. 2018-09-03T09:31:49Z it3ration quit (Ping timeout: 246 seconds) 2018-09-03T09:32:05Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T09:32:33Z emaczen joined #lisp 2018-09-03T09:33:44Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-03T09:36:10Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T09:36:24Z emaczen joined #lisp 2018-09-03T09:38:45Z Copenhagen_Bram joined #lisp 2018-09-03T09:39:27Z trocado quit (Ping timeout: 252 seconds) 2018-09-03T09:41:57Z Oladon quit (Quit: Leaving.) 2018-09-03T09:58:28Z DataLinkDroid joined #lisp 2018-09-03T10:11:30Z vsync: humph, gonna be lazy (did look for 30sec though) 2018-09-03T10:11:51Z vsync: signaling an error in primary method prevents after-methods from running correct? 2018-09-03T10:12:04Z vsync: and, 1 after-method to another? 2018-09-03T10:17:52Z trittweiler: The signaling not per se, but the handling will most likely involve a transfer of control - so yeah. 2018-09-03T10:20:43Z [X-Scale] joined #lisp 2018-09-03T10:22:33Z X-Scale quit (Ping timeout: 245 seconds) 2018-09-03T10:22:34Z [X-Scale] is now known as X-Scale 2018-09-03T10:22:48Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T10:26:40Z igemnace joined #lisp 2018-09-03T10:26:46Z regreg quit (Ping timeout: 246 seconds) 2018-09-03T10:27:56Z dale quit (Quit: dale) 2018-09-03T10:28:20Z shrdlu68: I profiled the code: https://gist.github.com/shrdlu68/081a78c6196b676395ca518a268d9119 2018-09-03T10:28:30Z regreg joined #lisp 2018-09-03T10:45:26Z FreeBirdLjj joined #lisp 2018-09-03T10:50:34Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T10:53:32Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-03T10:57:12Z emaczen joined #lisp 2018-09-03T11:01:15Z fikka joined #lisp 2018-09-03T11:02:55Z Copenhagen_Bram joined #lisp 2018-09-03T11:03:28Z vsync: trittweiler: hmm and what about a throw? 2018-09-03T11:03:44Z vsync: i throw from my primary method to my around-method and it doesn't skip the after-method :( 2018-09-03T11:04:25Z pierpal quit (Read error: Connection reset by peer) 2018-09-03T11:05:04Z vsync: oops nm I added the around-method to the wrong generic function 2018-09-03T11:09:39Z varjag joined #lisp 2018-09-03T11:09:45Z vsync: huh method qualifiers is a list 2018-09-03T11:16:33Z shka_: vsync: throw as signal? 2018-09-03T11:16:39Z shka_: because there is cl:throw 2018-09-03T11:17:17Z shka_: shrdlu68: you make a lot of hash-tables 2018-09-03T11:17:23Z shka_: are those small hash-tables? 2018-09-03T11:17:37Z nika_ quit (Quit: Leaving...) 2018-09-03T11:23:18Z quazimodo quit (Ping timeout: 272 seconds) 2018-09-03T11:24:05Z makomo joined #lisp 2018-09-03T11:24:23Z dddddd joined #lisp 2018-09-03T11:24:44Z quazimodo joined #lisp 2018-09-03T11:28:03Z it3ration joined #lisp 2018-09-03T11:28:52Z makomo: hello :-) 2018-09-03T11:29:17Z beach: Hello makomo. 2018-09-03T11:31:56Z shka_: makomo: good day 2018-09-03T11:32:35Z gector quit (Read error: Connection reset by peer) 2018-09-03T11:33:12Z it3ration quit (Ping timeout: 252 seconds) 2018-09-03T11:33:38Z gector joined #lisp 2018-09-03T11:33:43Z vsync: shka_: yeah I meant throw but it was just a silly mistake 2018-09-03T11:35:22Z shka_: shrdlu68: maybe you should not use hash-tables here at all 2018-09-03T11:44:20Z Bike joined #lisp 2018-09-03T11:46:43Z makomo: here's an idea i had, a "conditional place": https://plaster.tymoon.eu/view/908#908 2018-09-03T11:47:21Z makomo: i figured i can arrange the evaluation of the condition by injecting it into the temps/exprs values returned by the setf expander 2018-09-03T11:47:30Z makomo: figured out* 2018-09-03T11:49:03Z makomo: one thing i'm not sure about was a warning from SBCL i got which i can't reproduce now 2018-09-03T11:49:27Z caltelt_ quit (Ping timeout: 240 seconds) 2018-09-03T11:49:35Z Bike: hope the compiler is clever enough to collapse all those conditionals 2018-09-03T11:49:38Z makomo: it was warning about how "NIL is not a CONS" because it analyzed that WHEN and UNLESS might return NIL 2018-09-03T11:50:04Z oni-on-ion: interesting 2018-09-03T11:50:18Z makomo: Bike: yeah :/. i was thinking of somehow merging the temps/exprs as well, but i'm not sure if it's fixable 2018-09-03T11:50:34Z makomo: didn't investigate it yet fully 2018-09-03T11:54:37Z shrdlu68: shka_: It's one giant hash table. 2018-09-03T11:54:51Z shka_: shrdlu68: oh, ok 2018-09-03T11:55:19Z shka_: why though make-hash-table is almost at top? 2018-09-03T11:55:51Z shka_: you are reserving space in the hash table? 2018-09-03T11:55:55Z Xof joined #lisp 2018-09-03T11:57:27Z Bike: does the readf expander just return the getter from the setf expander 2018-09-03T11:57:28Z shka_: shrdlu68: ehem, :max-samples 10? 2018-09-03T11:57:43Z shrdlu68: Is that too small? 2018-09-03T11:57:47Z shka_: yes 2018-09-03T11:57:52Z Bike: guess it would need temps bound too 2018-09-03T11:58:13Z shka_: shrdlu68: those are rookie numbers 2018-09-03T11:58:13Z shrdlu68: shka_: Ok. Lemme try with 50. 2018-09-03T11:58:21Z shka_: shrdlu68: oh common 2018-09-03T11:58:27Z shka_: go with 10000 2018-09-03T11:58:40Z shrdlu68: Ok. 2018-09-03T12:04:34Z makomo: Bike: as an expander, yes, but in this case it's used as a macro that expands into code that gets the value of the place 2018-09-03T12:04:57Z Bike: the getter. right? that's what i'm asking 2018-09-03T12:05:11Z makomo: yeah, right 2018-09-03T12:05:17Z makomo: and i think this conditional place is finally a proper example of a place which you can't treat as a form and ev 2018-09-03T12:05:24Z makomo: (...) evaluate to get its value* 2018-09-03T12:06:12Z Bike: how do you figure 2018-09-03T12:06:18Z makomo: hm actually, idk. the macro IFF sort of does that actually 2018-09-03T12:06:48Z makomo: i was thinking of how you can get the value of the place "(car a)" just by evaluating the form "(car a)" 2018-09-03T12:07:09Z shrdlu68: shka_: I think this is more accurate: https://gist.github.com/shrdlu68/081a78c6196b676395ca518a268d9119 2018-09-03T12:07:12Z makomo: but you can do the same for "iff" just by writing that macro 2018-09-03T12:07:24Z Bike: i figured (iff a b c) would expand into (let* ((#:1 a) (#:2 (when #:1 b)) (#:3 (unless #:1 c))) (if #:1 #:2 #:3)) which is obviously just a more complicated (if a b c) 2018-09-03T12:08:02Z makomo: yeah, that should be it 2018-09-03T12:09:16Z shka_: shrdlu68: it does not look like it chookes on hash-table 2018-09-03T12:10:45Z Lycurgus joined #lisp 2018-09-03T12:10:59Z makomo: Bike: hm, i think i don't even need to rely on READF and the expander of IFF for the IFF macro 2018-09-03T12:11:13Z makomo: i can just expand into (if ,cond ,then ,else) 2018-09-03T12:11:38Z Bike: i'm not sure what readf is for, except i guess writing a complicated setf expander with complicated get, and wanting to not duplicate it 2018-09-03T12:12:25Z makomo: yeah, just a small utility. it's also used within SETF-EXPANDERLET i think 2018-09-03T12:12:46Z makomo: https://github.com/Hexstream/place-utils/blob/master/main.lisp#L25 2018-09-03T12:17:45Z ludston joined #lisp 2018-09-03T12:18:14Z jochens left #lisp 2018-09-03T12:21:21Z hypnon joined #lisp 2018-09-03T12:33:11Z Bike: boy, do i not understand what that's doing 2018-09-03T12:33:29Z Bike: or, i guess i kinda do, but it's pretty strange 2018-09-03T12:34:14Z shka_: beach: you there, perhaps? 2018-09-03T12:34:40Z shka_: how is your data structure book doing? 2018-09-03T12:35:10Z antoszka: makomo: that's scary :) 2018-09-03T12:35:45Z makomo: Bike: antoszka: yeah, it's pretty awesome :D 2018-09-03T12:42:21Z makomo: the places are implemented via macrolets that expand into a %READF form, which is either a call to the macro %READF or a %READF place 2018-09-03T12:47:50Z adam_erc joined #lisp 2018-09-03T12:48:07Z makomo: both of those just set a flag to trigger a different expansion of the macrolet, and the expansion is initiated by GET-SETF-EXPANSION 2018-09-03T12:48:24Z makomo: i think that's the trickiest part, the hidden macroexpansion within GET-SETF-EXPANSION 2018-09-03T12:48:41Z adam_erc: Having trouble using format with elisp... I am trying to escape out a % sign. 2018-09-03T12:48:57Z adam_erc: But this (format "%% %d" 30) only returns an error 2018-09-03T12:49:02Z Shinmera: See #emacs 2018-09-03T12:49:14Z Shinmera: This channel is for Common Lisp 2018-09-03T12:49:27Z adam_erc: "format string ends in middle of format specifier"? 2018-09-03T12:49:31Z adam_erc: Ah, okay. 2018-09-03T12:55:56Z shrdlu68: shka_: I'm not sure how this works, does it show the time taken in a function, taking into account the functions called by that function? 2018-09-03T12:56:50Z shrdlu68: If function A calls B, do we get the time spent in A outside the function call to B? 2018-09-03T12:57:04Z shka_: shrdlu68: number of samples 2018-09-03T12:57:07Z shka_: not time 2018-09-03T12:57:18Z shka_: that's why having one sample per second is not enough :-) 2018-09-03T12:57:51Z shka_: as for the second part of the question, different columns 2018-09-03T12:58:12Z shka_: you can check sbcl manual if you need to, but self is what is interesting for you 2018-09-03T12:58:26Z ebrasca quit (Remote host closed the connection) 2018-09-03T12:58:29Z shka_: because self shows time spent in the function itself (without subcalls) 2018-09-03T12:59:16Z m00natic joined #lisp 2018-09-03T13:03:39Z Lycurgus quit (Quit: Exeunt) 2018-09-03T13:05:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T13:08:11Z shrdlu68: Ah, says so right there in the manual. 2018-09-03T13:09:56Z igemnace quit (Quit: WeeChat 2.2) 2018-09-03T13:10:08Z igemnace joined #lisp 2018-09-03T13:17:32Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-03T13:25:06Z lavaflow joined #lisp 2018-09-03T13:25:30Z igemnace quit (Ping timeout: 252 seconds) 2018-09-03T13:28:56Z it3ration joined #lisp 2018-09-03T13:30:59Z igemnace joined #lisp 2018-09-03T13:31:33Z Bike quit (Ping timeout: 252 seconds) 2018-09-03T13:33:34Z it3ration quit (Ping timeout: 240 seconds) 2018-09-03T13:37:29Z flip214: The iterate darcs' tree has been renamed some time ago... see https://www.common-lisp.net/project/iterate/darcs/ 2018-09-03T13:37:40Z flip214: but the instructions still list that path as source 2018-09-03T13:37:45Z flip214: does anyone have an update for me? 2018-09-03T13:39:45Z xificurC quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2018-09-03T13:42:02Z phoe: pjb: I got a mail from naha. 2018-09-03T13:51:27Z ludston quit (Ping timeout: 240 seconds) 2018-09-03T13:54:23Z Bike joined #lisp 2018-09-03T13:57:02Z phoe: pjb: this is going to be a funny mail - asking https://tlo.mit.edu/ for FOSSing a piece of software written 23 years ago. (: 2018-09-03T14:04:45Z dim: which piece of software is that? 2018-09-03T14:05:16Z phoe: ftp://ftp.ai.mit.edu/people/naha/WordNet/WordNet.html 2018-09-03T14:05:25Z phoe: a portable Common Lisp interface to the WordNet database 2018-09-03T14:05:52Z phoe: I've been refurbishing it since yesterday and got satisfying results; now I'm trying to get an official license on it 2018-09-03T14:07:17Z kajo joined #lisp 2018-09-03T14:10:57Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-03T14:12:03Z jackdaniel: commendable effort 2018-09-03T14:18:09Z shka_: what is the origin of sxhash name? 2018-09-03T14:18:22Z shka_: sx prefix to be specific 2018-09-03T14:18:36Z Bike: it makes a hash of- oh. 2018-09-03T14:19:50Z Bike: well, it's in maclisp 2018-09-03T14:22:59Z schjetne joined #lisp 2018-09-03T14:24:24Z adam_erc quit (Remote host closed the connection) 2018-09-03T14:40:56Z rumbler31 joined #lisp 2018-09-03T14:46:59Z Roy_Fokker joined #lisp 2018-09-03T14:49:16Z SaganMan joined #lisp 2018-09-03T14:52:20Z joni joined #lisp 2018-09-03T14:54:05Z rippa joined #lisp 2018-09-03T14:55:19Z beach: shka_: I am here now. No progress on the book. 2018-09-03T14:55:52Z shka_: beach: thanks for info 2018-09-03T14:57:22Z beach: I am hoping my favorite coauthor will have time to set up the infrastructure for testing the algorithms this year. Last year, she was on an all-research year, so she was buy doing that. 2018-09-03T14:58:10Z _death: shka_: https://groups.google.com/forum/message/raw?msg=comp.lang.lisp/EoKU5n0lbJs/DGdyZ-lCuTEJ 2018-09-03T14:59:03Z shka_: _death: ok, interesting 2018-09-03T15:00:37Z _death: further confirmation from 1993 https://groups.google.com/forum/#!search/sxhash/comp.lang.lisp/oBHfPf0mnog/RC9uTGiMz_8J 2018-09-03T15:00:56Z shka_: _death: would love to read, but i have to go 2018-09-03T15:02:34Z shrdlu68 quit (Ping timeout: 240 seconds) 2018-09-03T15:02:52Z flamebeard quit 2018-09-03T15:03:19Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-03T15:03:32Z rumbler31 quit (Remote host closed the connection) 2018-09-03T15:03:46Z lumm joined #lisp 2018-09-03T15:05:58Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T15:07:33Z Copenhagen_Bram quit (Ping timeout: 245 seconds) 2018-09-03T15:10:31Z AeroNotix: beach: what infrastructure do you need? 2018-09-03T15:10:52Z beach: I am not sure. 2018-09-03T15:11:06Z Copenhagen_Bram joined #lisp 2018-09-03T15:11:18Z AeroNotix: What does it need to do? 2018-09-03T15:11:24Z beach: I want to make sure that all the algorithms shown in the book have been tested. 2018-09-03T15:11:43Z beach: I did that as part of compiling the text of the book, but I don't think that is the good way of doing it. 2018-09-03T15:12:30Z AeroNotix: beach: is the algorithm code stored separarely? 2018-09-03T15:12:34Z AeroNotix: i.e. in a git repo? 2018-09-03T15:12:39Z beach: Yes. 2018-09-03T15:12:42Z AeroNotix: link? 2018-09-03T15:12:53Z beach: Well, the book is not open source. 2018-09-03T15:12:57Z AeroNotix: Oh ok 2018-09-03T15:13:03Z beach: And the algorithms are stored with the book. 2018-09-03T15:13:07Z AeroNotix: gotcha 2018-09-03T15:13:22Z beach: The algorithms are written in Common Lisp and translated to my own algorithmic notation. 2018-09-03T15:13:52Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-03T15:14:50Z Lycurgus joined #lisp 2018-09-03T15:15:15Z Denommus joined #lisp 2018-09-03T15:18:48Z azimut quit (Ping timeout: 245 seconds) 2018-09-03T15:19:16Z emaczen joined #lisp 2018-09-03T15:20:41Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T15:21:46Z emaczen joined #lisp 2018-09-03T15:23:15Z fikka joined #lisp 2018-09-03T15:23:20Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-03T15:26:45Z Copenhagen_Bram joined #lisp 2018-09-03T15:27:28Z Inline joined #lisp 2018-09-03T15:27:38Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T15:28:34Z cage_ joined #lisp 2018-09-03T15:28:47Z pierpal joined #lisp 2018-09-03T15:28:54Z Inline quit (Read error: Connection reset by peer) 2018-09-03T15:29:50Z it3ration joined #lisp 2018-09-03T15:32:47Z sjl_ quit (Ping timeout: 240 seconds) 2018-09-03T15:33:42Z nika joined #lisp 2018-09-03T15:34:25Z it3ration quit (Ping timeout: 246 seconds) 2018-09-03T15:38:45Z sjl joined #lisp 2018-09-03T15:40:33Z SenasOzys quit (Ping timeout: 244 seconds) 2018-09-03T15:40:44Z makomo: Bike: regarding the SETF-EXPANDERLET thing, wouldn't this have to be wrapped with an EVAL-WHEN to be portable? https://github.com/Hexstream/place-utils/blob/master/main.lisp#L9 2018-09-03T15:40:54Z makomo: since the variable is used during macroexpansion 2018-09-03T15:41:14Z Bike: only if it's used within that file 2018-09-03T15:41:19Z Bike: doesn't look like it is 2018-09-03T15:43:35Z makomo: oh, right, forgot about that again... 2018-09-03T15:43:46Z makomo: right, nothing is actually using the macro 2018-09-03T15:45:33Z SenasOzys joined #lisp 2018-09-03T15:48:19Z steiner joined #lisp 2018-09-03T15:48:49Z rpg joined #lisp 2018-09-03T15:53:47Z pierpal quit (Ping timeout: 240 seconds) 2018-09-03T16:01:28Z igemnace quit (Quit: WeeChat 2.2) 2018-09-03T16:03:37Z gravicappa joined #lisp 2018-09-03T16:04:02Z rumbler31 joined #lisp 2018-09-03T16:06:14Z nowhere_man quit (Remote host closed the connection) 2018-09-03T16:06:24Z beach: So let's say that METHOD-COMBINATION is a class. Then presumably STANDARD, AND, PROGN, etc., would be instances of that class, right? But then, method combinations take options, so it would appear that a method combination metaobject is an instance of an instance of a class. 2018-09-03T16:06:38Z nowhere_man joined #lisp 2018-09-03T16:06:55Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-03T16:07:47Z Khisanth quit (Ping timeout: 240 seconds) 2018-09-03T16:08:01Z montxero quit (Ping timeout: 246 seconds) 2018-09-03T16:08:14Z beach: Let's call the last thing a "variant". FIND-METHOD-COMBINATION would check whether the name and the options describe and already existing variant and return it. DEFINE-METHOD-COMBINATION, on the other hand, would define an instance of METHOD-COMBINATION. Does this seem reasonable? 2018-09-03T16:08:38Z fikka joined #lisp 2018-09-03T16:09:09Z DataLinkDroid2 joined #lisp 2018-09-03T16:09:11Z Bike: you remember the els talk, right? 2018-09-03T16:09:18Z beach: I am reading the paper. 2018-09-03T16:09:30Z beach: And he sweeps a certain number of things under the rug. 2018-09-03T16:09:41Z Bike: less than the clhs does, though 2018-09-03T16:09:46Z beach: Sure. 2018-09-03T16:09:54Z Bike: mop find-method-combination 2018-09-03T16:09:54Z specbot: http://metamodular.com/CLOS-MOP/find-method-combination.html 2018-09-03T16:10:15Z beach: But he does not allow lambda lists in long method combinations, so no "use time" options. 2018-09-03T16:10:20Z Bike: i think he mentioned it, but find-method-combination makes more sense if it's called compute-method-combination 2018-09-03T16:10:28Z rumbler31 quit (Ping timeout: 245 seconds) 2018-09-03T16:10:30Z beach: I agree. 2018-09-03T16:10:36Z eddof13 joined #lisp 2018-09-03T16:10:47Z beach: Or ensure-method-combination perhaps. 2018-09-03T16:11:22Z Bike: is there any reason to have the "same" method combination use in two different generics be the actual same object, besides maybe saving some memory? 2018-09-03T16:12:11Z beach: There might be. Currently that is how it is done in SBCL according to Didier's paper. 2018-09-03T16:12:23Z beach: It is unappealing, for one thing. 2018-09-03T16:12:36Z Bike: unappealing to not cache? 2018-09-03T16:12:40Z beach: Yes. 2018-09-03T16:12:59Z Bike: how so? 2018-09-03T16:13:12Z DataLinkDroid quit (Ping timeout: 256 seconds) 2018-09-03T16:13:15Z FreeBirdLjj joined #lisp 2018-09-03T16:13:22Z beach: I have no strong argument to give. 2018-09-03T16:13:36Z Bike: mm 2018-09-03T16:13:46Z beach: Apparently, it works without a cache. The proof is that SBCL is doing it. 2018-09-03T16:13:56Z beach: But I think that's a minor detail. 2018-09-03T16:14:28Z beach: The main question is what kind of animal is the result of DEFINE-METHOD-COMBINATION and what kind of animal is returned by FIND-METHOD-COMBINATION. 2018-09-03T16:15:04Z beach: And I think DEFINE-METHOD-COMBINATION might make an instance of the class METHOD-COMBINATION. 2018-09-03T16:15:44Z beach: And, like I said, FIND-METHOD-COMBINATION might create a "variant" which is some kind of instance of the instance that was created by DEFINE-METHOD-COMBINATION. 2018-09-03T16:16:01Z beach: Whether that last thing is cached or not might be less important. 2018-09-03T16:16:12Z Bike: The way I think of it is that define-method-combination defines a kind of method combination, but the actual method combination objects have to be computed and have all the argument information. so they are "variants" so to speak. 2018-09-03T16:16:24Z beach: Yeah. 2018-09-03T16:16:30Z varjag joined #lisp 2018-09-03T16:16:46Z beach: The other possibility is for DEFINE-METHOD-COMBINATION to create a subclass of METHOD-COMBINATION rather than an instance. 2018-09-03T16:16:58Z beach: Then FIND-METHOD-COMBINATION would instantiate the class. 2018-09-03T16:17:00Z Bike: in ECL and Clasp's implementation, the things like "standard" and "progn" don't really exist as objects, there's mostly just a hash table that stores the expansion function and stuff, and then the actual method combination object is equipped with that when it's created. 2018-09-03T16:17:31Z beach: I see. 2018-09-03T16:18:03Z beach: Either way, there has to be some kind of dictionary to look things up given the name. 2018-09-03T16:18:10Z beach: So a hash table seems reasonable. 2018-09-03T16:18:22Z beach: I would obviously stick that table in a first-class global environment. 2018-09-03T16:19:19Z Bike: yeah, it's more the lack of objects I'm thinking about 2018-09-03T16:19:24Z beach: Sure. 2018-09-03T16:19:44Z beach: But that would not be very SICL-like, now would it? :) 2018-09-03T16:19:47Z Bike: I think the "general" things are different from the specific "variants"- classes is one way I guess 2018-09-03T16:20:02Z Bike: yeah, just throwing functions in there is obviously not what you're going to go with 2018-09-03T16:20:13Z housel joined #lisp 2018-09-03T16:20:20Z Bike: there's other information like the documentation 2018-09-03T16:20:28Z beach: Yeah. 2018-09-03T16:20:50Z Khisanth joined #lisp 2018-09-03T16:23:19Z dim: beach: you're contemplating making every function (operator?) a generic function the same way that any data type is usable as an object? 2018-09-03T16:25:17Z beach: I am not considering making every Common Lisp function generic, no. I am not sure what it means for any data type to be usable as an object. I can't see how (integer 2 3) would be an object, other than in the trivial sense that it is a list of 3 elements. 2018-09-03T16:25:26Z pierpal joined #lisp 2018-09-03T16:26:04Z beach: There are plenty of functions that can't really be generic. 2018-09-03T16:26:24Z dim: my vocabulary on those concepts is lacking, maybe I should consider reading the mop someday… 2018-09-03T16:26:25Z beach: Like +, *, list 2018-09-03T16:26:49Z dim: why can + not be generic? 2018-09-03T16:27:01Z beach: Because it can take 0 arguments. 2018-09-03T16:27:21Z beach: There would be no required parameters. 2018-09-03T16:27:22Z dim: oh. 2018-09-03T16:27:30Z beach: So there would be no way to specialize a method. 2018-09-03T16:28:07Z zfree quit (Quit: zfree) 2018-09-03T16:28:13Z beach: Dylan handled it by making + a function and then binary-+ generic 2018-09-03T16:28:17Z dim: in math the zero-argument result of the + function would be named the neutral element in the group, right? 2018-09-03T16:28:24Z beach: Right. 2018-09-03T16:28:27Z dim: (N, +, 0) would be such a group 2018-09-03T16:28:43Z Bike: but it's not clear what the group is. fixnums and floats are different groups (i don't think floats actually form a group, but w/e) 2018-09-03T16:29:14Z dim: so maybe that's the missing piece that would allow for a generic +, where your specification would allow for a “neutral element” to be defined for any data type (integer, defclass instance, etc)? 2018-09-03T16:29:17Z beach: I am still interested in getting good performance, and I don't know how to do that without inlining and I don't know how to inline generic functions. 2018-09-03T16:29:22Z dim: I don't know, throwing ideas at you 2018-09-03T16:29:31Z Bike: dim: even if that was defined, there'd be no way to tell what data type is in use 2018-09-03T16:29:44Z dim: Bike: true that 2018-09-03T16:31:02Z beach: dim: I will make things like SYMBOL-NAME and SYMBOL-PACKAGE generic though, simply because it is easier to do that than to make them non-generic in SICL. Plus, the generic function would not do any more work than an ordinary function would do. 2018-09-03T16:31:39Z beach: Same with accessors on packages. 2018-09-03T16:33:14Z makomo: beach: what do you think about Fare's LIL? is it a feasible approach? i think i remember watching part of his 2-3 hour stream about LIL 2018-09-03T16:33:48Z beach: (defclass symbol () ((%name ... :reader symbol-name) (%package ... :reader symbol-package)) (:metaclass built-in-class)) 2018-09-03T16:34:08Z beach: makomo: I haven't watched it. 2018-09-03T16:34:32Z beach: makomo: But I think Fare's goals are very different from mine. 2018-09-03T16:35:03Z shka_ joined #lisp 2018-09-03T16:35:12Z shka_: good evening 2018-09-03T16:35:13Z beach: makomo: I would have watched it if I knew about its existence. 2018-09-03T16:35:21Z beach: Hey shka_. 2018-09-03T16:35:26Z pjb: The 0-ary CL:+ doesn't prevent to define a generic function SI:+ taking 1 or more arguments, with (defun cl:+ (&rest args) (if (zerop (length args)) 0 (apply (function si:+) args))) and to document it. If enough implementation do that, we could even standardize it! 2018-09-03T16:35:38Z makomo: beach: not to be rude, but i thought i heard your voice on the stream :-) https://www.youtube.com/watch?v=kV63Mf5Qb2Q 2018-09-03T16:36:01Z shka_: oh, LIL 2018-09-03T16:36:02Z beach: pjb: I think that is what I meant when I described what Dylan does. 2018-09-03T16:36:02Z makomo: (based on your voice from the other talks of yours i watched) 2018-09-03T16:36:08Z papachan joined #lisp 2018-09-03T16:36:10Z beach: pjb: Or something similar. 2018-09-03T16:36:28Z shka_: LIL is interesting piece of design 2018-09-03T16:36:54Z makomo: beach: yeah, i don't think fare's LIL is directly related to what you're talking about currently 2018-09-03T16:37:18Z stylewarning: dim: nitpick: for associative functions that allow “zero arguments”, you only need monoidal structure, not group structure 2018-09-03T16:37:19Z makomo: but i wonder whether it's a feasible design given the potential overhead of GFs, etc. 2018-09-03T16:37:35Z oni-on-ion quit (Quit: WeeChat 1.9.1) 2018-09-03T16:37:45Z shka_: makomo: "potential overhead" 2018-09-03T16:37:45Z beach: makomo: Sounds plausible. I was definitely at ILC. 2018-09-03T16:37:47Z makomo: (i haven't benchmarked anything, just throwing it out there as a question) 2018-09-03T16:37:57Z makomo: shka_: yeah, definitely :D 2018-09-03T16:38:00Z beach: makomo: I must have forgotten about LIL. 2018-09-03T16:38:05Z shka_: makomo: this overhead is not all that bad 2018-09-03T16:38:20Z shka_: it is acceptable for a lot of use cases 2018-09-03T16:38:32Z dim: stylewarning: I know nothing of monoids, only was taught groups and some other basic stuff 20+ years ago 2018-09-03T16:38:32Z Jesin quit (Quit: Leaving) 2018-09-03T16:38:40Z makomo: shka_: i mean definitely for the quotes around "potential overhead" :-) 2018-09-03T16:38:43Z makomo: shka_: yeah, true 2018-09-03T16:38:47Z beach: makomo: Oh, but wait, he said "New York City". I haven't been there for ages. 2018-09-03T16:38:50Z shka_: GF dispatch is plenty fast for majority of tasks 2018-09-03T16:38:51Z dim: stylewarning: thanks for your comment though, maybe I'll look into that some day 2018-09-03T16:39:15Z makomo: beach: i have no idea. let me find the part that reminded me of you 2018-09-03T16:39:26Z stylewarning: dim: a group is a monoid when you add the ability to invert elements 2018-09-03T16:39:30Z makomo: beach: also, i think this is a recreation of the talk? 2018-09-03T16:39:34Z makomo: i.e. given over the web as a stream 2018-09-03T16:39:43Z ebrasca joined #lisp 2018-09-03T16:39:54Z shka_: and LIL is worth studying because it is a very sound way to develop certain class of protocols 2018-09-03T16:40:01Z shka_: not all 2018-09-03T16:40:06Z shka_: but certain 2018-09-03T16:40:55Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-03T16:41:16Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-03T16:42:38Z beach: makomo: I shall have to watch it some other time. Dinner is imminent. 2018-09-03T16:42:41Z makomo: btw, it appears the talk lasts about 1h 30m, i don't know why i thought it was longer 2018-09-03T16:42:53Z makomo: beach: bon appetit! :-) 2018-09-03T16:43:01Z beach: Thanks. 2018-09-03T16:44:55Z emaczen quit (Read error: Connection reset by peer) 2018-09-03T16:45:40Z makomo: beach: ah, this is the 2h 30m one, but it's about ASDF https://www.youtube.com/watch?v=Qqqbc31ZZ-U 2018-09-03T16:45:43Z dim: stylewarning: what would be the invert of an element in ℕ? 2018-09-03T16:45:57Z makomo: beach: but i'm not sure anymore whether i heard your voice or not, maybe i confused you for someone else :-) 2018-09-03T16:45:58Z emaczen joined #lisp 2018-09-03T16:46:07Z stylewarning: dim: with respect to +, it would be the negative 2018-09-03T16:46:19Z stylewarning: Whatever x satisfies n + x = 0 2018-09-03T16:46:31Z Copenhagen_Bram quit (Ping timeout: 246 seconds) 2018-09-03T16:46:35Z dim: so the invert would then be what is named usually the opposite in there, interesting 2018-09-03T16:46:45Z beach: makomo: It doesn't seem plausible. 2018-09-03T16:47:10Z beach: makomo: If it turns out to be true, I will go seek professional help for my bad memory. 2018-09-03T16:47:14Z stylewarning: makomo: beach sounds like a professor and someone who thinks about compilers sometimes 2018-09-03T16:47:28Z makomo: beach: haha :-) 2018-09-03T16:48:00Z makomo: stylewarning: :-) 2018-09-03T16:49:56Z makomo: stylewarning: oh, since you mentioned abstract algebra, i want to ask: what do you think is the relation (or is there any) between Lisp and abstract lagebra/category theory/etc., compared to the same thing but with Haskell for example? 2018-09-03T16:50:13Z Copenhagen_Bram joined #lisp 2018-09-03T16:50:26Z makomo: the question is probably vague but maybe you can understand/guess what i'm getting at 2018-09-03T16:50:46Z ebrasca quit (Remote host closed the connection) 2018-09-03T16:51:19Z stylewarning: makomo: I think there’s no intrinsic relationship, except that Lisp being dynamically typed allows you to get away with implementing broader protocols for algebraic structures 2018-09-03T16:51:40Z ebrasca joined #lisp 2018-09-03T16:51:43Z doubledup joined #lisp 2018-09-03T16:52:31Z Bike: haskell has a pretty specific relation through curry howard correspondence 2018-09-03T16:52:37Z stylewarning: makomo: Haskell type classes are limiting because they force you to choose one implementation that you want to be polymorphic over (in other words, you can only create one Group over Integer as a type class, even though integers have many such group operations) 2018-09-03T16:52:38Z makomo: stylewarning: do you say that because nobody ever formalized Lisp in those terms or? and would you say that Haskell does have such a relationship? 2018-09-03T16:53:25Z stylewarning: makomo: I say it because Lisp lets you implement things that arent adhering to a strict static type system 2018-09-03T16:54:05Z makomo: Bike: mhm 2018-09-03T16:54:44Z stylewarning: Standard ML lets you get a bit further than Haskell on this front by having “parameterizable signatures” called “functors” 2018-09-03T16:54:49Z makomo: stylewarning: i see 2018-09-03T16:55:13Z makomo: haven't looked into S(ML) yet 2018-09-03T17:01:21Z dim: you might have fun reading about Mythril if you're interested into SML family, https://mythryl.org/my-Executive_summary_.html 2018-09-03T17:01:58Z dim: https://mythryl.org/index3.html might be a better link 2018-09-03T17:04:06Z m00natic quit (Remote host closed the connection) 2018-09-03T17:08:37Z arbv joined #lisp 2018-09-03T17:09:44Z fikka quit (Ping timeout: 272 seconds) 2018-09-03T17:14:35Z DataLinkDroid3 joined #lisp 2018-09-03T17:14:36Z random-nick joined #lisp 2018-09-03T17:17:48Z DataLinkDroid2 quit (Ping timeout: 256 seconds) 2018-09-03T17:26:06Z flip214: when interrupting QL during download of packages, and later on retrying (ql:update-all-dists), it just says "already updated" - and not-yet-downloaded packages are kept in the old version. 2018-09-03T17:26:11Z flip214: is that a known problem? 2018-09-03T17:30:47Z it3ration joined #lisp 2018-09-03T17:32:11Z pierpal quit (Quit: Poof) 2018-09-03T17:32:28Z pierpal joined #lisp 2018-09-03T17:34:46Z kristof joined #lisp 2018-09-03T17:35:28Z it3ration quit (Ping timeout: 245 seconds) 2018-09-03T17:36:52Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-03T17:36:56Z asarch joined #lisp 2018-09-03T17:39:05Z scymtym quit (Ping timeout: 250 seconds) 2018-09-03T17:40:30Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-03T17:41:07Z FreeBirdLjj joined #lisp 2018-09-03T17:42:50Z mkolenda joined #lisp 2018-09-03T17:42:57Z pjb quit (Read error: Connection reset by peer) 2018-09-03T17:44:01Z pjb joined #lisp 2018-09-03T17:45:28Z FreeBirdLjj quit (Ping timeout: 245 seconds) 2018-09-03T17:46:58Z cage_ quit (Quit: Leaving) 2018-09-03T17:49:09Z fikka joined #lisp 2018-09-03T17:49:24Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-03T17:49:58Z housel quit (Read error: Connection reset by peer) 2018-09-03T17:50:12Z SenasOzys quit (Quit: Leaving) 2018-09-03T17:50:18Z AeroNotix: ^confirmed this behaviour 2018-09-03T17:50:25Z AeroNotix: flip214: I doubt it's intended. It's a bug 2018-09-03T17:53:34Z pierpal quit (Quit: Poof) 2018-09-03T17:53:51Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T17:53:52Z pierpal joined #lisp 2018-09-03T17:54:56Z nika quit (Quit: Leaving...) 2018-09-03T17:59:02Z AeroNotix: aaand now I've broke my quicklisp :) 2018-09-03T18:06:59Z AeroNotix: Xach: you might be interested in this^ 2018-09-03T18:07:00Z rumbler31 joined #lisp 2018-09-03T18:08:33Z rpg joined #lisp 2018-09-03T18:11:20Z scymtym joined #lisp 2018-09-03T18:11:48Z rumbler31 quit (Ping timeout: 272 seconds) 2018-09-03T18:16:02Z fikka joined #lisp 2018-09-03T18:16:37Z Oladon joined #lisp 2018-09-03T18:22:55Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-03T18:26:01Z aeth: do not attempt to update Quicklisp? 2018-09-03T18:26:07Z aeth: Is it a bad bug? 2018-09-03T18:27:37Z iskander joined #lisp 2018-09-03T18:32:02Z phoe: well 2018-09-03T18:32:21Z phoe: I think, in the worst case, delete parts of the quicklisp directory 2018-09-03T18:32:25Z phoe: it should try regenerating them 2018-09-03T18:32:33Z phoe: ...or backup your local-projects and reinstall QL altogether 2018-09-03T18:33:39Z azimut joined #lisp 2018-09-03T18:35:55Z shka_: gosh 2018-09-03T18:35:57Z AeroNotix: phoe: that's what I did to fix it 2018-09-03T18:35:58Z shka_: cowards 2018-09-03T18:36:04Z kristof quit (Ping timeout: 246 seconds) 2018-09-03T18:36:08Z shka_: be brave! 2018-09-03T18:36:19Z AeroNotix: aeth: nah updating is "fine" as long as it doesn't crash part way through :) 2018-09-03T18:36:32Z shka_: update boldly when no man updated before! 2018-09-03T18:37:04Z jessup joined #lisp 2018-09-03T18:38:24Z azimut quit (Ping timeout: 272 seconds) 2018-09-03T18:39:13Z phoe: Xach: does quicklisp have any option to invalidate all archives and force-redownload everything? 2018-09-03T18:40:42Z azimut joined #lisp 2018-09-03T18:40:57Z igemnace joined #lisp 2018-09-03T18:41:10Z shka_: phoe: you can manually nuke your files 2018-09-03T18:41:52Z shka_: which is easy 2018-09-03T18:42:06Z Xach: phoe: not built-in. i delete stuff. 2018-09-03T18:42:21Z Xach: from the dist dir, rm -rf installed software archives 2018-09-03T18:43:59Z phoe: Xach: I suggest that to be added to the client, just for usability sake 2018-09-03T18:44:14Z phoe: (ql:nuke-archives :really t) would be enough I think 2018-09-03T18:44:21Z shka_: i don't think it is a good idea 2018-09-03T18:44:22Z dim: Xach: is it intentional that the directories in this order read like proper English? ;-) 2018-09-03T18:45:13Z dim: shka_: it could be protected to only do that when there's no diff known to the downloaded version 2018-09-03T18:45:26Z shka_: eh 2018-09-03T18:45:34Z shka_: dim: complicated 2018-09-03T18:46:46Z shka_: i think that you should do what you must, and do it perfectly 2018-09-03T18:47:41Z shka_: and this is just not critical 2018-09-03T18:49:30Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-03T18:51:04Z azimut quit (Ping timeout: 272 seconds) 2018-09-03T18:51:05Z dim: refreshing a cache or force-download as an option would be contrary to your principle? 2018-09-03T18:51:29Z azimut joined #lisp 2018-09-03T18:51:52Z jinkies joined #lisp 2018-09-03T18:57:14Z shka_: dim: if it is just about deleting few files here and there: yes 2018-09-03T18:58:21Z jeosol: morning guys 2018-09-03T18:58:31Z j`ey left #lisp 2018-09-03T19:02:17Z jeosol: Some of you are aware of my work on an optimization challenge using CL. I am presenting on Friday in Spain. Some of the complexity of the work is possible with the image-based development in CL and other CLOS features 2018-09-03T19:02:25Z jeosol: enabled layered complex functionality 2018-09-03T19:02:58Z jeosol: I will meet with other (larger service companies) who will be asking questions about how I did so and so. How have you guys dealt with such questions 2018-09-03T19:03:38Z jeosol: do you tend to hide your toolkit (e.g., choice of language) -- think Graham mentioned something about this. 2018-09-03T19:03:46Z phoe: why hide? 2018-09-03T19:03:51Z jeosol: haha 2018-09-03T19:03:59Z phoe: no, seriously 2018-09-03T19:04:01Z jeosol: good point phoe. CL is not remotely used at all 2018-09-03T19:04:28Z phoe: if your code is fast, it doesn't matter what code you've written it in 2018-09-03T19:04:43Z phoe: (though you do get bonus points if it's readable, factored and documented) 2018-09-03T19:04:52Z jeosol: A company may be interested in the code and may want to get it on or convert to C++. 2018-09-03T19:04:52Z phoe: s/what code/what language/ 2018-09-03T19:05:09Z phoe: that's the perspective of a lot of people I've seen, and it's scary 2018-09-03T19:05:10Z jeosol: I did document the function interfaces and using long names where necessary 2018-09-03T19:06:01Z phoe: converting code from Lisp to C++ is doable, provided that you do all of the heavy lifting and debugging in CL before the translation (; 2018-09-03T19:06:03Z jeosol: I had one a few weeks ago to code up similar functionality in C/C++, after thinking about it (refreshing OOP in C++) I realized I can't replicated many things from CLOS or the ease, so I backed out. 2018-09-03T19:06:31Z jeosol: phoe: yes, it will be translating the CL code. 2018-09-03T19:06:57Z jeosol: I use a lot of around, :before and :after modifies in the CLOS parts to keep things clean and organized 2018-09-03T19:07:21Z jeosol: their concern will be I am the only one that knows the code very well, and CL not being common. 2018-09-03T19:07:45Z phoe: > and CL not being common 2018-09-03T19:07:47Z jeosol: phoe: thanks for the inputs btw 2018-09-03T19:07:49Z phoe: I laughed 2018-09-03T19:08:02Z jeosol: phoe: not from me. I have being using it for years since grad school 2018-09-03T19:08:13Z phoe: jeosol: one thing I'd do is actually prepare "why I can't easily translate this into C++" 2018-09-03T19:08:27Z jeosol: I mean from their perspective. 2018-09-03T19:08:31Z shka_: jeosol: well, i hope you will succeed 2018-09-03T19:08:34Z jeosol: phoe: good point 2018-09-03T19:08:37Z phoe: and start talking about the :before :after :around methods 2018-09-03T19:08:57Z jeosol: I have actually gather some info from lispworks webiste and all. 2018-09-03T19:09:01Z phoe: talk about the interactive debugger, livepatching etc (which aren't required but are extremely nice) 2018-09-03T19:09:23Z phoe: if you're using the metaobject protocol, you can mention it as well. 2018-09-03T19:09:25Z jeosol: phoe: yes, the debugging was a big plus, enabling interactive development. 2018-09-03T19:09:42Z phoe: that's why I said that moving from CL to C++ is doable once you have everything figured out in CL 2018-09-03T19:09:47Z jeosol: with write-compile-link cycle in the other languages, it won't be a pain 2018-09-03T19:09:52Z phoe: the debugging is amazing 2018-09-03T19:10:08Z phoe: and the interactivity enables instant feedback 2018-09-03T19:10:16Z jeosol: phoe: the reason for moving will be, "you are the only one that knows the code" 2018-09-03T19:10:20Z dim: jeosol: the only reason why CL would not be popular/common is that not enough people are using it, so the only cure is that more people would use it? 2018-09-03T19:10:24Z voidlily quit (*.net *.split) 2018-09-03T19:10:25Z stylewarning quit (*.net *.split) 2018-09-03T19:10:25Z thekolb quit (*.net *.split) 2018-09-03T19:10:25Z cpt_nemo quit (*.net *.split) 2018-09-03T19:10:25Z Ziemas quit (*.net *.split) 2018-09-03T19:10:25Z tobel quit (*.net *.split) 2018-09-03T19:10:25Z danlentz quit (*.net *.split) 2018-09-03T19:10:25Z convexferret quit (*.net *.split) 2018-09-03T19:10:25Z rme quit (*.net *.split) 2018-09-03T19:10:25Z CEnnis91 quit (*.net *.split) 2018-09-03T19:10:25Z jhei quit (*.net *.split) 2018-09-03T19:10:26Z p_l quit (*.net *.split) 2018-09-03T19:10:26Z drmeister quit (*.net *.split) 2018-09-03T19:10:26Z splittist quit (*.net *.split) 2018-09-03T19:10:26Z stux|RC-only quit (*.net *.split) 2018-09-03T19:10:27Z jeosol: not like I can get insane speeds 2018-09-03T19:10:35Z zooey quit (*.net *.split) 2018-09-03T19:10:35Z kushal quit (*.net *.split) 2018-09-03T19:10:38Z jeosol: dim: thanks dim 2018-09-03T19:10:43Z phoe: dim: correct, except "it won't be our company that pays people to learn this alien language" mentality 2018-09-03T19:10:51Z jeosol: I actually tried to start a small meet up group in my area to teach CL 2018-09-03T19:10:57Z dim: jeosol: what's your goal in that presentation? 2018-09-03T19:11:22Z dim: land a job, show CL is awesome, win a challenge, something else? 2018-09-03T19:11:27Z jeosol: the goal is the application to a problem, not CL per se. 2018-09-03T19:11:48Z Ziemas joined #lisp 2018-09-03T19:11:49Z jeosol: but there will be vendors who may be interested in how I was able to organize the code and achieve some of the things I am claiming ... 2018-09-03T19:11:52Z dim: yeah yeah but yourself, what do you expect out of your presentation? 2018-09-03T19:11:58Z aeth: AeroNotix: That's not QL-specific. I've had Linux package manager issues if I lose power during an update/upgrade in the past. 2018-09-03T19:12:08Z jeosol: dim: I see. 2018-09-03T19:12:12Z aeth: (Unless QL is crashing.) 2018-09-03T19:12:28Z random-nick quit (Read error: Connection reset by peer) 2018-09-03T19:12:58Z jeosol: dim: I guess I would say, to garner interest from the larger companies who may be trying to get into the space and would need a large code base to pick up. 2018-09-03T19:13:05Z dim: jeosol: without that I can't help you decide how to organize the presentation, if you don't care for yourself just explain why you picked CL and then how it helped, but only as an appendix — always begin with the result, the take away 2018-09-03T19:13:15Z jeosol: dim: this is where I think the issue of "only you can work this code will come up". 2018-09-03T19:13:35Z jeosol: dim: thanks 2018-09-03T19:13:39Z dim: gardner interest into what? 2018-09-03T19:13:58Z jeosol: dim: software 2018-09-03T19:14:04Z stux|RC-only joined #lisp 2018-09-03T19:14:13Z phoe: jeosol: "well, translating this code to C++ will surely make it worse and you'll lose a lot of the tactics that aren't possible with C++ - why don't you teach your people better languages instead?" 2018-09-03T19:14:16Z dim: jeosol: read https://www.xaprb.com/blog/tips-effective-presentations/ too 2018-09-03T19:14:45Z dim: I'm sorry jeosol it seems I can't read/think tonigh 2018-09-03T19:14:52Z voidlily joined #lisp 2018-09-03T19:14:55Z kushal joined #lisp 2018-09-03T19:14:55Z zooey joined #lisp 2018-09-03T19:14:56Z jeosol: dim: I am proposing some new features and how to solve an existing problem, and CL really enabled this. but the initial focus for the presentation is not CL per se. It's domain area specific." 2018-09-03T19:15:03Z dim: you want them to be interested into the software you wrote, is that right? 2018-09-03T19:15:14Z jeosol: The vendors are the ones that my want to follow up later. 2018-09-03T19:15:29Z dim: I'd just spend about 0 time on CL then 2018-09-03T19:15:33Z phoe: ^ 2018-09-03T19:15:42Z phoe: only tell them if they're curious about the "how" 2018-09-03T19:15:47Z jeosol: dim: yes, it's 0 time on CL. No CL on my slide at all 2018-09-03T19:16:01Z phoe: truly the secret sauce 2018-09-03T19:16:06Z dim: just explain how your solution is better than the other ones, show what “technology lock” you managed to break through 2018-09-03T19:16:10Z jeosol: I am talking of follow up conversations later, when issues of conversation or sticking with CL (with me running things) 2018-09-03T19:16:29Z dim: if they want your thing they won't care 2018-09-03T19:16:33Z dim: if they don't want your thing they won't care 2018-09-03T19:16:54Z dim: ok course that's simplifying a lot, but well 2018-09-03T19:16:57Z aeth: If they are pg they will care. 2018-09-03T19:17:15Z jeosol: dim: I was thinking they complain about the choice of language. I get your point. 2018-09-03T19:17:44Z dim: of course they will 2018-09-03T19:17:58Z dale joined #lisp 2018-09-03T19:18:02Z dim: it's because it represent a change that they didn't decide nor anticipate 2018-09-03T19:18:11Z Pixel_Outlaw joined #lisp 2018-09-03T19:18:13Z dim: so your only possible course of action is saying “yes it's in CL” 2018-09-03T19:18:25Z dim: they will go through the usual change phases: deny, anger, bargain 2018-09-03T19:18:31Z jeosol: The reason I am concerned on how to spin it (continue CL with me, or we convert) is that, 2018-09-03T19:18:34Z dim: “no it can't be” “yes it is” 2018-09-03T19:18:53Z dim: “WHY?“ “CL is fine, it's the best, it's done is CL” 2018-09-03T19:19:05Z jeosol: dim: I see. thanks 2018-09-03T19:19:16Z dim: “can we do it in C++ instead?” “I don't think I could have done it in C++, that's why I've done it in CL” 2018-09-03T19:19:32Z AeroNotix: aeth: QL can do something better in this situation 2018-09-03T19:19:34Z dim: and then when they begin to ask what's so good about CL, then you can begin to answer, slowly 2018-09-03T19:19:42Z dim: before that, you loose your time and energy 2018-09-03T19:19:50Z dim: it's just human people and change really 2018-09-03T19:20:03Z jeosol: as phoe mentioned above, interactive enabled rapid feedback. it's a big plus in my development. Some of the load times (without saving image) is around 10 minutes to re/load the problem. 2018-09-03T19:20:26Z jeosol: dim: thanks 2018-09-03T19:20:30Z dim: jeosol: search for the change curve and https://en.wikipedia.org/wiki/Kübler-Ross_model applied to politics/management/change 2018-09-03T19:21:39Z jeosol: dim: thanks. I would like to lead an internal effort to use CL somewhat, but be able to have that discussion in the beginning and explain why CL was better. 2018-09-03T19:22:08Z jeosol: dim: btw, are you with citusdata now? 2018-09-03T19:22:13Z dim: I am, yes 2018-09-03T19:23:03Z jeosol: dim: that's a useful link. I will study it as I start locking horns with these guys. 2018-09-03T19:23:06Z dim: jeosol: before you can lead that effort, people in power must have understood why CL is good for them, and you have two options: drive the change, or make them drive the change by allowing them to pretend it's their own idea 2018-09-03T19:23:07Z housel joined #lisp 2018-09-03T19:23:23Z dim: or you can also take power, usually that's more complex 2018-09-03T19:23:42Z gpiero joined #lisp 2018-09-03T19:23:44Z jeosol: dim: thanks, I would like to drive that change, like lead the effort, and find CL developers, or teach or sth. 2018-09-03T19:24:35Z dim: they need to accept the change then, and there's nothing much technical or CL specific in that approach, I believe 2018-09-03T19:24:55Z jeosol: I feel it is easier to continue in CL, code is cleaner, and after questions here and at comp.lang.lisp, I was able to get it to run for weeks with no issues. 2018-09-03T19:25:07Z dim: I know beach has some very good content to help approach choosing a programming language and CL in particular, though, and that might help you there 2018-09-03T19:25:35Z jeosol: dim: yes, that is example of materials I am trying to gather to make very solid arguments 2018-09-03T19:25:40Z dim: I believe it only helps when they have reached a certain point in the acceptance curve though, before that all you can say is “yes it's Common Lisp” 2018-09-03T19:25:48Z jeosol: conversion will be a pain, I came from C/C++ 2018-09-03T19:25:55Z dim: refrain from using your arguments early 2018-09-03T19:26:06Z jeosol: dim: thanks for that info 2018-09-03T19:26:49Z dim: early they want to show why change is not necessary, and remember to spot the steps denial/anger/bargain, only make your move after that 2018-09-03T19:29:20Z jeosol: dim: thanks. The kubler-ross model thingy will be useful. I anticipate a lot of why CL and not some other language, e.g., Java,C/C++. Like you said, it is not so much like gathering the benefits of CL but I guess how you sell it. 2018-09-03T19:29:57Z jeosol: I remember reading some document here why JPL stopped using CL 2018-09-03T19:31:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-03T19:31:36Z it3ration joined #lisp 2018-09-03T19:31:46Z dim: https://www.google.com/flights is done in CL, if that may help you 2018-09-03T19:32:06Z dim: it used to be ITA software, I think it's still available as ITA somewhere 2018-09-03T19:32:17Z dim: https://matrix.itasoftware.com 2018-09-03T19:32:41Z russellw: I read the NASA one awhile back. In a nutshell, they needed C aboard their spacecraft because when you are programming embedded real-time control software, C always comes into the picture, and then it turned out to be awkward to integrate two completely different programming languages in a tiny spacecraft control computer when there was no room for error 2018-09-03T19:32:54Z akovalenko quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-09-03T19:33:45Z trittweiler: jeosol: Ravenpack.com is based in Marbella, Spain, and uses Common Lisp. May be interesting to you, for the upcoming presentation and perhaps personally in case you can consider relocation :) 2018-09-03T19:34:14Z russellw: Then they made an excuse about lisp being too slow, so someone spent a couple of years making it run faster, but it was a waste of time because this was not the real reason in the first place. Moral of that story: be careful of the difference between reasons and excuses. In programming, 'too slow' is more often an excuse than a reason 2018-09-03T19:34:47Z dale quit (Quit: dale) 2018-09-03T19:35:31Z jeosol: trittweiler: Thanks for that. I will be in Barcelona, not sure how close. But I will try to reach out if they still/use CL heavily. 2018-09-03T19:36:07Z it3ration quit (Ping timeout: 240 seconds) 2018-09-03T19:36:10Z dim: they presented their use at the ELS 2018 (conference in Marbella) and I think they are still heavy users of CL yes 2018-09-03T19:36:25Z jeosol: dim: hmm, interesting about google flights, if they are still using the ITA software in CL 2018-09-03T19:36:33Z trittweiler: jeosol: not close; I thought you may be spaniard yourself :) 2018-09-03T19:36:39Z aeth: jeosol: Here's how you say it imo: There's the right tool for every job to get the problem solved in the simplest way. These days, that means being multilingual. 2018-09-03T19:36:54Z Xof: google are most definitely still using the CL version in Google Flights 2018-09-03T19:36:57Z dim: https://www.ravenpack.com/careers/common-lisp-developer ; https://www.ravenpack.com/careers/junior-common-lisp-developer 2018-09-03T19:37:03Z russellw agrees with aeth 2018-09-03T19:37:04Z jeosol: aeth: I agree with that. Being multilingual 2018-09-03T19:38:01Z jeosol: for some of the ML/AI related tasks, I am making calls to python libraries from CL. Didn't have much success with the clml lib but will go back to it later. 2018-09-03T19:38:08Z stylewarning joined #lisp 2018-09-03T19:38:27Z jeosol: I think for the overall layering and organization, debugging, interactive development, CL helped a lot. 2018-09-03T19:39:01Z jeosol: a former colleague saw my screen and wondered why I was working with parentheses all the screen. It was jarring for him. 2018-09-03T19:39:54Z Inline joined #lisp 2018-09-03T19:39:56Z jeosol: all: I appreciate the feedback you guys have given. very useful with the links also. 2018-09-03T19:39:58Z trittweiler: Maybe you want to use a reader-macro that turns #\( to #\< and #\) to #\>, so it will look like xml 2018-09-03T19:40:14Z dim: parens... it took me about one week before I didn't take, and a couple months before every other programming language would look weird to my eyes 2018-09-03T19:40:53Z dim: in C/Java parens translate to (){}[]; and then you realise that mostly lisp code uses less parens than C/Java 2018-09-03T19:40:58Z Inline quit (Read error: Connection reset by peer) 2018-09-03T19:41:07Z jeosol: dim: good point dim 2018-09-03T19:41:21Z Inline joined #lisp 2018-09-03T19:41:23Z jeosol: one of the benefits of CL too, I don't have to remember too my language syntax 2018-09-03T19:41:32Z jeosol: that reduces mental burden a lot 2018-09-03T19:42:51Z josemanuel joined #lisp 2018-09-03T19:42:59Z oystewh: (defun make-func (x) (lambda () (+ x 10))) 2018-09-03T19:43:03Z oystewh: ((make-func 10)) 2018-09-03T19:43:09Z oystewh: doesn't work -- why? 2018-09-03T19:43:12Z Bike: (funcall (make-func 10)) 2018-09-03T19:43:15Z AeroNotix: oystewh: lisp 1 vs lisp 2 2018-09-03T19:44:12Z oystewh: but ((lambda () (+ 10 10))) works 2018-09-03T19:46:18Z asarch quit (Ping timeout: 245 seconds) 2018-09-03T19:48:18Z oystewh: it's a closure - aha 2018-09-03T19:49:03Z pjb: oystewh: nope. 2018-09-03T19:49:44Z pjb: oystewh: the only operator that can create closures is cl:function. In ((lambda () (+ 10 10))), no cl:function occurs, therefore no closure. 2018-09-03T19:50:08Z oystewh: i mean, make-func returns a closure 2018-09-03T19:50:17Z pjb: Ah, above. 2018-09-03T19:50:50Z pjb: oystewh: notice that in make-func, lambda is a macro that expands to (cl:function (cl:lambda () (+ x 10))) ; so it returns a closure. 2018-09-03T19:52:09Z gpiero quit (Ping timeout: 252 seconds) 2018-09-03T19:52:21Z pjb: (let ((x 24)) ((lambda (y) (+ x y)) 18)) may look like a closure, but it's actually equivalent to (let ((x 24)) (let ((y 18)) (+ x y))). 2018-09-03T19:53:20Z phoe: pjb: uh, only cl:function can create closures? 2018-09-03T19:53:52Z phoe: oh right 2018-09-03T19:53:56Z phoe: you're correct 2018-09-03T19:54:43Z pjb: granted, an implementation could also compile (let ((x 24)) ((lambda (y) (+ x y)) 18)) as: (let ((x 24)) (funcall (lambda (y) (+ x y)) 18)) and here a closure would be created. But it would be anti-optimizing. (pessimising). 2018-09-03T19:55:52Z Bike: oystewh: it's a syntax thing. Function calls can be either (function-name ...) or ((lambda ...) ...). You can't compute the function like in scheme. 2018-09-03T19:56:35Z oystewh: ah ok 2018-09-03T19:57:06Z oystewh: i was working with the substitution model that i think i got from SICP 2018-09-03T19:57:52Z oni-on-ion joined #lisp 2018-09-03T19:58:35Z Bike: if you want to call a function you compute you just use the funcall function like i indicated. 2018-09-03T20:03:05Z oystewh: yup thanks 2018-09-03T20:05:19Z gpiero joined #lisp 2018-09-03T20:07:43Z rumbler31 joined #lisp 2018-09-03T20:09:20Z akovalenko joined #lisp 2018-09-03T20:12:30Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-03T20:13:32Z oni-on-ion quit (Quit: WeeChat 1.9.1) 2018-09-03T20:18:15Z zooey_ joined #lisp 2018-09-03T20:18:52Z zooey quit (Remote host closed the connection) 2018-09-03T20:18:57Z rpg joined #lisp 2018-09-03T20:24:45Z kuwze quit (Ping timeout: 252 seconds) 2018-09-03T20:25:00Z vlatkoB quit (Remote host closed the connection) 2018-09-03T20:30:36Z thekolb joined #lisp 2018-09-03T20:30:54Z Lycurgus quit (Quit: Exeunt) 2018-09-03T20:34:17Z oni-on-ion joined #lisp 2018-09-03T20:34:25Z pierpal quit (Quit: Poof) 2018-09-03T20:34:42Z pierpal joined #lisp 2018-09-03T20:38:06Z Roy_Fokker joined #lisp 2018-09-03T20:41:44Z ealfonso quit (Disconnected by services) 2018-09-03T20:41:58Z ealfonso joined #lisp 2018-09-03T20:47:26Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-03T21:00:30Z fikka joined #lisp 2018-09-03T21:00:54Z shka_ quit (Ping timeout: 272 seconds) 2018-09-03T21:05:03Z fikka quit (Ping timeout: 245 seconds) 2018-09-03T21:06:25Z gravicappa quit (Remote host closed the connection) 2018-09-03T21:06:51Z bigfondue quit (Ping timeout: 252 seconds) 2018-09-03T21:08:01Z CEnnis91 joined #lisp 2018-09-03T21:12:50Z v0|d joined #lisp 2018-09-03T21:17:58Z papachan quit (Ping timeout: 245 seconds) 2018-09-03T21:22:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-03T21:22:53Z nirved joined #lisp 2018-09-03T21:23:24Z housel quit (Read error: Connection reset by peer) 2018-09-03T21:23:53Z housel joined #lisp 2018-09-03T21:24:58Z mrcom quit (Ping timeout: 272 seconds) 2018-09-03T21:25:48Z AeroNotix: Is there a library for lexing assembly? 2018-09-03T21:26:13Z nckx quit (Quit: Updating my GNU GuixSD server — gnu.org/s/guix) 2018-09-03T21:26:43Z AeroNotix: I know it's quite a trivial thing to parse but wanted to know if something was already out there. 2018-09-03T21:28:00Z bigfondue joined #lisp 2018-09-03T21:30:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-03T21:31:22Z it3ration joined #lisp 2018-09-03T21:33:15Z pierpal quit (Quit: Poof) 2018-09-03T21:33:34Z pierpal joined #lisp 2018-09-03T21:34:10Z papachan joined #lisp 2018-09-03T21:35:58Z it3ration quit (Ping timeout: 246 seconds) 2018-09-03T21:36:29Z nckx joined #lisp 2018-09-03T21:41:10Z mrcom joined #lisp 2018-09-03T21:44:04Z Denommus quit (Ping timeout: 240 seconds) 2018-09-03T21:47:00Z it3ration joined #lisp 2018-09-03T21:47:00Z pierpa joined #lisp 2018-09-03T21:47:04Z it3ration quit (Remote host closed the connection) 2018-09-03T21:47:12Z it3ration joined #lisp 2018-09-03T21:55:12Z no-defun-allowed: There's a lot of kinds of assembly syntax. What kind? 2018-09-03T21:55:17Z fikka joined #lisp 2018-09-03T21:55:29Z no-defun-allowed: (nasm vs gas, arm vs x86, etc) 2018-09-03T21:56:01Z dim: disassemble output varies from an implementation to another, too 2018-09-03T21:57:01Z dim: CCL outputs "forms" I believe 2018-09-03T21:59:47Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T22:07:11Z lumm quit (Read error: Connection reset by peer) 2018-09-03T22:07:42Z rpg quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-03T22:07:48Z AeroNotix: I'm not too bothered about which syntax(es) they parse I'm just interested in looking what techniques/libraries they use 2018-09-03T22:08:16Z AeroNotix: in my case I want to parse z80 assembly or rather a subset of it since I find there are quite a few "dialects" out there 2018-09-03T22:14:34Z varjag quit (Ping timeout: 240 seconds) 2018-09-03T22:24:56Z wigust quit (Quit: ZNC 1.7.1 - https://znc.in) 2018-09-03T22:26:17Z p_l joined #lisp 2018-09-03T22:26:39Z LdBeth: AeroNotix (IRC): https://github.com/wesen/z80-asm 2018-09-03T22:26:49Z LdBeth: Exactly a z80 asm 2018-09-03T22:31:37Z AeroNotix: yeah saw that, trying to read through it now 2018-09-03T22:32:58Z joni quit (Ping timeout: 245 seconds) 2018-09-03T22:33:12Z AeroNotix: LdBeth: seems like this is a bit different though 2018-09-03T22:33:22Z AeroNotix: it is "assembling" a z80/lisp dialect 2018-09-03T22:33:27Z AeroNotix: https://github.com/wesen/z80-asm/blob/master/rc01.lisp 2018-09-03T22:36:57Z LdBeth: Ok, seems this one will fit your need 2018-09-03T22:36:58Z LdBeth: https://github.com/tokenrove/m68k-assembler 2018-09-03T22:37:29Z wigust joined #lisp 2018-09-03T22:37:40Z doubledup quit (Quit: Leaving) 2018-09-03T22:37:48Z it3ration quit (Ping timeout: 272 seconds) 2018-09-03T22:38:25Z nowhere_man joined #lisp 2018-09-03T22:39:34Z LdBeth: It uses CL-PPCRE for lexer 2018-09-03T22:40:42Z AeroNotix: LdBeth: thanks 2018-09-03T22:45:03Z skidd0 joined #lisp 2018-09-03T22:48:19Z makomo: AeroNotix: you might be interested in https://github.com/whily/yalo/blob/master/doc/AssemblyX64.md as well, but it's not directly related to z80 2018-09-03T22:48:31Z makomo: especially this https://github.com/whily/yalo/blob/master/cc/bootloader.lisp#L18 2018-09-03T22:48:40Z makomo: pretty neat 2018-09-03T23:04:13Z fikka joined #lisp 2018-09-03T23:08:19Z skidd0: Is there a way to have a cons element have a vallue and children? 2018-09-03T23:08:23Z skidd0: https://imgur.com/a/IeNC8Zr 2018-09-03T23:08:43Z skidd0: See how cons 2 has both the value 2 AND a list of children? 2018-09-03T23:09:01Z fikka quit (Ping timeout: 244 seconds) 2018-09-03T23:09:12Z skidd0: Here's a paste with an example: https://bin.0x00sec.org/?c5cfcc7a21bbfdd0#63pOBHdnJda/99ZaxN8oLVJp/CytnnEpaHBREn6f0ZI= 2018-09-03T23:10:13Z oni-on-ion: element ? 2018-09-03T23:10:42Z skidd0: list ? 2018-09-03T23:10:44Z skidd0: not sure 2018-09-03T23:10:48Z skidd0: on terms here 2018-09-03T23:10:48Z oni-on-ion: (cons head tail) 2018-09-03T23:11:09Z oni-on-ion: or (cons (car #) (cdr #)) 2018-09-03T23:11:52Z oni-on-ion: linked list can do binary trees as well 2018-09-03T23:12:19Z skidd0: but it's not binary 2018-09-03T23:12:29Z makomo: skidd0: are you wondering in general about the representation of tree structures with sexps? 2018-09-03T23:12:45Z skidd0: I'm wondering what structure fits my data best 2018-09-03T23:12:48Z skidd0: I thought it was cons 2018-09-03T23:12:56Z makomo: the usual way is ( ) 2018-09-03T23:12:58Z skidd0: but I'm now thinking i'm going to need something more 2018-09-03T23:13:30Z skidd0: so my example is correct then? 2018-09-03T23:13:39Z makomo: it's "correct" in the sense that it's one possible representation 2018-09-03T23:13:54Z skidd0: something in my head was telling me it was wrong 2018-09-03T23:14:06Z skidd0: mostly the boxplot diagram 2018-09-03T23:14:20Z makomo: right, you could also treat the individual cons cells as nodes 2018-09-03T23:17:33Z nowhere_man quit (Ping timeout: 245 seconds) 2018-09-03T23:19:02Z skidd0: continued in #clschool 2018-09-03T23:20:53Z slyrus1 quit (Ping timeout: 245 seconds) 2018-09-03T23:25:02Z asarch joined #lisp 2018-09-03T23:25:02Z orivej quit (Ping timeout: 244 seconds) 2018-09-03T23:30:59Z Kaisyu joined #lisp 2018-09-03T23:32:27Z quazimodo quit (Ping timeout: 240 seconds) 2018-09-03T23:34:31Z quazimodo joined #lisp 2018-09-03T23:36:54Z varjag joined #lisp 2018-09-03T23:39:43Z trocado joined #lisp 2018-09-03T23:41:16Z varjag quit (Ping timeout: 246 seconds) 2018-09-03T23:43:19Z Fare joined #lisp 2018-09-03T23:44:56Z anewuser joined #lisp 2018-09-03T23:50:22Z Fare quit (Ping timeout: 246 seconds) 2018-09-03T23:53:23Z anewuser quit (Ping timeout: 245 seconds) 2018-09-03T23:54:29Z trocado quit (Ping timeout: 244 seconds) 2018-09-03T23:56:20Z lnostdal quit (Ping timeout: 272 seconds) 2018-09-03T23:57:38Z lnostdal joined #lisp 2018-09-03T23:59:06Z anewuser joined #lisp 2018-09-04T00:01:32Z fikka joined #lisp 2018-09-04T00:04:47Z lnostdal quit (Ping timeout: 240 seconds) 2018-09-04T00:06:22Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T00:10:02Z lnostdal joined #lisp 2018-09-04T00:15:10Z emaczen quit (Read error: Connection reset by peer) 2018-09-04T00:15:55Z emaczen joined #lisp 2018-09-04T00:20:31Z Fare joined #lisp 2018-09-04T00:32:49Z emaczen quit (Remote host closed the connection) 2018-09-04T00:37:38Z no-defun-allowed: can i declare that two arrays will be the same size? 2018-09-04T00:38:03Z no-defun-allowed: i don't know the actual sizes except for one dimension (image depth), but they will be the same size 2018-09-04T00:38:09Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-04T00:38:45Z oni-on-ion: maybe cl-parametric-types 2018-09-04T00:42:10Z aeth: no-defun-allowed: not in a way that SBCL can understand afaik 2018-09-04T00:43:48Z jeosol quit (Ping timeout: 252 seconds) 2018-09-04T00:43:51Z oni-on-ion: can use declare and type specifiers to ensure the arrays are eq in length 2018-09-04T00:45:50Z oni-on-ion: or this http://lisptips.com/post/44186972221/the-optional-arguments-of-deftype , (deftype my-array () `(simple-array (unsigned-float 32) 999)) 2018-09-04T00:46:27Z oni-on-ion: (idk about redefining type after length is known, however) 2018-09-04T00:48:54Z Bike: that would actually mean an array with rank 999 2018-09-04T00:49:00Z Bike: also unsigned-float isn't a thing. 2018-09-04T00:49:10Z Bike: but no there's no way to declare two arrays are the same size but not what that size is. 2018-09-04T00:49:37Z oni-on-ion: Bike: ah, i thought the example was using length for its size 2018-09-04T00:49:49Z Bike: it's (simple-array whatever (999)) 2018-09-04T00:49:52Z Bike: the parens are important 2018-09-04T00:50:14Z Bike: since you can also do like, (simple-array whatever (3 3)), and that's a 2 dimensional square array 2018-09-04T00:50:15Z oni-on-ion: ahhhh. ty for clearing that up. not sure how float got in there tho. 2018-09-04T00:51:08Z Roy_Fokker quit (Quit: Leaving) 2018-09-04T00:51:43Z Copenhagen_Bram joined #lisp 2018-09-04T01:01:12Z bradcomp joined #lisp 2018-09-04T01:05:55Z no-defun-allowed: aeth: ah well, aref isn't my bottleneck so it's not too bad 2018-09-04T01:06:18Z no-defun-allowed: i was hoping sbcl could do bounds checks once for both arrays or something nice like that 2018-09-04T01:17:00Z fikka joined #lisp 2018-09-04T01:20:27Z jinkies quit (Remote host closed the connection) 2018-09-04T01:21:43Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T01:27:24Z fikka joined #lisp 2018-09-04T01:32:03Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T01:41:26Z Oladon quit (Quit: Leaving.) 2018-09-04T01:47:27Z fikka joined #lisp 2018-09-04T01:52:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T02:02:00Z it3ration joined #lisp 2018-09-04T02:03:18Z asarch: Any curses library for Common Lisp? 2018-09-04T02:04:38Z quazimodo quit (Ping timeout: 245 seconds) 2018-09-04T02:06:46Z quazimodo joined #lisp 2018-09-04T02:07:46Z fikka joined #lisp 2018-09-04T02:08:34Z aeth: yes, several 2018-09-04T02:08:58Z aeth: e.g. https://github.com/HiTECNOLOGYs/cl-charms 2018-09-04T02:09:11Z aeth: Found that on cliki because https://www.cliki.net/CL-Ncurses apparently is old 2018-09-04T02:09:45Z aeth: good license, too. 2018-09-04T02:11:30Z aeth: There are even some alternatives to curses, such as Lisp bindings to bearlibterminal when you can get away with using a pseudoterminal. https://github.com/sjl/cl-blt 2018-09-04T02:12:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T02:13:41Z skidd0 quit (Quit: WeeChat 2.2) 2018-09-04T02:14:07Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-04T02:18:37Z fikka joined #lisp 2018-09-04T02:19:31Z asarch: Thank you! 2018-09-04T02:19:35Z asarch: Thank you very much :-) 2018-09-04T02:23:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T02:28:27Z fikka joined #lisp 2018-09-04T02:29:48Z anewuser quit (Ping timeout: 252 seconds) 2018-09-04T02:33:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T02:36:44Z ealfonso quit (Disconnected by services) 2018-09-04T02:36:57Z ealfonso joined #lisp 2018-09-04T02:37:09Z ealfonso quit (Disconnected by services) 2018-09-04T02:37:26Z ealfonso joined #lisp 2018-09-04T02:38:28Z ealfonso` joined #lisp 2018-09-04T02:39:58Z ealfonso quit (Disconnected by services) 2018-09-04T02:40:11Z ealfonso joined #lisp 2018-09-04T02:42:34Z pierpa quit (Quit: Page closed) 2018-09-04T02:43:06Z ealfonso quit (Disconnected by services) 2018-09-04T02:43:20Z ealfonso joined #lisp 2018-09-04T02:44:04Z ealfonso quit (Disconnected by services) 2018-09-04T02:44:35Z Oladon joined #lisp 2018-09-04T02:48:01Z bradcomp joined #lisp 2018-09-04T02:48:42Z it3ration quit (Remote host closed the connection) 2018-09-04T02:48:46Z fikka joined #lisp 2018-09-04T02:48:49Z it3ration joined #lisp 2018-09-04T02:52:44Z bradcomp quit (Ping timeout: 244 seconds) 2018-09-04T02:53:46Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T02:53:48Z Fare quit (Ping timeout: 245 seconds) 2018-09-04T02:57:29Z vtomole joined #lisp 2018-09-04T02:59:08Z Fare joined #lisp 2018-09-04T03:06:39Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-04T03:07:09Z mkolenda joined #lisp 2018-09-04T03:08:59Z pierpal quit (Quit: Poof) 2018-09-04T03:09:07Z fikka joined #lisp 2018-09-04T03:09:18Z pierpal joined #lisp 2018-09-04T03:10:27Z cmatei quit (Ping timeout: 240 seconds) 2018-09-04T03:13:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T03:18:16Z ealfonso` quit (Ping timeout: 246 seconds) 2018-09-04T03:20:43Z Copenhagen_Bram quit (Ping timeout: 246 seconds) 2018-09-04T03:23:37Z Copenhagen_Bram joined #lisp 2018-09-04T03:24:22Z rumbler31 joined #lisp 2018-09-04T03:26:34Z steiner quit (Ping timeout: 240 seconds) 2018-09-04T03:29:45Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-04T03:32:07Z Copenhagen_Bram joined #lisp 2018-09-04T03:32:57Z Jesin joined #lisp 2018-09-04T03:33:02Z makomo quit (Ping timeout: 244 seconds) 2018-09-04T03:39:13Z SaganMan joined #lisp 2018-09-04T03:39:14Z Copenhagen_Bram quit (Ping timeout: 244 seconds) 2018-09-04T03:42:31Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-04T03:42:41Z Copenhagen_Bram joined #lisp 2018-09-04T03:49:33Z rumbler31 quit (Remote host closed the connection) 2018-09-04T03:51:50Z Jesin quit (Quit: Leaving) 2018-09-04T03:51:58Z bradcomp joined #lisp 2018-09-04T03:54:30Z beach quit (Ping timeout: 252 seconds) 2018-09-04T03:55:27Z fikka joined #lisp 2018-09-04T03:55:53Z Jesin joined #lisp 2018-09-04T03:57:00Z bradcomp quit (Ping timeout: 272 seconds) 2018-09-04T03:58:47Z Ricchi joined #lisp 2018-09-04T03:59:01Z Jesin quit (Remote host closed the connection) 2018-09-04T04:00:48Z fikka quit (Ping timeout: 272 seconds) 2018-09-04T04:02:04Z Copenhagen_Bram quit (Ping timeout: 240 seconds) 2018-09-04T04:04:20Z Jesin joined #lisp 2018-09-04T04:04:36Z Copenhagen_Bram joined #lisp 2018-09-04T04:05:56Z kristof joined #lisp 2018-09-04T04:06:38Z dddddd quit (Remote host closed the connection) 2018-09-04T04:15:32Z Lycurgus joined #lisp 2018-09-04T04:15:47Z fikka joined #lisp 2018-09-04T04:20:34Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T04:21:08Z Bike quit (Quit: Lost terminal) 2018-09-04T04:23:15Z vtomole quit (Ping timeout: 252 seconds) 2018-09-04T04:30:03Z _whitelogger quit (Remote host closed the connection) 2018-09-04T04:32:17Z _whitelogger joined #lisp 2018-09-04T04:36:30Z fikka joined #lisp 2018-09-04T04:36:30Z slyrus1 joined #lisp 2018-09-04T04:39:06Z caltelt_ joined #lisp 2018-09-04T04:41:13Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T04:43:58Z nirved joined #lisp 2018-09-04T04:46:55Z fikka joined #lisp 2018-09-04T04:50:04Z rumbler31 joined #lisp 2018-09-04T04:51:22Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T04:54:40Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-04T04:56:43Z Oladon quit (Quit: Leaving.) 2018-09-04T04:57:00Z fikka joined #lisp 2018-09-04T05:00:04Z _whitelogger quit (Remote host closed the connection) 2018-09-04T05:02:14Z fikka quit (Ping timeout: 272 seconds) 2018-09-04T05:02:17Z _whitelogger joined #lisp 2018-09-04T05:07:39Z it3ration quit (Ping timeout: 252 seconds) 2018-09-04T05:08:27Z SaganMan quit (Ping timeout: 240 seconds) 2018-09-04T05:09:56Z pjb quit (Read error: Connection reset by peer) 2018-09-04T05:17:05Z fikka joined #lisp 2018-09-04T05:19:51Z SaganMan joined #lisp 2018-09-04T05:21:43Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T05:25:04Z cmatei joined #lisp 2018-09-04T05:25:39Z smokeink joined #lisp 2018-09-04T05:26:00Z it3ration joined #lisp 2018-09-04T05:26:37Z smokeink: hello ! (let ((*print-readably* t)) (print (list #'+))); => error # cannot be printed readably. 2018-09-04T05:26:37Z smokeink: is there any way to configure the printer to encode functions into their symbol names when printing? 2018-09-04T05:27:58Z fikka joined #lisp 2018-09-04T05:28:28Z caltelt_ quit (Ping timeout: 246 seconds) 2018-09-04T05:30:50Z it3ration quit (Ping timeout: 244 seconds) 2018-09-04T05:30:56Z gpiero quit (Remote host closed the connection) 2018-09-04T05:32:24Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T05:33:02Z Inline quit (Quit: Leaving) 2018-09-04T05:34:33Z smokeink: I have a list that contains functions like #'+ , #'- , #'* , I want to readably print it into a file 2018-09-04T05:38:21Z PuercoPop: smokeink: if you want to print symbols that is ok, but those are not functions 2018-09-04T05:38:36Z PuercoPop: symbols are bound to function objects 2018-09-04T05:39:09Z PuercoPop: which are the things that are printed unreadably. Adn as far as I know it is not possible to print them readably in a portable manner 2018-09-04T05:40:53Z PuercoPop: You may be able to create a FASL with just the functions? What do you want to do? If you want a Job queue for example the symbols would suffice provided you load the application in the image that read and executes jobs from the Queue 2018-09-04T05:41:02Z LdBeth: you print '#'+ 2018-09-04T05:41:25Z LdBeth: or just '(function +) 2018-09-04T05:41:25Z Copenhagen_Bram quit (Ping timeout: 246 seconds) 2018-09-04T05:43:50Z Copenhagen_Bram joined #lisp 2018-09-04T05:44:54Z no-defun-allowed: apparently oclcl does run on my gpu okay 2018-09-04T05:45:45Z vlatkoB joined #lisp 2018-09-04T05:47:19Z smokeink: Then I'll just switch to using '+ '- etc in my list , instead of #'+ #'- 2018-09-04T05:47:20Z smokeink: thanks 2018-09-04T05:47:59Z fikka joined #lisp 2018-09-04T05:48:16Z umpc quit (Ping timeout: 260 seconds) 2018-09-04T05:48:51Z gendl quit (Ping timeout: 260 seconds) 2018-09-04T05:48:51Z Duns_Scrotus quit (Ping timeout: 260 seconds) 2018-09-04T05:49:04Z les` joined #lisp 2018-09-04T05:49:12Z beaky1 joined #lisp 2018-09-04T05:49:27Z swflint quit (Ping timeout: 260 seconds) 2018-09-04T05:50:04Z otwieracz quit (Ping timeout: 260 seconds) 2018-09-04T05:50:04Z les quit (Ping timeout: 260 seconds) 2018-09-04T05:50:04Z beaky quit (Ping timeout: 260 seconds) 2018-09-04T05:50:04Z gingerale quit (Ping timeout: 260 seconds) 2018-09-04T05:50:04Z lieven quit (Ping timeout: 260 seconds) 2018-09-04T05:51:35Z swflint joined #lisp 2018-09-04T05:51:54Z umpc joined #lisp 2018-09-04T05:52:37Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T05:56:23Z flip214: Xach: AeroNotix: re QL dist-update: I did this and re-ran the (ql:quickload ...) lines: 2018-09-04T05:56:32Z flip214: (defun clean-up-ql-dists () (map nil 'ql-dist:clean (ql-dist:all-dists))) 2018-09-04T05:56:54Z flip214: this way all the "old" systems are removed, so the next QL:QL needs to download the "new". 2018-09-04T05:58:24Z fikka joined #lisp 2018-09-04T06:02:46Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T06:08:29Z fikka joined #lisp 2018-09-04T06:12:07Z beach joined #lisp 2018-09-04T06:13:16Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T06:15:47Z kristof quit (Ping timeout: 240 seconds) 2018-09-04T06:18:07Z Copenhagen_Bram quit (Ping timeout: 240 seconds) 2018-09-04T06:18:26Z fikka joined #lisp 2018-09-04T06:19:27Z scymtym quit (Ping timeout: 240 seconds) 2018-09-04T06:20:26Z beaky1 is now known as beaky 2018-09-04T06:23:16Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T06:31:26Z pchrist joined #lisp 2018-09-04T06:39:08Z fikka joined #lisp 2018-09-04T06:40:19Z shrdlu68 joined #lisp 2018-09-04T06:43:12Z Copenhagen_Bram joined #lisp 2018-09-04T06:48:08Z dented42 joined #lisp 2018-09-04T06:48:20Z orivej joined #lisp 2018-09-04T06:50:59Z Lycurgus quit (Quit: Exeunt) 2018-09-04T06:51:14Z rumbler31 joined #lisp 2018-09-04T06:51:32Z cyraxjoe joined #lisp 2018-09-04T06:53:25Z doubledup joined #lisp 2018-09-04T06:54:15Z doubledup quit (Client Quit) 2018-09-04T06:55:34Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-04T06:59:04Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-04T07:09:54Z flip214: -- 2018-09-04T07:12:32Z varjag joined #lisp 2018-09-04T07:14:06Z nowhere_man joined #lisp 2018-09-04T07:15:27Z scymtym joined #lisp 2018-09-04T07:18:28Z dirk` joined #lisp 2018-09-04T07:20:00Z flip214: When having a *var*, every access needs to check for bindings. when using (let ((=var= ..)) (defun ...)), every access has to go via the symbol. 2018-09-04T07:20:33Z flip214: is there some way to get a global variable that's as fast as just accessing some known memory location? (sbcl, amd64) 2018-09-04T07:22:26Z Shinmera: sbcl has defglobal, if I remember correctly 2018-09-04T07:23:00Z dirk` is now known as Darts 2018-09-04T07:26:03Z Darts quit (Quit: Work) 2018-09-04T07:26:50Z it3ration joined #lisp 2018-09-04T07:36:42Z it3ration quit (Ping timeout: 252 seconds) 2018-09-04T07:47:28Z asarch quit (Quit: Leaving) 2018-09-04T07:54:44Z trittweiler: flip214, yeah look at sb-ext:defglobal. sbcl itself uses a naming convention of **foo** for global variables 2018-09-04T07:57:03Z Fare quit (Ping timeout: 252 seconds) 2018-09-04T08:00:23Z shka_ joined #lisp 2018-09-04T08:14:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T08:14:11Z DataLinkDroid3 is now known as DataLinkDroid 2018-09-04T08:14:32Z beach: flip214: What do you mean by "every access has to go via the symbol"? 2018-09-04T08:15:26Z beach: flip214: Also, most of the time, even in a language like C, accessing a global variable is no longer just a matter of accessing a memory location. 2018-09-04T08:19:44Z jackdaniel: I think that what he asks for is a global binding which may be resolved at the compilation time, not at runtime (and sb-ext:defglobal gives exactly that I think) 2018-09-04T08:20:24Z beach: I still don't get the (let ((=var= ...)) (defun ...)) example. 2018-09-04T08:20:40Z orivej quit (Ping timeout: 246 seconds) 2018-09-04T08:20:44Z jackdaniel: yeah, I don't get that example either 2018-09-04T08:21:28Z no-defun-allowed: hi beach 2018-09-04T08:21:41Z jackdaniel: maybe it was meant to simulate global which is bound only in the function scope - defglobal doesn't work like that though) 2018-09-04T08:21:48Z jackdaniel: s/)// 2018-09-04T08:21:54Z jackdaniel: globals are always bound 2018-09-04T08:23:41Z orivej joined #lisp 2018-09-04T08:24:05Z Darts joined #lisp 2018-09-04T08:29:46Z fikka joined #lisp 2018-09-04T08:31:52Z shka_: hm 2018-09-04T08:33:21Z smokeink quit (Ping timeout: 252 seconds) 2018-09-04T08:34:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T08:45:11Z fikka joined #lisp 2018-09-04T08:51:18Z lavaflow quit (Ping timeout: 245 seconds) 2018-09-04T08:52:02Z rumbler31 joined #lisp 2018-09-04T08:55:56Z azimut_ joined #lisp 2018-09-04T08:56:07Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-04T08:58:01Z azimut quit (Ping timeout: 244 seconds) 2018-09-04T09:08:27Z juki joined #lisp 2018-09-04T09:20:08Z tralala joined #lisp 2018-09-04T09:27:53Z ebrasca: Is there some program to identify duplicate blocks of text within a file? 2018-09-04T09:32:42Z it3ration joined #lisp 2018-09-04T09:34:28Z shka_: ebrasca: i don't know about such thing, but it should be possible 2018-09-04T09:36:24Z shka_: perhaps just like plagiarism detection algorithms 2018-09-04T09:36:31Z shka_: it can work 2018-09-04T09:37:34Z shrdlu68: ebrasca: Duplicate blocks of what length? Words? 2018-09-04T09:38:04Z it3ration quit (Ping timeout: 240 seconds) 2018-09-04T09:38:34Z shka_: well, if you can hash text smartly, you can probabbly brute force your way trough most documents 2018-09-04T09:38:46Z shka_: no matter block size 2018-09-04T09:40:44Z zfree joined #lisp 2018-09-04T09:41:21Z ebrasca: I have found this https://github.com/hudayou/fib . 2018-09-04T09:41:58Z ebrasca: I like to find 1 in common lisp. 2018-09-04T09:43:48Z froggey quit (Ping timeout: 245 seconds) 2018-09-04T09:46:46Z ebrasca: I think it have 1 problem if indentation change it don't detect duplicated text. 2018-09-04T09:47:41Z shka_: ebrasca: i think that usually, such program should ignore all whitespace characters all together 2018-09-04T09:48:04Z Darts quit (Ping timeout: 240 seconds) 2018-09-04T09:49:58Z shka_: if it is natual language it analyzes 2018-09-04T09:50:20Z shka_: it also should not split words 2018-09-04T09:50:40Z shka_: so in fact it would compare chains of words 2018-09-04T09:52:00Z ebrasca: I like to input common lisp code and find duplicates. 2018-09-04T09:53:11Z shka_: oh, but common lisp code is not a text! 2018-09-04T09:54:07Z shka_: ebrasca: i think that you want to compare trees 2018-09-04T09:54:23Z shka_: perhaps finding tree that occurs frequently 2018-09-04T09:55:23Z ebrasca: Is there someting like this? 2018-09-04T09:55:38Z MetaYan joined #lisp 2018-09-04T09:56:25Z shka_: i don't know 2018-09-04T09:56:36Z shka_: but it is different class of problem 2018-09-04T09:56:56Z dddddd joined #lisp 2018-09-04T09:57:23Z Demosthenex: i'm using dexador to make http requests, and using the example code from https://github.com/fukamachi/dexador for handling error codes is pretty straightforward with handler-case, but i'm confused over handling some conditions in my function (ie: rate limit, retry service unavailable) vs allowing the calling function to control things like 404. it looks like dexador defines a base class for generic 2018-09-04T09:57:29Z Demosthenex: "http-request-failed", and then has more specific ones under that. 2018-09-04T09:57:38Z shrdlu68: ebrasca: Algorithm: Find characters whose positions increase monotonically. 2018-09-04T09:57:49Z Demosthenex: is there a way to handle all errors except one? 2018-09-04T09:57:49Z _death: ebrasca: you can adapt something like the following to lisp objects https://gist.github.com/death/f6e0ef136dbe00b83dc716ae4db766ab 2018-09-04T09:58:06Z shka_: Demosthenex: yes 2018-09-04T09:58:27Z Demosthenex: it seems simple to do "catch specific, catch specific, catch all", but i don't see a way to "catch all EXCEPT" 2018-09-04T09:58:46Z Demosthenex: should i just raise the error twice maybe? 2018-09-04T09:58:53Z shka_: handler-case accepts type specifer 2018-09-04T09:59:01Z shrdlu68: (not ... 2018-09-04T09:59:24Z shka_: so you can write (and some-error-type (not but-not-this-error-type)) 2018-09-04T09:59:48Z shka_: Demosthenex: try it! 2018-09-04T10:00:10Z Demosthenex: interesting. i know conditions are confusing, i never realized you could use logic on the match :P 2018-09-04T10:00:20Z Demosthenex: i'll go tinker =] 2018-09-04T10:11:18Z quazimodo quit (Ping timeout: 272 seconds) 2018-09-04T10:12:29Z quazimodo joined #lisp 2018-09-04T10:19:19Z Demosthenex: ok, it may be trivial, but reloading code on the fly while in a giant job you wouldn't want to restart is so flipping cool. updating the rate limiting code and changing debug level without stopping is priceless. 2018-09-04T10:19:28Z Demosthenex: just another thumbs up for cl =] 2018-09-04T10:21:15Z m00natic joined #lisp 2018-09-04T10:21:22Z makomo joined #lisp 2018-09-04T10:23:20Z X-Scale quit (Ping timeout: 272 seconds) 2018-09-04T10:23:36Z [X-Scale] joined #lisp 2018-09-04T10:23:57Z [X-Scale] is now known as X-Scale 2018-09-04T10:24:27Z jack_rabbit joined #lisp 2018-09-04T10:27:33Z razzy quit (Ping timeout: 245 seconds) 2018-09-04T10:29:53Z AndreasO joined #lisp 2018-09-04T10:36:30Z dim: eons ago I used to catch SIGUSR1 and SIGUSR2 on the services I would write and have them implement logmore and logless ;-) 2018-09-04T10:36:59Z Demosthenex: is it reasonable to assume that (sleep) is good to the hundreth of a second? 2018-09-04T10:37:54Z dim: ah it's still available online (https://github.com/dimitri/libphp-pgq/blob/master/src/SystemDaemon.php#L433) (yeah I know PHP) (that's a good way to really appreciate CL, having used that one) 2018-09-04T10:38:10Z dim: clhs sleep 2018-09-04T10:38:10Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_sleep.htm 2018-09-04T10:38:41Z dim: Demosthenex: depends on your implementation, have a look at its docs 2018-09-04T10:38:42Z Demosthenex: that doesn't say the resolution 2018-09-04T10:38:51Z Demosthenex: i read that already, or i wouldn't ask ;] 2018-09-04T10:39:06Z dim: fair enough, not as common as one might guess/think/appreciate ;-) 2018-09-04T10:39:26Z Demosthenex: some other languages it was whole seconds. i'm calculating sub-seconds for rate limit, and hit the limit again 2018-09-04T10:40:26Z SaganMan quit (Ping timeout: 272 seconds) 2018-09-04T10:41:01Z igemnace quit (Quit: WeeChat 2.2) 2018-09-04T10:41:13Z AndreasO quit (Quit: Found more important stuff than irc!) 2018-09-04T10:41:18Z Demosthenex: i'm now rounding up to the hundreth, we'll see if it hits again 2018-09-04T10:44:39Z housel quit (Read error: Connection reset by peer) 2018-09-04T10:48:27Z lavaflow joined #lisp 2018-09-04T10:52:46Z rumbler31 joined #lisp 2018-09-04T10:53:05Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-04T10:53:21Z lavaflow quit (Ping timeout: 260 seconds) 2018-09-04T10:53:37Z thinkpad quit (Quit: lawl) 2018-09-04T10:56:51Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-04T10:56:54Z trittweiler quit (Ping timeout: 252 seconds) 2018-09-04T10:57:02Z svillemot left #lisp 2018-09-04T11:00:09Z thinkpad joined #lisp 2018-09-04T11:02:11Z svillemot joined #lisp 2018-09-04T11:03:01Z mkolenda joined #lisp 2018-09-04T11:05:11Z shka_: Demosthenex: usually it is the best to consult implementation manual 2018-09-04T11:06:21Z shka_: Demosthenex: btw, it is how type specifers in cl work 2018-09-04T11:06:29Z razzy joined #lisp 2018-09-04T11:06:51Z shka_: you can do stuff like (declare (type (or null string) optional-string) 2018-09-04T11:07:17Z shka_: and depending on implementation, it can be even checked at the runtime 2018-09-04T11:07:32Z shka_: which is cool 2018-09-04T11:08:20Z shka_: obviously, to be sure, you are better of writing check-type, but even there you can write (or null string) 2018-09-04T11:08:21Z froggey joined #lisp 2018-09-04T11:13:12Z astalla joined #lisp 2018-09-04T11:14:55Z aindilis quit (Remote host closed the connection) 2018-09-04T11:20:15Z joni joined #lisp 2018-09-04T11:22:48Z p9fn joined #lisp 2018-09-04T11:29:26Z Demosthenex: hrm. regarding logic on conditions, is this right? https://bpaste.net/show/9b369daad045 i just got a service unavailable, but i thought that would retry under the generic clause 2018-09-04T11:31:48Z azimut_ quit (Quit: Adios) 2018-09-04T11:33:56Z it3ration joined #lisp 2018-09-04T11:34:27Z shka_: Demosthenex: it looks like handler-case would be cleaner 2018-09-04T11:35:11Z jackdaniel: shka_: handler-case works different than handler-bind 2018-09-04T11:35:33Z jackdaniel: in sense that it returns where it was called, while handler-bind may be used to fix the issue without interrupting the program flow 2018-09-04T11:35:36Z shka_: ah, right 2018-09-04T11:35:42Z shka_: he is restarting 2018-09-04T11:38:46Z it3ration quit (Ping timeout: 246 seconds) 2018-09-04T11:39:05Z shka_: Demosthenex: it looks like it SHOULD work to me 2018-09-04T11:39:39Z shka_: Demosthenex: maybe there is retry limit? 2018-09-04T11:39:43Z shka_: or something? 2018-09-04T11:39:52Z shka_: try to chcek if condition is launched 2018-09-04T11:40:06Z shka_: by installing break into handler 2018-09-04T11:43:06Z jackdaniel: Demosthenex: you still need to handle the condition 2018-09-04T11:43:17Z jackdaniel: handler-bind is meant to fix the issue 2018-09-04T11:43:26Z jackdaniel: from handler-bind you may invoke for instnace "retry" restart 2018-09-04T11:43:59Z Demosthenex: yeah, and i'm calling the dexador restart, or so i thought 2018-09-04T11:44:31Z Demosthenex: modeled after the last example here: https://github.com/fukamachi/dexador#handling-unexpected-http-status-code 2018-09-04T11:44:56Z Demosthenex: shka_: there is a retry limit, but i'm not seeing messages in the log indicating restart was tried 2018-09-04T11:45:22Z scymtym: there seems to be an inconsistency in dexador: https://github.com/fukamachi/dexador/blob/master/src/dexador.lisp#L101 invokes the restart if a condition is supplied but returns a closure if an integer is supplied 2018-09-04T11:46:23Z shka_: Demosthenex: eh, just let me check how this works under the hood 2018-09-04T11:47:15Z Demosthenex: to be fair, i'm assuming i messed up the syntax somewhere, or don't understand conditions well enough. 2018-09-04T11:47:19Z scymtym: shka_: i think i spotted the problem, see above 2018-09-04T11:47:34Z shka_: oooh 2018-09-04T11:47:36Z shka_: ok 2018-09-04T11:48:19Z shka_: Demosthenex: examples are correct, those function calls should invoke proper restart 2018-09-04T11:48:33Z shka_: so scymtym should be correct 2018-09-04T11:49:00Z shka_: check if handler-bind lambda is called even if error type is t 2018-09-04T11:49:11Z lavaflow joined #lisp 2018-09-04T11:49:17Z shka_: if yes, clearly scymtym got it right 2018-09-04T11:49:23Z shka_: *if no 2018-09-04T11:50:23Z scymtym: i guess you have to either (handler-bind ((dex:http-request-failed (dex:retry-request 5 :interval 3))) …) or (handler-bind ((dex:http-request-failed #'dex:retry-request)) …) which seems pretty weird 2018-09-04T11:50:39Z shka_: yeah 2018-09-04T11:50:57Z shka_: Shinmera will probabbly want to fix it 2018-09-04T11:51:02Z Demosthenex: wait, so i'm returning a function which is just returning his function? so i should funcall the retry with interval call? 2018-09-04T11:51:56Z jackdaniel: shka_: since when Shinmera fixes someone else's libraries? 2018-09-04T11:51:58Z Demosthenex: shka_: i'm not sure he's wrong. handler-bind wants a function to call, and if you call #'dex:retry-request its a funcion, or (dex:retry-request 5 :interval 3) makes a closure to return... that's right 2018-09-04T11:52:28Z shka_: jackdaniel: right, dexador is written by fukamachi 2018-09-04T11:52:30Z trittweiler joined #lisp 2018-09-04T11:52:34Z jackdaniel: I have a few beefy requests for mcclim and ecl :-) 2018-09-04T11:53:41Z lavaflow quit (Ping timeout: 244 seconds) 2018-09-04T11:54:12Z scymtym: Demosthenex: you should be able to (handler-bind ((… (lambda (c) (funcall (dex:retry-request 5) c))))), yeah. but note that the counter stored in the closure will not work since a new closure is made each time the condition is handled 2018-09-04T11:56:06Z Demosthenex: yeah. looks like its my desire to add sleeps and logging that are breaking that 2018-09-04T11:58:12Z SaganMan joined #lisp 2018-09-04T11:59:39Z scymtym: Demosthenex: you could probably use something like (let* ((retry (dex:retry-request 3 :interval 10))) (handle-bind ((… (lambda (c) (sleep 120) (funcall retry c)))) …)) 2018-09-04T12:00:58Z Demosthenex: https://bpaste.net/show/89b87517a37e 2018-09-04T12:01:00Z Demosthenex: yeah, basically 2018-09-04T12:01:01Z trittweiler quit (Ping timeout: 260 seconds) 2018-09-04T12:05:46Z steiner joined #lisp 2018-09-04T12:06:16Z steiner: 小拇指这样按不会炸吗 2018-09-04T12:06:26Z steiner: wrong channel 2018-09-04T12:06:29Z steiner: sorry 2018-09-04T12:08:01Z orivej quit (Ping timeout: 260 seconds) 2018-09-04T12:09:13Z astalla quit (Ping timeout: 246 seconds) 2018-09-04T12:10:13Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T12:10:38Z makomo: hello :-) 2018-09-04T12:10:44Z antoszka: never mind, I like the lettering ;) 2018-09-04T12:14:05Z beach: If a method has more than one qualifier, is the order between the qualifiers important? 2018-09-04T12:14:06Z fikka joined #lisp 2018-09-04T12:14:17Z beach: clhs define-method-combination 2018-09-04T12:14:17Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_defi_4.htm 2018-09-04T12:14:41Z steiner quit (Remote host closed the connection) 2018-09-04T12:14:48Z beach: It appears that way. 2018-09-04T12:15:14Z beach: "A method matches a qualifier-pattern if the method's list of qualifiers is equal to the qualifier-pattern..." 2018-09-04T12:15:46Z gpiero joined #lisp 2018-09-04T12:18:51Z jmercouris joined #lisp 2018-09-04T12:19:22Z steiner joined #lisp 2018-09-04T12:19:44Z jmercouris: best way to go from "Tue, 04 Sep 2018 00:00:00 GMT" to Unix time? 2018-09-04T12:19:47Z jmercouris: I see Chronicity 2018-09-04T12:19:50Z jmercouris: https://github.com/chaitanyagupta/chronicity 2018-09-04T12:20:31Z jmercouris: it is able to parse my string, but I'm not sure how to go from that to a Unix time https://gist.github.com/393a31bc132a1c37d800eed407df49c1 2018-09-04T12:20:35Z orivej joined #lisp 2018-09-04T12:23:09Z jmercouris: seems to be rfc-1123-format 2018-09-04T12:24:10Z jmercouris: I also looked at local-time 2018-09-04T12:24:19Z jmercouris: but it seems that local-time doesn't allow you to specify a format when parsing 2018-09-04T12:26:31Z jmercouris: seems I'll have to use encode-universal-time with chronicity or something like that 2018-09-04T12:28:47Z trittweiler joined #lisp 2018-09-04T12:37:36Z quazimodo quit (Ping timeout: 244 seconds) 2018-09-04T12:39:44Z quazimodo joined #lisp 2018-09-04T12:47:02Z Bike joined #lisp 2018-09-04T12:49:30Z shrdlu68: jmercouris: Once you get universal time, then unix time is (- universal-time (encode-universal-time 0 0 0 1 1 1970 0)) 2018-09-04T12:49:59Z lavaflow joined #lisp 2018-09-04T12:50:03Z orivej quit (Ping timeout: 245 seconds) 2018-09-04T12:53:26Z rumbler31 joined #lisp 2018-09-04T12:54:27Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-04T12:56:12Z jmercouris: shrdlu68: I did (chronicity:parse "date") which yields a timestamp then just used (local-time:timestamp-to-unix), but unfortunately it is off by my timezone 2018-09-04T12:56:19Z jmercouris: I wanted the dates parsed as GMT 2018-09-04T12:57:15Z azimut joined #lisp 2018-09-04T12:57:45Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-04T12:58:08Z jmercouris: seems I have to set *NOW* or something 2018-09-04T12:58:14Z jmercouris: ah, date time manipulation, what a joy 2018-09-04T13:02:43Z shrdlu68: I'm not sure what it means to "parse as GMT", unless you want to GMT+/-n 2018-09-04T13:02:58Z mindCrime joined #lisp 2018-09-04T13:05:32Z eschulte joined #lisp 2018-09-04T13:08:25Z jmercouris: that means parse a date that outputs a timestamp that assumes the date was written during GMT 2018-09-04T13:08:30Z jmercouris: anyways though, I got it, thanks :) 2018-09-04T13:10:38Z igemnace joined #lisp 2018-09-04T13:13:42Z mindCrime quit (Ping timeout: 272 seconds) 2018-09-04T13:17:37Z warweasle joined #lisp 2018-09-04T13:19:34Z aindilis joined #lisp 2018-09-04T13:20:16Z phoe: beach: yep, (:foo :bar) is not equal to (:bar :foo) 2018-09-04T13:21:16Z juki quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-04T13:22:30Z jkordani joined #lisp 2018-09-04T13:22:35Z igemnace quit (Read error: Connection reset by peer) 2018-09-04T13:23:17Z igemnace joined #lisp 2018-09-04T13:26:16Z jkordani quit (Client Quit) 2018-09-04T13:27:15Z jkordani joined #lisp 2018-09-04T13:30:07Z JeromeLon joined #lisp 2018-09-04T13:30:16Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T13:30:39Z dlowe: jmercouris: I think you have to pass in gmt to chronicity 2018-09-04T13:31:29Z dlowe <- slowpoke 2018-09-04T13:31:46Z zfree quit (Quit: zfree) 2018-09-04T13:32:45Z jmercouris: dlowe: I don't believe you can 2018-09-04T13:33:01Z jmercouris: says in the readme "Unlike Chronic, Chronicity doesn't support timezones and seasons 2018-09-04T13:33:01Z jmercouris: yet. Support is planned for future releases." 2018-09-04T13:33:04Z Lycurgus joined #lisp 2018-09-04T13:33:40Z jmercouris: one could set *NOW* but I didn't want to faff around with that 2018-09-04T13:34:08Z shrdlu68: In any case, "GMT" is same as "+0000" 2018-09-04T13:34:25Z JeromeLon left #lisp 2018-09-04T13:34:26Z jmercouris: yes, sure, but what should the format of *NOW* be anyway? 2018-09-04T13:34:34Z jmercouris: who knows what it is expecting 2018-09-04T13:34:48Z it3ration joined #lisp 2018-09-04T13:34:50Z jmercouris: you have to make a date time with what? 2018-09-04T13:34:57Z jmercouris: I don't know whatever, I just brute forced it lol 2018-09-04T13:35:12Z jmercouris: here's what I ended up doing: https://gist.github.com/1da6601f8b3627bd1e1e8bc526b23fa9 2018-09-04T13:35:32Z fikka joined #lisp 2018-09-04T13:36:01Z dlowe: jmercouris: (let ((local-time:*timezone* local-time:+utc-zone+)) (chronicity:parse date)) might work 2018-09-04T13:36:31Z jmercouris: chronicity embeds the offset already into the timestamp 2018-09-04T13:36:41Z shrdlu68: jmercouris: Have you seen http://quickdocs.org/chronicity/ ? 2018-09-04T13:36:53Z jmercouris: shrdlu68: Of course I have :D, that is what I am using 2018-09-04T13:36:59Z jmercouris: it's also in the gist I posted :D 2018-09-04T13:37:13Z shrdlu68: Oh :D 2018-09-04T13:38:45Z orivej joined #lisp 2018-09-04T13:38:59Z jmercouris: dlowe: local-time:*timezone* doesn't exist 2018-09-04T13:39:27Z it3ration quit (Ping timeout: 240 seconds) 2018-09-04T13:39:36Z jmercouris: local-time:*default-timezone* does exist, however 2018-09-04T13:39:43Z jmercouris: and at any rate, it still suffers from the same issue 2018-09-04T13:39:47Z pierpal quit (Quit: Poof) 2018-09-04T13:39:57Z jmercouris: since my code works, I shall leave it, it isn't mission critical 2018-09-04T13:40:00Z jmercouris: only gets run once per day 2018-09-04T13:40:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T13:40:14Z jmercouris: shrdlu68: thanks for the tips, they helped steer me in the right way in the end 2018-09-04T13:40:20Z pierpal joined #lisp 2018-09-04T13:44:06Z mrcom quit (Ping timeout: 272 seconds) 2018-09-04T13:46:04Z fikka joined #lisp 2018-09-04T13:48:33Z dlowe: hm. no idea. I only did local-time not chronicity 2018-09-04T13:48:45Z dlowe: I have another time library but no actual time to work on it haha 2018-09-04T13:50:27Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T13:52:51Z fikka joined #lisp 2018-09-04T13:54:17Z tralala quit (Quit: out) 2018-09-04T14:02:49Z drmeister joined #lisp 2018-09-04T14:04:46Z drmeister: Can anyone point to a good reader macro for defining hash tables on the fly? Something like Python's: food = {"ham" : "yes", "egg" : "yes", "spam" : "no" } 2018-09-04T14:04:48Z nika_ joined #lisp 2018-09-04T14:06:47Z dlowe: drmeister: would using alexandria's (alist-hash-table '(("ham" . "yes") ("egg" . "yes") ("spam" . "no"))) suffice? 2018-09-04T14:06:50Z Bike: http://frank.kank.net/essays/hash.html here's a simple one. i'd skip the => and comma stuff though. 2018-09-04T14:07:11Z drmeister: I do already depend on alexandria - so maybe. 2018-09-04T14:07:22Z atgreen joined #lisp 2018-09-04T14:08:06Z Bike: could probably simplify it to work off a plist (alexandria also has a function for this, i think) 2018-09-04T14:09:02Z dlowe: Either way 2018-09-04T14:09:21Z drmeister: plist-hash-table 2018-09-04T14:09:36Z dlowe: I believe plists are constrained to symbol keys, though 2018-09-04T14:09:52Z dlowe: maybe it wouldn't matter for alexandria's inputs 2018-09-04T14:11:12Z drmeister: plist-hash-table works great - and the keys can be anything. 2018-09-04T14:12:51Z Inline joined #lisp 2018-09-04T14:12:56Z drmeister: (defparameter *a* (alexandria:plist-hash-table (list "Hello" 1 "there" 2) :test #'equal)) 2018-09-04T14:13:52Z fikka quit (Ping timeout: 272 seconds) 2018-09-04T14:14:08Z pierpal quit (Quit: Poof) 2018-09-04T14:14:10Z Inline quit (Read error: Connection reset by peer) 2018-09-04T14:14:26Z pierpal joined #lisp 2018-09-04T14:14:37Z Inline joined #lisp 2018-09-04T14:14:59Z dlowe: nod. Just saying they might not work with getf and company 2018-09-04T14:15:11Z lavaflow joined #lisp 2018-09-04T14:15:22Z mason: How prevalent is loop? http://frank.kank.net/essays/hash.html uses it, and I can never see it and not shudder. It's just not Lispy. 2018-09-04T14:15:45Z dlowe: it's very, very prevalent 2018-09-04T14:16:00Z White_Flame: getf probably uses eql for its key 2018-09-04T14:16:05Z dlowe: mason: You might prefer the iterate library 2018-09-04T14:16:09Z mason: All the elegance of printf(3) :/ 2018-09-04T14:16:29Z dlowe: don't look at format then :p 2018-09-04T14:16:34Z mason: heh 2018-09-04T14:20:07Z MetaYan quit (Ping timeout: 246 seconds) 2018-09-04T14:21:20Z jochens joined #lisp 2018-09-04T14:25:00Z cage_ joined #lisp 2018-09-04T14:29:14Z fikka joined #lisp 2018-09-04T14:31:14Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-04T14:34:13Z developernotes joined #lisp 2018-09-04T14:34:46Z fikka quit (Ping timeout: 272 seconds) 2018-09-04T14:34:56Z beach: mason: LOOP is quite good for describing a large subset of the looping constructs that are normally needed. 2018-09-04T14:38:05Z FreeBirdLjj joined #lisp 2018-09-04T14:39:13Z mason: beach: But it's the "and doing it all at once" that bothers me. :P 2018-09-04T14:42:39Z mindCrime joined #lisp 2018-09-04T14:48:10Z dlowe: there's nothing in loop that can't be done with other constructs 2018-09-04T14:48:41Z dlowe: if you write a macro that does a better job, maybe it will achieve wide popularity 2018-09-04T14:49:37Z fikka joined #lisp 2018-09-04T14:52:23Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-04T14:54:13Z rumbler31 joined #lisp 2018-09-04T14:54:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T14:56:04Z jmercouris quit (Ping timeout: 244 seconds) 2018-09-04T14:56:16Z beach: mason: Sorry to hear that it bothers you. 2018-09-04T14:57:19Z rippa joined #lisp 2018-09-04T14:58:56Z rumbler31 quit (Ping timeout: 260 seconds) 2018-09-04T15:00:05Z fikka joined #lisp 2018-09-04T15:00:14Z mason: beach: Well. My question about prevalence is in part because I have to believe at least some population of Lisp programmers feel this way - Graham can't be alone. 2018-09-04T15:00:36Z Xach: It is true that some population feels that way. 2018-09-04T15:00:58Z mason: s/feel/&s/ 2018-09-04T15:01:47Z beach: mason: Paul Graham has some other strange opinions as well. 2018-09-04T15:02:01Z beach: mason: Like not wanting to use generic functions etc. 2018-09-04T15:02:10Z Xach: But no matter how strange, the opinions certainly shared by some population 2018-09-04T15:02:17Z dlowe: The thing about CL is that like it or not, the spec changes for no-one. 2018-09-04T15:02:27Z Xach: Possibly those who learned from his book only 2018-09-04T15:02:58Z p_l: I'd say Arc shows his preference for forever-NIH scheme 2018-09-04T15:03:07Z Xach: (not exclusively those) 2018-09-04T15:03:21Z jackdaniel: mason: I'm not a big fan of LOOP and FORMAT either if that consoles you ;-) 2018-09-04T15:03:30Z mason: jackdaniel: It does. It does. :) 2018-09-04T15:04:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T15:04:32Z jackdaniel: I'm not against powerful macros, just when I see more complicated usages of both operators they turn into perl in my eyes 2018-09-04T15:04:38Z jackdaniel: and I'm not very proficient with perl 2018-09-04T15:05:05Z jackdaniel: (probably I've just self-implied that I'm not clever enough, but whatever ;) 2018-09-04T15:05:15Z smazga joined #lisp 2018-09-04T15:06:38Z whartung: of course the spec not changing in 20 years is a definite reason for discussion dlowe 2018-09-04T15:07:34Z beach: whartung: Nah, that is a very good thing. 2018-09-04T15:08:13Z whartung: it’s sure suited the networking and threading camps. 2018-09-04T15:08:22Z whartung: those are ad hoc standards at best today. 2018-09-04T15:08:34Z dlowe: There is a selection effect where those who think it is a bad thing are not here :p 2018-09-04T15:08:49Z AeroNotix: With LOOP and FORMAT I just wish SLIME had far better autocomplete/minibuffer documentation 2018-09-04T15:08:52Z beach: whartung: Why do you care whether those are in the standard or not? 2018-09-04T15:08:53Z dlowe: I think there are tradeoffs that I'm comfortable with. 2018-09-04T15:09:12Z AeroNotix: whartung: the spec not changing in 20 years is a good thing 2018-09-04T15:09:18Z beach: whartung: Is there networking in the C standard for instance? 2018-09-04T15:09:32Z AeroNotix: Case in point: I'm running code last changed 17 years ago with no issues. 2018-09-04T15:09:52Z mason is an xv fan. 2018-09-04T15:09:54Z fikka joined #lisp 2018-09-04T15:10:16Z AeroNotix: What's xv? 2018-09-04T15:10:20Z mason: See? 2018-09-04T15:10:33Z AeroNotix: Sorry for not knowing everything 2018-09-04T15:10:37Z AeroNotix: I'll try harder next time 2018-09-04T15:10:43Z AeroNotix: but for this time, could you just explain what xv is 2018-09-04T15:11:35Z Xach: xv is an old image viewer 2018-09-04T15:11:55Z mason: Sorry, was distracted. Yes. It was most popular in the early 90s. 2018-09-04T15:11:59Z mason: And it's still lovely today. 2018-09-04T15:12:10Z Xach used Tuebingen Mosaic but it is no longer lovely 2018-09-04T15:12:26Z dirk` joined #lisp 2018-09-04T15:12:35Z dirk` is now known as Darts 2018-09-04T15:12:36Z nirved: used xv 20 years ago, these days gliv suits me better 2018-09-04T15:14:20Z Xach: Hmm, I am using github for some quicklisp work today, and it seems very slow. 2018-09-04T15:14:32Z nika_ quit (Quit: Leaving...) 2018-09-04T15:14:37Z AeroNotix: Xach: I thought it was just me but GH has seemed very slow for the last few days 2018-09-04T15:14:40Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T15:14:56Z Xach: Ok. 2018-09-04T15:14:56Z Fare joined #lisp 2018-09-04T15:15:17Z AeroNotix: The status page has nothing 2018-09-04T15:15:31Z AeroNotix: though I'm sure I remember a page for GH where they showed API latency. Can't remember where that's located now 2018-09-04T15:16:17Z dim: I remember using xv then switching to feh in the early enlightenment DR16 days... that's a long time ago, when I was happy with the command line, now I just C-o in dired and don't really care what program it opens ;-) 2018-09-04T15:17:00Z dlowe: I use eog these days 2018-09-04T15:19:19Z shrdlu68 quit (Quit: WeeChat 2.0.1) 2018-09-04T15:21:04Z razzy: hi, how ready SICL is? 2018-09-04T15:22:40Z astalla joined #lisp 2018-09-04T15:22:49Z beach: razzy: Not at all. 2018-09-04T15:23:45Z dale_ joined #lisp 2018-09-04T15:24:00Z beach: I am working on the bootstrapping code, but I ran into some complications related to DEFINE-METHOD-COMBINATION, so now I am working on that for the next few days. 2018-09-04T15:24:04Z dale_ is now known as dale 2018-09-04T15:24:13Z asarch joined #lisp 2018-09-04T15:24:54Z shka_ joined #lisp 2018-09-04T15:25:07Z shka_: good evening 2018-09-04T15:25:16Z beach: Hello shka_. 2018-09-04T15:25:30Z AeroNotix: jesus it's evening already. Need to sort out my sleep schedule 2018-09-04T15:26:28Z shka_: AeroNotix: it may be not evening in your area :-) 2018-09-04T15:27:08Z shka_: but reevaluating sleep schedules periodically is a good idea nonetheless 2018-09-04T15:28:07Z AeroNotix: shka_: It's 17.30 2018-09-04T15:28:14Z shka_: oh, ok 2018-09-04T15:28:24Z shka_: in such case you are in the same time zone 2018-09-04T15:29:20Z AeroNotix: GMT+2 here 2018-09-04T15:30:10Z razzy: beach: cool just asking,.. like the ideas :] 2018-09-04T15:30:18Z beach: Thanks. 2018-09-04T15:30:35Z fikka joined #lisp 2018-09-04T15:30:50Z jackdaniel: shka_: AeroNotix is from Poland and speaks the same language as you do 2018-09-04T15:31:07Z razzy: beach: i like multiple versions of package, because you would like different version of package for different architectures also 2018-09-04T15:31:08Z shka_: oh, ok 2018-09-04T15:31:16Z shka_: AeroNotix: Cześć! 2018-09-04T15:31:18Z shka_: :-) 2018-09-04T15:31:25Z beach: razzy: Yes, that's true. 2018-09-04T15:31:39Z shka_: i didn't assume that because you are not at #lisp-pl 2018-09-04T15:31:50Z AeroNotix: shka_: no, pl 2018-09-04T15:31:59Z AeroNotix: czesc 2018-09-04T15:32:10Z razzy: any candidates for #lisp-cz? 2018-09-04T15:32:16Z AeroNotix: I'm not a native pole though. My polish is like intermediate at best. 2018-09-04T15:32:29Z shka_: AeroNotix: it's ok :-) 2018-09-04T15:32:32Z AeroNotix: I'll join #lisp-pl though 2018-09-04T15:32:38Z shka_: cool! 2018-09-04T15:33:41Z shka_: razzy: i can't pretend to be Czech ;-) 2018-09-04T15:33:53Z shka_: but my advice is to go on and start it 2018-09-04T15:33:56Z dlowe: someday there will be a #lisp-jbo 2018-09-04T15:33:58Z razzy: beach and for optimization, you could have different packages for GPU architectures and CPU and change that on the fly 2018-09-04T15:34:04Z shka_: it does not cost you anything 2018-09-04T15:34:07Z jochens quit 2018-09-04T15:34:20Z shka_: razzy: mgl-mat does something like that 2018-09-04T15:34:22Z AeroNotix: dlowe: jbo? 2018-09-04T15:34:28Z shka_: but even better 2018-09-04T15:34:28Z jochens joined #lisp 2018-09-04T15:34:41Z beach: razzy: I suppose so. 2018-09-04T15:34:55Z shka_: because it stores data in few formats at the same time 2018-09-04T15:35:28Z shka_: so it can run both CUDA code and good old lisp at the same time 2018-09-04T15:35:28Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T15:35:33Z shka_: it is quite neat! 2018-09-04T15:35:33Z razzy: shka_: what the hell? need to check it out 2018-09-04T15:35:46Z it3ration joined #lisp 2018-09-04T15:36:20Z shka_: razzy: yeah, it is not perfect by any means, and author was assimilated by google so he does not work on it anymore 2018-09-04T15:36:41Z razzy: my brain just got hit :] 2018-09-04T15:36:49Z shka_: but design decisions are solid! 2018-09-04T15:37:01Z shka_: https://github.com/melisgl/mgl-mat 2018-09-04T15:37:24Z shka_: code is worth reading 2018-09-04T15:37:38Z razzy: sure i believe 2018-09-04T15:37:48Z dlowe: AeroNotix: Lojban 2018-09-04T15:37:53Z shka_: a little bit of macro sprinkles, but personally i was able to understand it without issue 2018-09-04T15:38:03Z razzy: not for general case 2018-09-04T15:38:16Z dlowe: Lojban is honestly like lisp, but for language 2018-09-04T15:38:30Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-04T15:38:33Z dlowe: composed of nested sequences 2018-09-04T15:39:59Z Fare quit (Ping timeout: 244 seconds) 2018-09-04T15:40:26Z quazimodo joined #lisp 2018-09-04T15:40:28Z it3ration quit (Ping timeout: 245 seconds) 2018-09-04T15:40:53Z razzy: thx 2018-09-04T15:41:01Z fikka joined #lisp 2018-09-04T15:41:25Z shka_: razzy: if you are willing to work on mgl-mat, i am willing to join forces 2018-09-04T15:41:38Z shka_: because this stuff seems to be worth developing 2018-09-04T15:43:09Z shka_: there is TONE of things that should be there 2018-09-04T15:43:17Z shka_: like proper error handling 2018-09-04T15:43:49Z shka_: and array broadcasting (helps translating code from numpy) 2018-09-04T15:44:30Z shka_: OpenCL backend alongside CUDA would be very helpful as well 2018-09-04T15:45:12Z bradcomp joined #lisp 2018-09-04T15:45:27Z shka_: ok, back to coding :-) 2018-09-04T15:45:53Z makomo: shka_: huh, this is really interesting, thanks for mentioning it :-) 2018-09-04T15:46:06Z makomo: Gabor Melis sounds familiar, isn't that the guy who won an AI contest using CL or something 2018-09-04T15:46:11Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T15:46:23Z razzy: shka_: i would not like to develop it i would like to have something like petalisp https://github.com/marcoheisig/Petalisp 2018-09-04T15:46:25Z shka_: makomo: he is 2018-09-04T15:46:27Z makomo: indeed he is: https://www.youtube.com/watch?v=s-HA2jlcy8w 2018-09-04T15:46:30Z makomo: very nice 2018-09-04T15:46:47Z shka_: Higgs Boson challenge 2018-09-04T15:47:02Z shka_: now assimilated by google :/ 2018-09-04T15:47:33Z gpiero quit (Remote host closed the connection) 2018-09-04T15:47:39Z shka_: razzy: honestly, i have no idea what to think about petalisp 2018-09-04T15:47:57Z shka_: or how to type τ from keyboard 2018-09-04T15:48:04Z bigfondue quit (Ping timeout: 250 seconds) 2018-09-04T15:48:19Z razzy: shka_: and most joy i would have, if we canibalise mgl-mat petalisp and make proper compiler that distribute load based on AST 2018-09-04T15:49:21Z shka_: well, i think that mgl-mat cube/facets stuff would fit into any math library 2018-09-04T15:49:22Z razzy: interpreter/compiler 2018-09-04T15:49:42Z varjag joined #lisp 2018-09-04T15:49:52Z razzy: sure shka_ 2018-09-04T15:49:53Z shka_: petalisp is not exception 2018-09-04T15:50:28Z shka_: does petalisp author accepts merge requests? 2018-09-04T15:50:45Z shka_: how to contact him and discuss design? 2018-09-04T15:50:57Z fikka joined #lisp 2018-09-04T15:51:25Z razzy: no idea 2018-09-04T15:51:37Z razzy: just read his paper 2018-09-04T15:51:52Z shka_: eh, some other time 2018-09-04T15:52:04Z shka_: i have something different to do now 2018-09-04T15:52:52Z shka_: but at this point all I really want is to have decent numpy style library 2018-09-04T15:53:03Z shka_: if petalisp can do that, I like it already 2018-09-04T15:53:20Z shka_: at this point mgl-mat was the best thing i found 2018-09-04T15:53:21Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-04T15:53:37Z razzy: petalisp optimalise all code. and will run partially on GPU 2018-09-04T15:53:47Z razzy: acording to authors 2018-09-04T15:54:22Z razzy: for huge systems 2018-09-04T15:54:38Z shka_: ok, that sounds good 2018-09-04T15:54:59Z razzy: the GPU part is work in progres 2018-09-04T15:55:09Z shka_: i seriously question non-ascii symbols 2018-09-04T15:55:26Z razzy: it assemble AST, do heuristic what to run where, and executes 2018-09-04T15:55:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T15:55:28Z shka_: but this can be solved 2018-09-04T15:55:48Z shka_: oh gosh, so it is compiler? :/ 2018-09-04T15:57:38Z razzy: kind of, yes,.. imho the ussage would be something like (compute (your function)) and it will spread whatever it can to GPU and multiple CPUs 2018-09-04T15:58:05Z shka_: eh, ok 2018-09-04T15:58:15Z shka_: that's above my level 2018-09-04T15:59:01Z razzy: so far above my also 2018-09-04T15:59:16Z razzy: but the idea is nice 2018-09-04T15:59:31Z razzy: and acording the paper is working at least partially 2018-09-04T15:59:38Z razzy: afk 2018-09-04T16:00:49Z Bike: the author is on irc sometimes as heisig. don't remember if he uses this channel though. 2018-09-04T16:02:48Z jackdaniel: [he uses this channel] 2018-09-04T16:03:15Z shka_: well i will try to check article and code out 2018-09-04T16:03:26Z jackdaniel: you talk about petalisp I guess? 2018-09-04T16:03:30Z shka_: maybe there is something i can do to help 2018-09-04T16:03:33Z shka_: yes 2018-09-04T16:04:15Z shka_: i need something like this, so if i can help to make it better, it would benefit me 2018-09-04T16:04:43Z shka_: but this approach sounds rather… advance 2018-09-04T16:07:50Z LiamH joined #lisp 2018-09-04T16:08:01Z bigfondue joined #lisp 2018-09-04T16:08:51Z razzy: anyone know Robert Strand 2018-09-04T16:09:01Z beach: That would be me. 2018-09-04T16:09:06Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-04T16:09:46Z razzy: beach: like your git :], protest? 2018-09-04T16:10:11Z beach: I don't understand. 2018-09-04T16:10:47Z shka_: razzy: protest would be from phoe 2018-09-04T16:11:06Z razzy: i read presentation on EU lisp conference 2018-09-04T16:11:15Z fikka joined #lisp 2018-09-04T16:11:23Z beach: I see, yes. 2018-09-04T16:11:58Z razzy: do i get sensation that there should be data dependent universal protocol? 2018-09-04T16:12:10Z shka_: where? 2018-09-04T16:12:14Z Fare joined #lisp 2018-09-04T16:14:04Z pjb joined #lisp 2018-09-04T16:14:11Z razzy: phoe: is protesting? 2018-09-04T16:15:29Z Fare quit (Read error: Connection reset by peer) 2018-09-04T16:15:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T16:16:30Z nirved_ joined #lisp 2018-09-04T16:18:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-04T16:19:14Z scymtym quit (Remote host closed the connection) 2018-09-04T16:19:24Z razzy: beach: was your presentation about said protocol? i would like to know more 2018-09-04T16:19:43Z beach: What protocol? 2018-09-04T16:19:52Z razzy: protest protocol? 2018-09-04T16:20:10Z beach: No, I have not been working on that. 2018-09-04T16:20:15Z beach: It is the work of phoe. 2018-09-04T16:20:33Z razzy: ah, ok, misunderstanding 2018-09-04T16:21:53Z pjb: razzy: debugger protocol? 2018-09-04T16:22:03Z fikka joined #lisp 2018-09-04T16:22:14Z shka_: sigh 2018-09-04T16:22:17Z shka_: ok, done 2018-09-04T16:22:18Z beach: pjb: "protest" is phoe's project. 2018-09-04T16:23:32Z shka_: i just added approximated-counts (min counting data sketch) to cl-ds 2018-09-04T16:23:54Z jack_rabbit joined #lisp 2018-09-04T16:24:16Z shka_: beach: i was told you had some dope paper on debugger specification 2018-09-04T16:24:20Z shka_: for SICL i think 2018-09-04T16:24:25Z leastbit joined #lisp 2018-09-04T16:24:32Z shka_: is it in the SICL repo? 2018-09-04T16:25:02Z beach: shka_: Yes, there is a specification of the Clordane debugger, and there is a specification of the support that SICL will give for debugging in the SICL specification. 2018-09-04T16:25:08Z beach: Which one do you want? 2018-09-04T16:25:32Z shka_: i don't know, but i suspect the second 2018-09-04T16:25:52Z beach: OK, hold on... 2018-09-04T16:26:54Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T16:28:17Z makomo: hm, does the CL spec say anything about reentracy (in general or for some function)? for example, doesn't GET-SETF-EXPANSION have to be reentrant because an expander for a place can use it to further process subforms which are places? 2018-09-04T16:28:33Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-04T16:28:37Z beach: shka_: http://metamodular.com/sicl.pdf section 14.8 2018-09-04T16:28:57Z shka_: 222 pages already 2018-09-04T16:29:15Z beach: shka_: and chapter 23. 2018-09-04T16:29:44Z shka_: ok, got it 2018-09-04T16:29:45Z beach: shka_: Otherwise, here is the Clordane specification: http://metamodular.com/clordane.pdf 2018-09-04T16:30:19Z shka_: beach: thanks! 2018-09-04T16:30:27Z beach: Anytime. 2018-09-04T16:30:41Z beach: shka_: Feel free to ask me questions if you want. 2018-09-04T16:30:58Z shka_: first of, i need to read it 2018-09-04T16:31:39Z beach: Right. 2018-09-04T16:31:45Z shka_: :-) 2018-09-04T16:31:57Z shka_: anyway, let me grab something to eat 2018-09-04T16:33:05Z razzy: shka_: petalisp is heisig work, btw 2018-09-04T16:33:17Z shka_: ok 2018-09-04T16:36:49Z jochens quit (Remote host closed the connection) 2018-09-04T16:37:25Z jochens joined #lisp 2018-09-04T16:37:56Z kristof joined #lisp 2018-09-04T16:41:45Z jochens quit (Ping timeout: 252 seconds) 2018-09-04T16:42:07Z fikka joined #lisp 2018-09-04T16:46:46Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T16:49:08Z cyraxjoe quit (Quit: I'm out!) 2018-09-04T16:49:28Z cyraxjoe joined #lisp 2018-09-04T16:52:36Z fikka joined #lisp 2018-09-04T16:53:51Z veinofsortain is now known as veinofveinofvein 2018-09-04T16:54:56Z jhei joined #lisp 2018-09-04T16:54:59Z rumbler31 joined #lisp 2018-09-04T16:55:29Z leastbit quit (Quit: Mutter: www.mutterirc.com) 2018-09-04T16:57:47Z orivej quit (Ping timeout: 240 seconds) 2018-09-04T16:57:54Z fikka quit (Ping timeout: 272 seconds) 2018-09-04T16:59:10Z nirved_ quit (Quit: Leaving) 2018-09-04T16:59:33Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-04T16:59:43Z Khisanth quit (Ping timeout: 246 seconds) 2018-09-04T17:08:25Z scymtym joined #lisp 2018-09-04T17:12:36Z fikka joined #lisp 2018-09-04T17:12:44Z gpiero joined #lisp 2018-09-04T17:14:54Z igemnace quit (Quit: WeeChat 2.2) 2018-09-04T17:15:51Z razzy: shka_: https://www.reddit.com/r/Common_Lisp/comments/8f6wez/petalisp_elegant_high_performance_computing/ 2018-09-04T17:17:46Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T17:17:50Z shka_: razzy: well, there seems to be something to it 2018-09-04T17:18:36Z Fare joined #lisp 2018-09-04T17:19:06Z razzy: is there a bot to leave heisig message? 2018-09-04T17:19:21Z Khisanth joined #lisp 2018-09-04T17:20:02Z razzy: .tell 2018-09-04T17:20:06Z razzy: .about 2018-09-04T17:21:12Z m00natic quit (Remote host closed the connection) 2018-09-04T17:21:40Z fikka joined #lisp 2018-09-04T17:22:57Z Bike: minion: memo for razzy: like so 2018-09-04T17:23:05Z Bike: well unless minion isn't here 2018-09-04T17:28:03Z makomo: you can also use Colleen 2018-09-04T17:28:39Z makomo: i forgot the exact syntax, but msg Colleen with "help" or random gibberish or something and you'll get a list of options 2018-09-04T17:30:31Z Bike: ::notify razzy like this, i think 2018-09-04T17:30:31Z Colleen: Bike: Got it. I'll let razzy know as soon as possible. 2018-09-04T17:35:07Z Denommus joined #lisp 2018-09-04T17:36:36Z it3ration joined #lisp 2018-09-04T17:39:30Z developernotes quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-04T17:40:10Z AeroNotix: Given a function FOO and (SETF FOO), given #'FOO how can I find the (SETF FOO)? 2018-09-04T17:41:33Z doubledup joined #lisp 2018-09-04T17:41:41Z it3ration quit (Ping timeout: 260 seconds) 2018-09-04T17:43:23Z doubledup quit (Client Quit) 2018-09-04T17:44:06Z developernotes joined #lisp 2018-09-04T17:45:02Z jasom: AeroNotix: I don't think there's a portable way to do that. Obviously given 'FOO you can do it but #'FOO might no longer have a name associated with it. 2018-09-04T17:45:41Z jasom: well... you could call symbol-function on every reachable symbol and compare with #'FOO, that would work as long as #'FOO isn't from an FLET. 2018-09-04T17:46:33Z AeroNotix: jasom: with 'FOO it's possibly yeah 2018-09-04T17:46:56Z kristof: there's no way to get the function name from a function object? weird 2018-09-04T17:47:08Z jasom: kristof: there's no *portable* way 2018-09-04T17:47:23Z jasom: most implementations keey that information around as long as you're not at (debug 0) 2018-09-04T17:47:58Z jasom: s/keey/keep 2018-09-04T17:48:36Z razzy: ::notify heisig razzy says: hi, i really like petalisp project, want to talk? 2018-09-04T17:48:36Z Colleen: razzy: Got it. I'll let heisig know as soon as possible. 2018-09-04T17:48:46Z jasom: If you really want it, then it's fairly easy to make a custom defun that stores the information in a hash table for later lookup 2018-09-04T17:49:25Z kristof: why are there two competing irc bots now? :P 2018-09-04T17:49:49Z dueyfinster joined #lisp 2018-09-04T17:49:53Z jasom: kristof: what's the second? Minion used to be in here, but I don't see it any more 2018-09-04T17:49:57Z mrcom joined #lisp 2018-09-04T17:50:25Z kristof: ::notify jasom You're getting a message from the other one 2018-09-04T17:50:25Z Colleen: kristof: Got it. I'll let jasom know as soon as possible. 2018-09-04T17:50:28Z dlowe: there's three but one of them isn't in here 2018-09-04T17:50:37Z dlowe: well, two of them aren't, technically 2018-09-04T17:50:40Z kristof: "as soon as possible". Doesn't do it immediately... :P 2018-09-04T17:50:40Z arbv quit (Quit: ZNC - https://znc.in) 2018-09-04T17:50:49Z jasom: hi 2018-09-04T17:50:49Z Colleen: jasom: kristof said 24 seconds ago: You're getting a message from the other one 2018-09-04T17:50:56Z AeroNotix: plz 2018-09-04T17:51:03Z arbv joined #lisp 2018-09-04T17:51:21Z jasom: kristof: My point is that minion isn't here so there's not really competing bots right now. 2018-09-04T17:51:58Z kristof: Ooooh. I didn't notice. 2018-09-04T17:52:08Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-04T17:54:20Z igemnace joined #lisp 2018-09-04T17:55:38Z razzy: beach: lispOS is in stadium of concept? 2018-09-04T17:55:38Z Colleen: razzy: Bike said 25 minutes, 7 seconds ago: like this, i think 2018-09-04T17:55:48Z jkordani_ joined #lisp 2018-09-04T17:55:59Z razzy: Colleen: nice one 2018-09-04T17:55:59Z Colleen: Unknown command. Possible matches: 8, time, time in, set, say, mop, get, have a, tell, roll, 2018-09-04T17:56:13Z razzy: ::8ball 2018-09-04T17:56:13Z Colleen: Unknown command. Possible matches: 8, tell, roll, set, say, mop, get, hello, grant, award, 2018-09-04T17:56:18Z razzy: ::8 2018-09-04T17:56:19Z Colleen: Eight. 2018-09-04T17:56:59Z FreeBirdLjj joined #lisp 2018-09-04T17:57:25Z dlowe: let's not play with the bot in a public channel 2018-09-04T17:57:34Z dlowe: I'm sure it works fine in privage messages 2018-09-04T17:59:18Z jkordani quit (Ping timeout: 252 seconds) 2018-09-04T17:59:20Z joni quit (Ping timeout: 272 seconds) 2018-09-04T18:01:40Z FreeBirdLjj quit (Ping timeout: 246 seconds) 2018-09-04T18:03:12Z FreeBirdLjj joined #lisp 2018-09-04T18:03:57Z razzy realised 2018-09-04T18:04:12Z jkordani joined #lisp 2018-09-04T18:07:38Z beach: razzy: SICL is meant to be the basis for LispOS. If you just want an OS written in Common Lisp, there is already Mezzano available. 2018-09-04T18:07:56Z jkordani_ quit (Ping timeout: 260 seconds) 2018-09-04T18:08:30Z orivej joined #lisp 2018-09-04T18:10:22Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-04T18:11:26Z razzy: like your LispOS rant 2018-09-04T18:11:40Z razzy: what Os should be 2018-09-04T18:12:12Z AeroNotix: What LispOS rant? 2018-09-04T18:12:39Z beach: This one http://metamodular.com/lispos.pdf I would guess. 2018-09-04T18:12:45Z razzy: yop 2018-09-04T18:13:08Z developernotes quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-04T18:13:11Z kristof: razzy: If you'd like to see a pretty good demo, I found this video great: http://people.csail.mit.edu/reti/SymbolicsTalk28June2012.m4v 2018-09-04T18:16:42Z razzy: i prefer good OS written in lisp 2018-09-04T18:18:34Z razzy: beach: is opengenera all that? 2018-09-04T18:21:09Z leastbit joined #lisp 2018-09-04T18:21:18Z leastbit left #lisp 2018-09-04T18:24:10Z makomo: this video is also very good (by the same guy): https://www.youtube.com/watch?v=o4-YnLpLgtk 2018-09-04T18:24:32Z makomo: especially the part when he modifies the picture of a cat :D 2018-09-04T18:24:49Z razzy: beach: only thing i am against in lispOS is completelly open pointers between software. 2018-09-04T18:25:28Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T18:25:34Z Darts quit (Ping timeout: 240 seconds) 2018-09-04T18:25:36Z vultyre joined #lisp 2018-09-04T18:27:16Z jasom: beach: FWIW, I have administrated some servers that could not work with a single address space on a mondern intel chip (256TB is the maximum that can be addressed on recent intel chips). 2018-09-04T18:27:48Z razzy: i am for that possibility. but i want to limit number of global variables in main loop (so user can inspect by hand what data is software passing between themselfs) and have very sophisticated tools to manage reuse of functions. 2018-09-04T18:29:02Z jasom: beach: the architecture allows for virtual/physical addresses up to 64/52 but 48/48 is the largest anybody has built to date (as far as I know) 2018-09-04T18:29:44Z razzy: beach: and run every piece of software in its own adress space (let) 2018-09-04T18:30:38Z sauvin quit (Read error: Connection reset by peer) 2018-09-04T18:31:26Z jasom: razzy: a single address space does not harm this; you can have a single address space with zero global variables if you like. 2018-09-04T18:31:27Z razzy: if the software grow too much into system, you would never get rid of it 2018-09-04T18:31:56Z razzy: jason: i used bad term, i realised 2018-09-04T18:32:12Z fikka joined #lisp 2018-09-04T18:32:21Z jasom: well a single address space *does* make it easier to use global variables, so they are not entirely unrelated 2018-09-04T18:32:47Z azimut quit (Ping timeout: 240 seconds) 2018-09-04T18:32:50Z razzy: you could have multiple physical memories posed as different virtual memories 2018-09-04T18:33:18Z razzy: different set of virtual memories 2018-09-04T18:34:02Z razzy: i would hate if software called any funcion willy nilly 2018-09-04T18:34:20Z vultyre quit (Remote host closed the connection) 2018-09-04T18:35:54Z razzy: but that should be user defined 2018-09-04T18:36:03Z AeroNotix: razzy: you mean just like linked libraries 2018-09-04T18:36:18Z Fare quit (Ping timeout: 245 seconds) 2018-09-04T18:36:43Z vultyre joined #lisp 2018-09-04T18:36:49Z LiamH quit (Read error: Connection reset by peer) 2018-09-04T18:37:20Z fikka quit (Ping timeout: 272 seconds) 2018-09-04T18:37:22Z AeroNotix: Sounds like securing something in this LispOS would be a nightmare 2018-09-04T18:37:40Z kristof: define secure 2018-09-04T18:38:13Z kristof: there are some complete paradigm shifts one must undertake to be an operator of a system like this. 2018-09-04T18:38:30Z AeroNotix: kristof: being able to access arbitrary memory locations presents more than a few security issues 2018-09-04T18:38:33Z kristof: One of them is "don't run code you don't trust from people you don't trust" 2018-09-04T18:38:50Z kristof: If you don't trust someone, at least find a way to trust the code. And if you can't read the code, how can you trust it? 2018-09-04T18:38:55Z kristof: Besides, "sandboxes" are trivial 2018-09-04T18:39:02Z AeroNotix: kristof: that implies the boundaries are fully secure 2018-09-04T18:39:03Z razzy: AeroNotix: some people are perfectly ok with their OS being ball of messy wigling functions, as long the system o what it suppose to 2018-09-04T18:39:17Z razzy: do what it suppose to 2018-09-04T18:39:27Z kristof: if you really don't trust something, run it in a virtual address space, which is what will happen to C code, anyway 2018-09-04T18:40:03Z jasom: AeroNotix: all OSes rely on boundaries being secure, this is not peculiar to the LispOS proposed by beach 2018-09-04T18:40:04Z razzy: some people would like to controll output functions 2018-09-04T18:40:27Z razzy: some people would like to controll functions operating on their data 2018-09-04T18:40:39Z razzy: i would like this system 2018-09-04T18:41:33Z ikki joined #lisp 2018-09-04T18:42:00Z razzy: AeroNotix: this lisp Os would be more transparent and readable, therefore more secure, imho 2018-09-04T18:42:08Z jasom: I do think making all memory appear consistent is a recipe for disaster; as beach mentions, it's a cache, and all caches become non-transparent when ordering matters. 2018-09-04T18:42:53Z jasom: s/consistent/persistant/ 2018-09-04T18:42:56Z LiamH joined #lisp 2018-09-04T18:44:31Z jasom: the reason that the persistant/volatile dichotomy remains today is because non-volatile memory is much slower at random access than volatile memory, and you can end up with an unusable system if ordering on non-volatile memory is incorrect (for some hand-wavy meaning of "incorrect") 2018-09-04T18:44:38Z razzy: jasom: what you could do, is to make one "virtual memory" that use other physical memories (caches, RAM, HDDs) as needed. 2018-09-04T18:45:28Z jasom: If you mess up ordering on volatile memory, sanity is just a power-cycle away. non-volatile memory is far less forgiving 2018-09-04T18:45:55Z razzy: more forgiving 2018-09-04T18:46:03Z jasom: less 2018-09-04T18:46:20Z jasom: you can end up with a non-bootable system if you corrupt non-volatile memory 2018-09-04T18:46:38Z kristof: jasom: I've got about 16GB of volatile memory on this laptop and 1TB of secondary storage. I think this is one of those "realities" that just needs to be accepted until things change. 2018-09-04T18:47:14Z xaotuk joined #lisp 2018-09-04T18:48:04Z jasom: kristof: if you could guarantee that on a system failure volatile memory got flushed to secondary storage, *and* that volatile memory never ends up in a bad state, then you could use your 16GB as only a cache for the 1TB. 2018-09-04T18:48:10Z vultyre quit (Quit: Leaving) 2018-09-04T18:48:49Z White_Flame: non-volatile RAM would basically make sleep/powerloss a no-brainer, but the normal boot process would probably still want to reinitialize RAM 2018-09-04T18:49:16Z kristof: Right, but the persistence isn't why I think abstracting the difference is a good idea. You can access main memory in nanoseconds. I think SSD access time, despite there being no seek, is still around 10ms. 2018-09-04T18:49:19Z razzy: memories have many physical constrains. access speed, reliability, storage volume. data have needs: reliability, speed of acces. Solution is match data needs to physical constrains of real world 2018-09-04T18:49:32Z jasom: Now it occurs to me that if you wrote your operating system only with pure data structures, and your garbage collector ran against non-volatile storage, then the ordering problem is largely solved, but efficient garbage collection algorithms with multi-TB heaps are non-trivial 2018-09-04T18:49:39Z razzy: that is OS job,.. not programmers 2018-09-04T18:49:49Z White_Flame: jasom: basically the same as append-only filesystems 2018-09-04T18:49:55Z jasom: kristof: I can read a file from my systems disk cache really fast 2018-09-04T18:50:20Z jasom: White_Flame: correct 2018-09-04T18:50:35Z Darts joined #lisp 2018-09-04T18:50:45Z jasom: White_Flame: but append-only filesystems enforce a tree-structure on the data, so GC is much simpler 2018-09-04T18:51:39Z jasom: razzy: the OS is a program 2018-09-04T18:51:43Z kristof: I plan trips much differently based on whether I can walk across the street to do my chores or if I have to take public transit. They're so quantitatively different that abstracting fails to take advantage of the differences. 2018-09-04T18:52:11Z fikka joined #lisp 2018-09-04T18:52:12Z White_Flame: razzy: if you wish to actually map solutions to the physical aspects, that generally involves application programmer decision making 2018-09-04T18:52:22Z razzy: jasom: yes and? it is job better solved on OS end. 2018-09-04T18:52:22Z jasom: kristof: the relative difference between L1 and RAM is similar to RAM and SSD 2018-09-04T18:53:39Z kristof: jasom: Yeah, I was thinking about that counterpoint, and my answer is that I'm willing to ignore it for cache vs. RAM and I'm not willing to ignore it for RAM vs SSD. 2018-09-04T18:53:44Z kristof: Am I... a hypocrite? :P 2018-09-04T18:53:52Z razzy: White_Flame: yes, now it is done by programmer 2018-09-04T18:54:00Z kristof: I think I'm just blindly accepting the dichotomy that modern programming paradigms impose. 2018-09-04T18:54:05Z kristof: Excuse me - operating system paradigms. 2018-09-04T18:54:07Z jasom: ~100us for an NVMe storage 2018-09-04T18:54:30Z jasom: rather 100us for SAS SSD 2018-09-04T18:54:39Z White_Flame: razzy: well, unless the OS becomes "smarter" and more correctly predictive about the nature of access patterns, it's still up to the programmer by default 2018-09-04T18:54:40Z MetaYan joined #lisp 2018-09-04T18:55:02Z White_Flame: and if changing access patterns also means shuffling around your data structures, or your application deciding what to load when, and how much, well that's not the OS's domain to decide for you 2018-09-04T18:55:13Z vultyre joined #lisp 2018-09-04T18:55:39Z kristof: Because of some poorly designed Linux applications I have felt, on many occasions, the pain of swapping to a hard disk drive where RAM was expected. The solution isn't to program based on HDD access speeds, it's to fit the program within the constraints of the expected RAM size. 2018-09-04T18:55:42Z rumbler31 joined #lisp 2018-09-04T18:56:09Z kristof: For cache vs ram, you're far likely to cry over a mismatch (accidental cache flushes). 2018-09-04T18:56:19Z White_Flame: depends on what you're doing 2018-09-04T18:56:20Z kristof: *far less likely 2018-09-04T18:56:26Z White_Flame: but yeah, the field is much smaller 2018-09-04T18:56:27Z kristof: It does depend. 2018-09-04T18:56:35Z kristof: For numerics? You better know! 2018-09-04T18:56:55Z kristof: (And that's also why I think there should be better low level languages designed for cache manipulation for these domains.) 2018-09-04T18:57:17Z razzy: White_Flame: in my hypotetical OS you could still setup data needs (this have to have 100ns acces etc. reliable at least 2 copies at all times) 2018-09-04T18:57:31Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T18:58:23Z razzy: but exact execution would by on compiler/interpretter 2018-09-04T18:59:10Z jasom: really performance intensive code will do things like prefetch, and manage the data to be adjacent (or not-adjacent for parallel execution), while most code is cache oblivious. It's not hard to see a future where secondary storage is used in the same way 2018-09-04T18:59:52Z vlatkoB quit (Remote host closed the connection) 2018-09-04T18:59:55Z kristof: That's not true 2018-09-04T18:59:56Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-04T19:00:07Z razzy: White_Flame: and in petalisp they say they partially solved problem of managing multiple memories and CPUs for big datacluster 2018-09-04T19:00:31Z White_Flame: razzy: that's a completely different domain 2018-09-04T19:00:47Z makomo quit (Ping timeout: 272 seconds) 2018-09-04T19:01:01Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-04T19:01:37Z FreeBirdLjj joined #lisp 2018-09-04T19:01:39Z razzy: White_Flame: that is same problem, different size. 2018-09-04T19:01:56Z White_Flame: general purpose computing vs data crunching loops 2018-09-04T19:02:25Z razzy: they are making general data crunching 2018-09-04T19:02:37Z fikka joined #lisp 2018-09-04T19:02:48Z razzy: but i think it is still solvable for small home music playing 2018-09-04T19:02:53Z White_Flame: and does it encompass hard drive access? 2018-09-04T19:03:23Z White_Flame: and rearchitecting your data structures and disk access strategies? 2018-09-04T19:03:44Z razzy: idk, i think not 2018-09-04T19:03:56Z xaotuk quit (Remote host closed the connection) 2018-09-04T19:04:01Z razzy: but i think it is possible 2018-09-04T19:04:02Z White_Flame: right, not general purpose computing, not OS-level design 2018-09-04T19:04:18Z White_Flame: it's still the aplication's control as to what to do where, and how to represent its internal structures 2018-09-04T19:04:22Z xaotuk joined #lisp 2018-09-04T19:04:26Z Fare joined #lisp 2018-09-04T19:04:29Z White_Flame: that all needs to be changed when implications of the underlying hardware affect its performance 2018-09-04T19:04:31Z vultyre quit (Remote host closed the connection) 2018-09-04T19:05:07Z razzy: White_Flame: true 2018-09-04T19:05:08Z White_Flame: one might say that that sort of thing is fundamental to the act of programming itself 2018-09-04T19:05:50Z razzy: fundamental to managing hardware 2018-09-04T19:05:53Z FreeBirdLjj quit (Ping timeout: 245 seconds) 2018-09-04T19:06:05Z razzy: not to algorithms 2018-09-04T19:06:08Z FreeBirdLjj joined #lisp 2018-09-04T19:06:19Z White_Flame: translating intent into instructions to execute == programming 2018-09-04T19:06:27Z phoe: razzy: heyyy 2018-09-04T19:06:31Z White_Flame: and selecting instructions involves designing data structures and access patterns 2018-09-04T19:06:43Z razzy: heya 2018-09-04T19:06:46Z MetaYan quit (Ping timeout: 246 seconds) 2018-09-04T19:06:47Z vultyre joined #lisp 2018-09-04T19:07:11Z phoe: I think you were confusing a few things over there 2018-09-04T19:07:26Z gravicappa joined #lisp 2018-09-04T19:07:26Z phoe: protest is a library for declaring and handling protocols and test cases, and it's mine 2018-09-04T19:07:39Z phoe: petalisp is an array computing language based on Common Lisp, and it's heisig's 2018-09-04T19:08:22Z phoe: the idea of protocols has been developed by beach based on CLIM II specification, and he wrote some words about it 2018-09-04T19:08:25Z phoe: ,protocol 2018-09-04T19:08:34Z phoe: http://metamodular.com/protocol.pdf 2018-09-04T19:08:54Z razzy: White_Flame: ok, if you want your powertrip of micromanaging instructions,.. you are master programmer 2018-09-04T19:09:32Z White_Flame: computers can't understand or execute intent 2018-09-04T19:09:40Z White_Flame: some translation into computer-speak of some level is required 2018-09-04T19:09:51Z White_Flame: then everything else underneath is instruction->instruction transformations 2018-09-04T19:10:05Z pjb: I find it silly to optimize code for the current architecture (cache or not), given that any time, we could start using processors where ALUs are in the RAM. 2018-09-04T19:10:12Z razzy: most of people have hard time think up the algorithm, write it in precise language, manage huge amount of hardware efficiently 2018-09-04T19:10:47Z pjb: On the contrary, use lisp to write higher level code, more declarative, and let the compiler writters worry about the hardware. 2018-09-04T19:10:51Z razzy: this would make managing hardware less pein 2018-09-04T19:10:53Z razzy: pain 2018-09-04T19:11:06Z White_Flame: pjb: unless data access & I/O become a bottleneck 2018-09-04T19:11:19Z razzy: pjb: imho lisp compiler should do more 2018-09-04T19:11:36Z pjb: White_Flame: don't do I/O! Don't do data access! Write declarations! :-) 2018-09-04T19:11:44Z White_Flame: heh 2018-09-04T19:11:55Z pjb: (declarations can be ignored in CL, so 0 code generated, the fastest program even >:-} ) 2018-09-04T19:12:08Z pjb: But seriously, never mix I/O with computation. 2018-09-04T19:12:19Z White_Flame: well, sometimes RAM access is noticeable I/O 2018-09-04T19:12:26Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-04T19:12:50Z pjb: Yet another reason why you should definitely not mix them: https://github.com/InductiveComputerScience/progsbase/blob/master/docs/softwarerot/2018-09-04-software-rot.md 2018-09-04T19:13:08Z White_Flame: and sometimes your computational structures are larger than memory (and as said above, the OS doesn't know what you're doing so general OS-level solutions will suck as badly as virtual memory) 2018-09-04T19:13:09Z pjb: Buy more RAM. 2018-09-04T19:13:18Z warweasle quit (Quit: back later) 2018-09-04T19:13:27Z razzy: pjb: i was talking about lisp compiler managing HDD, RAM, caches. in one big glorious flat heap of data 2018-09-04T19:13:33Z White_Flame: I woudl personally agree, but it isn't an ultimate solution 2018-09-04T19:13:41Z White_Flame: ^- to pjb 2018-09-04T19:14:06Z pjb: razzy: well, this is usually done at the OS level. But indeed, the compiler could simulate it by providing a VM and a virtual OS layer. 2018-09-04T19:14:20Z pjb: razzy: you know about KeyKOS, and EROS right? 2018-09-04T19:14:44Z pjb: Even the network is included in the flat heap of data, with 64-bit addresses. 2018-09-04T19:15:01Z pjb: ( but 128-bit addresses would be better to map IPv6 :-) ) 2018-09-04T19:15:18Z razzy: pjb: we were talking about hypotetical new http://metamodular.com/lispos.pdf 2018-09-04T19:16:11Z pjb: Don't confuse the compiler and the OS. 2018-09-04T19:16:22Z razzy: not confusing 2018-09-04T19:16:51Z razzy: lisp compiler should be integrated into lispOS 2018-09-04T19:17:13Z jasom: razzy: the lisp compiler is just one service provided by the lispOS 2018-09-04T19:17:18Z makomo joined #lisp 2018-09-04T19:17:21Z razzy: i wanted to express idea as quickly as possible 2018-09-04T19:17:26Z Darts quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-04T19:19:10Z pjb: razzy: It's in important architectural choice. 2018-09-04T19:19:12Z razzy: pjb: keykos gives me ghoose bumbs :] mostly in good way 2018-09-04T19:19:26Z vultyre quit (Remote host closed the connection) 2018-09-04T19:20:10Z pjb: The question is whether you can better ensure the security boundaries purely with software (the compiler code; how do you protect it?), or with the help of the hardware, by the OS. 2018-09-04T19:20:32Z lieven joined #lisp 2018-09-04T19:20:40Z pjb: What is easier to get? A bug in the compiler, or a bug in the hardware & OS? 2018-09-04T19:20:55Z shka_: heh 2018-09-04T19:21:08Z shka_: both are guaranteed! 2018-09-04T19:21:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-04T19:21:31Z pjb: How do you update the compiler, in a secure way? or the OS?, but compilers like SBCL get an update every month, while the OS is updated once every 4 or 5 years. How often do you want to be attacked? 2018-09-04T19:22:23Z pjb: See how easily some people ask for FFI in the compiler! 2018-09-04T19:24:59Z drmeister: Can I coerce a vector of double-floats into a vector of single-floats with a compact function? Or should I just write a loop? 2018-09-04T19:25:15Z Copenhagen_Bram quit (Ping timeout: 244 seconds) 2018-09-04T19:26:28Z shka_: drmeister: (map '(vector single-float) (rcurry #'coerce 'single-float) my-vector) 2018-09-04T19:27:00Z drmeister: rcurry? 2018-09-04T19:27:07Z shka_: alexandria:rcurry 2018-09-04T19:27:21Z fikka joined #lisp 2018-09-04T19:27:56Z pjb: (coerce (coerce #(1.2d0 3.4d5) '(vector double-float)) '(vector single-float)) #| ERROR: 1.2D0 doesn't match array element type of #(0.0 0.0). |# 2018-09-04T19:28:29Z Copenhagen_Bram joined #lisp 2018-09-04T19:28:52Z pjb: The problem is that clhs coerce specifies that for sequences, the SAME elements are in the result. 2018-09-04T19:29:01Z pjb: So it cannot convert a double-float into a single-float. 2018-09-04T19:29:27Z pjb: it can of course (coerce 1.2d3 'single-float) #| --> 1200.0 |# ; but it doesn't do it "recursively". 2018-09-04T19:29:57Z pjb: This could be a suggestion for a CL 3.0 :-) 2018-09-04T19:30:09Z razzy: pjb: you would need to make small local adresable areas with some form of encryption in said flat adress space. but it could be more transparent and optimizable/programable. imho the gains overweight looses :] if we already working on lispOS 2018-09-04T19:30:34Z kristof quit (Ping timeout: 246 seconds) 2018-09-04T19:31:20Z pjb: razzy: encryption is needed when your control of the environment fails (eg. if you provide pointers or ffi). 2018-09-04T19:31:28Z pjb: or if there's a bug in the compiler. 2018-09-04T19:32:31Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T19:32:46Z pjb: (let ((i 42)) (declare (optimize (safety 0) (speed 3) (space 3))) (certificate-secret-key (the certificate i))) 2018-09-04T19:32:48Z pjb: oops! 2018-09-04T19:36:22Z kristof joined #lisp 2018-09-04T19:36:52Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-04T19:37:25Z fikka joined #lisp 2018-09-04T19:37:28Z it3ration joined #lisp 2018-09-04T19:37:30Z razzy: pjb: i mean that you need to secure acces to denied functions when executing potentioally corrupted software, and this software could ask your system anything. so multilvl protection :] 2018-09-04T19:37:55Z razzy: not sure how to do it,.. 2018-09-04T19:38:37Z pjb: razzy: either you have control of the environment, or you're fucked. See eg. the Meltdown bug. This is dire loss of control. 2018-09-04T19:40:10Z razzy: pjb: typical unix system is increasingly not transparent and more messy. therefore less secure 2018-09-04T19:40:21Z Copenhagen_Bram joined #lisp 2018-09-04T19:40:28Z drmeister: Thank you 2018-09-04T19:40:40Z trittweiler quit (Ping timeout: 272 seconds) 2018-09-04T19:41:16Z whartung: that symbolics video is one of the best I’ve seen, thanx for the link 2018-09-04T19:42:08Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T19:42:34Z it3ration quit (Ping timeout: 272 seconds) 2018-09-04T19:42:43Z kristof: Who, mie? 2018-09-04T19:42:46Z kristof: *mine 2018-09-04T19:43:25Z whartung: yes 2018-09-04T19:43:48Z kristof: It's worth saving somewhere. 2018-09-04T19:43:59Z razzy: pjb: you could have reliable software build on unreliable hardware 2018-09-04T19:44:24Z pierpal quit (Quit: Poof) 2018-09-04T19:44:29Z cage_ quit (Quit: Leaving) 2018-09-04T19:44:34Z whartung: the only folks really coming close to what that was nowadays are the Pharo guys, at least taht I know of, that has any traction whatsoever. 2018-09-04T19:44:43Z pierpal joined #lisp 2018-09-04T19:46:40Z kristof: whartung: Never heard of it. Looking at it now, it looks great. 2018-09-04T19:47:02Z razzy: whartung: thx, will check them 2018-09-04T19:47:26Z fikka joined #lisp 2018-09-04T19:47:35Z whartung: yea. Every time I wanted to dabble with it, I just found that the folks working on it are making a Pharo designed to make a better Pharo, vs some other kind of programming. 2018-09-04T19:47:50Z whartung: They’re finally (I think) redoing the imaging model. 2018-09-04T19:48:52Z kristof: I think that's called dogfooding :P 2018-09-04T19:50:19Z whartung: sure, it just doesn’t make it particularly attractive to someone that wants to do something other than develop Pharo ;) 2018-09-04T19:50:59Z kristof: I prefer the function model to the message passing model. For instance, there's that great part at the beginning of the demonstration where he types a function name, and the GUI highlights all the usable arguments 2018-09-04T19:51:13Z jkordani_ joined #lisp 2018-09-04T19:51:39Z kristof: It's easy to do that in that homogeneous environment because it can check the type of the function and then it can check the types of everything in the view. 2018-09-04T19:51:43Z shka_ quit (Ping timeout: 245 seconds) 2018-09-04T19:52:11Z kristof: First off, that requires a notion of types at all. 2018-09-04T19:52:21Z fikka quit (Ping timeout: 260 seconds) 2018-09-04T19:52:26Z whartung: the whole presenter model in the display was pretty neat. 2018-09-04T19:52:58Z whartung: tying to imagine working with 3 button chording on one hand and 4 button chording on another. Piano was never my strength 2018-09-04T19:53:18Z kristof: Second of all, the way you describe the computation is totally different in a function model that makes that work. In a Smalltalk system I assume you'd have to start with the "argument"... aka the thing of which you don't know what you want quite yet! 2018-09-04T19:53:59Z kristof: whartung: Muscle memory is amazing. People learn to do all kinds of crazy associations 2018-09-04T19:54:12Z whartung: yea, of course. “object msg” is the basic syntanx for smalltalk 2018-09-04T19:54:16Z kristof: I mean, just think about typing at all. And you already do chording with ctrl-c, etc. 2018-09-04T19:54:35Z whartung: yea, and my typing gets worse every day lol 2018-09-04T19:54:48Z jkordani quit (Ping timeout: 252 seconds) 2018-09-04T19:55:08Z kristof: Have you ever operated machinery? When you operate a machine like a car, you treat it as an extension of you. You don't think about the specific motions involved, you just turn the wheel, or press the gas. 2018-09-04T19:55:32Z jkordani joined #lisp 2018-09-04T19:55:41Z kristof: I'm totally unworried about a chording device. Although I think it's primitive relative to the technology today. Especially with motion tracking 2018-09-04T19:55:47Z azimut joined #lisp 2018-09-04T19:55:51Z razzy: kristof: doogfooding seems like good modus operandi :] 2018-09-04T19:56:40Z whartung: I can drive. I can even use a stick shift. In fact, I can ride a motorcycle! That said, I haven’t had to learn something new like that in … 30 years. 2018-09-04T19:56:48Z whartung: I like dogfooding. 2018-09-04T19:57:15Z whartung: that’s why it can be nicer to work development for a company that’s just using the stuff internally, rather than a product for sale. 2018-09-04T19:57:31Z aindilis quit (Ping timeout: 246 seconds) 2018-09-04T19:57:36Z jkordani_ quit (Ping timeout: 260 seconds) 2018-09-04T19:57:49Z whartung: you write something, its “deployed” quickly, and by the afternoon, you either get flowers or angry people with pitchforks and torches at your desk 2018-09-04T19:57:50Z fikka joined #lisp 2018-09-04T20:01:52Z skidd0 joined #lisp 2018-09-04T20:02:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T20:03:32Z razzy: makes the job rewarding,.. nobody said what reward will be :D 2018-09-04T20:03:41Z whartung: yip! 2018-09-04T20:03:52Z pjb: (defun send (object message &rest arguments) (apply message object arguments)) (send object 'print-object *standard-output*) 2018-09-04T20:04:16Z heisig joined #lisp 2018-09-04T20:04:22Z whartung: so easy 2018-09-04T20:04:27Z whartung: “how hard can it be?" 2018-09-04T20:04:33Z pjb: kristof: and mind readers… 2018-09-04T20:04:46Z whartung: and the “do what I mean” subsystem. 2018-09-04T20:06:07Z razzy: pjb: what mindreader? 2018-09-04T20:06:46Z heisig: razzy: Still around? 2018-09-04T20:06:46Z Colleen: heisig: razzy said 2 hours, 18 minutes ago: razzy says: hi, i really like petalisp project, want to talk? 2018-09-04T20:07:10Z razzy: heisig: yop :] 2018-09-04T20:07:55Z fikka joined #lisp 2018-09-04T20:08:03Z razzy: heisig: we had 3hour discusion :] 2018-09-04T20:09:39Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-04T20:09:51Z ikki quit (Ping timeout: 260 seconds) 2018-09-04T20:10:22Z heisig: I'm catching up on the IRC log ... two things: Petalisp is intended as something superior to NumPy, but is currently mostly a tech demo. 2018-09-04T20:10:45Z heisig: My hope is to get things into reasonable shape until the end of this year. 2018-09-04T20:11:41Z quazimodo joined #lisp 2018-09-04T20:12:12Z heisig: razzy: If you have interesting ideas or use cases, I'd love to hear them - either here or via mail. 2018-09-04T20:12:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-04T20:12:52Z stacksmith quit (Remote host closed the connection) 2018-09-04T20:12:56Z razzy: heisig: will it be usable to arbitrary code? 2018-09-04T20:13:43Z razzy: heisig: how did you created 5000lines of maintainable code? 2018-09-04T20:14:11Z heisig: Yes, you can pass in arbitrary Lisp functions. 2018-09-04T20:15:50Z razzy: wunderbar 2018-09-04T20:16:04Z heisig: My secret to maintainable code is 1. I rewrite/beautify/document everything I cannot understand immediately a week after writing it 2. I try to design everything neatly around CLOS. 2018-09-04T20:16:36Z pierpa joined #lisp 2018-09-04T20:16:44Z razzy: heisig: so you writen the thing by hand? 2018-09-04T20:16:48Z Lycurgus quit (Ping timeout: 252 seconds) 2018-09-04T20:17:35Z razzy: i was expecting 4000 lines of machine learned rules 2018-09-04T20:17:54Z fikka joined #lisp 2018-09-04T20:18:15Z trittweiler joined #lisp 2018-09-04T20:18:20Z heisig: Petalisp? Yes, I wrote it by hand (= Emacs). But it usually generates many thousand lines of Lisp code per second when used. 2018-09-04T20:19:32Z whartung: 5000 lines isn’t a whole lot of code IMHO. 2018-09-04T20:20:12Z razzy: heisig: so no machine gained experience? maybe 1000parameters tweaked by genetic algorithm? able to adjust to systems it is used on/ 2018-09-04T20:20:13Z razzy: ? 2018-09-04T20:20:25Z whartung: and whether its maintainable or not isn’t up to heisig, it’s up to the other guy that picks it up. That’s the challenge of maintainable code. 2018-09-04T20:20:53Z whartung: I should say asserting whether something is maintainable. 2018-09-04T20:21:14Z heisig: razzy: I do not use machine learning at all. I might do so one day, but it is not a priority. 2018-09-04T20:21:42Z razzy: whartung: i do not like to write much code. my bad 2018-09-04T20:22:06Z White_Flame: well, the amount of code you write ends up being necessitated by the scope of the project you're undertaking 2018-09-04T20:22:36Z fikka quit (Ping timeout: 244 seconds) 2018-09-04T20:22:43Z razzy: how many lines write programmer in life 2018-09-04T20:22:48Z razzy: off topic 2018-09-04T20:22:57Z whartung: I mean, I find any time I take on a project, you know, you just get in a zone. you make progress, you debug stuff, incremental advancements each day, and then, you look back and go “Wow, I wrote that!??” 2018-09-04T20:23:06Z mrcom quit (Ping timeout: 272 seconds) 2018-09-04T20:23:13Z pjb: razzy: any. https://www.techradar.com/news/mits-mind-reading-device-brings-us-closer-to-sending-texts-with-our-brains 2018-09-04T20:23:30Z mrcom joined #lisp 2018-09-04T20:23:37Z whartung: oh, that’s dangerous. That’s just what we need. nothing at all to filter what ends up on twitter.... 2018-09-04T20:23:48Z razzy: :D :D 2018-09-04T20:24:36Z heisig: whartung: 5000 lines of code can be quite a lot if you try to be concise (which I do). My reference implementation of the Petalisp language has only 100 lines. 2018-09-04T20:24:47Z whartung: nice! 2018-09-04T20:25:10Z eddof13 quit (Ping timeout: 246 seconds) 2018-09-04T20:25:14Z razzy: heisig: i must admit, petalisp idea is interesting to me 2018-09-04T20:25:58Z heisig: razzy: I must admit I have no idea whether it works well in practice. But that is the thing with research... time will tell. 2018-09-04T20:26:23Z dvdmuckle quit (Quit: Bouncer Surgery) 2018-09-04T20:28:01Z whartung: my current (dormant) lisp project is about 1300 lines. Worst decision I did in there was using a list as a data structure in a couple of places. Something that started simple and just kind of metastasized. I just makes going back in to a little “what’s going on here?” I need to go clean those out. 2018-09-04T20:28:25Z razzy: heisig: can i see reference implemntation? is it like pseudocode? 2018-09-04T20:29:06Z razzy: whartung: i hate project doing that 2018-09-04T20:29:27Z whartung: well, just ties to my maxim “code has momentum” 2018-09-04T20:29:28Z dvdmuckle joined #lisp 2018-09-04T20:29:53Z razzy: like everything in this universe 2018-09-04T20:30:03Z Fare quit (Ping timeout: 245 seconds) 2018-09-04T20:30:44Z LdBeth: Good afternoon 2018-09-04T20:30:46Z heisig: razzy: https://github.com/marcoheisig/Petalisp/blob/master/code/backends/reference-backend/reference-backend.lisp 2018-09-04T20:30:55Z no-defun-allowed: Hi LdBeth 2018-09-04T20:31:00Z LdBeth: Hi 2018-09-04T20:31:05Z Roy_Fokker joined #lisp 2018-09-04T20:32:40Z Fare joined #lisp 2018-09-04T20:33:36Z rumbler31 joined #lisp 2018-09-04T20:33:48Z fourier joined #lisp 2018-09-04T20:34:12Z razzy: would not found it there on my own 2018-09-04T20:34:21Z scymtym quit (Ping timeout: 260 seconds) 2018-09-04T20:34:45Z xaotuk quit (Quit: xaotuk) 2018-09-04T20:35:00Z azimut quit (Ping timeout: 244 seconds) 2018-09-04T20:35:05Z regreg quit (Quit: Konversation terminated!) 2018-09-04T20:35:09Z fikka joined #lisp 2018-09-04T20:35:20Z azimut joined #lisp 2018-09-04T20:35:21Z regreg joined #lisp 2018-09-04T20:37:27Z aeth: As far as kLoC goes I find that my game engine is constantly around 7. 2018-09-04T20:37:36Z aeth: No matter how many features I add! 2018-09-04T20:37:43Z whartung: :) 2018-09-04T20:38:14Z whartung: that why you shouldn’t use the Window command window — it’s limited to 10,000 lines — any more than that, just get dropped. :) 2018-09-04T20:38:44Z dented42 joined #lisp 2018-09-04T20:39:04Z rumbler31 quit (Remote host closed the connection) 2018-09-04T20:40:21Z razzy: aeth: maybe you make longer lines? 2018-09-04T20:40:28Z whartung: funny, I’m looking and the readme.md for Petalisp, and the note about greek letters. (And, note, this is not a criticism of them, it’s simply my personal reaction to them.) 2018-09-04T20:41:06Z aeth: razzy: Every addition seems to roughly be simultaneous with a subtraction so far. Of course, eventually I'll run out of the latter. Eventually. 2018-09-04T20:41:40Z whartung: mostly when I see greek letters I freeze up. Like in compiler books, and such. simple forumulas using greek letters, literally, are “Greek to me”. “lambda” was the biggest hurdle I had to overcome to make any progress whatsoever in lisp. 2018-09-04T20:41:49Z rpg joined #lisp 2018-09-04T20:42:28Z whartung: the reason is that I always project that when there is a greek letter used, that it has some other meaning along with it. That the choice of the letter brings context that layman dunderhead me does not know, since it’s implicit in the domain that I’m not familiar. 2018-09-04T20:42:32Z razzy: aeth: ideally you write -20lines per day :] 2018-09-04T20:42:58Z whartung: doesn’t make that true, it’s just they way they make me feel. Even to this day they flumox me. 2018-09-04T20:43:12Z heisig: whartung: You concerns have been noted. I'm thinking about introducing separate package with non-greek names already. 2018-09-04T20:43:24Z aeth: whartung: (λ (β) (λ (α) (* α β))) 2018-09-04T20:43:42Z whartung: yea…O.o :) 2018-09-04T20:44:24Z Bike: separate package? seems like having alpha beta tau aliases would be pretty simple... 2018-09-04T20:44:33Z heisig: Or that, sure. 2018-09-04T20:44:34Z whartung: my biggest break through was a book, long ago, called “simply-scheme” which basically used a very light subset of the language, and its own vocabularly — that got me past “lambda”, and a big “aha” light came on. 2018-09-04T20:45:16Z azimut_ joined #lisp 2018-09-04T20:45:22Z azimut quit (Read error: Connection reset by peer) 2018-09-04T20:46:15Z aeth: The problem with Lisp-2s is that I can't maximally troll whartung with (λ (φ β) (λ (α) (φ α β))) because I have to make it (λ (φ β) (λ (α) (funcall φ α β))) 2018-09-04T20:46:27Z whartung: :) 2018-09-04T20:47:53Z aeth: Oh, wait, I know what to do. (setf (symbol-function 'φυνκαλλ) #'funcall) 2018-09-04T20:48:42Z razzy: heisig: what physical resources can petalisp optimize so far? multiple processors? net acces, multiple RAMs 2018-09-04T20:49:42Z cyraxjoe quit (Remote host closed the connection) 2018-09-04T20:49:56Z razzy: aeth: also better programmers tend to write shorter code and left more work for machine 2018-09-04T20:50:55Z heisig: razzy: So far, only multiple cores. Right now, I'm trying to find a good way to model data locality. Once I have that, I want to add distributed parallelization over MPI. 2018-09-04T20:52:14Z heisig: razzy: More precisely, Petalisp used to run on multiple cores. Currently I am in the process of rewriting the code generator, so nothing really works :-) 2018-09-04T20:53:02Z razzy: heisig: hmm,.. how do you model multiple cores? 2018-09-04T20:54:43Z razzy: heisig: i was thinking about problem some time ago. i would model (lisp interpretter) (data storage) (data interface) 2018-09-04T20:55:00Z razzy: from those tree elements a would model hardware structure 2018-09-04T20:56:05Z razzy: than i would match software AST to this hardware structure 2018-09-04T20:56:18Z razzy: based on heuristics 2018-09-04T20:58:26Z heisig: razzy: It gets much worse. Instead of an abstract syntax tree, I'm dealing with data flow graphs whose nodes are themselves massively parallel. 2018-09-04T20:58:31Z rpg quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-04T20:59:24Z razzy: so you transript AST to some more fine grained data-flow graph? 2018-09-04T20:59:50Z razzy: a read your presentation again 2018-09-04T21:00:09Z cyraxjoe joined #lisp 2018-09-04T21:01:02Z whartung: did you pick this up on a whim, or have you done compiler work before? 2018-09-04T21:02:21Z heisig: I did some compiler work before. 2018-09-04T21:03:06Z heisig: I have basically given up on the idea that on can just magically parallelize code written in a general purpose language. 2018-09-04T21:03:19Z whartung: yea 2018-09-04T21:03:26Z whartung: that seemed a bit of a leap to me as well 2018-09-04T21:03:48Z ebrasca: How to organize lisp code? ( Like order of functions , classes in big files ) 2018-09-04T21:03:58Z whartung: wasn’t there a language for the transputers back in the day? Julia? (nah, that’s a new language — or did they reuse the name?) 2018-09-04T21:06:49Z heisig: I have to leave. Good night. 2018-09-04T21:06:55Z whartung: tt heisig 2018-09-04T21:07:24Z azimut_ quit (Ping timeout: 252 seconds) 2018-09-04T21:07:40Z heisig quit (Quit: Leaving) 2018-09-04T21:07:48Z scymtym joined #lisp 2018-09-04T21:08:08Z razzy: i wanted to ask how he do DFG 2018-09-04T21:08:16Z razzy: next time 2018-09-04T21:12:57Z razzy: DFG is good :] 2018-09-04T21:13:38Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-04T21:14:03Z azimut joined #lisp 2018-09-04T21:15:02Z juki joined #lisp 2018-09-04T21:18:41Z azimut quit (Ping timeout: 260 seconds) 2018-09-04T21:19:00Z razzy: afk 2018-09-04T21:21:31Z aindilis joined #lisp 2018-09-04T21:21:55Z azimut joined #lisp 2018-09-04T21:23:34Z mindCrime quit (Ping timeout: 244 seconds) 2018-09-04T21:25:07Z it3ration joined #lisp 2018-09-04T21:27:40Z fourier: ebrasca: there are different strategies, depending on the project size, but I would just have a look at the project you like and copy the style :) 2018-09-04T21:30:00Z veinofveinofvein is now known as veinosaurus 2018-09-04T21:31:22Z ebrasca: fourier: I don't see some clear style. Here link with some of my updates https://github.com/ebrasca/Mezzano/blob/master/net/tcp.lisp . 2018-09-04T21:34:47Z fouric: would anyone happen to know of a good way to exec() (or equivalent) on SBCL (or in CL in general) 2018-09-04T21:34:55Z fouric: sb-posix appears to be missing that particular call 2018-09-04T21:35:05Z ebrasca: fourier: Maybe with my inital commit I have destroy this style. 2018-09-04T21:35:36Z Bike quit (Ping timeout: 252 seconds) 2018-09-04T21:36:00Z ebrasca: fourier: Link https://github.com/ebrasca/Mezzano/commit/04dd0f74bf821eab9d5cc7045cc5e2eeb77958f0 2018-09-04T21:36:21Z rpg joined #lisp 2018-09-04T21:37:25Z jkordani_ joined #lisp 2018-09-04T21:38:36Z pjb: aeth: make it (λ (φ β) (λ (α) (ƒ φ α β))) 2018-09-04T21:40:37Z jkordani quit (Ping timeout: 244 seconds) 2018-09-04T21:40:41Z ikki joined #lisp 2018-09-04T21:41:26Z astalla quit (Ping timeout: 260 seconds) 2018-09-04T21:42:48Z Fare quit (Ping timeout: 252 seconds) 2018-09-04T21:42:59Z pjb: aeth: or: (set-macro-character #\[ (lambda (s c) (declare (ignore c)) (cons 'funcall (read-delimited-list #\] s t))) nil) (set-syntax-from-char #\] #\)) ((lambda (f x) [f x]) 'sin 42) 2018-09-04T21:43:12Z pjb: Of course, you can choose other parentheses from unicode. 2018-09-04T21:45:36Z pjb: (lambda (f x) ⟮f x⟯) 2018-09-04T21:45:44Z rpg quit (Remote host closed the connection) 2018-09-04T21:46:01Z it3ration quit (Ping timeout: 246 seconds) 2018-09-04T21:46:17Z pjb: or perhaps (lambda (f x) ⦅f x⦆) 2018-09-04T21:49:38Z v0|d quit (Ping timeout: 245 seconds) 2018-09-04T21:49:49Z fouric: not the unicode 2018-09-04T21:49:50Z fouric: please 2018-09-04T21:50:16Z pjb: Why not? 2018-09-04T21:50:25Z pjb: It's old already! 2018-09-04T21:52:30Z varjag quit (Ping timeout: 244 seconds) 2018-09-04T21:53:53Z skidd0 quit (Quit: WeeChat 2.2) 2018-09-04T21:54:22Z iskander quit (Read error: Connection reset by peer) 2018-09-04T21:57:16Z it3ration joined #lisp 2018-09-04T21:57:24Z rumbler31 joined #lisp 2018-09-04T22:00:23Z fouric: because it looks weird with my comic sans terminal font 2018-09-04T22:00:38Z gravicappa quit (Ping timeout: 272 seconds) 2018-09-04T22:01:50Z ealfonso joined #lisp 2018-09-04T22:04:40Z aeth: Anyone who uses a lambda reader is evil 2018-09-04T22:05:18Z aeth: Just turn lambda to the Greek letter at your end, in Emacs. It won't impact the indentation at all because (lambda (x)\n is the style... unless you have (lambda (x\n 2018-09-04T22:05:27Z arbv quit (Quit: ZNC - https://znc.in) 2018-09-04T22:05:45Z aeth: And if you have many named parameters with long, meaningful names, you should be using a named function there 2018-09-04T22:05:51Z arbv joined #lisp 2018-09-04T22:07:07Z asarch quit (Ping timeout: 240 seconds) 2018-09-04T22:13:30Z juki left #lisp 2018-09-04T22:18:11Z joni joined #lisp 2018-09-04T22:28:25Z regreg quit (Quit: Konversation terminated!) 2018-09-04T22:35:06Z it3ration quit (Remote host closed the connection) 2018-09-04T22:35:14Z it3ration joined #lisp 2018-09-04T22:35:21Z Lycurgus joined #lisp 2018-09-04T22:37:27Z makomo quit (Ping timeout: 240 seconds) 2018-09-04T22:41:18Z moei quit (Quit: Leaving...) 2018-09-04T22:47:36Z aindilis quit (Remote host closed the connection) 2018-09-04T22:48:17Z it3ration quit (Read error: Connection reset by peer) 2018-09-04T22:48:25Z it3ration joined #lisp 2018-09-04T22:52:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T22:54:32Z makomo joined #lisp 2018-09-04T22:55:47Z ikki quit (Ping timeout: 240 seconds) 2018-09-04T22:56:13Z wigust quit (Read error: Connection reset by peer) 2018-09-04T22:56:34Z wigust joined #lisp 2018-09-04T22:57:07Z Bike joined #lisp 2018-09-04T22:58:43Z terpri joined #lisp 2018-09-04T23:03:41Z LiamH quit (Quit: Leaving.) 2018-09-04T23:07:55Z makomo quit (Ping timeout: 246 seconds) 2018-09-04T23:08:53Z fikka joined #lisp 2018-09-04T23:09:35Z fourier quit (Read error: Connection reset by peer) 2018-09-04T23:11:51Z quazimodo quit (Ping timeout: 260 seconds) 2018-09-04T23:12:18Z quazimodo joined #lisp 2018-09-04T23:13:54Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T23:14:41Z trocado joined #lisp 2018-09-04T23:14:50Z dale quit (Quit: dale) 2018-09-04T23:19:29Z smazga quit (Quit: leaving) 2018-09-04T23:24:00Z makomo joined #lisp 2018-09-04T23:26:04Z jasom: fouric: you can use CFFI to define a wrapper to exec; also see if uiop:run-program does what you need 2018-09-04T23:26:49Z rme joined #lisp 2018-09-04T23:27:31Z lnostdal quit (Ping timeout: 246 seconds) 2018-09-04T23:28:51Z shlemas joined #lisp 2018-09-04T23:29:12Z fikka joined #lisp 2018-09-04T23:29:46Z lnostdal joined #lisp 2018-09-04T23:31:11Z no-defun-allowed: aeth: would it really be λ-calculus then? 2018-09-04T23:31:38Z Fare joined #lisp 2018-09-04T23:32:23Z no-defun-allowed: also, cond should become a big { condition brace. 2018-09-04T23:33:00Z Kaisyu joined #lisp 2018-09-04T23:33:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-04T23:35:13Z rumbler31 quit (Remote host closed the connection) 2018-09-04T23:37:31Z Fare quit (Ping timeout: 260 seconds) 2018-09-04T23:38:47Z Denommus quit (Remote host closed the connection) 2018-09-04T23:42:47Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-04T23:46:18Z lnostdal quit (Ping timeout: 245 seconds) 2018-09-04T23:46:25Z Oladon joined #lisp 2018-09-04T23:47:16Z lnostdal joined #lisp 2018-09-04T23:49:36Z fikka joined #lisp 2018-09-04T23:52:13Z slyrus quit (Quit: slyrus) 2018-09-04T23:52:14Z slyrus1 is now known as slyrus 2018-09-04T23:53:05Z MetaYan joined #lisp 2018-09-04T23:53:12Z LdBeth: No, lisp is not lambda 2018-09-04T23:54:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-04T23:55:10Z LdBeth: In fact PicoLisp even removed lambda 2018-09-05T00:00:51Z it3ration quit (Ping timeout: 252 seconds) 2018-09-05T00:02:10Z no-defun-allowed: well picolisp can go ('1) itself 2018-09-05T00:07:35Z Mon_Ouie quit (Quit: WeeChat 1.9.1) 2018-09-05T00:07:48Z Mon_Ouie joined #lisp 2018-09-05T00:10:17Z fikka joined #lisp 2018-09-05T00:10:58Z wigust quit (Ping timeout: 244 seconds) 2018-09-05T00:11:06Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-05T00:12:24Z aeth: https://en.wikipedia.org/wiki/Unlambda 2018-09-05T00:13:01Z quazimodo joined #lisp 2018-09-05T00:15:32Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T00:20:50Z kristof quit (Remote host closed the connection) 2018-09-05T00:30:33Z fikka joined #lisp 2018-09-05T00:31:47Z trocado quit (Remote host closed the connection) 2018-09-05T00:31:47Z asarch joined #lisp 2018-09-05T00:32:20Z no-defun-allowed: i'm gonna make the sequel to the World's Greatest Infographic Stack 2018-09-05T00:33:17Z no-defun-allowed: the original was a made up templater and chart.js, the new version will be parenscript+chartist+cl-who 2018-09-05T00:35:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T00:41:01Z fikka joined #lisp 2018-09-05T00:45:46Z fikka quit (Ping timeout: 260 seconds) 2018-09-05T00:50:40Z FreeBirdLjj joined #lisp 2018-09-05T00:50:51Z fikka joined #lisp 2018-09-05T00:55:00Z moei joined #lisp 2018-09-05T00:55:41Z fikka quit (Ping timeout: 260 seconds) 2018-09-05T00:56:44Z Fare joined #lisp 2018-09-05T00:56:58Z Oladon quit (Quit: Leaving.) 2018-09-05T01:00:49Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-05T01:01:26Z FreeBirdLjj joined #lisp 2018-09-05T01:04:34Z nckx quit (Ping timeout: 240 seconds) 2018-09-05T01:04:49Z makomo quit (Ping timeout: 246 seconds) 2018-09-05T01:05:05Z nckx joined #lisp 2018-09-05T01:05:45Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-05T01:06:29Z orivej quit (Remote host closed the connection) 2018-09-05T01:06:34Z mkolenda quit (Ping timeout: 240 seconds) 2018-09-05T01:06:39Z razzy quit (Ping timeout: 252 seconds) 2018-09-05T01:07:12Z robotoad joined #lisp 2018-09-05T01:07:40Z orivej joined #lisp 2018-09-05T01:11:39Z fikka joined #lisp 2018-09-05T01:13:53Z Oladon joined #lisp 2018-09-05T01:16:41Z zooey_ quit (Ping timeout: 256 seconds) 2018-09-05T01:16:45Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T01:17:22Z anewuser joined #lisp 2018-09-05T01:22:17Z zooey joined #lisp 2018-09-05T01:23:54Z azimut quit (Ping timeout: 252 seconds) 2018-09-05T01:24:05Z robotoad quit (Quit: robotoad) 2018-09-05T01:25:41Z shlemas quit (Quit: shlemas) 2018-09-05T01:28:55Z nullniverse joined #lisp 2018-09-05T01:30:27Z azimut joined #lisp 2018-09-05T01:31:54Z fikka joined #lisp 2018-09-05T01:36:19Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-05T01:36:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-05T01:37:27Z nullniverse quit (Ping timeout: 252 seconds) 2018-09-05T01:37:37Z housel joined #lisp 2018-09-05T01:38:08Z it3ration joined #lisp 2018-09-05T01:38:11Z it3ration quit (Remote host closed the connection) 2018-09-05T01:38:20Z it3ration joined #lisp 2018-09-05T01:45:47Z ahungry joined #lisp 2018-09-05T01:52:14Z fikka joined #lisp 2018-09-05T01:55:57Z nullniverse joined #lisp 2018-09-05T01:56:07Z orivej quit (Ping timeout: 240 seconds) 2018-09-05T01:56:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T02:00:17Z mindCrime joined #lisp 2018-09-05T02:01:21Z bradcomp joined #lisp 2018-09-05T02:03:07Z fikka joined #lisp 2018-09-05T02:07:44Z fikka quit (Ping timeout: 244 seconds) 2018-09-05T02:08:47Z Roy_Fokker quit (Quit: Leaving) 2018-09-05T02:12:02Z sbadger joined #lisp 2018-09-05T02:14:51Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-05T02:16:00Z mindCrime_ joined #lisp 2018-09-05T02:16:00Z bradcomp joined #lisp 2018-09-05T02:18:31Z mindCrime quit (Ping timeout: 260 seconds) 2018-09-05T02:19:41Z nullniverse quit (Ping timeout: 260 seconds) 2018-09-05T02:19:43Z joni quit (Ping timeout: 246 seconds) 2018-09-05T02:23:11Z fikka joined #lisp 2018-09-05T02:24:27Z dented42 joined #lisp 2018-09-05T02:25:02Z robotoad joined #lisp 2018-09-05T02:25:04Z aindilis joined #lisp 2018-09-05T02:25:19Z mange joined #lisp 2018-09-05T02:26:03Z dented42 quit (Client Quit) 2018-09-05T02:28:26Z fikka quit (Ping timeout: 260 seconds) 2018-09-05T02:29:04Z pierpa quit (Quit: Page closed) 2018-09-05T02:30:53Z dmiles quit (Read error: Connection reset by peer) 2018-09-05T02:33:16Z fikka joined #lisp 2018-09-05T02:36:50Z dmiles joined #lisp 2018-09-05T02:37:57Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T02:37:59Z dmiles quit (Excess Flood) 2018-09-05T02:39:19Z oni-on-ion quit (Ping timeout: 246 seconds) 2018-09-05T02:40:20Z nullniverse joined #lisp 2018-09-05T02:42:07Z pierpal quit (Quit: Poof) 2018-09-05T02:42:23Z pierpal joined #lisp 2018-09-05T02:42:36Z dmiles joined #lisp 2018-09-05T02:45:21Z Kaisyu quit (Ping timeout: 260 seconds) 2018-09-05T02:45:21Z ealfonso quit (Ping timeout: 260 seconds) 2018-09-05T02:45:21Z p9fn quit (Ping timeout: 260 seconds) 2018-09-05T02:45:21Z gko quit (Ping timeout: 260 seconds) 2018-09-05T02:46:11Z fikka joined #lisp 2018-09-05T02:46:22Z caltelt_ joined #lisp 2018-09-05T02:48:02Z Kaisyu joined #lisp 2018-09-05T02:50:06Z Fare quit (Ping timeout: 244 seconds) 2018-09-05T02:51:11Z fikka quit (Ping timeout: 260 seconds) 2018-09-05T02:52:48Z gko joined #lisp 2018-09-05T02:53:34Z dddddd quit (Remote host closed the connection) 2018-09-05T02:54:06Z quazimodo quit (Ping timeout: 260 seconds) 2018-09-05T02:54:06Z rumbler31 joined #lisp 2018-09-05T02:55:41Z quazimodo joined #lisp 2018-09-05T02:56:41Z fikka joined #lisp 2018-09-05T02:58:24Z igemnace quit (Quit: WeeChat 2.2) 2018-09-05T02:59:05Z bheesham joined #lisp 2018-09-05T02:59:47Z acolarh quit (Ping timeout: 240 seconds) 2018-09-05T03:00:17Z dented42 joined #lisp 2018-09-05T03:00:28Z bradcomp quit (Ping timeout: 245 seconds) 2018-09-05T03:01:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T03:03:47Z sbadger quit (Ping timeout: 240 seconds) 2018-09-05T03:04:41Z acolarh joined #lisp 2018-09-05T03:05:50Z on_ion joined #lisp 2018-09-05T03:06:51Z fikka joined #lisp 2018-09-05T03:07:40Z specbot quit (Ping timeout: 244 seconds) 2018-09-05T03:08:39Z easye quit (Ping timeout: 252 seconds) 2018-09-05T03:08:48Z fe[nl]ix quit (Ping timeout: 252 seconds) 2018-09-05T03:10:53Z mkolenda joined #lisp 2018-09-05T03:11:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T03:12:03Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-05T03:13:28Z Blkt joined #lisp 2018-09-05T03:13:31Z fe[nl]ix joined #lisp 2018-09-05T03:13:31Z ChanServ has set mode +o fe[nl]ix 2018-09-05T03:13:44Z quazimodo joined #lisp 2018-09-05T03:17:47Z mindCrime_ quit (Ping timeout: 240 seconds) 2018-09-05T03:18:09Z Pixel_Outlaw joined #lisp 2018-09-05T03:19:04Z Fare joined #lisp 2018-09-05T03:20:49Z bradcomp joined #lisp 2018-09-05T03:21:40Z MetaYan quit (Ping timeout: 246 seconds) 2018-09-05T03:23:24Z robotoad quit (Quit: robotoad) 2018-09-05T03:25:16Z Intensity joined #lisp 2018-09-05T03:25:47Z nopf quit (Ping timeout: 240 seconds) 2018-09-05T03:27:11Z fikka joined #lisp 2018-09-05T03:31:00Z Ober quit (Remote host closed the connection) 2018-09-05T03:32:30Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T03:36:57Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-05T03:37:00Z foom2 joined #lisp 2018-09-05T03:37:50Z beach: Good morning everyone! 2018-09-05T03:39:10Z beach: jasom: Yes, I believe you. I am betting that the size of the physical address space will increase over the years. 2018-09-05T03:40:02Z foom quit (Ping timeout: 250 seconds) 2018-09-05T03:40:22Z beach: AeroNotix: Why do you think "securing something in this LispOS will be a nighmare"? 2018-09-05T03:46:09Z josemanuel quit (Quit: leaving) 2018-09-05T03:47:29Z fikka joined #lisp 2018-09-05T03:51:02Z jack_rabbit joined #lisp 2018-09-05T03:52:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-05T03:56:15Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-05T04:00:27Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-05T04:03:13Z beach: ebrasca: I think I gave you advice already about organizing your code. Do you have questions about it? 2018-09-05T04:06:50Z Fare: A LispOS ? What/where/when? 2018-09-05T04:07:02Z beach: Later. 2018-09-05T04:08:15Z fikka joined #lisp 2018-09-05T04:12:15Z quazimodo quit (Ping timeout: 244 seconds) 2018-09-05T04:12:58Z fikka quit (Ping timeout: 245 seconds) 2018-09-05T04:13:16Z Fare: beach: good morning! 2018-09-05T04:14:26Z quazimodo joined #lisp 2018-09-05T04:16:21Z dmiles quit (Ping timeout: 260 seconds) 2018-09-05T04:17:13Z beach: Fare: There was a long discussion triggered by razzy after reading this document: http://metamodular.com/lispos.pdf 2018-09-05T04:17:21Z beach: I really need to give it a proper name. 2018-09-05T04:18:38Z fikka joined #lisp 2018-09-05T04:19:05Z beach: I think I'll call it CLOSOS. 2018-09-05T04:19:18Z beach: https://www.urbandictionary.com/define.php?term=Closos 2018-09-05T04:19:44Z Bike quit (Quit: Lost terminal) 2018-09-05T04:23:48Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T04:25:47Z dmiles joined #lisp 2018-09-05T04:26:08Z slyrus: morning 2018-09-05T04:26:16Z drmeister: Hello everyone. 2018-09-05T04:26:21Z beach: Hello slyrus. 2018-09-05T04:27:24Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-05T04:27:30Z drmeister: FYI - I'm giving the opening technical talk at the 2018 Bay Area LLVM Developers' Meeting in October. 2018-09-05T04:28:19Z beach: That's very exciting. 2018-09-05T04:28:40Z beach: It means that they will be aware that there are languages other than C++ out there. 2018-09-05T04:29:28Z quazimodo joined #lisp 2018-09-05T04:29:45Z drmeister: Oh yes - that has always been the case. 2018-09-05T04:30:05Z drmeister: C++, C, D, Rust - all the myriad languages. 2018-09-05T04:30:12Z zigpaw quit (Read error: Connection reset by peer) 2018-09-05T04:30:25Z beach: I don't know about Rust, but the others are in the same family as C++. 2018-09-05T04:30:55Z drmeister: Yeah - so's Rust - that was part of the joke. 2018-09-05T04:31:25Z beach: So I hope you get lots of remarks such as "But isn't Common Lisp an interpreted language?", "Lisp is intrinsically slow, isn't it", and "Nobody uses Common Lisp anyway, right?". 2018-09-05T04:31:27Z drmeister: They have some gizmo in their compiler called a "borrow checker" that drives programmers mad - apparently. But it still looks like C. 2018-09-05T04:32:39Z drmeister: Nah - I'll slap up the summary from the "Energy Efficiency of Programming Languages" paper from Google. 2018-09-05T04:33:01Z beach: I vaguely remember that. 2018-09-05T04:34:23Z rumbler31 quit (Remote host closed the connection) 2018-09-05T04:35:07Z drmeister: http://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf . Figure 4 2018-09-05T04:37:01Z drmeister: Lisp is the fastest, most memory efficient and most energy efficient dynamic language by a long shot. 2018-09-05T04:37:34Z flip214: drmeister: that paper has "Lisp" in "VM" languages, not compiled?! 2018-09-05T04:37:36Z beach: Nice! 2018-09-05T04:38:15Z drmeister: I'm going to want to talk about Cleavir and how we fused it to llvm. We can talk about that in a couple of weeks. 2018-09-05T04:38:26Z beach: Sure. 2018-09-05T04:38:41Z fikka joined #lisp 2018-09-05T04:39:18Z kdas_ joined #lisp 2018-09-05T04:39:20Z beach: Table 3 is devastating for Python. 2018-09-05T04:39:43Z oystewh quit (Ping timeout: 246 seconds) 2018-09-05T04:39:53Z eagleflo quit (Ping timeout: 260 seconds) 2018-09-05T04:39:57Z drmeister: flip214: Where is that? 2018-09-05T04:40:07Z kushal quit (Ping timeout: 256 seconds) 2018-09-05T04:40:16Z omilu quit (Ping timeout: 272 seconds) 2018-09-05T04:40:27Z flip214: drmeister: figure 4 has "Lisp" in the middle column, "VM" 2018-09-05T04:40:41Z flip214: left is compiled, right interpreted 2018-09-05T04:41:28Z drmeister: I downloaded the lisp code - it's SBCL code - and the lisp programmer used some pretty low level tricks to get performance. All's fair in love and programming. 2018-09-05T04:42:42Z beach: flip214: Can you explain your example with (let ((=var= ...)) (defun ...)) please? 2018-09-05T04:44:04Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T04:49:15Z flip214: beach: I'm trying to do some performance optimizations for a state variable that's needed in several functions. a DEFPARAMETER needs to check for thread-local bindings, 2018-09-05T04:49:54Z flip214: and a (LET ((=var= ...)) (defun ...)) binding around the functions does lookup via the symbol and some indirections. 2018-09-05T04:50:07Z flip214: (I invented =var= for a kind-of-global variable.) 2018-09-05T04:50:55Z kdas_ is now known as kushal 2018-09-05T04:51:17Z flip214: I'll yet have to try sb-ext:defglobal. 2018-09-05T04:51:28Z zigpaw joined #lisp 2018-09-05T04:51:57Z flip214: Basically, I'd hoped to find something that keeps the address in a register and then just does direct access of that... 2018-09-05T04:52:05Z Lycurgus quit (Quit: Exeunt) 2018-09-05T04:52:20Z flip214: perhaps I should just make a local binding of the global variable, that might achieve nearly the same effect?! 2018-09-05T04:52:21Z anewuser quit (Ping timeout: 252 seconds) 2018-09-05T04:53:18Z beach: flip214: What makes you say that this example looks up via the symbol? 2018-09-05T04:55:01Z beach: The compiler completely eliminates the symbol for lexical variables. 2018-09-05T04:55:49Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-05T04:56:44Z quazimodo joined #lisp 2018-09-05T04:58:59Z fikka joined #lisp 2018-09-05T05:00:29Z Oladon quit (Quit: Leaving.) 2018-09-05T05:02:25Z flip214: the disassembly 2018-09-05T05:03:52Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T05:04:04Z beach: That would be very surprising. It would mean that every time you use =var= as a lexical variable, they would share the location? 2018-09-05T05:04:17Z beach: Sounds like incorrect semantics to me. 2018-09-05T05:05:53Z flip214: well, it's a closure binding, not a lexical variable - the LET is outside of the DEFUNs. 2018-09-05T05:06:27Z flip214: but never mind... I'll retry with DEFGLOBAL and some more ideas 2018-09-05T05:06:39Z beach: It is still lexical. 2018-09-05T05:07:34Z beach: And I still don't see how the symbol would be involved. Certainly, that example could not use any kind of value slot of the symbol. 2018-09-05T05:07:41Z it3ration quit (Ping timeout: 260 seconds) 2018-09-05T05:09:51Z fikka joined #lisp 2018-09-05T05:11:28Z pjb quit (Ping timeout: 250 seconds) 2018-09-05T05:14:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T05:14:51Z ahungry quit (Remote host closed the connection) 2018-09-05T05:16:51Z beach: Anyway, I think I have a good solution in SICL for the method-combination conundrum that the Common Lisp HyperSpec and the MOP introduce. 2018-09-05T05:17:03Z beach: DEFINE-METHOD-COMBINATION will create a method-combination TEMPLATE that has one ore more VARIANTs. Those variants are instances of the class METHOD-COMBINATION. FIND-METHOD-COMBINATION takes additional arguments that determine what variant to use. 2018-09-05T05:17:29Z beach: If no variant exists that corresponds to the arguments given, then a new variant is created. The way I determine whether an existing variant corresponds to the additional arguments is as follows: I take the ordinary lambda list of DEFINE-METHOD-COMBINATION, parse it and obtain a list of all the variables that it introduces. I then create a function that looks like this: (lambda (list v1 v2 ... vn)) where v1...vn are 2018-09-05T05:17:30Z beach: the variables introduced by the lambda list. 2018-09-05T05:17:36Z beach: Running this function returns a SIGNATURE which is a list that determines the variant to use and it is stored with the variant. 2018-09-05T05:17:51Z beach: The "expansion" function that DEFINE-METHOD-COMBINATION creates looks like this: (lambda (methods v1 v2 ... vn) ) where the body contains the code to categorize all the methods and the code from the body of DEFINE-METHOD-COMBINATION. 2018-09-05T05:17:53Z beach: To run that function, given a particular variant, just do (apply methods ). 2018-09-05T05:18:39Z beach: If course, the templates with all the variants will be stored in a first-class global environments as usual. 2018-09-05T05:19:37Z gpiero quit (Remote host closed the connection) 2018-09-05T05:29:00Z azimut quit (Ping timeout: 252 seconds) 2018-09-05T05:29:55Z fikka joined #lisp 2018-09-05T05:34:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-05T05:35:05Z bitch quit (Ping timeout: 268 seconds) 2018-09-05T05:35:59Z it3ration joined #lisp 2018-09-05T05:38:45Z no-defun-allowed: hi beach 2018-09-05T05:39:38Z caltelt_ quit (Ping timeout: 245 seconds) 2018-09-05T05:40:47Z it3ration quit (Ping timeout: 240 seconds) 2018-09-05T05:44:59Z sauvin joined #lisp 2018-09-05T05:46:31Z fourier joined #lisp 2018-09-05T05:50:06Z doubledup joined #lisp 2018-09-05T05:50:15Z fikka joined #lisp 2018-09-05T05:50:34Z doubledup quit (Remote host closed the connection) 2018-09-05T05:52:50Z rumbler31 joined #lisp 2018-09-05T05:52:58Z fourier quit (Ping timeout: 245 seconds) 2018-09-05T05:53:18Z beach: Hey no-defun-allowed. 2018-09-05T05:54:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-05T05:54:52Z Inline quit (Quit: Leaving) 2018-09-05T06:02:59Z rumbler31 quit (Remote host closed the connection) 2018-09-05T06:07:12Z scymtym quit (Remote host closed the connection) 2018-09-05T06:10:52Z fikka joined #lisp 2018-09-05T06:12:37Z asarch quit (Quit: Leaving) 2018-09-05T06:15:37Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T06:20:27Z vlatkoB joined #lisp 2018-09-05T06:21:25Z fikka joined #lisp 2018-09-05T06:25:25Z it3ration joined #lisp 2018-09-05T06:26:09Z slyrus: drmeister: regarding that benchmarking paper you posted earlier, I was disappointed to see that the "fasta" benchmark was really just writing a random "FASTA" file, not reimplementations of the actual FASTA alignment algorithm. 2018-09-05T06:26:12Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T06:26:35Z gpiero joined #lisp 2018-09-05T06:31:10Z fikka joined #lisp 2018-09-05T06:31:23Z orivej joined #lisp 2018-09-05T06:32:22Z it3ration quit (Ping timeout: 272 seconds) 2018-09-05T06:34:34Z tfb quit 2018-09-05T06:40:09Z Fare quit (Ping timeout: 252 seconds) 2018-09-05T06:49:51Z shrdlu68 joined #lisp 2018-09-05T06:50:29Z shrdlu68: phoe: (How) did you solve the fuzzy search problem? 2018-09-05T06:50:45Z azimut joined #lisp 2018-09-05T06:52:30Z scymtym joined #lisp 2018-09-05T06:54:38Z orivej quit (Ping timeout: 245 seconds) 2018-09-05T07:03:33Z rumbler31 joined #lisp 2018-09-05T07:06:43Z fikka quit (Ping timeout: 245 seconds) 2018-09-05T07:09:28Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-05T07:12:28Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-05T07:12:56Z fikka joined #lisp 2018-09-05T07:17:44Z fikka quit (Ping timeout: 244 seconds) 2018-09-05T07:20:28Z shka_ joined #lisp 2018-09-05T07:22:49Z varjag joined #lisp 2018-09-05T07:25:55Z quipa joined #lisp 2018-09-05T07:26:30Z oystewh joined #lisp 2018-09-05T07:27:27Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-05T07:28:59Z quazimodo joined #lisp 2018-09-05T07:31:58Z razzy joined #lisp 2018-09-05T07:33:00Z fikka joined #lisp 2018-09-05T07:36:00Z orivej joined #lisp 2018-09-05T07:37:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-05T07:41:30Z p9fn joined #lisp 2018-09-05T07:42:47Z quazimodo quit (Ping timeout: 240 seconds) 2018-09-05T07:43:24Z fikka joined #lisp 2018-09-05T07:44:59Z quazimodo joined #lisp 2018-09-05T07:48:01Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T07:49:18Z aeth quit (Ping timeout: 252 seconds) 2018-09-05T07:49:38Z aeth joined #lisp 2018-09-05T07:51:21Z fikka joined #lisp 2018-09-05T07:52:11Z jochens joined #lisp 2018-09-05T07:52:21Z jochens quit (Remote host closed the connection) 2018-09-05T07:53:09Z jochens joined #lisp 2018-09-05T07:58:48Z orivej quit (Ping timeout: 245 seconds) 2018-09-05T08:06:19Z runejuhl quit (Read error: Connection reset by peer) 2018-09-05T08:07:53Z runejuhl joined #lisp 2018-09-05T08:09:50Z astalla joined #lisp 2018-09-05T08:12:10Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-05T08:12:52Z azimut quit (Ping timeout: 246 seconds) 2018-09-05T08:14:16Z quazimodo joined #lisp 2018-09-05T08:14:21Z mange quit (Ping timeout: 260 seconds) 2018-09-05T08:22:55Z azimut joined #lisp 2018-09-05T08:27:35Z it3ration joined #lisp 2018-09-05T08:27:37Z azimut quit (Read error: No route to host) 2018-09-05T08:27:55Z nirved joined #lisp 2018-09-05T08:28:56Z azimut joined #lisp 2018-09-05T08:32:39Z it3ration quit (Ping timeout: 244 seconds) 2018-09-05T08:34:01Z rumbler31 joined #lisp 2018-09-05T08:35:14Z quazimodo quit (Ping timeout: 244 seconds) 2018-09-05T08:35:23Z quazimodo joined #lisp 2018-09-05T08:36:23Z tripty quit (Remote host closed the connection) 2018-09-05T08:38:24Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-05T08:38:41Z wigust joined #lisp 2018-09-05T08:39:00Z tralala joined #lisp 2018-09-05T08:42:05Z shrdlu68 quit (Quit: WeeChat 2.0.1) 2018-09-05T08:42:25Z JuanDaugherty joined #lisp 2018-09-05T08:42:49Z JuanDaugherty quit (Client Quit) 2018-09-05T09:01:02Z jochens quit (Read error: Connection reset by peer) 2018-09-05T09:01:37Z jochens joined #lisp 2018-09-05T09:05:26Z jochens quit (Read error: Connection reset by peer) 2018-09-05T09:06:02Z jochens joined #lisp 2018-09-05T09:07:31Z jochens quit (Read error: Connection reset by peer) 2018-09-05T09:07:36Z jochens_ joined #lisp 2018-09-05T09:08:27Z shrdlu68 joined #lisp 2018-09-05T09:13:24Z quipa quit (Ping timeout: 252 seconds) 2018-09-05T09:25:28Z azimut quit (Ping timeout: 245 seconds) 2018-09-05T09:26:16Z azimut joined #lisp 2018-09-05T09:29:58Z MetaYan joined #lisp 2018-09-05T09:39:40Z steiner quit (Remote host closed the connection) 2018-09-05T10:08:43Z oystewh quit (Quit: .) 2018-09-05T10:24:15Z [X-Scale] joined #lisp 2018-09-05T10:25:10Z X-Scale quit (Ping timeout: 246 seconds) 2018-09-05T10:25:10Z [X-Scale] is now known as X-Scale 2018-09-05T10:26:01Z quazimodo quit (Read error: Connection reset by peer) 2018-09-05T10:28:33Z it3ration joined #lisp 2018-09-05T10:30:20Z quazimodo joined #lisp 2018-09-05T10:33:21Z it3ration quit (Ping timeout: 252 seconds) 2018-09-05T10:34:41Z rumbler31 joined #lisp 2018-09-05T10:39:14Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-05T10:45:15Z ebrasca quit (Ping timeout: 252 seconds) 2018-09-05T10:53:55Z m00natic joined #lisp 2018-09-05T10:56:15Z steiner joined #lisp 2018-09-05T10:56:15Z vlatkoB_ joined #lisp 2018-09-05T10:59:28Z vlatkoB quit (Ping timeout: 246 seconds) 2018-09-05T10:59:38Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T11:00:44Z fikka joined #lisp 2018-09-05T11:01:42Z regreg joined #lisp 2018-09-05T11:09:28Z pierpal quit (Quit: Poof) 2018-09-05T11:09:47Z pierpal joined #lisp 2018-09-05T11:15:52Z LdBeth: What happened to EuLisp? 2018-09-05T11:17:01Z razzy: LdBeth: conference? 2018-09-05T11:17:10Z jackdaniel: it has 3 implementations and exists, what would happen to it? 2018-09-05T11:17:17Z jackdaniel: it is not widely adopted 2018-09-05T11:17:26Z makomo joined #lisp 2018-09-05T11:17:45Z jackdaniel: razzy: lisp language with a standard draft (somewhere in between CL and Scheme size-wise) 2018-09-05T11:17:52Z jackdaniel: https://en.wikipedia.org/wiki/EuLisp 2018-09-05T11:18:00Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T11:18:23Z no-defun-allowed: Brexit happened cause Theresa May waned Scheme to be the national Lisp. 2018-09-05T11:19:54Z razzy: lol 2018-09-05T11:21:15Z no-defun-allowed: Irish independence was a thing actually because the IRA was fighting to get rid of R5RS. 2018-09-05T11:24:39Z LdBeth: Interestingly, T also fell into obscure 2018-09-05T11:24:39Z no-defun-allowed: Back to the land of overpronounced R's, I think I could make oclcl and Common Lisp compile a small subset of CL. 2018-09-05T11:24:57Z no-defun-allowed: I realistically need let, aref and arithmetic. 2018-09-05T11:26:05Z no-defun-allowed: X, Y and C(hannel) can be automagically bound and all input images are named. The macro has an implicit setf which sets the appropriate pixel of the new image. 2018-09-05T11:26:18Z lavaflow quit (Ping timeout: 245 seconds) 2018-09-05T11:27:50Z josemanuel joined #lisp 2018-09-05T11:33:33Z fikka joined #lisp 2018-09-05T11:33:35Z razzy: picolisp is spartan :] 2018-09-05T11:34:12Z razzy: but still not spartan enought form me 2018-09-05T11:34:15Z razzy: for 2018-09-05T11:34:28Z jackdaniel: use ulisp then 2018-09-05T11:34:37Z gector quit (Read error: Connection reset by peer) 2018-09-05T11:34:39Z jackdaniel: and play on arduino ;) 2018-09-05T11:34:53Z jackdaniel: http://www.ulisp.com/ 2018-09-05T11:35:10Z gector joined #lisp 2018-09-05T11:36:32Z no-defun-allowed: Is there anywhere to talk about GC design? 2018-09-05T11:37:09Z azimut quit (Ping timeout: 252 seconds) 2018-09-05T11:38:12Z azimut joined #lisp 2018-09-05T11:38:14Z galdor: I'm curious, is there a reason for DEFVAR and DEFPARAMETER not to have an optional :TYPE keyword argument with errors signaled when setting a value of the incorrect type, the same way than for object slots ? 2018-09-05T11:38:31Z galdor: I fail to see any downside to such behaviour 2018-09-05T11:38:39Z fikka quit (Ping timeout: 244 seconds) 2018-09-05T11:40:23Z jackdaniel: galdor: both operators create special variables which may be bound inside (for instance) a function, so their location can't be resolved at compilation time 2018-09-05T11:40:45Z jackdaniel: each such binding would require checking, whenever type is correct 2018-09-05T11:41:12Z TMA: galdor: there are several. first: the runtime performance might get hurt. second: it is totally permissible to ignore all type declarations elsewhere, this would be an exception. third: what jackdaniel says 2018-09-05T11:41:13Z jackdaniel: what has some penalty to it, so that may be the reason (or not) 2018-09-05T11:41:38Z jackdaniel: mind also, that lisp is a dynamically typed language, so enforcing *variable* type is against dynamic typing spirit 2018-09-05T11:42:15Z jackdaniel: values are typed, not variables. of course nothing prevents you from adding your own set function which will check whenever value is of correct type 2018-09-05T11:44:08Z fikka joined #lisp 2018-09-05T11:44:20Z galdor: oh ok 2018-09-05T11:44:31Z galdor: I did not think about the variable/value distinction 2018-09-05T11:44:34Z lonjil quit (Ping timeout: 252 seconds) 2018-09-05T11:44:35Z galdor: thank you for the explaination 2018-09-05T11:44:39Z eagleflo joined #lisp 2018-09-05T11:44:51Z jackdaniel: sure 2018-09-05T11:47:47Z azimut quit (Ping timeout: 240 seconds) 2018-09-05T11:48:23Z azimut joined #lisp 2018-09-05T11:48:28Z fikka quit (Ping timeout: 244 seconds) 2018-09-05T11:51:15Z nullniverse quit (Ping timeout: 252 seconds) 2018-09-05T11:51:41Z no-defun-allowed: There aren't many digestible resources on GCs. One guy stepped through the process which helped me understand Cheney's algorithm but otherwise all the resources that aren't writeups and the GC Handbook are specific to Java or C# or something. 2018-09-05T11:51:45Z drmeister: Hello everyone 2018-09-05T11:52:00Z no-defun-allowed: Hi drmeister 2018-09-05T11:52:58Z drmeister: no-defun-allowed: Have you seen Ravenbrook's website on garbage collection? 2018-09-05T11:53:45Z drmeister: http://www.memorymanagement.org/ 2018-09-05T11:54:06Z nirved: http://gchandbook.org/ 2018-09-05T11:54:19Z drmeister: They created the Memory Pool System garbage collector that we use - the documentation for that is also excellent. 2018-09-05T11:54:56Z jackdaniel: /context hint: "we use (in clasp -red)"/ 2018-09-05T11:56:38Z eMBee quit (Ping timeout: 272 seconds) 2018-09-05T11:57:14Z eMBee joined #lisp 2018-09-05T11:58:28Z no-defun-allowed: I've got the gc handbook but it's quite tricky to understand without more research. ADHD doesn't help either. 2018-09-05T11:58:58Z no-defun-allowed: Do you develop the clasp environment, drmeister? 2018-09-05T12:04:36Z jackdaniel: no-defun-allowed: drmeister is clasp's creator 2018-09-05T12:05:10Z flip214: jackdaniel: in other words, drmeister is clasp's meister ;) 2018-09-05T12:05:44Z tralala quit (Quit: out) 2018-09-05T12:06:33Z eMBee quit (Ping timeout: 244 seconds) 2018-09-05T12:06:39Z cpape quit (Ping timeout: 252 seconds) 2018-09-05T12:07:14Z galdor: for GCs, "The Garbage Collection Handbook" is probably the best reference out there 2018-09-05T12:07:29Z galdor: it goes really deep and detail various kinds of GCs 2018-09-05T12:07:43Z no-defun-allowed: Amazing. 2018-09-05T12:08:07Z no-defun-allowed: --Can I get your autograph please?-- 2018-09-05T12:09:28Z lonjil joined #lisp 2018-09-05T12:09:44Z galdor: oh that's the same book just above 2018-09-05T12:09:53Z galdor: sorry 2018-09-05T12:10:23Z jackdaniel: I have it on my bookshelf, but sadly didn't have time to give it a proper read yet (only skimmet through chapters) 2018-09-05T12:10:42Z galdor: I barely started too 2018-09-05T12:11:14Z galdor: I don't have a practical use case right, either personally or for $DAYJOB, so it's hard to find some time to invest 2018-09-05T12:11:17Z drmeister: no-defun-allowed: Yes, I'm responsible for getting clasp started. 2018-09-05T12:11:55Z Gnuxie[m] joined #lisp 2018-09-05T12:13:10Z drmeister has no idea how to digitally sign an autograph :-) 2018-09-05T12:13:38Z galdor: drmeister: I loved your talk presenting clasp, it was very inspiring 2018-09-05T12:13:41Z jackdaniel: you start clim-fig demo and draw with a "pont" drawer using the mouse ;) 2018-09-05T12:14:00Z jackdaniel: save image will be implemented soon™ 2018-09-05T12:14:27Z eMBee joined #lisp 2018-09-05T12:14:34Z azimut quit (Ping timeout: 240 seconds) 2018-09-05T12:15:31Z drmeister: galdor: Thank you. 2018-09-05T12:16:36Z drmeister: I'll next be talking at the llvm developers meeting in October - that will be more on Clasp and working with llvm - but it will be recorded and put up on YouTube. 2018-09-05T12:16:53Z shrdlu68: I too loved that talk. 2018-09-05T12:17:23Z drmeister: jackdaniel: You are implementing "save image" in ECL? How? 2018-09-05T12:18:04Z drmeister spits coffee through his nose. 2018-09-05T12:18:14Z drmeister: With boehm? Seriously - how? 2018-09-05T12:18:30Z jackdaniel: no, I'm implementing "Save image" in clim-fig demo in McCLIM 2018-09-05T12:18:33Z jackdaniel: sorry for the confusion 2018-09-05T12:18:43Z orivej joined #lisp 2018-09-05T12:18:44Z Xach: ha 2018-09-05T12:18:45Z jackdaniel: like png image 2018-09-05T12:18:56Z Xach: i have a library for that~~ 2018-09-05T12:19:18Z drmeister: Oh ok - good grief. I overreacted. I'm used to impossible things before breakfast - but that would be beyond the pale. 2018-09-05T12:19:21Z beach: razzy: So you love the idea of my LispOS, except the most essential parts of it? 2018-09-05T12:19:57Z jackdaniel: Xach: afaik we take adventages of some of your libraries for raster image graphics 2018-09-05T12:20:14Z jackdaniel: or you talk that you have a library, which takes CLIM sheet and saves it as png? 2018-09-05T12:20:17Z jackdaniel: s/talk/say/ 2018-09-05T12:20:35Z Xach: no, sorry, just something that takes a bunch of samples and makes a png. you have to bring your own samples! 2018-09-05T12:20:43Z fikka joined #lisp 2018-09-05T12:20:56Z steiner quit (Remote host closed the connection) 2018-09-05T12:20:58Z drmeister: We are working with Ravenbrook to implement image saving - and we also support Boehm and I've been thinking about image saving a lot. That's why thinking about it triggers me. 2018-09-05T12:21:23Z steiner joined #lisp 2018-09-05T12:21:40Z jackdaniel: we use cl-vectors, zpb-ttf, cl-paths-ttf and cl-aa for manipulating memory with images 2018-09-05T12:21:52Z drmeister: shrdlu68: Thank you. 2018-09-05T12:21:58Z Xach: fantastico 2018-09-05T12:22:23Z jackdaniel: and opticl for loading / saving them 2018-09-05T12:22:51Z makomo: hello \o 2018-09-05T12:22:55Z jackdaniel: drmeister: at least I know now how to make you spit your coffee :-) 2018-09-05T12:23:12Z beach: Hey makomo. 2018-09-05T12:23:38Z jackdaniel: either way these raster image parts of mcclim are under heavy changes now, but dependency-set doesn't change 2018-09-05T12:23:53Z makomo: drmeister: looking forward to that talk :-) 2018-09-05T12:26:43Z razzy: beach: maaaaaaybe? i like benefits that your view provide. i want to keep most of benefits, and add new ones :] 2018-09-05T12:27:10Z jackdaniel: less is a new more 2018-09-05T12:28:30Z razzy: jackdaniel: agreed, we should assimilate best parts, burn the rest :] 2018-09-05T12:29:39Z it3ration joined #lisp 2018-09-05T12:30:52Z phoe: shka_: fuzzy search problem? 2018-09-05T12:31:09Z shka_: ? 2018-09-05T12:31:43Z phoe: uh, sorry 2018-09-05T12:31:51Z phoe: shrdlu68: ^ 2018-09-05T12:31:52Z shka_: no problem 2018-09-05T12:32:39Z shka_: drmeister: oh so Ravenbrook is now involved in clasp? 2018-09-05T12:32:47Z shka_: that sounds awesome 2018-09-05T12:33:07Z shrdlu68: phoe: The levenshtein distance thing. 2018-09-05T12:33:38Z phoe: shrdlu68: I haven't solved it yet 2018-09-05T12:33:49Z phoe: I haven't yet worked on that part of the spellchecker 2018-09-05T12:33:55Z phoe: ...or rather, spell corrector 2018-09-05T12:34:38Z it3ration quit (Ping timeout: 245 seconds) 2018-09-05T12:35:20Z shrdlu68: phoe: Just saw this and remembered: http://blog.notdot.net/2010/07/Damn-Cool-Algorithms-Levenshtein-Automata 2018-09-05T12:36:27Z phoe: ooh 2018-09-05T12:36:28Z phoe: thanks! 2018-09-05T12:36:49Z drmeister: shka_: Clasp uses the Memory Pool System and I talk with the Ravenbrook folks a lot - so our fates are entangled - yes. 2018-09-05T12:37:13Z drmeister: jackdaniel: Yeah - suggest that you can do anything beyond the basics with Boehm. 2018-09-05T12:37:51Z shka_: https://github.com/sirherrbatka/cl-data-structures/blob/master/src/utils/metric-functions/levenshtein.lisp 2018-09-05T12:37:53Z shka_: ehem 2018-09-05T12:38:16Z jackdaniel: (defmethod args-converter ((env environment)) 2018-09-05T12:38:20Z jackdaniel: whops, sorry 2018-09-05T12:39:32Z phoe: shka_: woah 2018-09-05T12:39:50Z shka_: phoe: it is not complicated at all as you can see 2018-09-05T12:40:00Z phoe: shka_: my only issue is, I have trees instead of words, so I cannot use your code directly 2018-09-05T12:40:09Z shka_: obviously 2018-09-05T12:40:10Z phoe: but nonetheless, that's a simple algorithm 2018-09-05T12:40:15Z shka_: yes 2018-09-05T12:40:37Z shka_: and probabbly you prefer loop over iterate 2018-09-05T12:40:51Z shka_: but otherwise, simple stuf 2018-09-05T12:41:36Z jochens_ quit 2018-09-05T12:41:40Z orivej quit (Ping timeout: 246 seconds) 2018-09-05T12:41:57Z jochens joined #lisp 2018-09-05T12:42:34Z astalla quit (Ping timeout: 240 seconds) 2018-09-05T12:44:05Z Bike joined #lisp 2018-09-05T12:45:54Z orivej joined #lisp 2018-09-05T12:53:18Z LiamH joined #lisp 2018-09-05T13:14:30Z azimut joined #lisp 2018-09-05T13:19:14Z light2yellow joined #lisp 2018-09-05T13:21:27Z Tristam quit (Ping timeout: 240 seconds) 2018-09-05T13:22:36Z pierpal quit (Quit: Poof) 2018-09-05T13:22:55Z pierpal joined #lisp 2018-09-05T13:25:55Z gingerale joined #lisp 2018-09-05T13:30:04Z mindCrime_ joined #lisp 2018-09-05T13:33:39Z vaporatorius joined #lisp 2018-09-05T13:34:54Z housel quit (Read error: Connection reset by peer) 2018-09-05T13:36:12Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-05T13:42:13Z wiselord joined #lisp 2018-09-05T13:42:55Z vaporatorius quit (Quit: Leaving) 2018-09-05T13:58:37Z steiner quit (Remote host closed the connection) 2018-09-05T14:00:11Z steiner joined #lisp 2018-09-05T14:02:48Z quazimodo quit (Ping timeout: 244 seconds) 2018-09-05T14:04:39Z quazimodo joined #lisp 2018-09-05T14:10:59Z Denommus joined #lisp 2018-09-05T14:13:03Z slyrus quit (Quit: slyrus) 2018-09-05T14:13:46Z slyrus joined #lisp 2018-09-05T14:22:30Z makomo quit (Ping timeout: 252 seconds) 2018-09-05T14:22:47Z dale_ joined #lisp 2018-09-05T14:23:07Z dale_ is now known as dale 2018-09-05T14:25:55Z akovalenko quit (Read error: Connection reset by peer) 2018-09-05T14:26:48Z jkordani joined #lisp 2018-09-05T14:30:11Z jkordani_ quit (Ping timeout: 244 seconds) 2018-09-05T14:30:32Z it3ration joined #lisp 2018-09-05T14:32:26Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T14:33:32Z joni joined #lisp 2018-09-05T14:33:33Z FreeBirdLjj joined #lisp 2018-09-05T14:34:40Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-05T14:34:56Z FreeBirdLjj joined #lisp 2018-09-05T14:35:30Z makomo joined #lisp 2018-09-05T14:35:36Z it3ration quit (Ping timeout: 272 seconds) 2018-09-05T14:35:54Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-05T14:36:19Z rumbler31 joined #lisp 2018-09-05T14:37:00Z scymtym quit (Ping timeout: 252 seconds) 2018-09-05T14:37:39Z fikka joined #lisp 2018-09-05T14:38:10Z Lycurgus joined #lisp 2018-09-05T14:39:29Z sabrac quit (Ping timeout: 244 seconds) 2018-09-05T14:39:58Z Inline joined #lisp 2018-09-05T14:40:31Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-05T14:41:04Z Inline quit (Read error: Connection reset by peer) 2018-09-05T14:41:35Z Inline joined #lisp 2018-09-05T14:42:06Z pierpal quit (Quit: Poof) 2018-09-05T14:42:25Z pierpal joined #lisp 2018-09-05T14:42:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T14:52:50Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-05T14:53:54Z emaczen joined #lisp 2018-09-05T14:55:18Z emaczen: My understanding of #'bt:make-thread is that the spawning thread (parent thread) returns immediately but the child thread only returns once the function is finished 2018-09-05T14:56:03Z emaczen: I don't seem to be getting this behaviour since I put a sleep form in the function body of #'bt:make-thread and my spwaning (parent thread) will not return until the sleep time is complete 2018-09-05T14:56:10Z astalla joined #lisp 2018-09-05T14:57:46Z jkordani: is your sbcl built with multithreading? 2018-09-05T14:57:56Z jkordani: er sorry I assumed sbcl 2018-09-05T14:58:00Z fikka joined #lisp 2018-09-05T14:58:48Z jkordani: emaczen: ^ 2018-09-05T14:59:44Z emaczen: jkordani: I'm using CCL and yes it does multiple threads 2018-09-05T15:01:38Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-05T15:02:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-05T15:07:06Z jkordani: paste it? 2018-09-05T15:08:24Z fikka joined #lisp 2018-09-05T15:13:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T15:17:26Z bradcomp joined #lisp 2018-09-05T15:20:26Z emaczen: jkordani: Even if you just evaluate in the repl (bt:make-thread (lambda () (sleep 2))) it doesn't return immediately 2018-09-05T15:21:12Z loke: emaczen: sounds like you don't have full thread support (i.e. you're using some green-thrads system) 2018-09-05T15:21:14Z emaczen: jkordani: Actually it is. 2018-09-05T15:21:31Z emaczen: loke: for CCL? 2018-09-05T15:21:51Z loke: I don't know about CCL, but I can tell you that that is the behaviour you'd see with green threads 2018-09-05T15:22:13Z emaczen: loke: In the REPL it is working how I expected 2018-09-05T15:27:09Z scymtym joined #lisp 2018-09-05T15:28:30Z fikka joined #lisp 2018-09-05T15:28:44Z jackdaniel: emaczen: is that exactly this form which you show? 2018-09-05T15:28:50Z jackdaniel: or something different is make-thread argument? 2018-09-05T15:29:55Z jackdaniel: (and clip-region 2018-09-05T15:30:05Z jackdaniel: s/↑// 2018-09-05T15:30:58Z jkordani: emaczen: in the repl its working how you expected aka returning immediately? 2018-09-05T15:31:16Z jackdaniel: emaczen: because I can imagine, that you are doing something like: (defun foo () (sleep 2)) (bt:make-thread (foo)) 2018-09-05T15:31:24Z jackdaniel: that will indeed sleep without spawning a thread 2018-09-05T15:31:33Z jackdaniel: make-thread accepts a function 2018-09-05T15:31:51Z jackdaniel: so a correct invocation would be (bt:make-thread #'foo) 2018-09-05T15:32:52Z Kundry_Wag joined #lisp 2018-09-05T15:33:13Z fikka quit (Ping timeout: 244 seconds) 2018-09-05T15:35:18Z jackdaniel: (as in arguments are evaluated, since it is a function) 2018-09-05T15:36:51Z warweasle joined #lisp 2018-09-05T15:38:23Z Lycurgus quit (Quit: Exeunt) 2018-09-05T15:41:43Z SenasOzys joined #lisp 2018-09-05T15:47:38Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-05T15:48:11Z Fare joined #lisp 2018-09-05T15:49:15Z fikka joined #lisp 2018-09-05T15:53:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-05T15:56:29Z emaczen: jackdaniel: Yep, I'm getting there. I don't know what exactly I entered in the repl at first 2018-09-05T15:56:38Z emaczen: but it is behaving now 2018-09-05T15:56:56Z emaczen: maybe an unrealized after method 2018-09-05T15:58:57Z gpiero quit (Ping timeout: 252 seconds) 2018-09-05T15:59:12Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-05T16:01:42Z astalla quit (Ping timeout: 252 seconds) 2018-09-05T16:06:08Z nowhere_man joined #lisp 2018-09-05T16:09:16Z igemnace joined #lisp 2018-09-05T16:09:30Z fikka joined #lisp 2018-09-05T16:09:57Z light2yellow quit (Ping timeout: 252 seconds) 2018-09-05T16:12:13Z shka_ joined #lisp 2018-09-05T16:12:28Z shka_: good evening 2018-09-05T16:12:37Z AeroNotix: shka_: o7 2018-09-05T16:12:45Z igemnace quit (Client Quit) 2018-09-05T16:12:51Z shka_: ^5 2018-09-05T16:14:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-05T16:14:57Z steiner quit (Remote host closed the connection) 2018-09-05T16:16:23Z jochens quit (Read error: Connection reset by peer) 2018-09-05T16:16:44Z asarch joined #lisp 2018-09-05T16:17:01Z jochens joined #lisp 2018-09-05T16:19:54Z fikka joined #lisp 2018-09-05T16:24:22Z fikka quit (Ping timeout: 244 seconds) 2018-09-05T16:25:00Z varjag joined #lisp 2018-09-05T16:26:12Z igemnace joined #lisp 2018-09-05T16:29:12Z robotoad joined #lisp 2018-09-05T16:30:07Z jasom: CCL I believe is always OS threaded (its repl uses a separate thread even) 2018-09-05T16:31:31Z it3ration joined #lisp 2018-09-05T16:33:00Z pjb joined #lisp 2018-09-05T16:34:13Z Fare quit (Ping timeout: 245 seconds) 2018-09-05T16:34:25Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-05T16:34:42Z jkordani_ joined #lisp 2018-09-05T16:35:40Z figurehe4d joined #lisp 2018-09-05T16:36:21Z it3ration quit (Ping timeout: 252 seconds) 2018-09-05T16:36:23Z quazimodo joined #lisp 2018-09-05T16:37:03Z rumbler31 joined #lisp 2018-09-05T16:38:21Z jkordani quit (Ping timeout: 252 seconds) 2018-09-05T16:38:23Z jasom: beach: the only thing in LispOS that I think is a bridge-to-far is treating RAM only as a cache for non-volatile storage just because of the ordering issue. 2018-09-05T16:38:44Z Guest60615 joined #lisp 2018-09-05T16:39:22Z jinkies joined #lisp 2018-09-05T16:39:58Z fikka joined #lisp 2018-09-05T16:41:07Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-05T16:42:27Z mindCrime_ quit (Ping timeout: 244 seconds) 2018-09-05T16:43:54Z Fare joined #lisp 2018-09-05T16:44:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-05T16:45:09Z Guest60615 quit (Ping timeout: 252 seconds) 2018-09-05T16:49:34Z azimut quit (Ping timeout: 240 seconds) 2018-09-05T16:50:40Z light2yellow joined #lisp 2018-09-05T16:51:34Z joni quit (Ping timeout: 240 seconds) 2018-09-05T16:53:05Z kaun joined #lisp 2018-09-05T16:57:28Z igemnace quit (Quit: WeeChat 2.2) 2018-09-05T16:57:57Z dented42 joined #lisp 2018-09-05T16:59:43Z jochens quit (Remote host closed the connection) 2018-09-05T17:00:22Z jochens joined #lisp 2018-09-05T17:00:27Z quazimodo quit (Ping timeout: 240 seconds) 2018-09-05T17:00:39Z fikka joined #lisp 2018-09-05T17:02:07Z jkordani joined #lisp 2018-09-05T17:02:35Z quazimodo joined #lisp 2018-09-05T17:03:09Z kaun quit (Quit: IRC for Sailfish 0.9) 2018-09-05T17:04:21Z azimut joined #lisp 2018-09-05T17:04:35Z dim: jasom: I like this idea of the user not having to deal with a hierarchical file system a lot, myself, and also not having to remember to save a copy and remember where it was saved 2018-09-05T17:04:40Z jochens quit (Ping timeout: 244 seconds) 2018-09-05T17:04:50Z dim: the argument that the computer should be dealing with that makes sense to me, somehow 2018-09-05T17:05:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T17:05:32Z jasom: dim: everyone likes that idea, and the OS graveyard is littered with failed solutions to it. 2018-09-05T17:05:55Z jkordani_ quit (Ping timeout: 246 seconds) 2018-09-05T17:06:24Z jasom: The proper solution might include just treating RAM as a cache for NV storage, but that's not a solution, it's a possible building block for one. 2018-09-05T17:07:05Z m00natic quit (Remote host closed the connection) 2018-09-05T17:08:43Z azimut quit (Ping timeout: 246 seconds) 2018-09-05T17:08:56Z dim: agreed 2018-09-05T17:09:16Z azimut joined #lisp 2018-09-05T17:10:53Z light2yellow quit (Ping timeout: 245 seconds) 2018-09-05T17:11:44Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-05T17:12:02Z orivej quit (Ping timeout: 272 seconds) 2018-09-05T17:16:27Z Fare quit (Ping timeout: 240 seconds) 2018-09-05T17:18:43Z beach: jasom: Can you describe the "order issue" a bit more? 2018-09-05T17:20:59Z fikka joined #lisp 2018-09-05T17:21:12Z gpiero joined #lisp 2018-09-05T17:22:21Z fourier joined #lisp 2018-09-05T17:23:00Z mindCrime_ joined #lisp 2018-09-05T17:23:35Z beach: jasom: Better yet, point me to some documentation. 2018-09-05T17:25:33Z devon joined #lisp 2018-09-05T17:25:39Z azimut quit (Ping timeout: 252 seconds) 2018-09-05T17:25:48Z orivej joined #lisp 2018-09-05T17:25:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T17:26:51Z Fare joined #lisp 2018-09-05T17:30:46Z quazimodo quit (Ping timeout: 246 seconds) 2018-09-05T17:35:45Z devon quit (Ping timeout: 252 seconds) 2018-09-05T17:35:53Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-05T17:36:06Z FreeBirdLjj joined #lisp 2018-09-05T17:37:23Z steiner joined #lisp 2018-09-05T17:38:44Z White_Flame: whartung: the transputers were programmed in Occam. It didn't auto-parallelize, it was CSP agent programming. 2018-09-05T17:38:55Z emerson joined #lisp 2018-09-05T17:39:01Z whartung: yea that’s it, occam 2018-09-05T17:39:11Z whartung: wasn’t there another language? Linda?? something like that? 2018-09-05T17:40:29Z whartung: how do you distinguish treating the ram as cache vs the disk simply backing the ram? by being able to have larger elements than what ram can hold? 2018-09-05T17:41:15Z White_Flame: that would be my opinion. "disk simply backing the ram" means disk footprint == ram footprint, and the rest of disk would need a separate interface 2018-09-05T17:41:19Z fikka joined #lisp 2018-09-05T17:42:07Z whartung: while I can appreciate the “ram as cache” concept, there’s also a reality of modern ram limitations (or lack of). 2018-09-05T17:42:20Z whartung: Consider I have a 4GB video to play. 2018-09-05T17:42:42Z whartung: you can load the entire thing, and then play it, or you can stream it from “storage”. 2018-09-05T17:43:15Z beach: whartung: How do you "load the entire thing" into RAM? 2018-09-05T17:43:37Z White_Flame: and if you just stream it, when you scrub back and forth does it make disk API calls? 2018-09-05T17:43:52Z White_Flame: another option is that you could mmap it 2018-09-05T17:44:28Z whartung: I dunno, seems to be that goal is that the there IS no “disk”. simply there’s no difference between disk and ram from the OS perspective, right? There’s just objects, and the System magically pages things in and out. 2018-09-05T17:44:38Z dim: a friend of mine had to optimize linux kernel to avoid pre-fetching an entire video file when serving VOD adult content, because it would be a waste, most buyers only ever watch the first 10 to 15 mins of the movie anyway, so he managed to have a kernel module that would only pre-fetch that much… 2018-09-05T17:44:47Z beach: whartung: Yes, and my question remains. 2018-09-05T17:45:05Z p_l: beach: on linux, mmap() the file 2018-09-05T17:45:15Z p_l: then trigger demand paging 2018-09-05T17:45:17Z beach: p_l: That does not load it into RAM. 2018-09-05T17:45:29Z p_l: beach: does once you put a "demand" on all pages 2018-09-05T17:46:03Z beach: I don't see how that would be different in a system where the RAM is a cache for the non-volatile memory. 2018-09-05T17:46:15Z whartung: what’s the resolution of objects? are they just adresses and byte ranges? And the OS simply loads them when it hits LDA #0x12345678 ? 2018-09-05T17:46:31Z orivej quit (Ping timeout: 244 seconds) 2018-09-05T17:46:39Z p_l: mmap + mlock will load everything into memory and lock it there 2018-09-05T17:46:40Z beach: whartung: What system are you talking about now? 2018-09-05T17:46:52Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T17:46:55Z whartung: the mythical OS y’all are talking about 2018-09-05T17:47:07Z beach: p_l: I can't see how that would be impossible in a system where RAM is the cache of the disk. 2018-09-05T17:47:30Z beach: whartung: It would work just like an ordinary Common Lisp system. 2018-09-05T17:47:42Z whartung: how do ordinary common lisp systems page memory? 2018-09-05T17:47:47Z p_l: beach: I think the point was that they *didn't* want to have it all in memory 2018-09-05T17:48:06Z beach: whartung: Make a huge swap space. 2018-09-05T17:48:15Z beach: p_l: Oh, OK. 2018-09-05T17:48:51Z beach: whartung: The Common Lisp system won't "see" that level of abstraction. 2018-09-05T17:49:05Z beach: whartung: It will just work as if the memory is the size of the disk. 2018-09-05T17:49:30Z p_l: also, interesting thing to consider - while the APIs do not really match, unless you do certain (broken) tricks, most filesystems on Linux specifically act with "RAM is cache for disk space" 2018-09-05T17:49:32Z beach: whartung: If it tries to touch a page that is not in RAM, some pretty much ordinary paging logic will hapen. 2018-09-05T17:49:34Z beach: happen 2018-09-05T17:50:18Z beach: p_l: Exactly. So RAM is actually disk-backed (swap space) and disk has a RAM cache. 2018-09-05T17:50:19Z whartung: so if I iterate across all of the frames of a 4GB video, odds are, it will eventually all be paged in to RAM. 2018-09-05T17:50:20Z beach: Go figure. 2018-09-05T17:50:29Z beach: whartung: Yes. 2018-09-05T17:51:08Z p_l: beach: however, the APIs being file-oriented mean that it's reasonably easy to get "memory" that you know will end up on disk 2018-09-05T17:51:35Z whartung: if your ram is persistent, then there’s no need to distinguish “disk based” or RAM based. 2018-09-05T17:51:52Z whartung: but it does potentially cause issues with difference in perforamnce. 2018-09-05T17:52:02Z beach: whartung: Exactly. 2018-09-05T17:52:14Z beach: So you still have to do paging, considering RAM as a cache. 2018-09-05T17:52:26Z whartung: I mean, I understand the underlying concept — there are great advances in persistent ram, not even swapped, but fast, persistent memory 2018-09-05T17:52:34Z White_Flame: in many systems there are intent hints passed as parameters when allocating memory or dealing with files. I think that sort of thing is useful here 2018-09-05T17:52:35Z whartung: plus modern SSDs are silly fast anyway 2018-09-05T17:52:54Z whartung: it then comes down to the checkpointing process. 2018-09-05T17:52:55Z beach: whartung: Not nearly as fast as dynamic RAM. 2018-09-05T17:52:56Z shka_: it is more about simplicty 2018-09-05T17:52:57Z White_Flame: things like "I am reading this file as a stream" or "I am random-access writing to this existing file" etc 2018-09-05T17:53:18Z White_Flame: or "This memory is flushable if memory is low" etc 2018-09-05T17:53:41Z beach: Look, it has already been done. Multics did not have a separate abstraction for disk and RAM. 2018-09-05T17:53:45Z beach: So I know it can be done. 2018-09-05T17:53:46Z White_Flame: certainly one could rely on heuristics for a few of those 2018-09-05T17:53:52Z whartung: that’s important, White_Flame, parituclarly in database systems where you don’t want the table scan of a 100GB table to trash your cache, just becaue you’re counting all the rows. 2018-09-05T17:54:05Z pierpal quit (Quit: Poof) 2018-09-05T17:54:25Z whartung: that requires intimacy with the virtual memory manager. 2018-09-05T17:54:26Z pierpal joined #lisp 2018-09-05T17:54:27Z White_Flame: because really this is all about optimization. Blind swap space would work for everything, it's just a really bad performance idea 2018-09-05T17:54:35Z whartung: right 2018-09-05T17:54:45Z CrazyEddy quit (Remote host closed the connection) 2018-09-05T17:55:04Z White_Flame: well, I guess malloc persisting would be different than just swap space, for single address space architectures 2018-09-05T17:55:50Z whartung: what would be nice is an implementation that just did it naively so that it could be studied as to how good or bad the swap is. 2018-09-05T17:56:22Z whartung: the real problem, as witnessed running large java JVMs, is the garbage collector. you do NOT want to have your JVM heap swapped out — you’re in for a very bad day. 2018-09-05T17:56:26Z White_Flame: well, there's the OS graveyard to dig from again 2018-09-05T17:57:27Z CrazyEddy joined #lisp 2018-09-05T17:59:12Z whartung: honestly, the closest thing we have to this today is probably a modern DBMS. 2018-09-05T18:00:06Z beach: whartung: That may be right. A lot of it existed in the 1970s but we don't have it today anymore. 2018-09-05T18:00:50Z beach: Though there is a Multics emulator online that you can play with. 2018-09-05T18:01:00Z beach: I was able to run Multics Emacs. 2018-09-05T18:01:44Z whartung: And the pharo guys are probably the closeset starting point if you wanted to try out such a system — the whole thing is written in smalltalk (though compiled down in to C for the kernel). 2018-09-05T18:01:59Z fikka joined #lisp 2018-09-05T18:02:53Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-05T18:04:08Z beach: Well, the fact that there *is* a kernel makes it very different from what I am planning. 2018-09-05T18:04:58Z beach: And, just in case you think that an OS must have a kernel, again, Multics did not have one. 2018-09-05T18:05:23Z jasom: beach: w.r.t. the ordering issue: whenever you cache a secondary store, then operations that require valid ordering require extra manual work. 2018-09-05T18:05:28Z beach: So, really, what I am planning could be considered a merge of Multics and Genera. 2018-09-05T18:05:47Z beach: jasom: You mean so that disk is always consistent? 2018-09-05T18:05:51Z jasom: beach: correct 2018-09-05T18:05:56Z beach: jasom: That problem was solved by Eros. 2018-09-05T18:06:09Z beach: And the LispOS specification contains a variant of that technique. 2018-09-05T18:07:01Z jasom: there is also the secondary concern that under the current system rebooting clears any buggy state that is not on-disk. 2018-09-05T18:07:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T18:07:31Z varjag quit (Ping timeout: 246 seconds) 2018-09-05T18:07:34Z beach: I am also willing to add a little routine that, before a page is written to disk, it is check-sum verified. 2018-09-05T18:08:02Z jasom: beach: well I mean "consistent" not just in the sense of the metadata being correct, but consistent in the sense that the data is useful upon restart 2018-09-05T18:08:18Z beach: jasom: Yes, Eros solved that problem. 2018-09-05T18:08:32Z shka_: Eros? 2018-09-05T18:08:36Z jasom: beach: I'd be interested in reading how, if you have a link handy 2018-09-05T18:08:44Z beach: jasom: If this secondary concern is about buggy software, then I have no solution for you, since even the file manager in a Unix-like operating system can be buggy. 2018-09-05T18:08:52Z beach: OK, hold on... 2018-09-05T18:09:19Z whartung: pharo has a kernel because their JIT is not good enough to run their “kernel” efficiently. it’s more a runtime than a kernel in that sense. 2018-09-05T18:09:46Z jasom: shka_: it's a predecesor to Coyotos if you're familiar with that 2018-09-05T18:10:07Z shka_: i am not 2018-09-05T18:10:15Z whartung: that’s the biggest problem with persistent memory. You can’t turn the machine off and back on and have it necessarily start from a clean slate — harder to abandon your sins that way. 2018-09-05T18:10:33Z beach: Maybe this could work: https://www.cs.ucsb.edu/~chris/teaching/cs290/doc/eros-sosp99.pdf 2018-09-05T18:11:06Z beach: jasom: Well, not quite. Coyotos was what they were forced to do when funding for Eros dried up. 2018-09-05T18:11:11Z beach: US academia for you. 2018-09-05T18:11:13Z azimut joined #lisp 2018-09-05T18:11:31Z shka_: ooooh capability system 2018-09-05T18:11:33Z jasom: beach: in terms of an absolute sense, the ram/disk separation doesn't help at all with buggy software, but IMO in a practical sense it does. 2018-09-05T18:11:37Z shka_: from 1999 2018-09-05T18:11:52Z shka_: i had no idea that it was a thing back then! 2018-09-05T18:12:09Z beach: jasom: I can't figure out a reasonable way of dealing with buggy software, so I am not going to try. 2018-09-05T18:12:09Z shka_: i guess there is really nothing new nowdays 2018-09-05T18:12:23Z beach: shka_: That's what I keep saying. 2018-09-05T18:12:31Z jasom: shka_: capability systems go back at least to the 70s I think 2018-09-05T18:12:35Z beach: But people act as if this is some imaginary thing, impossible to realize. 2018-09-05T18:12:40Z shka_: jasom: i had no idea 2018-09-05T18:12:41Z whartung: what’s new today is the VAST resources we have compared to back then 2018-09-05T18:13:04Z beach: whartung: Yes, so things are MUCH EASIER now. 2018-09-05T18:13:05Z whartung: planning out a computer with 128G of ram and 10T of “storage” isn’t a big deal. 2018-09-05T18:13:05Z shka_: ok, so we have tech from 70s 2018-09-05T18:13:18Z shka_: so in 2020 we will have tech from 80s? :D 2018-09-05T18:13:42Z beach: shka_: You really should read the Unix-haters handbook. It will tell you what we had in the 1970s and that was destroyed by Unix. 2018-09-05T18:14:04Z shka_: beach: i read it already 2018-09-05T18:14:26Z White_Flame: beach: "buggy software" includes playing around with the REPL and testing in development. So those should be real concerns for protection against poorly behaved bits of code 2018-09-05T18:14:29Z beach: OK, so no reason to be surprised. 2018-09-05T18:14:38Z shka_: but for some reason i was always more interested in 80s IT 2018-09-05T18:14:42Z beach: White_Flame: You missed the point. 2018-09-05T18:15:10Z beach: White_Flame: The claim was that it is easier to deal with buggy software in a system that separates RAM and disk. 2018-09-05T18:15:16Z varjag joined #lisp 2018-09-05T18:15:19Z beach: But the problem is the same. 2018-09-05T18:15:35Z beach: Buggy paging software in both cases will give bad disk blocks. 2018-09-05T18:15:44Z whartung: bettes said that it’s easier to deal with buggy software on a system that does not make your bugs persistent 2018-09-05T18:16:04Z beach: White_Flame: Buggy application programs will obviously not break the system in either case. 2018-09-05T18:16:24Z jasom: beach: bug-free software is IMO still to expensive to produce. capabilities and MAC help to contain the damage bugs do. I'm talking about application level bugs, not os service level bugs (or at least code that would be in one rather than the other in a Unixy system) 2018-09-05T18:16:38Z lemonpepper24 quit (Ping timeout: 272 seconds) 2018-09-05T18:17:01Z beach: I don't know what to say. 2018-09-05T18:17:03Z jasom: beach: buggy applications that have to explicitly save their state to disk can be recovered by killing them off and restoring 2018-09-05T18:17:37Z White_Flame: basically, it's an issue of the resolution of cleanup. Per-process isolation is fairly clean. Systems like the Amiga required a reboot, as any bad behavior pulled the whole RAM footprint's stability into question 2018-09-05T18:17:43Z jasom: every time I've had to hit "revert to saved document" or kill off a process and reload, I was able to recover an application from a buggy state because disk and ram are different. 2018-09-05T18:18:02Z azimut quit (Ping timeout: 244 seconds) 2018-09-05T18:18:13Z shka_: jasom: you can have transactional model with checkpoints to revert 2018-09-05T18:18:20Z White_Flame: jasom: that's more a difference between "staging" and "committed". Both could persist 2018-09-05T18:18:25Z beach: So, am I supposed to say something like "Oh, OK, guys. I really didn't think about that. I guess I'll give up on the LispOS project"? 2018-09-05T18:18:27Z White_Flame: shka_: right 2018-09-05T18:18:52Z jasom: beach: not at all, but it worries me when you say you're not going to try to deal with buggy software. 2018-09-05T18:19:00Z beach: Or maybe "OK, thanks for the input. I think I'll put in another couple of decades of research before trying to write it"? 2018-09-05T18:19:19Z beach: jasom: What worries you about it? 2018-09-05T18:19:23Z beach: This is research. 2018-09-05T18:19:32Z beach: I don't expect anyone would want to use it anyway. 2018-09-05T18:19:32Z jasom: beach: fair enough 2018-09-05T18:19:42Z beach: And I am just one person. 2018-09-05T18:19:56Z beach: If there are remaining problems, perhaps someone else could try that path. 2018-09-05T18:20:06Z Fare quit (Ping timeout: 244 seconds) 2018-09-05T18:20:15Z beach: I want to see whether the basic abstraction works. 2018-09-05T18:20:36Z beach: Because I think the user experience will be much improved. 2018-09-05T18:20:43Z beach: And I have history to back me up. 2018-09-05T18:20:51Z shka_: not only that 2018-09-05T18:20:52Z jasom: To me, it seems intuitive that it would work, but I think it's a mixed-bag for user experience. 2018-09-05T18:21:00Z beach: Multics did not have any particular problem with buggy application software. 2018-09-05T18:21:05Z Fare joined #lisp 2018-09-05T18:21:48Z jasom: but if intuition was always right, then we wouldn't need to do research :) 2018-09-05T18:21:51Z beach: I can't just accept a statement implying that "Multics was unusable for application programmers". 2018-09-05T18:22:07Z azimut joined #lisp 2018-09-05T18:22:09Z beach: Especially since I used it myself for several years. 2018-09-05T18:22:15Z beach: In a production environment. 2018-09-05T18:22:21Z fikka joined #lisp 2018-09-05T18:22:28Z shka_: jasom: well, if you can have transactional persistence you can get a lot of ultra cool features for free 2018-09-05T18:22:51Z White_Flame: not just transactional, but historical 2018-09-05T18:22:58Z shka_: yes, historical 2018-09-05T18:23:11Z jasom: shka_: yes you do, but you can get that already with mmap on a unix, and non-databases aren't written that way. 2018-09-05T18:23:36Z shka_: jasom: not quite as easy1 2018-09-05T18:23:58Z jackdaniel: saying tht you already have that with mmap is like saying you already have repl with dlopen, printf and scanf :-) 2018-09-05T18:23:59Z jasom: shka_: yes, it needs a custom runtime if you want your heap, stack &c. all to be persistent 2018-09-05T18:24:13Z shka_: and much more 2018-09-05T18:24:23Z jasom: the fact that some databases are written like this is a point in favor of it being possible. 2018-09-05T18:24:27Z shka_: that's why it is not used all that often 2018-09-05T18:25:01Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-05T18:25:22Z sauvin quit (Read error: Connection reset by peer) 2018-09-05T18:25:41Z shka_: anyway, i think that this sounds like something that should be explored further 2018-09-05T18:25:48Z shka_: potential wins are huge 2018-09-05T18:25:58Z jasom: anyways a kernel that does all this will be too bloated MULTICS was over 100KB of code! 2018-09-05T18:26:13Z jackdaniel: I think that the whole point is that there is no kernel 2018-09-05T18:26:14Z beach: Oh, my. 2018-09-05T18:26:22Z shka_: if done well, it can be used to write full blown database in few hours 2018-09-05T18:26:25Z jackdaniel: your operating system is all userspace (drivers included) 2018-09-05T18:26:51Z beach: Multics did have processes though. 2018-09-05T18:27:05Z beach: The address space of the processor was still too small. 2018-09-05T18:27:07Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T18:27:16Z shka_: then it can be perhaps extended towards multiple machines 2018-09-05T18:27:54Z gravicappa joined #lisp 2018-09-05T18:28:00Z shka_: it sounds like the best thing ever 2018-09-05T18:28:26Z whartung: it’s a matter of lifecycle beach 2018-09-05T18:28:31Z Lycurgus joined #lisp 2018-09-05T18:28:37Z Jesin quit (Quit: Leaving) 2018-09-05T18:28:38Z beach: whartung: What is? 2018-09-05T18:28:41Z whartung: processes have an implicit lifecycle 2018-09-05T18:28:46Z whartung: this issie with buggy software 2018-09-05T18:28:49Z razzy: shka_: read heisig backlog 2018-09-05T18:28:52Z slyrus1 joined #lisp 2018-09-05T18:28:59Z whartung: *issue 2018-09-05T18:29:18Z azimut quit (Ping timeout: 272 seconds) 2018-09-05T18:29:19Z beach: whartung: I am sorry, but I am unable to understand your point. 2018-09-05T18:29:34Z whartung: consider the extreme case of “booting” a persistent system. 2018-09-05T18:30:00Z whartung: on a current system, memory is empty, code it loaded, and data is loaded. 2018-09-05T18:30:18Z whartung: there’s the whole start up, initialize the hardware, put everything in to a “known state". 2018-09-05T18:30:20Z jasom: The idea of using a managed runtime rather than hardware memory protection is one I like though. No systems programmer ever said "if I could only turn this function call into a system call my software would be faster and easier to understand" 2018-09-05T18:30:37Z whartung: the “known state” is based on what is persisted on permanent storage. 2018-09-05T18:31:03Z beach: So, let me say this again: What I am planning is nothing new. Combine Multics, Genera, Eros, etc., and all the technology existed decades ago. 2018-09-05T18:31:08Z beach: Also, I am not going to even try to address every concern that people might have. Especially if those concerns are based on ignorance about the history of computing. 2018-09-05T18:31:15Z beach: But even some valid concerns I am not going to try to address, simply because I am only one person and I don't have the time to figure everything out by myself. 2018-09-05T18:31:35Z jackdaniel: whartung: it is like with continuations in scheme; you can go back in time, but external resources may change 2018-09-05T18:32:07Z beach: And, I don't care if my system will be used only by myself, so objections related to "nobody will use it" won't prevent me from going ahead. 2018-09-05T18:32:30Z it3ration joined #lisp 2018-09-05T18:32:31Z White_Flame: whartung: again, that's just staging and versioning. Consider web browsers. They save your current state, but allow you to choose between starting over or restoring old state on startup 2018-09-05T18:32:52Z White_Flame: even if a bunch of broken or spammed out tabs are persisted 2018-09-05T18:33:09Z whartung: but if I kill -9 the browser, it may not save the state. 2018-09-05T18:33:11Z beach: All that said, I am perfectly willing to discuss my ideas and even debate them. But I don't want the discussions and debates to be based on ignorance. 2018-09-05T18:33:18Z White_Flame: whartung: they autosave every N minutes 2018-09-05T18:33:26Z White_Flame: plus, you can set your startup pages to something else 2018-09-05T18:33:40Z whartung: the mac does the same thing. 2018-09-05T18:33:43Z White_Flame: so it's not just "RAM vs disk" 2018-09-05T18:33:53Z White_Flame: it's simply current vs old versions vs reference versions 2018-09-05T18:34:01Z White_Flame: all of which can be persisted 2018-09-05T18:34:11Z whartung: all of which ARE persisted 2018-09-05T18:34:16Z whartung: there’s no choice in the matter 2018-09-05T18:35:07Z fourier quit (Ping timeout: 240 seconds) 2018-09-05T18:35:09Z White_Flame: right... and a "persistent RAM" type of OS does the same :) 2018-09-05T18:35:18Z whartung: and then we’re talking high level objects here (like “documents”), not low level primitives - structures, array, etc. 2018-09-05T18:35:30Z whartung: in terms of versioning 2018-09-05T18:35:36Z whartung: RAM is not versioned 2018-09-05T18:35:42Z White_Flame: right, there's a scope to the versioning 2018-09-05T18:35:50Z White_Flame: and that's where transactions come in 2018-09-05T18:35:56Z White_Flame: (or checkpoints, or whatever) 2018-09-05T18:35:57Z whartung: that’s what Smalltalk does 2018-09-05T18:36:21Z White_Flame: so I think "RAM vs disk" is an oversimplification of the underlying concepts 2018-09-05T18:36:22Z whartung: every time to “do” something in smalltalk, (which means you enter some bit of source code), it gets saved to the change log 2018-09-05T18:36:39Z whartung: I should say, you enter the source code and execute it 2018-09-05T18:36:46Z whartung: it gets saved to the change log 2018-09-05T18:37:02Z on_ion: changesets are awesome. wished a lisp image had it 2018-09-05T18:37:08Z it3ration quit (Ping timeout: 245 seconds) 2018-09-05T18:37:14Z whartung: it is trivial to wreck a small talk image (not in the sense that you can bumble on to it, but if you know what you are doing — trivial) 2018-09-05T18:37:21Z on_ion: (sources are saved in the image though, too) 2018-09-05T18:37:38Z whartung: and the recovery process is to reload the OLD image, and then replay the change set up until the point you did the Bad Thing 2018-09-05T18:37:46Z rumbler31 joined #lisp 2018-09-05T18:38:02Z whartung: but images are snapshots, and transactions are blocks of code 2018-09-05T18:38:43Z whartung: when the system is constantly snapshoting, always persisting, then it’s a differnet issue. You, as the user may well not know which page write is the one you DON’T want to use 2018-09-05T18:39:05Z whartung: because stuff getting persisted includes things like TCP buffers and terminal sessions and just “work memory" 2018-09-05T18:39:52Z whartung: who knows which one of those stomped on some important global resource due to a bug, and when such global resource got paged back to disk so that when it was reloaded — you got to reload the corrupted global resource. 2018-09-05T18:40:25Z whartung: if I corrupt my ST image, I kill it, and reload from “backup”, essentialy 2018-09-05T18:40:34Z whartung: then roll forward changes 2018-09-05T18:41:32Z whartung: so, I don’t know how Multics, or EROS or anything else deals with that problem. 2018-09-05T18:42:18Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-05T18:42:48Z jackdaniel: in the systems you mention you take the punch card, fix the broken memory with a tape and start over ;-) 2018-09-05T18:43:21Z razzy: White_Flame: whartung for single virtual memory composed of multiple real memories you need good optimization. that optimization would be different for every hardware system you build and user needs. this is good thing, because you could SW optimize user experience. machine learning methods only get better 2018-09-05T18:43:41Z igemnace joined #lisp 2018-09-05T18:43:54Z whartung: there was a turtable stereo company who made a persistent Smalltalk — I can’t remember the name, but it was northern european so it had a lot of Ks in it. 2018-09-05T18:44:31Z on_ion: ST/X was awesome, german =) 2018-09-05T18:44:46Z on_ion: also ithad inline C 2018-09-05T18:45:11Z on_ion: which inspired a GNU smalltalk + objective-c hybrid thing i workd on 2018-09-05T18:45:22Z on_ion: also, StepTalk 2018-09-05T18:45:48Z whartung: no, it wasn’t ST/X — afaik it never left the company and was purely an internal project 2018-09-05T18:48:04Z azimut joined #lisp 2018-09-05T18:48:11Z whartung: this is it 2018-09-05T18:48:12Z whartung: https://en.wikipedia.org/wiki/Rekursiv 2018-09-05T18:48:48Z orivej joined #lisp 2018-09-05T18:48:49Z light2yellow joined #lisp 2018-09-05T18:48:55Z whartung: and….it’s Scottish — what do I know lol 2018-09-05T18:49:15Z Jesin joined #lisp 2018-09-05T18:49:25Z nbunjevac joined #lisp 2018-09-05T18:49:58Z shka_: 80s :-) 2018-09-05T18:50:03Z light2yellow quit (Client Quit) 2018-09-05T18:50:09Z jackdaniel: this conversation shifts closer to #lispcafe every minute 2018-09-05T18:52:44Z beach: jackdaniel: So what is your work on ECL these days? 2018-09-05T18:53:22Z beach: Are you still working on refactoring the compiler? 2018-09-05T18:53:32Z jackdaniel: I'm stuck with mcclim pattern transformations and the renderer for a 3rd week now 2018-09-05T18:53:37Z jackdaniel: so not much work on ecl lately 2018-09-05T18:53:41Z beach: Oh. :( 2018-09-05T18:53:51Z jackdaniel: when I'm done with that I'm focusing on timers, cltl2 interface and green threads 2018-09-05T18:53:55Z beach: Well, not :( I am happy that McCLIM is making excellent progress. 2018-09-05T18:54:02Z jackdaniel: then wrap things up with testing and release 16.2.0 2018-09-05T18:54:07Z jackdaniel: hopefully before 2019 2018-09-05T18:54:08Z beach: Sounds good. 2018-09-05T18:54:12Z makomo quit (Ping timeout: 252 seconds) 2018-09-05T18:54:48Z jackdaniel: but ECL has another excellent contributor lately who did a lot of work on improving thread safety of ecl's internals 2018-09-05T18:54:58Z beach: Great! 2018-09-05T18:55:15Z jackdaniel: and I have an intern who works on cxx bridge (for C++ programmers to use ECL "their way") 2018-09-05T18:55:50Z beach: Interesting. 2018-09-05T18:56:07Z beach: Does that mean that Clasp could use ECL to bootstrap, rather than what they are now doing? 2018-09-05T18:56:13Z beach: jackdaniel: Speaking of McCLIM, I watched that Genera presentation someone posted a link to. It made me more convinced than ever that McCLIM is an essential part of future progress in our computing environment. 2018-09-05T18:56:20Z jackdaniel: as of refactoring compiler, nothing tangible has changed with source code, but I have better understanding of it and of what I want to achieve 2018-09-05T18:56:32Z beach: OK, that's progress. 2018-09-05T18:56:55Z jackdaniel: I don't know if clasp could use ecl for bootstrap 2018-09-05T18:57:20Z jackdaniel: because I don't know what are clasp's requirements with this regard 2018-09-05T18:57:30Z beach: Right. It was mostly a rhetorical question. 2018-09-05T18:57:53Z beach: But if LLVM could be used from ECL that might become something to consider. 2018-09-05T18:58:03Z jackdaniel: ah, you mean the c++ part. well, this bridge is meant as a handicap for interfacing with CL from C++ 2018-09-05T18:58:14Z beach: I see. 2018-09-05T18:58:15Z jackdaniel: not as a tool for CL programmers or something you could bootstrap with 2018-09-05T18:58:23Z beach: OK. 2018-09-05T18:59:18Z jackdaniel: adding llvm backend is blocked by compiler refactor which rather won't start before 2019 (unless some brave soul steps in :) 2018-09-05T18:59:38Z jackdaniel: not that I'm interested in writing such backend myself 2018-09-05T18:59:54Z beach: I completely understand. 2018-09-05T19:01:41Z jackdaniel: it's getting late for me, good night \o 2018-09-05T19:01:50Z beach: 'night jackdaniel. 2018-09-05T19:02:27Z shka_ quit (Ping timeout: 252 seconds) 2018-09-05T19:03:12Z orivej_ joined #lisp 2018-09-05T19:03:17Z orivej quit (Read error: Connection reset by peer) 2018-09-05T19:03:58Z beach: Concerning recent SICL news, the latest progress on bootstrapping revealed a problem that I had swept under the rug, namely method combinations. 2018-09-05T19:04:04Z beach: I had failed to understand the use for MAKE-METHOD and CALL-METHOD and I could not fully understand the documentation for DEFINE-METHOD-COMBINATION. 2018-09-05T19:04:11Z beach: Interacting with the host Common Lisp system made the problem urgent to deal with. So I think I am now tackling the last major blob of code that must work before I can continue my work on bootstrapping. 2018-09-05T19:05:36Z beach: As I wrote this morning (UTC+2) I think I have a good solution to the problems discussed by Didier Verna in his ELS paper. 2018-09-05T19:10:40Z josemanuel quit (Quit: leaving) 2018-09-05T19:10:42Z Copenhagen_Bram quit (Read error: Connection reset by peer) 2018-09-05T19:11:27Z rotty quit (Ping timeout: 240 seconds) 2018-09-05T19:12:02Z makomo joined #lisp 2018-09-05T19:14:45Z nirved quit (Quit: Leaving) 2018-09-05T19:14:46Z cpape joined #lisp 2018-09-05T19:18:05Z rotty joined #lisp 2018-09-05T19:21:02Z emaczen: How do you get a restart to be active when a condition is signalled from #'bt:make-thread? 2018-09-05T19:21:21Z Fare quit (Ping timeout: 252 seconds) 2018-09-05T19:21:47Z emaczen: My confusion is that the call stack will be complete and therefore no restart (either define by with-simple-restart or restart-case) is active 2018-09-05T19:21:51Z Fare joined #lisp 2018-09-05T19:22:02Z Essadon joined #lisp 2018-09-05T19:23:35Z Essadon quit (Client Quit) 2018-09-05T19:26:41Z Bike: you mean from make-thread itself, or from the thread thunk? 2018-09-05T19:27:09Z Essadon joined #lisp 2018-09-05T19:27:18Z emaczen: Bike: I'm signalling an error from the function passed to #'bt:make-thread 2018-09-05T19:27:28Z emaczen: The only method I see is *debugger-hook*? 2018-09-05T19:27:45Z jkordani_ joined #lisp 2018-09-05T19:27:57Z jkordani quit (Ping timeout: 252 seconds) 2018-09-05T19:28:06Z Bike: the function passed to make-thread runs in its own thread, of course... it probably works like dynamic bindings 2018-09-05T19:28:13Z Bike: you can put a restart-case in the thunk itself 2018-09-05T19:34:15Z Jesin quit (Quit: Leaving) 2018-09-05T19:34:24Z Copenhagen_Bram joined #lisp 2018-09-05T19:37:07Z emaczen: Bike: The restart is going to call the same code that calls #'bt:make-thread 2018-09-05T19:37:38Z Bike: the restart makes a new thread? 2018-09-05T19:42:07Z emaczen: Bike: nvm I got it 2018-09-05T19:44:15Z lemonpepper24 joined #lisp 2018-09-05T19:50:00Z longshi joined #lisp 2018-09-05T19:50:18Z dddddd joined #lisp 2018-09-05T19:52:36Z Jesin joined #lisp 2018-09-05T19:53:33Z terpri quit (Remote host closed the connection) 2018-09-05T19:54:00Z terpri joined #lisp 2018-09-05T19:56:07Z Copenhagen_Bram quit (Ping timeout: 240 seconds) 2018-09-05T19:58:10Z j`ey joined #lisp 2018-09-05T19:59:51Z lemonpepper24 quit (Ping timeout: 252 seconds) 2018-09-05T20:00:10Z j`ey: I just generated a 268MB file by PRINT-ing a large array to a file. now when I try READ it back, I get out of memory errors. what can I try do to make this work? 2018-09-05T20:00:35Z beach: j`ey: What implementation? 2018-09-05T20:00:51Z j`ey: sbcl 2018-09-05T20:01:08Z beach: Just increase the initial heap size. 2018-09-05T20:01:47Z beach: (setq inferior-lisp-program "/usr/local/bin/sbcl --dynamic-space-size 10000") is what I have in my .emacs 2018-09-05T20:02:16Z j`ey: what unit is that in, mb? 2018-09-05T20:02:26Z beach: Yeah. 2018-09-05T20:02:39Z j`ey: giving it a try 2018-09-05T20:02:54Z beach: Report back please! 2018-09-05T20:03:32Z jasom: It's also possible that SBCL is inefficient at READing large arrays, it would be interesting to see what the peak memory usage is when reading it back. 268MB isn't that big. 2018-09-05T20:03:48Z j`ey: hm, still the same issue 2018-09-05T20:03:49Z beach: Indeed. 2018-09-05T20:03:56Z trittweiler: I think it's printed as #(.....) and so lost its specialization 2018-09-05T20:04:08Z trittweiler: so floats are all gonna be boxed 2018-09-05T20:04:13Z j`ey: http://sprunge.us/m3fVhs 2018-09-05T20:04:17Z dueyfinster joined #lisp 2018-09-05T20:04:31Z j`ey: it's #2A, in my case theyre all integers 2018-09-05T20:04:53Z j`ey: (I'm not sure what the 2A is) 2018-09-05T20:05:25Z beach: 2-dimensional array. 2018-09-05T20:05:43Z jasom: if you set *print-readably* to true, then sbcl generates a form that will read as a specialized array. 2018-09-05T20:05:48Z jasom: (if the array is already specialized 2018-09-05T20:06:22Z jasom: (let ((*print-readably* t)) (print (make-array 3 :element-type 'fixnum))) ;; #A((3) FIXNUM 0 0 0) 2018-09-05T20:07:09Z j`ey: let me try that 2018-09-05T20:07:10Z Copenhagen_Bram joined #lisp 2018-09-05T20:07:46Z j`ey: it's a 5mil x 6 dimensioned array 2018-09-05T20:07:49Z Bike: assuming the array is actually specialized, rather than just having integersin it 2018-09-05T20:07:55Z jasom: Bike: right 2018-09-05T20:08:06Z warweasle quit (Quit: home!) 2018-09-05T20:08:17Z jasom: also, for very large arrays you probably want to use a serialization library anyways. cl-store or conspack ,for example 2018-09-05T20:08:41Z j`ey: yeah, just wanted to try get this working with print/read for now 2018-09-05T20:09:04Z whartung: the reader is probably consing the heck during that. 2018-09-05T20:09:06Z beach: jasom: Right, because we don't have a unified API for primary and secondary storage. 2018-09-05T20:09:10Z Bike: if you have an array with integers between 0 and 99, it'll be two.something bytes per element...yow 2018-09-05T20:09:22Z jasom: beach: :) 2018-09-05T20:09:26Z pierpa joined #lisp 2018-09-05T20:09:44Z j`ey: my integers are between 0..5mil 2018-09-05T20:09:46Z whartung: plus all the garbage from teh constantly growing array 2018-09-05T20:09:49Z jasom: beach: I'm so far behind in points with you I don't keep score anymore 2018-09-05T20:09:51Z whartung: as it’s extended 2018-09-05T20:10:04Z jasom: whartung: *print-readably* will fix that because it length-prefixes it 2018-09-05T20:10:05Z j`ey: whartung: yeah that's why I was hoping I could do something like tell it the size upfront 2018-09-05T20:10:09Z j`ey: ah 2018-09-05T20:10:19Z whartung: oh ok jasom 2018-09-05T20:11:03Z trittweiler: seems like sbcl's sb-impl::sharp-a reads in the contents as a list first 2018-09-05T20:11:09Z jasom: (this is all sbcl specific btw j`ey) *print-readably* does something useful on each implementation, but exactly what it does is not strongly specified 2018-09-05T20:11:35Z whartung: that wouldn’t be surprising trittweiler 2018-09-05T20:11:48Z j`ey: jasom: that's fine for now 2018-09-05T20:13:48Z j`ey: jasom: now I get errors actually writing out the array.. 2018-09-05T20:14:01Z whartung: from the print-readably? 2018-09-05T20:14:31Z j`ey: yeah I think so. I also added :type 'fixnum to my array declaration, but I hope that shouldnt cause issues 2018-09-05T20:14:39Z whartung: no, that shouldn’t 2018-09-05T20:15:04Z whartung: Apparently, the “print-readably” isn’t a single pass change to the data. 2018-09-05T20:15:11Z whartung: I have no idea what it does in this case. 2018-09-05T20:15:12Z beach: jasom: I don't count points. 2018-09-05T20:16:06Z j`ey: maybe I can split the table into two 2018-09-05T20:16:10Z j`ey: not sure how to do that though 2018-09-05T20:16:30Z beach: jasom: I hope I am not sounding hostile. You give very valuable inputs for me to consider. 2018-09-05T20:17:01Z whartung: you should consider one of the options presented before or writing your own serilaizer j`ey 2018-09-05T20:17:23Z j`ey: whartung: yeah. I guess I have to 2018-09-05T20:17:35Z _death: never use fixnum.. you know the bounds, so use (integer 0 5000000) 2018-09-05T20:18:23Z pjb: beach: lispos -> clouseau ; boot it with the command: jacques 2018-09-05T20:18:39Z beach: Good one. 2018-09-05T20:18:45Z j`ey: _death: I guess that wouldn't actually change the text serialisation 2018-09-05T20:19:09Z aeth: I wonder how many implementations can understand (upgraded-array-element-type '(and fixnum (integer 0 *))) as an idiom for unsigned fixnum (SBCL makes that (unsigned-byte 62)) 2018-09-05T20:22:36Z aeth: But you would want to specify (integer 0 5000000) so the tightest bounds can be used for storage. In this case, SBCL uses (unsigned-byte 31) 2018-09-05T20:22:39Z aeth: Half the memory 2018-09-05T20:23:17Z j`ey: oh I guess I was thinking about the memory of the file, not of when it actually serialised it back into objects 2018-09-05T20:23:26Z aeth: (upgraded-array-element-type '(integer 0 5000000)) ; I would expect (unsigned-byte 31) or (unsigned-byte 32) and mostly the latter 2018-09-05T20:23:27Z j`ey: so yeah, I've added the (integer..) now 2018-09-05T20:24:03Z aeth: I get ub32 everywhere but on SBCL, where it is ub31 2018-09-05T20:24:30Z j`ey: do I need the upgraded-array-element-type bit? 2018-09-05T20:24:43Z aeth: no, that's how you test what you get 2018-09-05T20:24:47Z j`ey: ah 2018-09-05T20:24:49Z aeth: you just put :element-type foo 2018-09-05T20:26:37Z aeth: Every implementation makes it (unsigned-byte 32) except for SBCL, which makes it (unsigned-byte 31) 2018-09-05T20:26:56Z Roy_Fokker joined #lisp 2018-09-05T20:27:02Z _death: it's a matter of correctness.. fixnum with these bounds may or may not work, depending on the implementation.. the integer spec will always work 2018-09-05T20:27:34Z j`ey: even with integer, print-readably fails :( 2018-09-05T20:27:50Z pjb: whartung: when you stream a vidoe, linux still puts the whole video in RAM! If you stream it again, it won't access the disk again! 2018-09-05T20:28:09Z whartung: if you have enough disk buffer cache, yes it will do that. 2018-09-05T20:28:09Z pjb: (well, assuming a 4GB video, and 32GB RAM minimum as I have). 2018-09-05T20:28:13Z j`ey: at least it started to write out the file: #A((5322240 6) (UNSIGNED-BYTE 31) 2018-09-05T20:28:27Z whartung: but the application doesn’t load that 4G 2018-09-05T20:28:42Z aeth: _death: Types can provide performance, space efficiency, and/or correctness 2018-09-05T20:28:55Z pjb: whartung: it should not. It's more efficient if I/O is performed by the OS instead of the applicaiton. 2018-09-05T20:29:02Z j`ey: is there a simple way to split an array? so I can serialise across several files, and join them back up later? 2018-09-05T20:29:03Z aeth: j`ey: If you want to be semi-portable you could use the result of (upgraded-array-element-type '(integer 0 5000000)) instead of (unsigned-byte 31) 2018-09-05T20:29:04Z whartung: correct 2018-09-05T20:29:08Z whartung: to a point... 2018-09-05T20:29:12Z pjb: whartung: this is why we want to use the RAM as a cache for the file system: so the OS can do all the I/O. 2018-09-05T20:29:25Z j`ey: aeth: what I pasted was from the output of print-readably 2018-09-05T20:29:29Z aeth: j`ey: Generally, I think the idiomatic CL solution is to not split the array and to work directly with start/end indices 2018-09-05T20:29:42Z aeth: 2D makes that more complicated, of course 2018-09-05T20:30:06Z beach: pjb: Am I detecting that you are supporting my point of view? 2018-09-05T20:30:07Z j`ey: aeth: Im only talking about splitting it, to be able to serialise it 2018-09-05T20:30:12Z dlowe: (I wish displaced arrays had a better interface :p) 2018-09-05T20:30:27Z pjb: beach: Yes, I like the EROS system :-) 2018-09-05T20:30:35Z dlowe: displaced arrays are way easier to deal with than messing about with start/end indices 2018-09-05T20:30:37Z pjb: and coyotos. 2018-09-05T20:30:41Z beach: pjb: got it. 2018-09-05T20:32:24Z beach: pjb: By the way, you are the one who made me reconsider crash-proofness. And I think you are right that it might be required. Not for crashes, but for the issue jasom is talking about. 2018-09-05T20:33:26Z it3ration joined #lisp 2018-09-05T20:33:52Z beach: Add to EROS a check-sum verification before pages are written to disk and it should be fantastic. 2018-09-05T20:34:24Z pjb: IIRC, the disk was always consistent in EROS. 2018-09-05T20:34:36Z beach: Indeed. 2018-09-05T20:34:44Z aeth: j`ey: I would personally use a binary format. Perhaps it would be fast and simple enough to reconstruct ub32s from stored/read ub8s. (Or is there a way to read ub32s directly?) 2018-09-05T20:34:49Z pjb: The updates were written, and only when the write was complete, a flag was flipped on the disk to activate them. 2018-09-05T20:35:06Z beach: pjb: Provided RAM was not corrupted by cosmic radiation. 2018-09-05T20:35:10Z pjb: So if a crash occured, it could only read the disk from one stage or the other. 2018-09-05T20:35:21Z j`ey: aeth: yeah, seems like I'll have to take a look at CL-STORE 2018-09-05T20:35:53Z aeth: j`ey: You probably want something low level that can give you an ub32 abstraction since you're not doing anything elaborate. I'm not sure if CL-STORE is at that level. 2018-09-05T20:36:26Z aeth: It's a common enough problem that I'm sure someone has written something. 2018-09-05T20:36:42Z azimut quit (Ping timeout: 252 seconds) 2018-09-05T20:36:51Z azimut_ joined #lisp 2018-09-05T20:37:05Z aeth: Failing that, you can just (read-byte) 4 times and use bit magic to turn that into a ub32. It should be about 20-30 lines 2018-09-05T20:37:06Z j`ey: never used any CL libs before heh 2018-09-05T20:37:32Z pjb: As for the garbage collection, in EROS it's performed over the whole disk (but lazily). It's the only way to erase a file (notice that it's also already the case in unix file systems, with the unlink (not delete) syscall! 2018-09-05T20:37:48Z beach: On an unrelated topic, I am disturbed by seeing people give style advise who have not exposed any of their own shared systems. 2018-09-05T20:37:50Z pjb: (only in unix it's a refcount-based collector :-)) 2018-09-05T20:38:03Z it3ration quit (Ping timeout: 244 seconds) 2018-09-05T20:38:32Z rumbler31 joined #lisp 2018-09-05T20:38:40Z j`ey: aeth: actually true, maybe I'll just DIY. the size is fixed 2018-09-05T20:39:15Z beach: pjb: I think the EROS gc is an issue orthogonal to the main problem they solve. 2018-09-05T20:39:23Z aeth: j`ey: There's almost certainly a library for going to-and-from ub32 and ub8, but it's also very simple, maybe an hour or two 2018-09-05T20:39:32Z pjb: aeth: you can have binary files of (unsigned-byte 32). Only the file format is not specified therefore it's implementation dependent. Not portable across systems or across implementations (or even versions of the same implementation). 2018-09-05T20:39:53Z pjb: so for temp files, it'd be ok. For persistent file we use (unsigned-byte 8) which is what POSIX provides. 2018-09-05T20:40:13Z aeth: pjb: Using byte functions (is it ldb? been a while) to go ub32->ub8 for writing and ub8->ub32 for reading would work best afaik 2018-09-05T20:40:18Z j`ey: how can I read a 32bit value then? 2018-09-05T20:40:21Z pjb: Yes, ldb, dpb. 2018-09-05T20:40:51Z pjb: You can also use ash and logior and logand, a good compiler whould generate the same code. 2018-09-05T20:41:23Z aeth: j`ey: It winds up looking like this: https://gitlab.com/mbabich/cl-brainfuck/blob/1ddffd79a7592adbfc04fd90466cb970a5f96e2c/brainfuck.lisp#L40-51 2018-09-05T20:41:45Z aeth: That's my BF implementation, where I needed to do that because my BF uses ub8 but needs to support Unicode 2018-09-05T20:41:53Z j`ey: read-char 2018-09-05T20:42:04Z aeth: I might have the endianness wrong, though 2018-09-05T20:42:14Z aeth: (Well, not wrong, but not efficient) 2018-09-05T20:42:14Z pjb: or even arithmetic, a good compiler should notice the multiplications and truncates by powers of two … 2018-09-05T20:42:41Z j`ey: Im just going to write out 32bits, it's fine for what im doing 2018-09-05T20:43:18Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-05T20:43:30Z vlatkoB_ quit (Remote host closed the connection) 2018-09-05T20:43:44Z aeth: pjb: Standards have been raised. Apparently a good compiler now recognizes x * (2^n + 1) and x * (2^n - 1) and rewrites them as (x * 2^n + x) and (x * 2^n - x) 2018-09-05T20:43:55Z _death: there's a library called nibbles... 2018-09-05T20:44:27Z aeth: pjb: where x is exact and not a float, of course 2018-09-05T20:44:39Z aeth: Rules of algebra don't apply to floats :-p 2018-09-05T20:45:17Z j`ey: aeth: is there a read-32 equivalent to read-char? 2018-09-05T20:45:48Z Bike: read-byte 2018-09-05T20:46:04Z beach: http://mathworld.wolfram.com/Floating-PointAlgebra.html 2018-09-05T20:47:01Z aeth: j`ey: portably streams only work on characters and bytes where bytes are ub8. If you read in bytes you need to combine them into 4 (and for writing, divide them into 4) using dpb/ldb/etc. 2018-09-05T20:47:15Z aeth: Alternatively ash and + 2018-09-05T20:48:04Z aeth: (format t "~B~%" (ash #b11111111 8)) 2018-09-05T20:48:08Z _death: logior/logand.. + only "makes sense" if the bit ranges are mutually exclusive 2018-09-05T20:48:36Z pjb: aeth: more tricks can be done by compilers on integer arithmetic, notably when modulo arithmetic is used. like using a multiplication of the modulo inverse instead of a division. 2018-09-05T20:48:49Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-05T20:49:52Z pjb: _death: sometimes + makes sense even if the bit ranges are not exclusive. like when you're on a 8088 and converting a segment:offset address :-) 2018-09-05T20:51:05Z _death: pjb: ;) 2018-09-05T20:53:03Z _death: pjb: protected mode protects people from that 2018-09-05T20:53:17Z aeth: Something like this could work: (defun combine-bytes (byte-0 byte-1 byte-2 byte-3) (declare ((unsigned-byte 8) byte-0 byte-1 byte-2 byte-3)) (+ (ash byte-0 24) (ash byte-1 16) (ash byte-2 8) byte-3)) 2018-09-05T20:54:27Z j`ey: aeth: can you write me a function to split them? :P 2018-09-05T20:54:59Z aeth: There you would need ldb 2018-09-05T20:55:17Z _death: aeth: that code is sitting on the fence.. logior/ash or +/* 2018-09-05T20:55:42Z Bike: wait, i think you can have streams with bit width bigger than 8 fine. 2018-09-05T20:55:45Z aeth: iirc. (values (ldb (byte 8 0) foo) (ldb (byte 8 8) foo) (ldb (byte 8 16) foo) (ldb (byte 8 24) foo)) 2018-09-05T20:55:59Z aeth: Bike: portably/ 2018-09-05T20:56:01Z aeth: ? 2018-09-05T20:56:08Z pjb: (write-sequence (vector (ldb (byte 8 0) foo) (ldb (byte 8 8) foo) (ldb (byte 8 16) foo) (ldb (byte 8 24) foo)) stream) 2018-09-05T20:56:30Z pjb: Bike: fine but not portable. 2018-09-05T20:56:45Z pjb: Bike: also, with bit width smaller than 8. 2018-09-05T20:57:25Z Bike: where does it specify 8? 2018-09-05T20:57:40Z pjb: :external-format `(unsigned-byte ,here) 2018-09-05T20:57:55Z aeth: _death: using logior and + are the same apparent speed and the same assembly size, just a different instruction in the asm 2018-09-05T20:58:14Z aeth: j`ey: Feel free to use logior instead of + if you want to be ideologically correct 2018-09-05T20:58:25Z _death: aeth: it's just a style remark 2018-09-05T20:59:13Z wigust quit (Ping timeout: 245 seconds) 2018-09-05T20:59:42Z _death: like (list (car foo) (rest foo)) 2018-09-05T20:59:44Z aeth: _death: Odds are that Intel recognizes this pattern and uses OR or something. Since asm isn't the lowest level anymore 2018-09-05T20:59:51Z rumbler31 joined #lisp 2018-09-05T21:00:01Z pjb: Bike: well, POSIX doesn't explicitely specify 8. It specifies bytes and unsigned char. So it's actually CHAR_BIT. 2018-09-05T21:00:32Z pjb: Bike: on the other hand, hardware interfaces to hard disks (IDE, SCSI, etc) do specify 8-bit bytes. 2018-09-05T21:00:34Z Guest23783 joined #lisp 2018-09-05T21:00:57Z _death: aeth: by "anymore" you're talking about the 80s right? :) 2018-09-05T21:01:00Z aeth: j`ey: the only thing to keep in mind is that whatever format you use, order the bytes so that you can reverse it. 2018-09-05T21:01:21Z pjb: Bike: so in practice, 8 is the portable bit width. 2018-09-05T21:01:22Z j`ey: aeth: I will try your code soon 2018-09-05T21:01:42Z Guest23783: Hi 2018-09-05T21:01:45Z pjb: Bike: (Internet protocols also specify 8-bit bytes). 2018-09-05T21:01:46Z aeth: j`ey: and either pjb's is the reverse or one of the two byte sequences needs to be reversed in order 2018-09-05T21:02:21Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-05T21:02:23Z figurehe4d quit (Quit: Leaving) 2018-09-05T21:02:24Z Guest23783: I'm getting an error when I try to do division. 2018-09-05T21:02:24Z aeth: You probably want write-byte and to write the four individually because that temporary vector is probably going to cons a lot in a really big file 2018-09-05T21:02:37Z Guest23783: Could someone help me? 2018-09-05T21:02:42Z Guest23783: code: https://privatebin.net/?f1ff817ede3b7a29#Q4Rc154COks9r2b03WN/P4jKD6PDHBW6dpeVmw1FYkk= 2018-09-05T21:03:04Z no-defun-allowed: Hello everyone! 2018-09-05T21:03:07Z aeth: (Alternatively, that vector you use in write-sequence could be repeatedly written to so you only have to allocate it once) 2018-09-05T21:03:13Z Guest23783: Error: https://privatebin.net/?6e58e17c18809783#8L/pA/rbUAvEEyN+0FpKdRazjM2n8jNRjcRmZxTmSe8= 2018-09-05T21:03:25Z White_Flame: Guest23783: defvar defines a variable, and only sets it if it's new 2018-09-05T21:03:38Z White_Flame: so you want defvar up above your code, and (setf n1 (read)) instead 2018-09-05T21:03:56Z White_Flame: the 2nd time you run your code, the defvar does NOT change the value of n1 and n2, because the variable is already defined 2018-09-05T21:04:04Z j`ey: aeth: write-byte is easier 2018-09-05T21:04:18Z Kundry_Wag joined #lisp 2018-09-05T21:05:00Z aeth: I'm not sure if there is an advantage to matching the machine's endianness if you're doing it manually like this. 2018-09-05T21:05:04Z White_Flame: however, it's more lisp style to do (let ((n1 (progn (print "Number 1:) (read))) ....) so you have a scope in which the local variable n1 (and n2) exist in. There's no need for them to be global 2018-09-05T21:05:06Z kajo joined #lisp 2018-09-05T21:05:28Z White_Flame: Guest23783: there's also #clschool which is more appropriate for beginner questions 2018-09-05T21:05:50Z j`ey: aeth: for now, I just want something simple :P 2018-09-05T21:06:23Z pjb: Guest23783: you have too many closing parentheses. 2018-09-05T21:08:04Z it3ration joined #lisp 2018-09-05T21:08:36Z mindCrime_ quit (Ping timeout: 252 seconds) 2018-09-05T21:08:47Z rumbler31 quit (Remote host closed the connection) 2018-09-05T21:08:57Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-05T21:11:26Z gravicappa quit (Ping timeout: 272 seconds) 2018-09-05T21:11:43Z Kundry_Wag joined #lisp 2018-09-05T21:12:06Z Guest23783: Thanks pjb and White_Flame. 2018-09-05T21:12:40Z it3ration quit (Ping timeout: 246 seconds) 2018-09-05T21:16:18Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-05T21:17:12Z Kundry_Wag joined #lisp 2018-09-05T21:19:36Z kajo quit (Ping timeout: 252 seconds) 2018-09-05T21:21:00Z kajo joined #lisp 2018-09-05T21:21:48Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-05T21:22:07Z Demosthenex: could someone recommend to me some reading on organizing a CL project? i've reached the point where i need to break up my program into multiple files, dump a few executables, etc. 2018-09-05T21:22:09Z igemnace quit (Ping timeout: 252 seconds) 2018-09-05T21:22:35Z igemnace joined #lisp 2018-09-05T21:22:41Z White_Flame: look at multi-file libraries, and how their .asd file is set up 2018-09-05T21:22:44Z Demosthenex: and other than (load...) i'm lost ;] 2018-09-05T21:23:21Z Demosthenex: (my google-fu is failing because i'm not using the right words to describe what i'm trying to do) 2018-09-05T21:24:11Z nbunjevac quit (Quit: leaving) 2018-09-05T21:24:17Z White_Flame: do you use quicklisp? if so, then you have lots of small libraries to look at 2018-09-05T21:24:52Z Demosthenex: yeah, i do. and i was looking at roswell for dumping files. but my library management is really (load "../lib/x.lisp") 2018-09-05T21:25:19Z Demosthenex: i'm not creating libraries for use outside the project, just trying to break up my program for reuse, especially with the executables 2018-09-05T21:27:08Z White_Flame: ~/quicklisp/dists/quicklisp/software/ will hav ethe source code to the libraries you downloaded 2018-09-05T21:27:18Z ealfonso joined #lisp 2018-09-05T21:28:21Z Bike quit (Ping timeout: 252 seconds) 2018-09-05T21:29:29Z Demosthenex: part of what i'm asking is since these are internal libs... isn't ql/asdf overkill? is (load) enough, or am i missing something specific 2018-09-05T21:30:02Z it3ration joined #lisp 2018-09-05T21:30:06Z whartung: if you can do it with a simple “project.lisp” that loads the files in their proper order, then do it. nbd. 2018-09-05T21:30:07Z pjb: Demosthenex: generic software engineering books. 2018-09-05T21:30:55Z whartung: if you want to learn about formal packages and systems and such, then do that instead. Your code, up to you. 2018-09-05T21:31:42Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-05T21:31:47Z Kundry_Wag joined #lisp 2018-09-05T21:33:02Z Demosthenex: sounds like use load until i outgrow it ;] 2018-09-05T21:33:29Z whartung: much progress has been made by “doing what works, until it doesn’t — then change it" 2018-09-05T21:36:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-05T21:36:09Z pjb: Demosthenex: definitely. Since this way you will understand why you need those sophisticated tools and how they work. 2018-09-05T21:37:00Z Copenhagen_Bram joined #lisp 2018-09-05T21:37:08Z whartung: yup! There’s a lot to be said about understanding why you’re jumping through all those hoops to begin with, and you won’t know that until you start encountering some kind of pain point. (a point that you simply may not have reached yet) 2018-09-05T21:37:27Z jdz quit (Ping timeout: 240 seconds) 2018-09-05T21:37:37Z shymega quit (Quit: Ciao.) 2018-09-05T21:37:38Z ober joined #lisp 2018-09-05T21:39:19Z shymega joined #lisp 2018-09-05T21:41:22Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-05T21:42:28Z Fare quit (Ping timeout: 272 seconds) 2018-09-05T21:42:36Z foom2 is now known as foom 2018-09-05T21:43:00Z jdz joined #lisp 2018-09-05T21:43:26Z Demosthenex: exactly. 2018-09-05T21:44:13Z LiamH quit (Quit: Leaving.) 2018-09-05T21:45:45Z Kundry_Wag joined #lisp 2018-09-05T21:46:54Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-05T21:48:47Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-05T21:49:37Z _death: Demosthenex: an .asd file and a package.lisp file gets you a long way.. 2018-09-05T21:50:43Z Copenhagen_Bram joined #lisp 2018-09-05T21:54:37Z Kundry_Wag joined #lisp 2018-09-05T21:56:20Z pjb quit (Remote host closed the connection) 2018-09-05T21:56:43Z aeth: Does anyone want to port https://regex101.com/r/YCTmCs/3 to cl-ppcre? 2018-09-05T21:56:48Z cgay quit (Quit: Lost terminal) 2018-09-05T21:57:10Z Xach: no 2018-09-05T21:58:44Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-05T21:58:52Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-05T21:59:05Z Essadon quit (Quit: Qutting) 2018-09-05T21:59:43Z no-defun-allowed: hi xach 2018-09-05T22:00:46Z Kundry_Wag joined #lisp 2018-09-05T22:02:17Z longshi quit (Quit: WeeChat 2.2) 2018-09-05T22:02:33Z whartung: that regex looks like time well spent to get that result, that’s for sure. 2018-09-05T22:02:40Z whartung: “now you have two problems” indeed. 2018-09-05T22:03:10Z cgay joined #lisp 2018-09-05T22:04:09Z j`ey: I want to apply a function to a value N times. imagine something like (apply-N input 10 (lambda (x) (+1 x)) 2018-09-05T22:04:37Z j`ey: apply that lambda 10 times on 'input'. is there something like this I can use already? 2018-09-05T22:04:54Z j`ey: I made a solution that uses make-array and reduce, but I wonder if there's a better way 2018-09-05T22:05:10Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-05T22:05:32Z Guest23783 left #lisp 2018-09-05T22:05:47Z Shinmera: (loop repeat 10 do (funcall fun input)) 2018-09-05T22:06:14Z nullniverse joined #lisp 2018-09-05T22:06:55Z aeth: Shinmera: I think j`ey wants to use the return value 2018-09-05T22:07:37Z j`ey: yeah I want to accumulate it 2018-09-05T22:07:43Z _death: (loop repeat 10 for value = (funcall function initial-value) then (funcall function value) finally (return value)) 2018-09-05T22:08:04Z aeth: Maybe something like `(alexandria:compose ,@(loop repeat 10 collect ,function)) 2018-09-05T22:08:28Z j`ey: _death: going to try that 2018-09-05T22:09:10Z aeth: s/,function/function/ 2018-09-05T22:10:44Z White_Flame: aeth: what is that regex supposed to do? 2018-09-05T22:11:07Z arduo joined #lisp 2018-09-05T22:11:25Z aeth: White_Flame: match "A B C" if "A + B = C" 2018-09-05T22:11:42Z White_Flame: yikes 2018-09-05T22:12:00Z aeth: White_Flame: Surprisingly it has a few bugs, e.g. https://www.reddit.com/r/programming/comments/9d768u/i_know_its_ridiculous_but_i_just_made_a_regex_in/e5frr54/ 2018-09-05T22:12:44Z White_Flame: j`ey: also, (let ((val init)) (dotimes (x 10) (setf val (funcall func val)))) to be quite straightforward 2018-09-05T22:13:01Z j`ey: White_Flame: ah yes 2018-09-05T22:14:13Z White_Flame: you could also create a macro that unrolled to (foo (foo (foo ... (foo init)))) which depending on inlining might be quite fast 2018-09-05T22:16:00Z sabrac joined #lisp 2018-09-05T22:16:17Z _death: seems to match "0 0 " 2018-09-05T22:16:34Z j`ey: White_Flame: the 10 isnt actually constant 2018-09-05T22:16:43Z _death: so here's another regex that matches: .* 2018-09-05T22:22:41Z j`ey: sweet, that cut off 8s from execution 2018-09-05T22:23:53Z j`ey: 11,091,693,648 bytes consed -> 32,640 bytes consed, nice improvement 2018-09-05T22:24:45Z kajo quit (Ping timeout: 252 seconds) 2018-09-05T22:27:32Z kristof joined #lisp 2018-09-05T22:29:09Z _death: White_Flame: this is actually better than my version, since it's correct in the case n=0 2018-09-05T22:32:18Z rpg joined #lisp 2018-09-05T22:34:32Z aeth: White_Flame, _death: I wrote an alternative not in regex because the regex doesn't run in cl-ppcre: https://gitlab.com/snippets/1751515 2018-09-05T22:34:38Z dale quit (Read error: Connection reset by peer) 2018-09-05T22:34:42Z dale_ joined #lisp 2018-09-05T22:35:01Z dale_ is now known as dale 2018-09-05T22:35:33Z Denommus quit (Remote host closed the connection) 2018-09-05T22:35:36Z aeth: It looks like it even handles trailing whitespace for free 2018-09-05T22:36:35Z aeth: I'm surprised relying on handler-case didn't absolutely destroy the performance of the NIL results, at least in SBCL 2018-09-05T22:36:36Z White_Flame: I'd just put a handler-case aroudn the whole thing and not do the intermediate checks 2018-09-05T22:37:42Z kajo joined #lisp 2018-09-05T22:37:46Z aeth: I can also get rid of the second checks for space-0 and space-1 2018-09-05T22:37:59Z White_Flame: that way the parse error would just abort out to the outer handler to return NIL, and not bother running through the AND checks and further fields 2018-09-05T22:38:00Z aeth: i.e. (and a b c (= c (+ a b))) will work just fine 2018-09-05T22:38:00Z _death: this is lisp... just (= c (+ a b)) would be fine ;) 2018-09-05T22:38:31Z aeth: _death: no because those are only defined on numbers and the type of those variables is (or null integer) 2018-09-05T22:38:48Z White_Flame: right, which would trip an error 2018-09-05T22:38:50Z _death: so add ignore-errors 2018-09-05T22:39:14Z aeth: I will edit it to just make it (and a b c (= c (+ a b))) instead of (and space-0 space-1 a b c ...) 2018-09-05T22:39:19Z White_Flame: get rid of the handler-cases and that means the final numerics are only reached if parse-integer succeeded 2018-09-05T22:39:48Z _death: what I actually aimed for was pointing out that in lisp we don't care about strings ;) 2018-09-05T22:40:24Z aeth: _death: No. In C/C++ people don't care about strings 2018-09-05T22:40:29Z aeth: In most other languages, people do :-p 2018-09-05T22:40:34Z White_Flame: none of your existing checks actually propagate numeric type information. They only ensure non-nil, so you're not gaining any speed with these checks 2018-09-05T22:40:54Z White_Flame: just let the builtins check & throw for you 2018-09-05T22:41:36Z aeth: White_Flame: the known type is (or null integer) 2018-09-05T22:41:54Z White_Flame: ah, hmm, I guess so 2018-09-05T22:42:14Z aeth: White_Flame: I could just put handler-case over the whole thing and return nil for a parse-error, though, if that's what you mean 2018-09-05T22:42:24Z White_Flame: yes 2018-09-05T22:42:50Z White_Flame: then you don't hav eto check for a/b/c at the end 2018-09-05T22:43:58Z White_Flame: your error handling is only pushing it forward to require more error handling, which is overall slower and more error-prone :-P 2018-09-05T22:44:08Z Lycurgus quit (Quit: Exeunt) 2018-09-05T22:44:24Z aeth: White_Flame: It doesn't handle some edge cases, though, such as where b and c are NIL by space-1 not existing 2018-09-05T22:44:41Z White_Flame: you could also bail after space-0 and space-1, by nesting ANDs 2018-09-05T22:44:56Z White_Flame: since yo make redundant space-0/1 checks 2018-09-05T22:45:10Z aeth: I did initially nest LETs 2018-09-05T22:45:13Z aeth: it looked ugly 2018-09-05T22:45:22Z White_Flame: this looks uglier IMO :) 2018-09-05T22:45:31Z aeth: It's flat, though 2018-09-05T22:45:38Z White_Flame: flat is bad and non-lispy 2018-09-05T22:45:54Z aeth: PROGN is bad and non-lispy 2018-09-05T22:46:19Z White_Flame: I doubt this would need progn 2018-09-05T22:46:40Z White_Flame: though a when-let sort of thing would certainly be handy 2018-09-05T22:46:55Z White_Flame: to check for spaces 2018-09-05T22:47:02Z White_Flame: the integers could just throw to the outside 2018-09-05T22:47:21Z aeth: White_Flame: What I meant is that any form with an implicit PROGN is just as not-flat as LET* 2018-09-05T22:47:31Z White_Flame: what do you mean by "flat" specifically? 2018-09-05T22:47:32Z aeth: s/not-flat/flat/ 2018-09-05T22:48:00Z White_Flame: I thought you were implying straight indentation at first 2018-09-05T22:48:32Z aeth: White_Flame: (progn (write-char #\H) (write-char #\e) (write-char #\l) (write-char #\l) (write-char #\o) nil) 2018-09-05T22:48:47Z lavaflow joined #lisp 2018-09-05T22:49:03Z fikka joined #lisp 2018-09-05T22:50:21Z White_Flame: that doesn't really answer my question 2018-09-05T22:50:51Z Trystam joined #lisp 2018-09-05T22:51:06Z aindilis quit (Ping timeout: 260 seconds) 2018-09-05T22:51:18Z eschulte quit (Ping timeout: 245 seconds) 2018-09-05T22:53:15Z Trystam is now known as Tristam 2018-09-05T22:53:48Z aeth: White_Flame: Doing everything all at one level can definitely be lispy if it fits the problem 2018-09-05T22:55:06Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-05T22:55:29Z arduo quit (Ping timeout: 244 seconds) 2018-09-05T22:55:51Z White_Flame: I still don't know what "flat" implies 2018-09-05T22:55:55Z fikka quit (Ping timeout: 246 seconds) 2018-09-05T22:56:12Z aeth: White_Flame: LET* is designed to avoid the nesting in (let ((x 42)) (let ((y 43)) ...)) and, yes, it's not a perfect fit if the LET is conditional 2018-09-05T22:56:21Z _death: the issue is separation of concerns.. you're mixing both parsing and testing.. (test (numbers string)) 2018-09-05T22:56:40Z lavaflow joined #lisp 2018-09-05T22:57:34Z aeth: _death: I'm not mixing both parsing and testing. I'm parsing the number and if the parsing fails, I'm returning NIL, parsing three numbers as (or null integer)s, and then I do the testing. That's also why I saw the handler-case as best done 3 separate times 2018-09-05T22:58:23Z _death: I feel we've been miscommunicating a lot today ;) 2018-09-05T22:58:33Z aeth: (and a b c (= c (+ a b))) is essentially (and parse-successful (= c (+ a b))) 2018-09-05T22:59:21Z aeth: I suppose the parsing could be done in a helper function that returns 3 values and only has one handler-case 2018-09-05T23:02:16Z fikka joined #lisp 2018-09-05T23:02:53Z White_Flame: (read-from-string (format nil "(~a)" str)) 2018-09-05T23:04:05Z White_Flame: I'm a bit surprised that read-into-list-until-eof isn't a builtin 2018-09-05T23:04:31Z _death: more efficient to use make-concatenated-stream 2018-09-05T23:05:10Z _death: of course there's also a looping solution 2018-09-05T23:05:43Z robotoad quit (Quit: robotoad) 2018-09-05T23:07:01Z rumbler31 joined #lisp 2018-09-05T23:07:20Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T23:07:38Z aindilis joined #lisp 2018-09-05T23:07:42Z White_Flame: (read-delimited-list #\EOF) 2018-09-05T23:07:55Z rumbler31 quit (Remote host closed the connection) 2018-09-05T23:09:09Z Pixel_Outlaw joined #lisp 2018-09-05T23:09:47Z kushal quit (Remote host closed the connection) 2018-09-05T23:10:15Z SenasOzys quit (Remote host closed the connection) 2018-09-05T23:10:38Z Kaisyu7 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-05T23:11:40Z mange joined #lisp 2018-09-05T23:12:06Z fikka joined #lisp 2018-09-05T23:12:23Z danielxv_ joined #lisp 2018-09-05T23:12:24Z danielxv_ quit (Client Quit) 2018-09-05T23:12:34Z vertigo quit (Ping timeout: 240 seconds) 2018-09-05T23:13:35Z kushal joined #lisp 2018-09-05T23:13:43Z danielvu joined #lisp 2018-09-05T23:17:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-05T23:17:33Z aeth: White_Flame: CL is built for efficiency. 2018-09-05T23:19:50Z aeth: alexandria:read-file-into-byte-vector and alexandria:read-file-into-string seem like obvious things that are missing, though 2018-09-05T23:20:37Z Kaisyu joined #lisp 2018-09-05T23:20:44Z _death: it comes from a time where such things were obviously wrong 2018-09-05T23:21:03Z aeth: They're still usually wrong, especially for the byte-vector option 2018-09-05T23:21:35Z aeth: But it's weird that they're not there (as well as the rest of alexandria, for the most part) 2018-09-05T23:23:44Z White_Flame: aeth: I would say that the lack of some of those things are probably from small-memory-footprint thinking 2018-09-05T23:24:22Z _death: maybe make-array should be able to take a filespec for :displaced-to :) 2018-09-05T23:24:34Z White_Flame: that'd be nice :) 2018-09-05T23:27:39Z ebrasca joined #lisp 2018-09-05T23:29:45Z _death: from what I've seen, sbcl assumes the (specialized) array's header immediately precedes the contents, so it's a bit tricky to implement 2018-09-05T23:30:40Z dented42 joined #lisp 2018-09-05T23:32:24Z fikka joined #lisp 2018-09-05T23:32:41Z asarch quit (Quit: Leaving) 2018-09-05T23:37:44Z fikka quit (Ping timeout: 272 seconds) 2018-09-05T23:37:57Z robotoad joined #lisp 2018-09-05T23:38:11Z jasom: aeth: what does that even do 2018-09-05T23:38:35Z jasom: oops I was scrolled up, that was in response to the regex posted 3 hours ago 2018-09-05T23:42:48Z jasom: Demosthenex: I use ASDF for pretty much any program I write; it doesn't add much complexity and has the advantage of declaring your dependencies. 2018-09-05T23:43:58Z jasom: though I only do so because I did what pjb mentions (jumped through a bunch of hoops until I got tired of it). 2018-09-05T23:45:21Z Jesin quit (Ping timeout: 252 seconds) 2018-09-05T23:45:41Z dale quit (Quit: dale) 2018-09-05T23:52:45Z fikka joined #lisp 2018-09-05T23:55:08Z it3ration quit (Remote host closed the connection) 2018-09-05T23:55:16Z it3ration joined #lisp 2018-09-05T23:56:43Z rpg quit (Ping timeout: 245 seconds) 2018-09-05T23:57:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-05T23:57:44Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T00:01:50Z Hu0p joined #lisp 2018-09-06T00:03:34Z fikka joined #lisp 2018-09-06T00:03:35Z Jesin joined #lisp 2018-09-06T00:08:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T00:08:48Z ober quit (Ping timeout: 252 seconds) 2018-09-06T00:10:46Z Fare joined #lisp 2018-09-06T00:11:18Z jinkies quit (Remote host closed the connection) 2018-09-06T00:13:23Z mange quit (Remote host closed the connection) 2018-09-06T00:15:05Z mange joined #lisp 2018-09-06T00:16:04Z it3ration quit (Ping timeout: 246 seconds) 2018-09-06T00:21:41Z Bike joined #lisp 2018-09-06T00:22:17Z makomo quit (Ping timeout: 244 seconds) 2018-09-06T00:23:36Z fikka joined #lisp 2018-09-06T00:27:43Z meepdeew joined #lisp 2018-09-06T00:28:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T00:29:24Z Kundry_Wag joined #lisp 2018-09-06T00:31:56Z meepdeew quit 2018-09-06T00:33:47Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-06T00:41:55Z it3ration joined #lisp 2018-09-06T00:42:13Z rpg joined #lisp 2018-09-06T00:43:57Z fikka joined #lisp 2018-09-06T00:45:16Z mindCrime_ joined #lisp 2018-09-06T00:46:57Z it3ration quit (Ping timeout: 252 seconds) 2018-09-06T00:48:38Z fikka quit (Ping timeout: 244 seconds) 2018-09-06T00:50:28Z mindCrime_ quit (Ping timeout: 245 seconds) 2018-09-06T00:51:42Z aindilis quit (Ping timeout: 252 seconds) 2018-09-06T00:53:06Z acolarh quit (Ping timeout: 272 seconds) 2018-09-06T01:01:03Z kristof quit (Ping timeout: 252 seconds) 2018-09-06T01:04:34Z fikka joined #lisp 2018-09-06T01:07:30Z acolarh joined #lisp 2018-09-06T01:09:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-06T01:09:13Z mkolenda quit (Ping timeout: 252 seconds) 2018-09-06T01:11:34Z it3ration joined #lisp 2018-09-06T01:17:37Z asarch joined #lisp 2018-09-06T01:19:12Z flazh quit (Ping timeout: 252 seconds) 2018-09-06T01:19:25Z zooey quit (Ping timeout: 256 seconds) 2018-09-06T01:22:32Z kamog joined #lisp 2018-09-06T01:24:57Z fikka joined #lisp 2018-09-06T01:26:12Z mindCrime_ joined #lisp 2018-09-06T01:27:11Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-06T01:27:23Z zooey joined #lisp 2018-09-06T01:28:19Z argoneus joined #lisp 2018-09-06T01:29:34Z Kundry_Wag joined #lisp 2018-09-06T01:30:28Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T01:30:45Z acolarh quit (Ping timeout: 252 seconds) 2018-09-06T01:30:59Z flazh joined #lisp 2018-09-06T01:34:15Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T01:34:37Z Kundry_Wag joined #lisp 2018-09-06T01:39:58Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-06T01:42:42Z robotoad quit (Quit: robotoad) 2018-09-06T01:43:13Z Kundry_Wag joined #lisp 2018-09-06T01:43:40Z danielvu quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T01:44:08Z acolarh joined #lisp 2018-09-06T01:45:15Z fikka joined #lisp 2018-09-06T01:47:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-06T01:49:29Z Kundry_Wag joined #lisp 2018-09-06T01:50:07Z fikka quit (Ping timeout: 244 seconds) 2018-09-06T01:54:31Z robotoad joined #lisp 2018-09-06T01:56:18Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-06T01:58:39Z it3ration quit (Read error: Connection reset by peer) 2018-09-06T01:58:47Z it3ration joined #lisp 2018-09-06T02:00:50Z Kundry_Wag joined #lisp 2018-09-06T02:01:43Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-06T02:01:57Z Kundry_Wag joined #lisp 2018-09-06T02:05:34Z fikka joined #lisp 2018-09-06T02:06:13Z dented42 joined #lisp 2018-09-06T02:06:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-06T02:07:24Z Lycurgus joined #lisp 2018-09-06T02:08:53Z robotoad quit (Read error: Connection reset by peer) 2018-09-06T02:10:24Z Kundry_Wag joined #lisp 2018-09-06T02:10:28Z robotoad joined #lisp 2018-09-06T02:10:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T02:16:36Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T02:16:53Z robotoad quit (Read error: Connection reset by peer) 2018-09-06T02:17:27Z danielvu joined #lisp 2018-09-06T02:18:00Z mkolenda joined #lisp 2018-09-06T02:20:28Z robotoad joined #lisp 2018-09-06T02:22:00Z Kundry_Wag joined #lisp 2018-09-06T02:26:15Z fikka joined #lisp 2018-09-06T02:26:18Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-06T02:28:42Z Kundry_Wag joined #lisp 2018-09-06T02:28:49Z jasom: survey: if you were to redesign setf expanders, would you leave ti as multiple-values or use a struct/class/something else? 2018-09-06T02:30:09Z Bike: multiple values is fine. i'd change other things though. 2018-09-06T02:30:22Z pierpa quit (Quit: Page closed) 2018-09-06T02:30:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T02:33:27Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T02:36:41Z fikka joined #lisp 2018-09-06T02:36:49Z Kundry_Wag joined #lisp 2018-09-06T02:39:14Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-06T02:41:21Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T02:41:21Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-06T02:41:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T02:42:13Z Kundry_Wag joined #lisp 2018-09-06T02:47:12Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T02:51:13Z anewuser joined #lisp 2018-09-06T02:56:44Z fikka joined #lisp 2018-09-06T02:58:34Z dddddd quit (Read error: Connection reset by peer) 2018-09-06T02:58:35Z aeth: jasom: I'd much rather have the language support multiple-values better 2018-09-06T02:59:26Z jasom: aeth: in what way? 2018-09-06T02:59:59Z X-Scale joined #lisp 2018-09-06T03:00:01Z aeth: It would be nice to have things like (multiple-value-map #'1+ values) 2018-09-06T03:00:50Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-06T03:01:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T03:03:38Z aeth: right now you mostly just have multiple-value-bind, multiple-value-list, multiple-value-call, and setf with multiple values... There's also multiple-value-prog1, which seems very niche (even rarer than prog1), and multiple-value-setq (probably entirely redundant now that you can (setf (values foo bar) (values 42 43))) 2018-09-06T03:03:42Z mindCrime_ quit (Ping timeout: 252 seconds) 2018-09-06T03:04:10Z Bike: you think mvprog1 is niche, but want this map thing? 2018-09-06T03:04:16Z jasom: (map 'values ...) :) 2018-09-06T03:04:27Z Kundry_Wag joined #lisp 2018-09-06T03:04:31Z aeth: jasom: that would be nicer, but problematic given the semantics of map 2018-09-06T03:04:52Z Bike: really? i don't see any problem with it... 2018-09-06T03:05:07Z aeth: Bike: multiple-value-map would probably be orders of magnitude more used than multiple-value-prog1 if it existed 2018-09-06T03:05:21Z Bike: can't say i've ever desired for it 2018-09-06T03:05:22Z aeth: (e.g. 100 or so instead of 1) 2018-09-06T03:05:24Z PyroLagus quit (Ping timeout: 252 seconds) 2018-09-06T03:05:35Z Bike: i don't use multiple values when the different values are some uniform kind of thing 2018-09-06T03:05:36Z jasom: Bike: can't take values as input so it would have to be (map 'values fn (m-v-l values)) 2018-09-06T03:05:41Z Bike: sure 2018-09-06T03:05:41Z aeth: Going from sequences to values and back seems pretty useful, too. 2018-09-06T03:05:59Z jasom: aeth: m-v-l and values-list do this 2018-09-06T03:06:02Z abbe quit (Ping timeout: 276 seconds) 2018-09-06T03:06:17Z aeth: jasom: for lists 2018-09-06T03:06:25Z Bike: as far as actual semantics go, i like haskell making them unboxed tuples, but that would be a pretty severe change 2018-09-06T03:06:40Z aeth: jasom: I mean, yes, you can just do (values-list (coerce #(1 2 3 4) 'list)) 2018-09-06T03:07:09Z jasom: (defmacro multiple-value-map (fn form) `(values-list (mmapcar ,fn (multiple-value-list ,form)))) 2018-09-06T03:07:41Z aeth: jasom: it would be very nice to be able to work with array subsections as multiple values, though... and without the probable consing that the values-list way will have. And for subsections, the naive way would double cons, first with subseq and then with coercing to list 2018-09-06T03:09:00Z jasom: I just wish I could bind them in LOOP without using m-v-l 2018-09-06T03:09:16Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-06T03:09:17Z jasom: I know a decent compiler generates the same code, but it's annoying 2018-09-06T03:09:30Z jasom: s/bind/set 2018-09-06T03:09:32Z aeth: Bike: if more people worked with array subsections as multiple values, multiple-value-map would probably be the first requested feature 2018-09-06T03:09:54Z Bike: why would you want to work with array sections as multiple values 2018-09-06T03:10:00Z abbe joined #lisp 2018-09-06T03:10:02Z aeth: Bike: I do it here. https://gitlab.com/zombie-raptor/zombie-raptor/blob/f42ede54566d374f90f91294f76fed675872a26e/util/array.lisp 2018-09-06T03:10:03Z Bike: i mean, it basically boils down to the same thing i guess, an unboxed vector 2018-09-06T03:10:15Z aeth: Yes, it's an unboxed vector. It also composes well 2018-09-06T03:10:52Z Kundry_Wag joined #lisp 2018-09-06T03:12:03Z aeth: If there was no copy-seq it would be as simple as (setf (array-of-3 a) (array-of-3 b)) with my multiple-value code because of how it composes. (This still might be faster because it is loop-unrolled, whereas copy-seq probably isn't, even for every short arrays. On the other hand, generalizing this past size 2, 3, 4 would probably require *adding* loops to the implementation past a certain size instead of just unrolling it) 2018-09-06T03:12:55Z aeth: Well (setf (array-of-3 a) (array-of-3 b)) would be copy-into. You'd either allocate it first or you'd multiple-value-call the constructor. e.g. for a T vector, (multiple-value-call #'vector (array-of-3 b)) 2018-09-06T03:14:49Z pierpal quit (Quit: Poof) 2018-09-06T03:15:05Z aeth: (I have to provide the size in the name because I can't just pass in an arbitrary amount of VALUEs to SETF, at least with DEFSETF. It behaves like MULTIPLE-VALUE-BIND, where if you provide too many values it cuts off the end and if you provide too few it fills it with NILs.) 2018-09-06T03:15:07Z pierpal joined #lisp 2018-09-06T03:15:51Z Bike: yeah, you need define-setf-expander for that. 2018-09-06T03:16:00Z mkolenda quit (Ping timeout: 252 seconds) 2018-09-06T03:16:18Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-06T03:16:28Z Bike: still needs to be a fixed number of values based on the place, tho. 2018-09-06T03:16:29Z aeth: I'm assuming that general first class multiple values would not need the size provided and it would infer it from the type. Even if I used define-setf-expander I'd just be turning (array-of-3 a) into (array-of 3 a) 2018-09-06T03:16:50Z Bike: semantics based on types is a whole other can of worms 2018-09-06T03:17:00Z aeth: sorry, first class array <-> values 2018-09-06T03:17:25Z fikka joined #lisp 2018-09-06T03:19:11Z aeth: Bike: What would be nice is (values-array (vector 1 2 3 4)) or (multiple-value-array (values 1 2 3 4) :element-type '(unsigned-byte 8)) 2018-09-06T03:20:13Z aeth: I also think non-consing support for MAP would have to be included since otherwise you're translating it to a temporary sequence. 2018-09-06T03:20:22Z aeth: (e.g. multiple-value-map) 2018-09-06T03:21:04Z loke: aeth: I just looked at SBCL, and it doesn't optimise array initialisation or COPY-SEQ very well 2018-09-06T03:21:10Z anewuser quit (Quit: anewuser) 2018-09-06T03:21:18Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T03:21:29Z loke: (MAKE-ARRAY ... :INITIAL-CONTENTS other-array) ends up calling REPLACE 2018-09-06T03:21:48Z loke: COPY-SEQ always calls the function itself, regardless of optimisation levels and type declarations. 2018-09-06T03:22:08Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T03:23:46Z dented42 joined #lisp 2018-09-06T03:24:06Z Khisanth quit (Ping timeout: 260 seconds) 2018-09-06T03:24:52Z aeth: I would also like to see a (setf values-list) and (setf values-array) so you could replace the contents of a list or array with the results of multiple return values. 2018-09-06T03:25:13Z zooey quit (Ping timeout: 256 seconds) 2018-09-06T03:26:45Z aeth: and with arrays you could have keyword arguments so e.g. (setf (values-array foo :start 2 :end 5) bar) could behave similarly to setf subseq 2018-09-06T03:27:50Z fikka joined #lisp 2018-09-06T03:27:51Z aeth: I think that would be possible to implement, and would be easier to implement than values-array itself 2018-09-06T03:30:10Z zooey joined #lisp 2018-09-06T03:32:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T03:35:46Z AeroNotix: aeth: isn't multiple-value-map a trivial macro though? 2018-09-06T03:37:49Z Khisanth joined #lisp 2018-09-06T03:37:58Z fikka joined #lisp 2018-09-06T03:38:40Z Lycurgus quit (Quit: Exeunt) 2018-09-06T03:40:19Z Kundry_Wag joined #lisp 2018-09-06T03:41:42Z Bike: https://pastebin.com/WSyxr30z dumb as hekk 2018-09-06T03:42:50Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T03:43:52Z housel joined #lisp 2018-09-06T03:44:57Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T03:47:54Z fikka joined #lisp 2018-09-06T03:48:23Z Shinmera quit (Ping timeout: 245 seconds) 2018-09-06T03:48:48Z isoraqathedh quit (Ping timeout: 245 seconds) 2018-09-06T03:49:03Z mkolenda joined #lisp 2018-09-06T03:49:15Z Colleen quit (Ping timeout: 252 seconds) 2018-09-06T03:49:34Z rozenglass joined #lisp 2018-09-06T03:49:35Z SaganMan joined #lisp 2018-09-06T03:50:26Z Kundry_Wag joined #lisp 2018-09-06T03:52:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T03:53:48Z beach: Good morning everyone! 2018-09-06T03:55:03Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T03:55:10Z Shinmera joined #lisp 2018-09-06T04:04:17Z kristof joined #lisp 2018-09-06T04:04:59Z kristof: late to the convo, but... very rarely do I ever want a filestream's contents all at once, and when I do it isn't hard to loop and push chars into a string 2018-09-06T04:06:44Z SaganMan: Morning Peeps! 2018-09-06T04:07:11Z Bike quit (Quit: Lost terminal) 2018-09-06T04:08:11Z Kundry_Wag joined #lisp 2018-09-06T04:08:14Z fikka joined #lisp 2018-09-06T04:12:51Z caltelt_ joined #lisp 2018-09-06T04:13:00Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T04:13:14Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T04:13:40Z danielvu quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T04:15:03Z no-defun-allowed: hi SaganMan 2018-09-06T04:15:19Z SaganMan: Hello no-defun-allowed 2018-09-06T04:15:50Z SaganMan: no-defun-allowed: how is your day? 2018-09-06T04:15:59Z no-defun-allowed: alright, you? 2018-09-06T04:16:06Z igemnace quit (Read error: Connection reset by peer) 2018-09-06T04:17:14Z igemnace joined #lisp 2018-09-06T04:19:29Z it3ration quit (Remote host closed the connection) 2018-09-06T04:21:38Z wigust joined #lisp 2018-09-06T04:27:18Z SaganMan: I'm okay. 2018-09-06T04:27:45Z emaczen quit (Read error: Connection reset by peer) 2018-09-06T04:28:54Z fikka joined #lisp 2018-09-06T04:30:58Z Copenhagen_Bram quit (Ping timeout: 272 seconds) 2018-09-06T04:34:08Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T04:36:17Z emaczen joined #lisp 2018-09-06T04:36:41Z ebrasca quit (Read error: Connection reset by peer) 2018-09-06T04:38:48Z ober joined #lisp 2018-09-06T04:40:15Z Inline quit (Quit: Leaving) 2018-09-06T04:40:36Z emaczen quit (Read error: Connection reset by peer) 2018-09-06T04:45:35Z bitch joined #lisp 2018-09-06T04:46:26Z emaczen joined #lisp 2018-09-06T04:48:30Z Copenhagen_Bram joined #lisp 2018-09-06T04:49:14Z fikka joined #lisp 2018-09-06T04:51:48Z Kaisyu7 joined #lisp 2018-09-06T04:53:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-06T04:59:41Z fikka joined #lisp 2018-09-06T05:00:06Z orivej_ quit (Ping timeout: 272 seconds) 2018-09-06T05:03:57Z tripty joined #lisp 2018-09-06T05:04:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T05:05:28Z kristof quit (Ping timeout: 245 seconds) 2018-09-06T05:09:36Z fikka joined #lisp 2018-09-06T05:10:50Z sauvin joined #lisp 2018-09-06T05:11:26Z mathrick quit (Ping timeout: 250 seconds) 2018-09-06T05:14:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T05:15:25Z steiner quit (Remote host closed the connection) 2018-09-06T05:22:23Z yangby joined #lisp 2018-09-06T05:23:45Z mathrick joined #lisp 2018-09-06T05:26:07Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T05:29:30Z nirved joined #lisp 2018-09-06T05:30:16Z fikka joined #lisp 2018-09-06T05:34:57Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T05:35:05Z steiner joined #lisp 2018-09-06T05:36:42Z steiner quit (Remote host closed the connection) 2018-09-06T05:37:50Z steiner joined #lisp 2018-09-06T05:38:18Z graphene joined #lisp 2018-09-06T05:40:52Z caltelt_ quit (Ping timeout: 246 seconds) 2018-09-06T05:42:27Z steiner quit (Remote host closed the connection) 2018-09-06T05:47:38Z steiner joined #lisp 2018-09-06T05:50:37Z fikka joined #lisp 2018-09-06T05:52:21Z gpiero quit (Remote host closed the connection) 2018-09-06T05:53:42Z vlatkoB joined #lisp 2018-09-06T05:54:30Z dented42 joined #lisp 2018-09-06T05:55:13Z fikka quit (Ping timeout: 246 seconds) 2018-09-06T05:59:49Z beach: I guess I must be tired, because I can't figure out how to do nested backquote expressions. What should I put in place of in (let ((x 20)) `(bla `( 10))) so that the value of the form is (foo `(bla (20 10))), where 20 is of course the value of X? 2018-09-06T06:01:04Z fikka joined #lisp 2018-09-06T06:01:39Z beach: Er, sorry 2018-09-06T06:01:58Z beach: So that the value of the form is (bla `(20 10)) 2018-09-06T06:02:24Z beach: I should not try to do any serious work today apparently. 2018-09-06T06:02:35Z yangby quit (Quit: Go out for a walk and buy a drink.) 2018-09-06T06:03:30Z beach: Let's try it again: What should I put in place of in (let ((x 20)) `(bla `( 10))) so that the value of the form is (bla `(20 10)) where 20 is the value of x? 2018-09-06T06:03:39Z Shinmera: ,',x 2018-09-06T06:03:49Z beach: I thought I tried that. 2018-09-06T06:04:17Z beach: Oh, I think it is just SBCL printing it funny. 2018-09-06T06:05:11Z beach: It prints it as (bla `(,'20 10)) 2018-09-06T06:05:58Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T06:06:10Z beach: Is that the same though? 2018-09-06T06:07:34Z Shinmera: yes 2018-09-06T06:07:53Z beach: Thanks. 2018-09-06T06:08:12Z no-defun-allowed: hi beach 2018-09-06T06:08:21Z dim: ah, the legend of the three-comma developer strikes again 2018-09-06T06:08:34Z dim: I never could reach the two-comma level myself 2018-09-06T06:08:36Z no-defun-allowed: more exciting than three star 2018-09-06T06:09:01Z rumbler31 joined #lisp 2018-09-06T06:09:19Z dim: is it really? 2018-09-06T06:09:59Z beach: The nesting level is just 2. 2018-09-06T06:10:03Z beach: "just" :) 2018-09-06T06:10:33Z no-defun-allowed: yes, cause pointers kinda make sense sometimes 2018-09-06T06:12:17Z aeth: AeroNotix: How do you do multiple-value-map without using values-list? 2018-09-06T06:12:31Z aeth: *multiple-value-list 2018-09-06T06:12:34Z aeth: I always get them mixed out 2018-09-06T06:12:47Z aeth: *mixed up 2018-09-06T06:12:57Z dim: well I played around at the REPL and once more understand nothing, one level is all I can handle it seems 2018-09-06T06:13:39Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-06T06:18:30Z iskander joined #lisp 2018-09-06T06:20:26Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T06:20:39Z terpri quit (Read error: Connection reset by peer) 2018-09-06T06:21:29Z fikka joined #lisp 2018-09-06T06:25:35Z Hu0p_ joined #lisp 2018-09-06T06:26:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-06T06:26:22Z Hu0p quit (Ping timeout: 246 seconds) 2018-09-06T06:27:30Z ober left #lisp 2018-09-06T06:29:07Z scymtym quit (Ping timeout: 244 seconds) 2018-09-06T06:32:20Z ebrasca joined #lisp 2018-09-06T06:34:10Z asarch quit (Quit: Leaving) 2018-09-06T06:36:38Z fikka joined #lisp 2018-09-06T06:39:15Z zxcvz joined #lisp 2018-09-06T06:39:23Z robotoad quit (Quit: robotoad) 2018-09-06T06:51:18Z jlarocco joined #lisp 2018-09-06T06:51:51Z gpiero joined #lisp 2018-09-06T07:02:28Z graphene quit (Remote host closed the connection) 2018-09-06T07:04:01Z graphene joined #lisp 2018-09-06T07:04:33Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-06T07:04:46Z scymtym joined #lisp 2018-09-06T07:08:47Z panji joined #lisp 2018-09-06T07:13:16Z varjag joined #lisp 2018-09-06T07:15:21Z shka_ joined #lisp 2018-09-06T07:15:33Z shka_: good morning 2018-09-06T07:29:42Z beach: Hello shka_. 2018-09-06T07:32:32Z grumble quit (Read error: Connection reset by peer) 2018-09-06T07:32:39Z Hu0p joined #lisp 2018-09-06T07:33:47Z grumble joined #lisp 2018-09-06T07:34:30Z Hu0p_ quit (Ping timeout: 252 seconds) 2018-09-06T07:43:29Z orivej joined #lisp 2018-09-06T07:53:06Z ebrasca: Hi shka_ beach 2018-09-06T08:00:38Z jochens joined #lisp 2018-09-06T08:02:12Z mange quit (Remote host closed the connection) 2018-09-06T08:02:15Z lonjil quit (Ping timeout: 252 seconds) 2018-09-06T08:03:56Z rozenglass quit (Remote host closed the connection) 2018-09-06T08:07:10Z fikka quit (Ping timeout: 246 seconds) 2018-09-06T08:07:59Z yoonkn joined #lisp 2018-09-06T08:08:07Z renzhi quit (Ping timeout: 240 seconds) 2018-09-06T08:10:11Z lonjil joined #lisp 2018-09-06T08:13:49Z fikka joined #lisp 2018-09-06T08:13:57Z igemnace quit (Quit: WeeChat 2.2) 2018-09-06T08:14:24Z renzhi joined #lisp 2018-09-06T08:16:00Z lonjil quit (Ping timeout: 252 seconds) 2018-09-06T08:18:10Z renzhi quit (Client Quit) 2018-09-06T08:18:58Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T08:21:31Z steiner quit (Remote host closed the connection) 2018-09-06T08:21:46Z lonjil joined #lisp 2018-09-06T08:28:38Z fikka joined #lisp 2018-09-06T08:31:09Z panji quit (Read error: Connection reset by peer) 2018-09-06T08:31:56Z Kaisyu7 quit (Read error: Connection reset by peer) 2018-09-06T08:49:44Z beach: Now why does MAKE-METHOD have to be a macro? 2018-09-06T08:51:48Z no-defun-allowed: should i work on cl-vep or cl-decentralise? 2018-09-06T08:51:53Z no-defun-allowed: i haven't got a bloody clue which to do 2018-09-06T08:55:09Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-06T09:04:30Z shka_: beach: does it has to? 2018-09-06T09:06:46Z beach: clhs make-method 2018-09-06T09:06:52Z beach: The Common Lisp HyperSpec says so. 2018-09-06T09:07:04Z beach: Bah, no bots? 2018-09-06T09:07:28Z no-defun-allowed: hi i'm a bot beep boop http://www.lispworks.com/documentation/HyperSpec/Body/m_call_m.htm 2018-09-06T09:07:39Z beach: Thanks no-defun-allowed. 2018-09-06T09:08:02Z no-defun-allowed: beep boop no problem 2018-09-06T09:08:22Z micro is now known as xxx 2018-09-06T09:08:30Z shka_: interesting 2018-09-06T09:09:11Z jackdaniel: beach: maybe because the form used in make-method should be evaluated in the null lexenv? 2018-09-06T09:09:20Z xxx is now known as micro 2018-09-06T09:12:45Z orivej quit (Ping timeout: 252 seconds) 2018-09-06T09:13:47Z igemnace joined #lisp 2018-09-06T09:13:53Z no-defun-allowed: that's a good point 2018-09-06T09:14:21Z beach: jackdaniel: Hmm. 2018-09-06T09:14:48Z beach: I would have to think about that. 2018-09-06T09:16:42Z lavaflow_ joined #lisp 2018-09-06T09:19:33Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-06T09:28:59Z akovalenko` joined #lisp 2018-09-06T09:31:07Z akovalenko` quit (Remote host closed the connection) 2018-09-06T09:32:06Z akovalenko joined #lisp 2018-09-06T09:33:25Z _death: I think the long names for multiple-value ops discourage their use, but I also think that's OK because multiple values hurt composability.. they are good and useful but have a price 2018-09-06T09:37:32Z bradcomp joined #lisp 2018-09-06T09:37:42Z _death: despite this they are still often abused due to efficiency concerns 2018-09-06T09:41:47Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-06T09:42:11Z dim: multiple values look almost like a second class citizen 2018-09-06T09:44:39Z givre joined #lisp 2018-09-06T09:47:17Z givre: hi everyone, i'm having trouble with generating some HTML using spinneret, could anyone help me out ? 2018-09-06T09:47:45Z dim: as said on another friendly channel, don't ask to ask, just ask! 2018-09-06T09:48:02Z jackdaniel: givre: best course of action is to provide a snippet illustrating the problem, describing what's wrong and waiting :) 2018-09-06T09:48:04Z _death: dim: by definition they are first class.. you can pass them around, store them, etc. also, there aren't many other languages that have them, but they're quite useful for both interface design and efficiency reasons 2018-09-06T09:49:28Z givre: dim: makes sense :) 2018-09-06T09:50:21Z dim: _death: what I mean is that when doing (f (g x)) then f only sees the first returned value of g 2018-09-06T09:50:34Z givre quit (Quit: gonna use erc instead of webchat) 2018-09-06T09:50:48Z shka_: dim: it is a feature 2018-09-06T09:50:54Z dim: well depends on how your write f, maybe it's an issue with many of the CL provided functions not having a look 2018-09-06T09:50:57Z dim: shka_: how so? 2018-09-06T09:51:31Z shka_: multiple values allow you to extend returned values without breaking already written code 2018-09-06T09:52:14Z oystewh joined #lisp 2018-09-06T09:52:18Z shka_: otherwise, you can pack your result into list and have the same result 2018-09-06T09:52:35Z _death: dim: for example think of truncate.. many times you're satisfied with just the quotient, but multiple values allow you to get at the remainder without more unnecessary computation 2018-09-06T09:52:57Z shka_: yeah, this as well 2018-09-06T09:53:20Z shka_: same for gethash 2018-09-06T09:54:09Z shka_: anyway, multiple-values is thing that was done RIGHT in CL 2018-09-06T09:54:16Z shka_: IMHO 2018-09-06T09:54:35Z _death: you can always multiple-value-call.. btw recently I had the need to define a `values-concat` macro, whose body is `(multiple-value-call #'values ,@forms) .. don't think I've seen such a thing in the wild 2018-09-06T09:57:08Z nullniverse quit (Ping timeout: 272 seconds) 2018-09-06T09:58:06Z _death: it's much better than using parameters to return values.. (nowadays using C++ for work... ugh) 2018-09-06T09:59:28Z dim: I like multiple values, I'm just not sure that I see ignoring them after the first one as a feature really, but I get I see shka_ point to some extend 2018-09-06T09:59:50Z dim: silently ignoring data is something I can't get used to, I guess 2018-09-06T10:01:36Z shka_: dim: well, alternative is always returning some sort of tuple, and always calling first 2018-09-06T10:01:41Z shka_: hardly better! 2018-09-06T10:03:17Z ghard joined #lisp 2018-09-06T10:14:12Z yoonkn quit (Remote host closed the connection) 2018-09-06T10:14:48Z housel quit (Read error: Connection reset by peer) 2018-09-06T10:16:42Z easye joined #lisp 2018-09-06T10:18:24Z dim: another alternative is to error when more values are provided than consumed, and having to do something like &allow-other-keys to ignore extra values, but I'm not sure if that'd be a good idea 2018-09-06T10:18:35Z dim: API design is hard :/ 2018-09-06T10:19:12Z _death: that way lies Go 2018-09-06T10:21:12Z dim: yeah but Go is a toy when it comes to implementing error handling anyway 2018-09-06T10:21:26Z dim: they didn't seriously think about that, and it shows 2018-09-06T10:25:12Z _death: in many ways Go is the antilisp.. it makes everything "plain" like C or assembly, which is good for the person-as-cog model.. still I liked parts of it, and its standard library is nice code to read.. but now they come up with big changes, as usual in fashion languages of today.. sjl's hamster wheel :).. so of course I cannot take it seriously anymore 2018-09-06T10:25:54Z makomo joined #lisp 2018-09-06T10:26:18Z _death: though it was bound to happen, as it's a language controlled by a company 2018-09-06T10:26:47Z graphene quit (Remote host closed the connection) 2018-09-06T10:27:29Z dim: when I tried Go, I didn't like the language, even though I appreciated the tooling and the fact that they took many small decisions, removing flexibility, winning a lot in terms of how easy it is to get started and productive, and to use other people code 2018-09-06T10:28:33Z graphene joined #lisp 2018-09-06T10:29:29Z _death: yes.. and they finally fixed the variable declaration syntax that until then was slavishly copied by C-like languages 2018-09-06T10:34:30Z Shinmera: beach: freenode is doing some weird stuff, colleen hasn't been able to connect all day 2018-09-06T10:36:54Z dddddd joined #lisp 2018-09-06T10:37:37Z beach: Wow. 2018-09-06T10:38:01Z jochens quit (Ping timeout: 246 seconds) 2018-09-06T10:45:45Z orivej joined #lisp 2018-09-06T10:46:03Z Lycurgus joined #lisp 2018-09-06T10:47:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-06T10:48:00Z nirved joined #lisp 2018-09-06T10:50:40Z Demosthenex: oo! i just saw that croatan added forms! 2018-09-06T10:50:48Z Demosthenex: wonder if i can find an example 2018-09-06T10:55:39Z jmercouris joined #lisp 2018-09-06T10:57:15Z vlatkoB_ joined #lisp 2018-09-06T10:59:43Z vlatkoB quit (Ping timeout: 246 seconds) 2018-09-06T11:15:14Z jlarocco joined #lisp 2018-09-06T11:18:44Z regreg quit (Read error: Connection reset by peer) 2018-09-06T11:20:53Z jlarocco quit (Ping timeout: 245 seconds) 2018-09-06T11:31:02Z shka_: hm 2018-09-06T11:31:11Z shka_: _death: calling go antilisp is on point! 2018-09-06T11:32:08Z orivej quit (Ping timeout: 272 seconds) 2018-09-06T11:38:11Z easye: ~. 2018-09-06T11:38:25Z Kundry_Wag joined #lisp 2018-09-06T11:39:22Z jochens joined #lisp 2018-09-06T11:43:27Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T11:51:06Z Strelox joined #lisp 2018-09-06T11:55:52Z rumbler31 joined #lisp 2018-09-06T11:59:23Z Lycurgus quit (Quit: Exeunt) 2018-09-06T12:01:43Z Colleen joined #lisp 2018-09-06T12:02:30Z jmercouris: anyone know how to do a redirect in caveman? 2018-09-06T12:08:24Z orivej joined #lisp 2018-09-06T12:09:30Z Shinmera: Colleen: welcome back 2018-09-06T12:09:30Z Colleen: Thanks, it's good to be back. 2018-09-06T12:12:15Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T12:17:05Z Kundry_Wag joined #lisp 2018-09-06T12:19:34Z steiner joined #lisp 2018-09-06T12:21:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-06T12:22:18Z Bronsa joined #lisp 2018-09-06T12:23:04Z steiner quit (Remote host closed the connection) 2018-09-06T12:25:48Z jmercouris left #lisp 2018-09-06T12:26:55Z fikka joined #lisp 2018-09-06T12:27:30Z steiner joined #lisp 2018-09-06T12:31:39Z dlowe: I love go for exactly the opposite reasons that I love lisp. 2018-09-06T12:32:01Z edgar-rft joined #lisp 2018-09-06T12:33:48Z danielvu joined #lisp 2018-09-06T12:34:35Z SaganMan joined #lisp 2018-09-06T12:34:53Z danielvu quit (Client Quit) 2018-09-06T12:38:35Z shrdlu68 joined #lisp 2018-09-06T12:41:21Z rumbler31 quit (Remote host closed the connection) 2018-09-06T12:44:28Z danielvu joined #lisp 2018-09-06T12:45:36Z danielvu quit (Client Quit) 2018-09-06T12:48:06Z danielvu joined #lisp 2018-09-06T12:49:01Z danielvu quit (Client Quit) 2018-09-06T12:50:57Z shangul joined #lisp 2018-09-06T12:53:00Z Kundry_Wag joined #lisp 2018-09-06T12:54:31Z danielvu joined #lisp 2018-09-06T12:55:32Z danielvu quit (Client Quit) 2018-09-06T12:56:43Z rpg quit (Ping timeout: 245 seconds) 2018-09-06T12:57:40Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-06T13:00:53Z shrdlu68: What is an efficient way to do (coerce (/ a b) 'short-float) when both a and b are unsigned fixnums? 2018-09-06T13:01:07Z danielvu joined #lisp 2018-09-06T13:02:13Z danielvu quit (Client Quit) 2018-09-06T13:02:28Z dlowe: (/ (coerce a 'short-float) (coerce b 'short-float)) is probably going to be fast, just from floating division 2018-09-06T13:03:01Z dlowe: though (/ a b) is going to return a rational, so it may do that in the implementation to coerce anyway 2018-09-06T13:03:13Z Kundry_Wag joined #lisp 2018-09-06T13:03:41Z shrdlu68: SBCL warns: "unable to do inline float coercion (cost 5)...because the first argument is a (RATIONAL 0)" 2018-09-06T13:04:00Z dlowe: oh, heh. okay. 2018-09-06T13:04:49Z shrdlu68: Hmm, if a and b are short-floats that could bypass all this, right? 2018-09-06T13:05:41Z plathrop joined #lisp 2018-09-06T13:06:11Z shka_: shrdlu68: this is not warn 2018-09-06T13:06:27Z shka_: it is notice 2018-09-06T13:06:50Z shrdlu68: Indeed, my bad. 2018-09-06T13:06:51Z shka_: otherwise, what dlowe said 2018-09-06T13:07:21Z Bike joined #lisp 2018-09-06T13:07:33Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-06T13:10:42Z kooga joined #lisp 2018-09-06T13:11:06Z warweasle joined #lisp 2018-09-06T13:18:01Z FreeBirdLjj joined #lisp 2018-09-06T13:22:31Z FreeBirdLjj quit (Ping timeout: 246 seconds) 2018-09-06T13:22:39Z arbv quit (Ping timeout: 252 seconds) 2018-09-06T13:25:56Z shangul quit (Quit: sudo rm -rf /usr/*) 2018-09-06T13:26:44Z Kundry_Wag joined #lisp 2018-09-06T13:28:27Z pfdietz joined #lisp 2018-09-06T13:30:54Z azimut_ quit (Ping timeout: 252 seconds) 2018-09-06T13:31:15Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T13:32:22Z azimut joined #lisp 2018-09-06T13:33:35Z Kundry_Wag joined #lisp 2018-09-06T13:36:12Z iskander quit (Ping timeout: 252 seconds) 2018-09-06T13:38:36Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T13:41:54Z rumbler31 joined #lisp 2018-09-06T13:42:06Z Kundry_Wag joined #lisp 2018-09-06T13:43:06Z iskander joined #lisp 2018-09-06T13:47:06Z steiner quit (Remote host closed the connection) 2018-09-06T13:47:15Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-06T13:48:27Z anewuser joined #lisp 2018-09-06T13:50:17Z beach: *sigh* 2018-09-06T13:50:37Z beach: To much work to be done. Not enough time. 2018-09-06T13:51:12Z dim: good summary 2018-09-06T13:51:32Z dlowe: need more workers, then 2018-09-06T13:52:53Z jackdaniel: 1 worker - 3 weeks; 2 workers - 2 weeks; 3 workers - 3 weeks ; 4 workers - 3 months 2018-09-06T13:53:30Z dlowe: if that's the case, I guess you have pretty terrible management 2018-09-06T13:53:46Z AeroNotix: sick burn 2018-09-06T13:53:47Z dim: or a problem that is not parallelisable 2018-09-06T13:54:26Z dim: “I bought you two copies of the book ‘The Mythical Man Month‘ so that you can read it twice as fast” 2018-09-06T13:55:21Z jackdaniel: dlowe: unless you monkeypatch monumental software where every three abstraction layers you have functionality duplication I suppose managing teams larger than 6 people is terrible no matter how good at managing you are 2018-09-06T13:56:50Z dlowe: that sounds like accumulated terrible management :) 2018-09-06T13:59:18Z jackdaniel: let's agree to disagree on that matter 2018-09-06T13:59:19Z Zelmin joined #lisp 2018-09-06T13:59:49Z jlarocco joined #lisp 2018-09-06T13:59:55Z Inline joined #lisp 2018-09-06T14:00:06Z AeroNotix: Don't change, #lisp 2018-09-06T14:00:59Z Inline quit (Read error: Connection reset by peer) 2018-09-06T14:01:04Z dlowe: Well, managing teams larger than six people is definitely terrible. If you are in that position, the higher-up management should have noticed. 2018-09-06T14:01:30Z Inline joined #lisp 2018-09-06T14:01:31Z Zelmin: If you're using a cl library that uses cffi and make a binary, using sbcl, how do you catch a load-foreign-library-error so that you can log to a file when you run the binary on another computer? 2018-09-06T14:02:18Z jackdaniel: Zelmin: best way to deal with it is to close all libraries before you save-lisp-and-die and to call loading yourself anew from init function 2018-09-06T14:02:45Z Zelmin: jackdaniel: ah okay that makes sense, thanks 2018-09-06T14:03:29Z jackdaniel: dlowe: my point is that there is some relatively small optimum for number of workers on one project, so increasing number of workers after the peak simply degrades the efficiency 2018-09-06T14:03:43Z Shinmera: Zelmin: you might also be interested in https://shinmera.github.io/deploy/ 2018-09-06T14:03:45Z jackdaniel: not only because you can't parallelise some work, there is also a penalty for knowledge synchronization 2018-09-06T14:04:09Z jackdaniel: (about a current state of the project) 2018-09-06T14:04:32Z Zelmin: Shinmera: Thanks for the link! It looks like exactly what I need. 2018-09-06T14:04:44Z ghard quit (Remote host closed the connection) 2018-09-06T14:08:23Z dlowe: jackdaniel: if the penalties really outweighed the gains, no large projects would ever complete. 2018-09-06T14:08:30Z Lycurgus joined #lisp 2018-09-06T14:13:17Z pierpal quit (Quit: Poof) 2018-09-06T14:13:37Z pierpal joined #lisp 2018-09-06T14:14:10Z azimut quit (Read error: No route to host) 2018-09-06T14:15:57Z azimut joined #lisp 2018-09-06T14:16:16Z igemnace quit (Quit: WeeChat 2.2) 2018-09-06T14:16:25Z housel joined #lisp 2018-09-06T14:20:36Z azimut quit (Ping timeout: 272 seconds) 2018-09-06T14:22:58Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T14:28:35Z azimut joined #lisp 2018-09-06T14:28:56Z fikka joined #lisp 2018-09-06T14:30:22Z FreeBirdLjj joined #lisp 2018-09-06T14:31:37Z mindCrime joined #lisp 2018-09-06T14:32:21Z azimut quit (Read error: Connection reset by peer) 2018-09-06T14:32:21Z azimut_ joined #lisp 2018-09-06T14:33:14Z fikka quit (Ping timeout: 244 seconds) 2018-09-06T14:33:28Z pierpal quit (Quit: Poof) 2018-09-06T14:33:46Z pierpal joined #lisp 2018-09-06T14:34:12Z wheelsucker joined #lisp 2018-09-06T14:37:20Z asarch joined #lisp 2018-09-06T14:39:11Z arbv joined #lisp 2018-09-06T14:39:59Z plathrop: My boss says his culture has a saying that roughly translates to English: "You can't make a baby in one month with nine women" 2018-09-06T14:41:58Z jochens quit (Read error: Connection reset by peer) 2018-09-06T14:42:28Z jochens joined #lisp 2018-09-06T14:43:16Z dlowe: staggered schedules can make a 1 baby/month output however 2018-09-06T14:44:27Z graphene quit (Remote host closed the connection) 2018-09-06T14:45:01Z plathrop: not predictably, some babies take more time, some take less, and it's very difficult to determine which any particular baby will be... /me over-abuses the heck out of a metaphor... 2018-09-06T14:45:09Z azimut_ quit (Ping timeout: 252 seconds) 2018-09-06T14:45:59Z graphene joined #lisp 2018-09-06T14:46:03Z plathrop: I think "more workers is terrible" is an over-simplification, but "that's just because of bad management" is an even more dangerous over-simplification. 2018-09-06T14:46:32Z plathrop: but *shrug* YMMV 2018-09-06T14:47:34Z Lycurgus: it's also to an inability to actually enslave multiple minds to a single master (to cut to what the metaphor is about) 2018-09-06T14:47:48Z Lycurgus: *due to 2018-09-06T14:47:51Z _death: simple fact is that it creates dependencies and communication overhead.. everything has to be balanced out 2018-09-06T14:48:10Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-06T14:48:36Z Lycurgus: otherwise that master could direct multiple slaves and achieve increased output or reduced makespan 2018-09-06T14:48:43Z juki joined #lisp 2018-09-06T14:48:58Z fikka joined #lisp 2018-09-06T14:50:36Z astalla joined #lisp 2018-09-06T14:50:57Z mhd2018 joined #lisp 2018-09-06T14:52:51Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-06T14:53:45Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T14:55:42Z Lycurgus: as _death indicates for a problem or one with subparts that can be parallel; maybe reduce the time to 1.5 trimesters, with a segmented fetus 2018-09-06T14:57:32Z Lycurgus: but the bosses metaphor is a way of expressing understanding of the constraints of labor scheduling where a master does not have the ability to share memories, knowledge, etc. directly with subalterns 2018-09-06T14:57:38Z ebrasca quit (Remote host closed the connection) 2018-09-06T14:57:52Z azimut joined #lisp 2018-09-06T14:59:16Z Lycurgus: the most relevant thing here would maybe be lparallel 2018-09-06T14:59:35Z Lycurgus: which I wish somebody would do a whole system thing with 2018-09-06T15:00:05Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-06T15:00:29Z rippa joined #lisp 2018-09-06T15:05:39Z dlowe: what do you mean by a whole system thing? 2018-09-06T15:06:24Z SaganMan quit (Ping timeout: 252 seconds) 2018-09-06T15:06:54Z _death: the other day I revisited zeromq documentation.. and this reminds me of this section http://zguide.zeromq.org/page:all#Patterns-for-Success 2018-09-06T15:07:15Z Lycurgus: dlowe, like the objects in the bag of lisp OS things 2018-09-06T15:07:44Z _death: also the previous sections.. X-oriented designs 2018-09-06T15:08:22Z sariyar joined #lisp 2018-09-06T15:09:15Z fikka joined #lisp 2018-09-06T15:09:53Z regreg joined #lisp 2018-09-06T15:10:58Z shrdlu68 quit (Quit: WeeChat 2.0.1) 2018-09-06T15:11:43Z mhd2018 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2018-09-06T15:14:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T15:14:45Z dim: it would be quite nice to avoid the master/slave terminology 2018-09-06T15:15:36Z Lycurgus: for the master, yes, but slave crave direction 2018-09-06T15:15:41Z Lycurgus: *slaves 2018-09-06T15:15:56Z dim: please stop with that? 2018-09-06T15:18:48Z makomo: hello 2018-09-06T15:19:15Z Lycurgus: yello 2018-09-06T15:20:36Z dale joined #lisp 2018-09-06T15:21:36Z atgreen quit (Ping timeout: 260 seconds) 2018-09-06T15:21:45Z robotoad joined #lisp 2018-09-06T15:23:37Z astalla quit (Ping timeout: 246 seconds) 2018-09-06T15:25:58Z AeroNotix: dim: you know 4chan started that master/slave issue? 2018-09-06T15:26:09Z AeroNotix: as a way to stir up issues 2018-09-06T15:27:28Z dlowe: AeroNotix: it predates 4chan by a number of decades 2018-09-06T15:27:31Z Strelox quit (Quit: Leaving.) 2018-09-06T15:27:39Z AeroNotix: dlowe: the terminology or the sjw mission 2018-09-06T15:28:32Z on_ion: client/server ? 2018-09-06T15:28:54Z dlowe: AeroNotix: asking people to change the terminology 2018-09-06T15:29:29Z AeroNotix: no dog in this fight. I find the whole thing amusing 2018-09-06T15:29:37Z dlowe: "sjw" however IS a 4chan invention used to shut down others who value kindness 2018-09-06T15:29:58Z fikka joined #lisp 2018-09-06T15:30:33Z AeroNotix: "they" (government psyops) want you focusing on things like this 2018-09-06T15:30:39Z regreg quit (Quit: Konversation terminated!) 2018-09-06T15:30:41Z regreg_ joined #lisp 2018-09-06T15:30:54Z graphene quit (Remote host closed the connection) 2018-09-06T15:31:17Z dlowe: "they" would rather you just hacked lisp 2018-09-06T15:31:18Z Fare quit (Ping timeout: 245 seconds) 2018-09-06T15:32:07Z dim: AeroNotix: nonetheless, I think we should prefer meaningfull alternatives, see my article https://tapoueh.org/blog/2017/12/queen-princesses-and-workers/ for instance 2018-09-06T15:32:19Z edgar-rft: I've heard bacteriae can make a bazillion babies per day without a single woman 2018-09-06T15:32:35Z graphene joined #lisp 2018-09-06T15:33:22Z dlowe: I've used overlord/minion at my workplace with great success 2018-09-06T15:33:30Z dlowe: and it makes for funny meetings 2018-09-06T15:33:35Z AeroNotix: it's the same damn thing 2018-09-06T15:34:21Z _death: we had a minion here 2018-09-06T15:34:23Z dlowe: can you please name a historical or current example of an overlord 2018-09-06T15:34:25Z regreg_ quit (Client Quit) 2018-09-06T15:35:01Z AeroNotix: dlowe: it's about the implied relationship. Colour it whatever you like, the terminology still represents that relationship 2018-09-06T15:35:20Z fikka quit (Ping timeout: 272 seconds) 2018-09-06T15:35:33Z Bronsa quit (Ping timeout: 252 seconds) 2018-09-06T15:35:47Z dlowe: AeroNotix: amazingly, people have different reactions between implied and explicit meanings 2018-09-06T15:36:14Z Xof: Philip II of France 2018-09-06T15:36:14Z AeroNotix: dlowe: exactly! That's why the whole debate is ridiculous (imho) 2018-09-06T15:36:54Z AeroNotix: dlowe: if the meaning is derived from the understanding of the reader, rather than the explicit meaning given by the author. Then the debate about what language to use becomes mired in so many issues 2018-09-06T15:36:58Z fikka joined #lisp 2018-09-06T15:37:04Z dlowe: That doesn't make it ridiculous, that makes it complicated and hard 2018-09-06T15:37:38Z dlowe: AeroNotix: That is, in fact, the point 2018-09-06T15:37:38Z AeroNotix: it makes it such that you need to determine the whole spectrum of meanings that someone can interpret your words under. How far do you go? 2018-09-06T15:37:53Z dlowe: Well, it depends on how much you care, doesn't it 2018-09-06T15:38:40Z Lycurgus: dlowe, well there's Operation Overlord which is reference to Normandy, the Norman Conquest (in reverse) which made the Normans king, the Normans generally Overlords 2018-09-06T15:38:53Z AeroNotix: dlowe: https://github.com/dlowe-net/orcabot take this for example. 2018-09-06T15:39:04Z Fare joined #lisp 2018-09-06T15:39:25Z AeroNotix: What would you say if someone construed you were advocating the imprisonment and slavery of sentient orcas by representing Orcas in your code as tools to entertain you 2018-09-06T15:39:27Z Lycurgus: (i.e. made them that in britain, over the saxons, etc) 2018-09-06T15:39:36Z _death: orca, the oppressive whales that kill people 2018-09-06T15:39:46Z charh quit (Ping timeout: 272 seconds) 2018-09-06T15:40:15Z dlowe: When you communicate with someone, their brain doesn't linearly follow your exact utterance, all sorts of things are activated in parallel. So maybe by avoiding the activation of something that makes them upset, you make your point to them more clearly and effectively 2018-09-06T15:41:00Z AeroNotix: dlowe: your implying that all understandings of your intent are logical 2018-09-06T15:41:12Z AeroNotix: people make all kinds of crazy connections 2018-09-06T15:41:21Z steiner joined #lisp 2018-09-06T15:41:31Z dlowe: Hence communication is hard and difficult, and the more public, the harder and more difficult 2018-09-06T15:44:40Z Arcaelyx joined #lisp 2018-09-06T15:45:38Z steiner quit (Remote host closed the connection) 2018-09-06T15:46:02Z Bronsa joined #lisp 2018-09-06T15:48:58Z nbunjevac joined #lisp 2018-09-06T15:52:02Z doubledup joined #lisp 2018-09-06T15:52:42Z doubledup quit (Max SendQ exceeded) 2018-09-06T15:53:05Z doubledup joined #lisp 2018-09-06T15:54:15Z makomo quit (Ping timeout: 252 seconds) 2018-09-06T15:55:33Z bradcomp joined #lisp 2018-09-06T15:56:03Z varjag joined #lisp 2018-09-06T15:56:46Z dwo3984 joined #lisp 2018-09-06T15:57:30Z gendl joined #lisp 2018-09-06T15:57:54Z dwo3984 is now known as gypysdave5 2018-09-06T15:59:37Z LiamH joined #lisp 2018-09-06T16:00:51Z gpiero quit (Remote host closed the connection) 2018-09-06T16:01:11Z Lycurgus quit (Quit: Exeunt) 2018-09-06T16:01:22Z steiner joined #lisp 2018-09-06T16:04:50Z gypysdave5 quit (Remote host closed the connection) 2018-09-06T16:07:17Z makomo joined #lisp 2018-09-06T16:11:01Z whartung quit (Quit: whartung) 2018-09-06T16:16:15Z orivej quit (Ping timeout: 252 seconds) 2018-09-06T16:16:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-06T16:17:21Z Fare quit (Ping timeout: 252 seconds) 2018-09-06T16:20:03Z juki left #lisp 2018-09-06T16:26:05Z fikka joined #lisp 2018-09-06T16:26:50Z jochens quit (Remote host closed the connection) 2018-09-06T16:27:28Z jochens joined #lisp 2018-09-06T16:28:06Z whartung joined #lisp 2018-09-06T16:29:13Z Zelmin quit (Read error: Connection reset by peer) 2018-09-06T16:29:31Z kaun joined #lisp 2018-09-06T16:31:31Z jochens quit (Ping timeout: 246 seconds) 2018-09-06T16:38:43Z kaun quit (Quit: IRC for Sailfish 0.9) 2018-09-06T16:40:35Z shka_ joined #lisp 2018-09-06T16:40:43Z shka_: good evening! 2018-09-06T16:40:49Z shka_: i have SBCL question 2018-09-06T16:40:53Z jlarocco quit (Ping timeout: 245 seconds) 2018-09-06T16:41:16Z jasom: shka_: I may have sbcl answer 2018-09-06T16:41:48Z shka_: i think that my question can be stupid though :-) 2018-09-06T16:42:05Z jasom: shka_: only one way to find out ;) 2018-09-06T16:42:06Z shka_: so i have a struct with bitmask 2018-09-06T16:42:19Z jasom: as in a C struct? 2018-09-06T16:42:35Z shka_: i am wondering when this bit mask can be inlined in struct memory layout without references 2018-09-06T16:42:42Z shka_: jasom: defstruct 2018-09-06T16:42:48Z jasom: okay 2018-09-06T16:43:00Z jasom: shka_: can you paste sample code? 2018-09-06T16:43:02Z shka_: fixnum seems to be obviously YES since sbcl won't box fixnums 2018-09-06T16:43:14Z shka_: jasom: sure (defstruct struct bitmask) :D 2018-09-06T16:43:15Z Bike: are you talking about a small integer, or a bit vector? 2018-09-06T16:43:26Z shka_: Bike: integer 2018-09-06T16:43:30Z Bike: well you'll need to specify :type to get any special layout 2018-09-06T16:43:39Z shka_: ok 2018-09-06T16:43:46Z shka_: can sbcl inline integers? 2018-09-06T16:43:49Z jasom: shka_: if thee type ofthe slot is one that sbcl can unbox, then it won't box it inside the struct 2018-09-06T16:43:51Z shka_: like big integers 2018-09-06T16:43:54Z aeth: shka_: (unsigned-byte 64) should work, too, unless for some reason it only works for arrays 2018-09-06T16:43:59Z Bike: it should keep small integers unboxed in structs 2018-09-06T16:44:06Z jasom: shka_: it cannot unbox 'integer but it can unbox '(unsigned-byte 64) on 64-bit targets 2018-09-06T16:44:08Z Bike: i don't know the particulars of the top of my head 2018-09-06T16:44:12Z shka_: yeah, that part is obvious 2018-09-06T16:44:44Z shka_: Bike: what about arrays? 2018-09-06T16:44:49Z _death: instead of a struct you can have an array for each slot 2018-09-06T16:44:50Z Bike: not arrays 2018-09-06T16:45:08Z shka_: ok, so just integers 2018-09-06T16:45:08Z Bike: with arrays there's eq-ness to preserve 2018-09-06T16:45:21Z Bike: probably other numbers too, and characters 2018-09-06T16:45:25Z shka_: _death: yeah, but that kinda sucks 2018-09-06T16:45:41Z aeth: shka_: If (unsigned-byte 64) or double-float (in 64-bit, obviously) only stays within a data structure where the slot is of that type (e.g. struct or specialized array) or within a function, it doesn't cons in SBCL. e.g. You can do all the math on double-float you want and then coerce it to single-float as the return value or store it into an array with double-floats. 2018-09-06T16:45:41Z steiner quit (Remote host closed the connection) 2018-09-06T16:46:04Z shka_: aeth: yeah, that i know 2018-09-06T16:46:27Z shka_: i was wondering about big ints and arrays 2018-09-06T16:46:53Z aeth: only (unsigned-byte 64) and probably (signed-byte 64) too. 2018-09-06T16:47:01Z shka_: ok, i know more then before 2018-09-06T16:47:14Z shka_: and in fact that suffice for me 2018-09-06T16:47:35Z shka_: in my case, using struct has no advantage over class 2018-09-06T16:47:56Z aeth: But you need to use a struct because it's not smart enough to know that it never leaves a function if you put it into a class or hash-table 2018-09-06T16:48:00Z shka_: because 32 bit fixnum will be inlined regardless, and array won't be inlined no matter what 2018-09-06T16:48:11Z pjb joined #lisp 2018-09-06T16:48:36Z aeth: Oh, okay. The problem with classes here is that it loses type information, even if you have :type 2018-09-06T16:48:47Z shka_: aeth: sooo, you are saying that dynamic-extent works with structs? 2018-09-06T16:49:07Z pjb: Not necessarily. This depends on the implementation. 2018-09-06T16:49:13Z pjb: (Both). 2018-09-06T16:49:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T16:49:30Z shka_: aeth: actually, you can set safety to 2 and sbcl will check in runtime type 2018-09-06T16:49:33Z shka_: of slot 2018-09-06T16:49:36Z shka_: it is quite neat 2018-09-06T16:49:39Z Bike: sbcl does have dynamic-extent structs, according to the manual. 2018-09-06T16:49:40Z aeth: shka_: What I'm saying is that the function needs to be inlined. So + is fine on ub64 but not ROUND because ROUND is never inlined afaik. And afaik struct accessors are inlined because redefining structs is undefined bevhaior 2018-09-06T16:49:45Z shka_: pjb: in sbcl, obviously 2018-09-06T16:49:47Z Bike: you have to declare the constructor inline. 2018-09-06T16:49:55Z pjb: shka_: #sbcl vs #lisp 2018-09-06T16:50:03Z aeth: shka_: The type information is normally lost in classes. 2018-09-06T16:50:12Z jasom: shka_: accessing a slot of a struct in sbcl is always just single de-reference. If it's a type that is unboxed in structs you are done, otherwise you have a second reference to deal with. 2018-09-06T16:50:16Z shka_: pjb: yeah, (let ((*lisp* *sbcl*)) 2018-09-06T16:50:19Z shka_: ;-) 2018-09-06T16:50:26Z pjb: :-) 2018-09-06T16:50:35Z pjb: I'm glad you use dynamic binding. 2018-09-06T16:50:38Z jasom: shka_: classes are (almost?) always more complicated just to get to the point that you start with with structs 2018-09-06T16:51:09Z shka_: Bike: constructor inline to get dynamic-extent working, right? 2018-09-06T16:51:11Z jasom: s/classes/standard-objects/ 2018-09-06T16:51:12Z fluxit joined #lisp 2018-09-06T16:51:22Z Bike: shka_: yes. just reading the manual here. 2018-09-06T16:51:27Z _death: you can use the MOP to define storage 2018-09-06T16:51:28Z shka_: makes sense, thanks 2018-09-06T16:51:43Z shka_: _death: i did this already 2018-09-06T16:51:54Z shka_: hm 2018-09-06T16:51:55Z shka_: ok 2018-09-06T16:52:04Z aeth: shka_: Generally imo if :type for your slots matters, use a struct, not a class. Especially if the types are simple types that help the compiler like (unsigned-byte 32) or single-float etc. You *can* use MOP for this sort of thing, but it's not easy. 2018-09-06T16:52:10Z pjb: 1- good compilers can determine themselves if an object will leak out of the dynamic scope. 2- I don't think I make fewer errors than the compiler. 3- therefore dynamic-extend declarations shall be prohibited! 2018-09-06T16:52:20Z aeth: s/use a struct, not a class/use defstruct, not defclass/ 2018-09-06T16:52:38Z shka_: pjb: eh, you are making beach happy ;-) 2018-09-06T16:52:54Z shka_: ok, that's enough for me 2018-09-06T16:53:01Z jasom: 4: sbcl's garbage collector algorithm is very friendly to short-lived objects anyways 2018-09-06T16:53:13Z shka_: actually i noticed that 2018-09-06T16:53:37Z jasom: It takes a lot of work to come up with a benchmark that makes dynamic-extent cause a measurable difference in throughput 2018-09-06T16:53:46Z fikka joined #lisp 2018-09-06T16:54:08Z jasom: I suppose that it *can* make a difference in latency if you make it so all allocations are dynamic-extent (i.e. no heap allocations at all) 2018-09-06T16:54:30Z shka_: well, there are cases when this is useful 2018-09-06T16:54:36Z aeth: shka_: imo don't rely on :type in classes if you need to enforce the type because you can assume that it's not going to be checked for the majority of your users because the default on the most popular implementation (SBCL) doesn't do it. 2018-09-06T16:54:54Z aeth: I did this just to enforce type checking. https://gitlab.com/zombie-raptor/zombie-raptor/blob/f42ede54566d374f90f91294f76fed675872a26e/util/util.lisp#L465-519 2018-09-06T16:54:55Z shka_: aeth: well, as i said, it can do it :-) 2018-09-06T16:54:59Z aeth: It's harder than it looks 2018-09-06T16:55:38Z shka_: aeth: try wrapping defclass in (optimize (safety 2)) 2018-09-06T16:56:07Z shka_: in sbcl, that's it 2018-09-06T16:56:13Z aeth: shka_: I bet that doesn't work in CLISP (I mean, my engine doesn't work in CLISP, either, but might as well write portably where I can) 2018-09-06T16:56:46Z shka_: well, i didn't check in clisp 2018-09-06T16:56:56Z shka_: how much do you want to bet? :-) 2018-09-06T16:56:59Z Bike: thinking about it, i wonder if there are any obstacles to having unboxed storage in classes with :type, at least for storage rather than compile time info... i guess standard-instance-access could be problematic 2018-09-06T16:59:06Z shka_: aeth: yup, clisp won't check 2018-09-06T17:00:06Z shka_: anyway, i am doing this just to not waste time debugging stupid mistakes on my side so it won't matter 2018-09-06T17:01:20Z cage_ joined #lisp 2018-09-06T17:02:43Z aeth: I don't mind using structs where :type matters. I mean, CLISP won't check there, either, probably. But it gives structs a role and you could probably at the very least get constructor/accessor checking into every implementation, even if you can't get optimization. 2018-09-06T17:06:18Z pierpal quit (Remote host closed the connection) 2018-09-06T17:12:48Z Demosthenex: hrm, is there a way to get a list of slots from a class? i'm defining a dao object in postmodern, and for creation i'd like to iterate across the slots for the json document i'm importing. 2018-09-06T17:13:39Z beach: mop class-slots 2018-09-06T17:13:46Z beach: Oh well. 2018-09-06T17:14:04Z beach: http://metamodular.com/CLOS-MOP/class-slots.html 2018-09-06T17:15:33Z omilu joined #lisp 2018-09-06T17:18:36Z gpiero joined #lisp 2018-09-06T17:18:36Z beach: Demosthenex: It is customary to acknowledge that you received the advice. 2018-09-06T17:19:05Z beach: Demosthenex: As in "Oh, OK, thanks, I'll try that", or something like that. 2018-09-06T17:19:31Z Demosthenex: beach: my apologies, i'm reading frantically =] on the other hand irc is quite async in nature 2018-09-06T17:19:54Z Demosthenex: i do appreciate the tip ! 2018-09-06T17:20:09Z beach: Good. 2018-09-06T17:21:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T17:25:00Z fikka joined #lisp 2018-09-06T17:26:52Z nowhere_man joined #lisp 2018-09-06T17:29:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T17:30:11Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-06T17:33:07Z nowhere_man quit (Ping timeout: 240 seconds) 2018-09-06T17:34:37Z Demosthenex: sweet, it was hidden in sb-mop. and slot-definition-name works too. 2018-09-06T17:34:56Z beach: You can use closer-mop if you want to be independent of the implementation. 2018-09-06T17:35:38Z Demosthenex: yeah, i was reading it's not portable. atm that's not a concern. i'm learning on sbcl and don't plan to change for a long time 2018-09-06T17:36:10Z nowhere_man joined #lisp 2018-09-06T17:37:44Z atgreen joined #lisp 2018-09-06T17:37:51Z Jesin quit (Quit: Leaving) 2018-09-06T17:41:46Z Jesin joined #lisp 2018-09-06T17:44:07Z Bike: it is portable, just not standard 2018-09-06T17:48:32Z nowhere_man quit (Ping timeout: 244 seconds) 2018-09-06T17:50:09Z dyelar quit (Remote host closed the connection) 2018-09-06T17:50:53Z dyelar joined #lisp 2018-09-06T17:56:10Z shka_: *sigh* ok done, i removed struct 2018-09-06T17:56:23Z shka_: and replaced it with class 2018-09-06T17:56:34Z atgreen quit (Ping timeout: 246 seconds) 2018-09-06T17:56:53Z fikka joined #lisp 2018-09-06T17:58:24Z atgreen joined #lisp 2018-09-06T18:01:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-06T18:02:59Z orivej joined #lisp 2018-09-06T18:03:00Z detergnet quit (Ping timeout: 252 seconds) 2018-09-06T18:04:45Z msb joined #lisp 2018-09-06T18:11:16Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-06T18:11:53Z FreeBirdLjj joined #lisp 2018-09-06T18:16:09Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-06T18:17:21Z Fare joined #lisp 2018-09-06T18:19:24Z fikka joined #lisp 2018-09-06T18:27:34Z sauvin quit (Remote host closed the connection) 2018-09-06T18:30:04Z kooga quit (Quit: :) 2018-09-06T18:35:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-06T18:36:17Z shrdlu68 joined #lisp 2018-09-06T18:43:28Z jochens joined #lisp 2018-09-06T18:45:32Z strelox joined #lisp 2018-09-06T18:46:15Z shrdlu68: jackdaniel: I have a piece of code that runs in around 14s in SBCL, but much much longer in ECL (I'm yet to let it finish). How can I figure out why? 2018-09-06T18:46:18Z Jesin quit (Quit: Leaving) 2018-09-06T18:47:17Z dlowe: shrdlu68: have you tried using a profiler on both? 2018-09-06T18:48:03Z zxcvz quit (Quit: zxcvz) 2018-09-06T18:48:10Z shrdlu68: dlowe: I have tried SBCL's statistical profiler, but I'm at my wit's end figuring out the results. 2018-09-06T18:48:30Z jochens quit (Ping timeout: 272 seconds) 2018-09-06T18:49:14Z Jesin joined #lisp 2018-09-06T18:50:18Z dlowe: shrdlu68: yeah, the interpretation is different than with a deterministic profiler 2018-09-06T18:50:37Z dlowe: "for this number of samples, this call stack was happening" 2018-09-06T18:51:14Z shrdlu68: dlowe: According to sb-sprof, this is the most interesting function: https://github.com/shrdlu68/ac-experiment/blob/master/coding.lisp#L140 2018-09-06T18:52:17Z dlowe: have you tried just using sb-prof instead? 2018-09-06T18:52:47Z shrdlu68: Not yet. 2018-09-06T18:55:26Z shrdlu68: Same with CCL as with ECL. 2018-09-06T18:55:40Z Kundry_Wag quit (Remote host closed the connection) 2018-09-06T18:56:33Z dlowe: sbcl is known for its fast math 2018-09-06T18:57:28Z graphene quit (Remote host closed the connection) 2018-09-06T18:57:37Z shrdlu68: Yes, but the difference here is more than I would expect. 2018-09-06T18:58:17Z shrdlu68: I'm using bit vectors heavily, that perhaps that could be it? 2018-09-06T18:59:11Z graphene joined #lisp 2018-09-06T18:59:13Z atgreen quit (Ping timeout: 246 seconds) 2018-09-06T19:00:54Z Jesin quit (Quit: Leaving) 2018-09-06T19:02:44Z vsync: just learned someone made a Lisp for TempleOS 2018-09-06T19:02:45Z vsync: https://github.com/bagnalla/holyc_mal 2018-09-06T19:02:50Z vsync: probably blasphemous but pretty cool 2018-09-06T19:04:01Z White_Flame: nifty 2018-09-06T19:04:01Z on_ion: blasphemous against...?? do you understand what is TempleOS ? =p 2018-09-06T19:04:15Z Jesin joined #lisp 2018-09-06T19:04:28Z White_Flame: I really wish templeos wasn't C-based 2018-09-06T19:04:35Z White_Flame: (well, c-derived I guess) 2018-09-06T19:04:37Z dlowe: cool, but we talk about Common Lisp here 2018-09-06T19:04:42Z dlowe: maybe you want ##lisp? 2018-09-06T19:05:01Z White_Flame: oh, or #lispcafe 2018-09-06T19:05:31Z Fare quit (Ping timeout: 244 seconds) 2018-09-06T19:08:11Z dlowe: well, it *is* about a lisp. 2018-09-06T19:09:02Z vsync: on_ion: blasphemous against HolyC 2018-09-06T19:09:25Z vsync: dlowe: I figure we talk about Lisp here, just that Common Lisp is the only most purest form of the true heritage 2018-09-06T19:10:07Z dlowe: You'd think from the channel name, but nope. ##lisp is for all the lisps. 2018-09-06T19:10:25Z dlowe: As with most things in lisp, it's that confusing way for historical reasons 2018-09-06T19:11:12Z vsync: it's how I choose to view the world 2018-09-06T19:14:50Z kamog quit (Remote host closed the connection) 2018-09-06T19:15:12Z housel quit (Ping timeout: 252 seconds) 2018-09-06T19:18:03Z doubledup quit (Remote host closed the connection) 2018-09-06T19:19:27Z jmercouris joined #lisp 2018-09-06T19:20:01Z vlatkoB_ quit (Remote host closed the connection) 2018-09-06T19:29:16Z stacksmith joined #lisp 2018-09-06T19:34:28Z aindilis joined #lisp 2018-09-06T19:38:18Z astalla joined #lisp 2018-09-06T19:40:43Z housel joined #lisp 2018-09-06T19:40:46Z bsund joined #lisp 2018-09-06T19:43:36Z shrdlu68 quit (Quit: WeeChat 2.0.1) 2018-09-06T19:43:51Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-06T19:47:26Z cage_ quit (Quit: Leaving) 2018-09-06T19:48:38Z dented42 joined #lisp 2018-09-06T19:50:20Z Demosthenex: beach: wow, that allowed me to automate the import of json from a rest api down to just one line of code, specifying json keys by slot id. i'm thrilled! 2018-09-06T19:51:06Z pfdietz: Every day, in every way, we are getting meta and meta. 2018-09-06T19:51:37Z dlowe: pfdietz: nice Bucky quote 2018-09-06T19:52:01Z mindCrime quit (Ping timeout: 244 seconds) 2018-09-06T19:53:09Z Demosthenex: just saved me a bunch of code duplicate making a translation layer 2018-09-06T19:53:10Z pfdietz: John Wisdom, I think. 2018-09-06T19:53:23Z Demosthenex: that and upsert with dao classes in postmodern. so nice. 2018-09-06T19:53:49Z Demosthenex: my last (personal) project i was using direct sql with postmodern with some s-sql, had to try dao this time 2018-09-06T19:54:11Z Demosthenex: while i wait for 1 million league maches to download, now i'm working on a gw2 trading post analyzer 2018-09-06T19:55:16Z Demosthenex: just creative pet projects to help me learn 2018-09-06T19:56:56Z mindCrime joined #lisp 2018-09-06T19:57:08Z shka_: shrdlu68: are you willing to post sb-sprof result? 2018-09-06T19:58:25Z dlowe: pfdietz: Emile Coue, apparently, of whom I have never head 2018-09-06T19:58:26Z dlowe: heard 2018-09-06T19:58:35Z Lycurgus joined #lisp 2018-09-06T20:03:31Z Fare joined #lisp 2018-09-06T20:03:42Z rumbler31 joined #lisp 2018-09-06T20:03:50Z fikka joined #lisp 2018-09-06T20:06:27Z Demosthenex: so, i could not find docs on sbcl's sleep function granularity. 2018-09-06T20:06:50Z shka_: well, we can check the source code! 2018-09-06T20:06:59Z jasom: Demosthenex: there's a docstring! 2018-09-06T20:07:06Z Demosthenex: looks like i'm hitting rate limits though i have sleep 0.002 in it 2018-09-06T20:07:11Z Demosthenex: oh? darn i was googling like crazy 2018-09-06T20:07:26Z jasom: any non-negative real number 2018-09-06T20:07:37Z jasom: it's probably OS dependent what the granularity is 2018-09-06T20:07:56Z jasom: and as others say, the code is just a M-. away 2018-09-06T20:08:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-06T20:08:25Z rumbler31 quit (Remote host closed the connection) 2018-09-06T20:08:29Z shka_: Demosthenex: ok, got it 2018-09-06T20:08:30Z shka_: (defconstant sb!xc:internal-time-units-per-second 1000 2018-09-06T20:08:32Z shka_: "The number of internal time units that fit into a second. See 2018-09-06T20:08:33Z shka_: GET-INTERNAL-REAL-TIME and GET-INTERNAL-RUN-TIME.") 2018-09-06T20:08:46Z Bike: that's probably not related to sleep 2018-09-06T20:08:56Z jasom: Bike: it is 2018-09-06T20:09:12Z Bike: oh? scuse me. thought it was just the standard relation 2018-09-06T20:09:24Z jasom: well it's complicated 2018-09-06T20:09:36Z shka_: Demosthenex: from what i can understand sleep follows internal-time-units-per-second granulity 2018-09-06T20:09:41Z shka_: so that's the epsilon 2018-09-06T20:09:46Z scymtym: that whole subsystem is pretty crazy, among other things because of WITH-DEADLINE 2018-09-06T20:09:55Z jasom: On *nix it calls usleep for the timeout in usec, *but* if you are interrupted it uses internal-time-units-per-second to check if it should continue sleeping 2018-09-06T20:10:09Z shka_: yeah 2018-09-06T20:10:17Z shka_: but units in both cases align 2018-09-06T20:10:33Z kajo quit (Ping timeout: 252 seconds) 2018-09-06T20:10:40Z shka_: so i think you can assume 1/1000 of seconds as your epsilon 2018-09-06T20:10:58Z shka_: Demosthenex: does that solves your problem? 2018-09-06T20:11:10Z jasom: again, it will work as least as well as usleep would for things smaller than 1/1000 2018-09-06T20:12:19Z fikka joined #lisp 2018-09-06T20:12:43Z jasom: oh, this is only if the thread-local *deadline* is set, otherwise it just does a nanosleep 2018-09-06T20:12:54Z shka_: oh 2018-09-06T20:13:00Z shka_: this is even better 2018-09-06T20:13:22Z shka_: IIRC Demosthenex just needed 1/1000 resolution at least 2018-09-06T20:13:25Z pjb quit (Quit: good night) 2018-09-06T20:13:34Z shka_: so i think he is VERY safe here 2018-09-06T20:14:11Z Demosthenex: yep, sounds good, so the issue must be my math 2018-09-06T20:14:23Z shka_: sounds likely 2018-09-06T20:14:34Z shka_: but 2018-09-06T20:14:38Z shka_: if you are sleeping 2018-09-06T20:14:48Z shka_: it sounds like a bad design 2018-09-06T20:15:25Z shka_: well, good night anyway 2018-09-06T20:15:50Z Demosthenex: well for the riot api, they tell me how many requests i've made and my limit, and so i burst until i'm close and exponentially increase the wait, but for gw2 its just 600/minute. a standard sleep ought to suffice 2018-09-06T20:16:01Z Demosthenex: and if i hit the rate limit, i wait a full minute and try again 2018-09-06T20:16:21Z jasom: it does looklike the deadline code was intended to be used more when it was written; without looking at the code history I can't say if that's likely. It could affect sleeps resolution in a negative manner in the future I think. 2018-09-06T20:16:42Z jasom: Demosthenex: sleep can exit early 2018-09-06T20:17:09Z jasom: Demosthenex: you should probably use get-internal-real-time or something similar to check how fast you are going 2018-09-06T20:17:21Z shka_: hmmm 2018-09-06T20:17:41Z shka_: Demosthenex: listening to this makes me think that some timer wheel would be a good idea 2018-09-06T20:18:22Z kajo joined #lisp 2018-09-06T20:18:38Z Demosthenex: i thought my exponetial backoff curve was cool for the riot api, but they provide feedback on your usage in every head returned. the gw2 one is very dumb by comparison 2018-09-06T20:19:23Z nirved quit (Quit: Leaving) 2018-09-06T20:19:37Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-06T20:22:18Z jasom: so sb-impl:%nanosleep dosen't boil down to a pure nanosleep() call, but rather sb_nanosleep which checks for EINTR and continues sleeping, so it should always sleep for at least as long as you request. 2018-09-06T20:23:30Z j`ey: how can I print a "subset" of an array? like the first 100 elements 2018-09-06T20:24:43Z jasom: j`ey: you can either use subseq to get the subsequence, or you can bind *print-length* to cause it to never print more than 100 elements of any object 2018-09-06T20:25:22Z Bike: print length is real nice forthat 2018-09-06T20:25:26Z j`ey: letter sounds good 2018-09-06T20:25:56Z Bike: it's only for display, mind. you can't read back something that hits the *print-length* limit 2018-09-06T20:26:56Z jasom: j`ey: try e.g. (let ((*print-length* 10)) (print (make-list 100)) (print (make-array 100)) to see what it's like 2018-09-06T20:27:20Z jasom: rather: (let ((*print-length* 10)) (print (make-list 100)) (print (make-array 100)) nil) 2018-09-06T20:28:29Z jasom has forgotten to not return the last print before when using print-length to keep emacs from choking on 100s of millions of elements and failed totally... 2018-09-06T20:29:12Z astalla quit (Ping timeout: 272 seconds) 2018-09-06T20:31:33Z jochens joined #lisp 2018-09-06T20:35:47Z jochens quit (Ping timeout: 240 seconds) 2018-09-06T20:39:32Z Roy_Fokker joined #lisp 2018-09-06T20:39:47Z shka_ quit (Ping timeout: 240 seconds) 2018-09-06T20:39:51Z j`ey: jasom: thanks 2018-09-06T20:39:54Z scymtym quit (Ping timeout: 252 seconds) 2018-09-06T20:41:25Z astalla joined #lisp 2018-09-06T20:42:07Z LiamH quit (Ping timeout: 240 seconds) 2018-09-06T20:45:58Z lavaflow_ quit (Ping timeout: 246 seconds) 2018-09-06T20:46:19Z Fare quit (Ping timeout: 246 seconds) 2018-09-06T20:54:43Z mindCrime quit (Ping timeout: 246 seconds) 2018-09-06T20:56:00Z razzy: ah, what a day 2018-09-06T20:59:04Z jmercouris quit (Remote host closed the connection) 2018-09-06T21:02:10Z sariyar quit (Ping timeout: 252 seconds) 2018-09-06T21:02:43Z sz0 quit (Ping timeout: 252 seconds) 2018-09-06T21:04:07Z msb quit (Ping timeout: 240 seconds) 2018-09-06T21:04:17Z sz0 joined #lisp 2018-09-06T21:04:23Z stux|RC quit (Ping timeout: 276 seconds) 2018-09-06T21:05:53Z scymtym joined #lisp 2018-09-06T21:06:07Z msb joined #lisp 2018-09-06T21:10:20Z lavaflow_ joined #lisp 2018-09-06T21:12:44Z AeroNotix: razzy: tell us about it 2018-09-06T21:13:40Z papachan quit (Quit: WeeChat 2.2) 2018-09-06T21:15:06Z Arcaelyx quit (Ping timeout: 252 seconds) 2018-09-06T21:15:57Z razzy: when i forgot not to return print :] 2018-09-06T21:16:18Z Arcaelyx joined #lisp 2018-09-06T21:16:33Z razzy: AeroNotix: or was it sarcasm o your part? 2018-09-06T21:17:28Z AeroNotix: no 2018-09-06T21:24:03Z phoe quit (Read error: Connection reset by peer) 2018-09-06T21:24:27Z j`ey: im having trouble with my recursive function.. it never seems to actually get to the point of calling itself: http://sprunge.us/g92q2m?scheme 2018-09-06T21:25:04Z j`ey: lines 3 and 4 both print T, but hello is never printed 2018-09-06T21:25:46Z j`ey: probably just messed up my () somewhere :/ 2018-09-06T21:26:34Z razzy: does elisp have trace function? 2018-09-06T21:30:44Z j`ey: (if only takes a single form.. so I have to use progn 2018-09-06T21:31:40Z varjag quit (Read error: Connection reset by peer) 2018-09-06T21:31:56Z varjag joined #lisp 2018-09-06T21:35:24Z Bike quit (Ping timeout: 252 seconds) 2018-09-06T21:37:55Z LiamH joined #lisp 2018-09-06T21:38:59Z asarch quit (Quit: Leaving) 2018-09-06T21:39:16Z terpri joined #lisp 2018-09-06T21:41:09Z wheelsucker quit (Quit: Client Quit) 2018-09-06T21:41:51Z wigust quit (Ping timeout: 252 seconds) 2018-09-06T21:48:50Z strelox quit (Remote host closed the connection) 2018-09-06T21:50:18Z Lycurgus quit (Quit: Exeunt) 2018-09-06T21:53:25Z jasom: j`ey: you don't need the outer progn in that code though. 2018-09-06T21:54:06Z j`ey: does defun have an implicit progn? 2018-09-06T21:54:13Z jasom: j`ey: yes 2018-09-06T21:54:27Z White_Flame: as do LAMBDA, LET, WHEN, UNLESS, for probably the most common ones 2018-09-06T21:55:11Z White_Flame: if there's only 1 body passed into the special form, then there's often an implicit progn. IF, for instance, has 2 code bodies, thus need to be individually PROGN-wrapped 2018-09-06T21:55:40Z jasom: j`ey: I think your test is backwards, you are not recuring in the case that depth is <= to max-depth which looks wrong 2018-09-06T21:55:58Z j`ey: oh, so my recursive call was actually in the false part of the if 2018-09-06T21:56:06Z jasom: correct 2018-09-06T21:56:39Z jasom: also LPT (lisp pro tip) if both the true and false parts of the if require PROGN, consider using COND. 2018-09-06T21:56:52Z j`ey: I wanted the setf and the dotimes/recursion within the true block 2018-09-06T21:56:54Z jasom: (unrelated to this example, but since you mention if and progn) 2018-09-06T21:57:08Z j`ey: this is (if x y), not (if x y z) 2018-09-06T21:57:11Z jasom: j`ey: with no false part? then just use when 2018-09-06T21:57:18Z jasom: clhs when 2018-09-06T21:57:28Z White_Flame: I would also point to #clschool as a place specifically for learning the language 2018-09-06T21:57:29Z jasom: Colleen: ::clhs when 2018-09-06T21:57:30Z Colleen: Clhs: macro when, unless http://www.lispworks.com/documentation/HyperSpec/Body/m_when_.htm 2018-09-06T21:58:59Z j`ey: and when has an implicit progn, nice 2018-09-06T21:59:49Z White_Flame: (and test1 test2 test3 (side-effect)) is also fun 2018-09-06T21:59:49Z jasom: Colleen: ::chls ~a 2018-09-06T21:59:49Z Colleen: Unknown command. Possible matches: 8, clhs, tell, roll, help, set, say, mop, get, hello, 2018-09-06T21:59:56Z jasom: Colleen: ::clhs ~a 2018-09-06T21:59:57Z Colleen: Clhs: section 22.3.4.1 http://www.lispworks.com/documentation/HyperSpec/Body/22_cda.htm 2018-09-06T22:00:14Z jasom: (just checking that colleen can do what specbot could) 2018-09-06T22:00:35Z White_Flame: prefixes are kind of annoying, though 2018-09-06T22:00:51Z White_Flame: clhs doohickey 2018-09-06T22:00:52Z j`ey: takes 8 minutes to reach 99.3% of the cases. I should see if declare optimise/declare types would help 2018-09-06T22:01:00Z White_Flame: is much eaiser to remember, too 2018-09-06T22:01:06Z j`ey: it does 0 bytes of consing already 2018-09-06T22:02:24Z jasom: j`ey: it's probably just too complex, 18^depth grows very fast 2018-09-06T22:02:46Z edgar-rft quit (Remote host closed the connection) 2018-09-06T22:03:28Z j`ey: currently going to depth 8 2018-09-06T22:04:28Z jasom: so like 22M iterations of the inner loop per second? 2018-09-06T22:04:37Z j`ey: not bad 2018-09-06T22:05:01Z jasom: 8^18 is about 10 billion if my math is right 2018-09-06T22:05:24Z jasom: er 18^8 rather 2018-09-06T22:05:26Z jasom: 8^18 is huge 2018-09-06T22:06:18Z j`ey: it's for a rubik's cube 2018-09-06T22:06:27Z jasom: 8^18 is also larger than the address space on a modern pc, so it's clearly wrong :) 2018-09-06T22:06:30Z j`ey: it's calculating the depths of certain positions 2018-09-06T22:07:42Z jasom: I'm having trouble decoding this; are you doing so by seeing if any positions with known depth are reachable in 1 move? 2018-09-06T22:09:00Z j`ey: I start off with the solved state, do each turn (thats the 6 x 3), and go one depth further 2018-09-06T22:09:08Z jasom: oh, I see what you're doing; if you have found a new minimum distance for a position, then you record it and then check all positions reachable in 1 move 2018-09-06T22:09:22Z rumbler31 joined #lisp 2018-09-06T22:09:57Z j`ey: or if the position hasnt been reached at all yet. prune-table has initial elements of a big number 2018-09-06T22:12:22Z jasom: right, all moves are reachable in 20ish (a new lower bound was proven in the past 2 years IIRC) 2018-09-06T22:12:27Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-06T22:13:25Z j`ey: Im looking at a particular subset, I think the upperbound is 9, maybe 10 2018-09-06T22:13:48Z rumbler31 quit (Ping timeout: 245 seconds) 2018-09-06T22:13:50Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-06T22:14:34Z jasom: If you do a breadth-first search it will be a bit faster 2018-09-06T22:14:50Z jasom: at least my intuitin tells me that 2018-09-06T22:15:22Z jasom: because you will find the lowest bound first, so you won't have to rewrite the same position multiple times 2018-09-06T22:15:48Z j`ey: hm 2018-09-06T22:16:00Z j`ey: I can take a look at doing that, good idea 2018-09-06T22:16:20Z j`ey: in my previous code I did DFS, but it was a different, smaller subset 2018-09-06T22:17:11Z jasom: because I think right now if the subset of moves you are looking at can return it to the initial position in any of 2..6 moves, each adjacent position will be calculated 3 times. 2018-09-06T22:20:01Z jochens joined #lisp 2018-09-06T22:20:21Z j`ey: to be honest Im going to store/load the table. unless I can get the generation dwon to a few seconds 2018-09-06T22:21:08Z robotoad quit (Read error: Connection reset by peer) 2018-09-06T22:21:56Z robotoad joined #lisp 2018-09-06T22:22:56Z keppy joined #lisp 2018-09-06T22:24:13Z jochens quit (Ping timeout: 245 seconds) 2018-09-06T22:25:34Z whartung: j`ey: still trying to serialize your data? or did you manage to get it in and out? 2018-09-06T22:25:47Z regreg joined #lisp 2018-09-06T22:26:13Z jasom: there are 1e12 total positions of distance 8, so obviously all moves won't be calculated in a few seconds, not sure with the subset you are using 2018-09-06T22:27:42Z makomo quit (Ping timeout: 252 seconds) 2018-09-06T22:28:07Z caltelt_ joined #lisp 2018-09-06T22:37:35Z j`ey: whartung: I just decided to live with the 2minute start up time for now :P 2018-09-06T22:37:59Z whartung: you just saved your image instead of the raw data? 2018-09-06T22:38:04Z j`ey: jasom: the subset im working with has a total of ~5million positions 2018-09-06T22:38:12Z j`ey: whartung: no, just generating it every time 2018-09-06T22:38:17Z whartung: ah ok 2018-09-06T22:38:18Z whartung: cool 2018-09-06T22:38:23Z whartung: yup, that works. 2018-09-06T22:38:41Z j`ey: but the new data set takes even longer to generate, so I will have to learn how to serialise soon :) 2018-09-06T22:38:54Z bsund quit (Ping timeout: 244 seconds) 2018-09-06T22:44:31Z makomo joined #lisp 2018-09-06T22:45:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-06T22:46:24Z Kundry_Wag joined #lisp 2018-09-06T22:47:24Z jessup quit (Remote host closed the connection) 2018-09-06T22:51:04Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-06T22:56:45Z Bike joined #lisp 2018-09-06T22:56:52Z makomo quit (Ping timeout: 246 seconds) 2018-09-06T23:01:07Z LiamH quit (Quit: Leaving.) 2018-09-06T23:07:26Z terpri quit (Read error: Connection reset by peer) 2018-09-06T23:07:59Z actuallybatman joined #lisp 2018-09-06T23:08:04Z regreg quit (Remote host closed the connection) 2018-09-06T23:08:31Z ebrasca joined #lisp 2018-09-06T23:08:42Z terpri joined #lisp 2018-09-06T23:10:23Z rumbler31 joined #lisp 2018-09-06T23:10:32Z robotoad quit (Quit: robotoad) 2018-09-06T23:10:41Z makomo joined #lisp 2018-09-06T23:12:33Z keppy quit (Remote host closed the connection) 2018-09-06T23:13:54Z actuallybatman quit (Ping timeout: 252 seconds) 2018-09-06T23:15:54Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-06T23:17:34Z astalla quit (Ping timeout: 240 seconds) 2018-09-06T23:17:54Z Kaisyu joined #lisp 2018-09-06T23:21:36Z terpri quit (Ping timeout: 252 seconds) 2018-09-06T23:21:57Z actuallybatman joined #lisp 2018-09-06T23:23:34Z Kundry_Wag joined #lisp 2018-09-06T23:24:27Z housel quit (Read error: Connection reset by peer) 2018-09-06T23:24:57Z housel joined #lisp 2018-09-06T23:25:45Z spm_ quit (Remote host closed the connection) 2018-09-06T23:27:20Z PuercoPop quit (Ping timeout: 250 seconds) 2018-09-06T23:28:12Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-06T23:29:31Z slyrus1: scymtym: did you see my response to your response? 2018-09-06T23:46:11Z atgreen joined #lisp 2018-09-06T23:47:27Z Kundry_Wag joined #lisp 2018-09-06T23:51:18Z Kundry_Wag quit (Client Quit) 2018-09-06T23:51:59Z danielxvu quit (Quit: Using Circe, the loveliest of all IRC clients) 2018-09-06T23:53:37Z danielxvu joined #lisp 2018-09-06T23:55:52Z mindCrime joined #lisp 2018-09-06T23:56:27Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-07T00:00:48Z no-defun-allowed: i have a new idea to make cl-decentralise more useful 2018-09-07T00:01:34Z no-defun-allowed: right now distribution is kinda messy and ip announcement and async messaging are tied up in one "i'm a node" switch 2018-09-07T00:02:05Z no-defun-allowed: so block announcements get to live in channels and clients can subscribe to channels and receive async messages for those new blocks 2018-09-07T00:02:42Z no-defun-allowed: the client would have to be redone to put "blocks we weren't expecting but subscribed to" into some storage or we could use a callback like node 2018-09-07T00:04:22Z housel quit (Remote host closed the connection) 2018-09-07T00:04:53Z housel joined #lisp 2018-09-07T00:06:26Z dale quit (Quit: dale) 2018-09-07T00:07:02Z Fare joined #lisp 2018-09-07T00:08:31Z fikka joined #lisp 2018-09-07T00:08:35Z jochens joined #lisp 2018-09-07T00:08:59Z danielvu joined #lisp 2018-09-07T00:10:31Z Pixel_Outlaw joined #lisp 2018-09-07T00:12:49Z jochens quit (Ping timeout: 246 seconds) 2018-09-07T00:13:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T00:18:26Z holycow joined #lisp 2018-09-07T00:20:56Z danielvu quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-07T00:23:47Z danielvu joined #lisp 2018-09-07T00:24:30Z danielvu quit (Client Quit) 2018-09-07T00:26:30Z Fare quit (Ping timeout: 252 seconds) 2018-09-07T00:31:12Z graphene quit (Remote host closed the connection) 2018-09-07T00:32:58Z graphene joined #lisp 2018-09-07T00:34:24Z AeroNotix: no-defun-allowed: is it intentional that the repo is cl-decentralise but the lisp system is just called decentralise? 2018-09-07T00:34:48Z no-defun-allowed: hmm, it's obvious it's a Common Lisp system so yes 2018-09-07T00:35:12Z AeroNotix: fair enough 2018-09-07T00:35:47Z no-defun-allowed: it's not obvious from gitlab that it's a cl system so i use the `cl-` prefix for git repos 2018-09-07T00:35:56Z AeroNotix: ok 2018-09-07T00:39:42Z caltelt_ quit (Ping timeout: 252 seconds) 2018-09-07T00:40:00Z no-defun-allowed: (blockchains were a terrible idea btw, we already have cl:cons) 2018-09-07T00:40:53Z graphene quit (Read error: Connection reset by peer) 2018-09-07T00:42:41Z graphene joined #lisp 2018-09-07T00:43:30Z Lycurgus joined #lisp 2018-09-07T00:46:03Z Fare joined #lisp 2018-09-07T00:48:51Z orivej quit (Ping timeout: 252 seconds) 2018-09-07T00:55:21Z dddddd quit (Remote host closed the connection) 2018-09-07T00:58:03Z robotoad joined #lisp 2018-09-07T01:04:04Z mindCrime quit (Ping timeout: 272 seconds) 2018-09-07T01:07:16Z caltelt_ joined #lisp 2018-09-07T01:11:24Z on_ion quit (Ping timeout: 252 seconds) 2018-09-07T01:22:13Z robotoad quit (Max SendQ exceeded) 2018-09-07T01:23:28Z ealfonso left #lisp 2018-09-07T01:24:42Z robotoad joined #lisp 2018-09-07T01:30:28Z holycow quit (Quit: Lost terminal) 2018-09-07T01:31:01Z oni-on-ion joined #lisp 2018-09-07T01:32:10Z SaganMan joined #lisp 2018-09-07T01:35:40Z ealfonso joined #lisp 2018-09-07T01:35:43Z sabrac quit (Read error: Connection reset by peer) 2018-09-07T01:47:39Z Oladon joined #lisp 2018-09-07T01:54:10Z asarch joined #lisp 2018-09-07T01:57:07Z jochens joined #lisp 2018-09-07T01:57:28Z makomo quit (Ping timeout: 246 seconds) 2018-09-07T01:57:30Z fikka joined #lisp 2018-09-07T02:01:42Z jochens quit (Ping timeout: 272 seconds) 2018-09-07T02:02:08Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T02:08:36Z fikka joined #lisp 2018-09-07T02:13:34Z lavaflow_ quit (Ping timeout: 246 seconds) 2018-09-07T02:13:44Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T02:15:52Z PuercoPop joined #lisp 2018-09-07T02:17:26Z Lycurgus quit (Quit: Exeunt) 2018-09-07T02:26:56Z robotoad quit (Quit: robotoad) 2018-09-07T02:28:37Z fikka joined #lisp 2018-09-07T02:32:31Z lavaflow_ joined #lisp 2018-09-07T02:33:21Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T02:37:23Z robotoad joined #lisp 2018-09-07T02:37:24Z jlarocco joined #lisp 2018-09-07T02:45:05Z fikka joined #lisp 2018-09-07T02:47:25Z Hu0p quit (Ping timeout: 244 seconds) 2018-09-07T02:49:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T02:51:11Z yangby joined #lisp 2018-09-07T02:55:30Z fikka joined #lisp 2018-09-07T02:57:33Z [X-Scale] joined #lisp 2018-09-07T02:59:20Z X-Scale quit (Ping timeout: 272 seconds) 2018-09-07T02:59:21Z [X-Scale] is now known as X-Scale 2018-09-07T02:59:25Z bradcomp joined #lisp 2018-09-07T03:00:03Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T03:00:29Z yangby: hello, folks! is there any linters (i found sblint, only) and formaters for CL. 2018-09-07T03:00:54Z yangby: i am not good at CL, so i want to find some tools to criticize my codes, strictly. 2018-09-07T03:01:09Z White_Flame: SBCL has pretty good compile-time warnings, due to its type inference 2018-09-07T03:01:27Z White_Flame: but yeah, as a dynamic language that sort of thing isn't well traveled 2018-09-07T03:01:48Z White_Flame: as for formatting, Emacs + SLIME keep the proper indentation for your source code 2018-09-07T03:03:42Z yangby: thanks 2018-09-07T03:05:07Z White_Flame: probably the biggest thing is to not have empty open or close braces on a line. no "(list (\n a...", nor "(progn (code\n)\n)" 2018-09-07T03:05:17Z yangby: i used emacs+slime, i try to find some stand-alone command-line commands, not plugins for editors, for scenes without emacs. 2018-09-07T03:05:23Z fikka joined #lisp 2018-09-07T03:05:26Z White_Flame: keep open parens with the 1st term, and all close braces right after the last term 2018-09-07T03:05:42Z yangby: maybe i can try to write one, :) 2018-09-07T03:06:26Z yangby: i want to put them into CI or use as git hooks. 2018-09-07T03:07:16Z White_Flame: indentation requires live knowledge of what terms are 2018-09-07T03:07:33Z White_Flame: ie, (list 1 2 3) is indented differently if spread across lines than (and (foo) (bar) (baz)) 2018-09-07T03:07:47Z White_Flame: and that's runtime knowledge, not static knowledge that an external tool can have easy access to 2018-09-07T03:09:06Z whartung quit (Ping timeout: 252 seconds) 2018-09-07T03:09:08Z White_Flame: the major difference is nested source code bodies vs nested parameters 2018-09-07T03:09:27Z White_Flame: there's no syntactic indicator for those 2 scenarios; it's solely the executed declarations describing functions 2018-09-07T03:09:55Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T03:10:09Z beach: Good morning everyone! 2018-09-07T03:11:42Z slyrus quit (Ping timeout: 244 seconds) 2018-09-07T03:11:42Z slyrus1 is now known as slyrus 2018-09-07T03:12:01Z slyrus1 joined #lisp 2018-09-07T03:12:21Z yangby: White_Flame: thank you for your patience and guidance! 2018-09-07T03:12:48Z White_Flame: np 2018-09-07T03:12:49Z no-defun-allowed: afternoon, beach 2018-09-07T03:16:13Z fikka joined #lisp 2018-09-07T03:18:21Z mkolenda quit (Ping timeout: 252 seconds) 2018-09-07T03:20:46Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T03:23:35Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-07T03:25:08Z mkolenda joined #lisp 2018-09-07T03:25:37Z whartung joined #lisp 2018-09-07T03:26:02Z fikka joined #lisp 2018-09-07T03:26:54Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-07T03:31:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T03:31:23Z kristof joined #lisp 2018-09-07T03:31:57Z Roy_Fokker quit (Quit: Leaving) 2018-09-07T03:32:09Z edgar-rft joined #lisp 2018-09-07T03:33:14Z igemnace joined #lisp 2018-09-07T03:35:07Z NB0X-Matt-CA quit (Ping timeout: 240 seconds) 2018-09-07T03:35:08Z aeth: There are ways to add some static typing to CL, particularly SBCL, if you need it for verification. e.g. sb-ext:*derive-function-types* 2018-09-07T03:36:07Z aeth: You probably don't want it in development because it adds the assumption that the function types won't change (e.g. foo will always return an integer or something) but it will catch some but not all bugs if you were to e.g. compile with it set just to see the warnings/etc. 2018-09-07T03:38:32Z aeth: An example of the kind of bug it will (probably) catch: (defun foo (x) (+ x x)) (defun bar () (concatenate 'list (foo 42) "Hello")) ; number's not a sequence and it can tell foo has to return a number, not a sequence 2018-09-07T03:44:17Z sabrac joined #lisp 2018-09-07T03:44:20Z Bike quit (Quit: Lost terminal) 2018-09-07T03:45:39Z jochens joined #lisp 2018-09-07T03:46:24Z fikka joined #lisp 2018-09-07T03:49:07Z H4ns quit (Ping timeout: 240 seconds) 2018-09-07T03:49:49Z jochens quit (Ping timeout: 246 seconds) 2018-09-07T03:50:58Z fikka quit (Ping timeout: 244 seconds) 2018-09-07T03:58:31Z Oladon quit (Quit: Leaving.) 2018-09-07T04:06:23Z bradcomp joined #lisp 2018-09-07T04:06:41Z fikka joined #lisp 2018-09-07T04:11:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T04:17:32Z steiner joined #lisp 2018-09-07T04:27:27Z fikka joined #lisp 2018-09-07T04:32:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T04:33:27Z bradcomp quit (Ping timeout: 240 seconds) 2018-09-07T04:33:42Z kristof quit (Ping timeout: 272 seconds) 2018-09-07T04:34:33Z buffergn0me quit (Remote host closed the connection) 2018-09-07T04:38:49Z yangby quit (Quit: Go out for a walk and buy a drink.) 2018-09-07T04:40:49Z buffergn0me joined #lisp 2018-09-07T04:43:01Z NB0X-Matt-CA joined #lisp 2018-09-07T04:57:03Z Inline quit (Quit: Leaving) 2018-09-07T05:00:31Z scottj joined #lisp 2018-09-07T05:05:20Z steiner quit (Remote host closed the connection) 2018-09-07T05:08:14Z anewuser quit (Quit: anewuser) 2018-09-07T05:14:12Z v0|d joined #lisp 2018-09-07T05:15:20Z dmiles quit (Read error: Connection reset by peer) 2018-09-07T05:19:19Z logicmoo joined #lisp 2018-09-07T05:21:28Z logicmoo is now known as dmiles 2018-09-07T05:23:06Z akovalenko quit (Ping timeout: 272 seconds) 2018-09-07T05:24:17Z akovalenko joined #lisp 2018-09-07T05:26:22Z dented42 joined #lisp 2018-09-07T05:27:28Z SaganMan quit (Ping timeout: 246 seconds) 2018-09-07T05:28:51Z gpiero quit (Remote host closed the connection) 2018-09-07T05:31:12Z caltelt_ quit (Ping timeout: 244 seconds) 2018-09-07T05:38:41Z sauvin joined #lisp 2018-09-07T05:42:00Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-07T05:45:22Z yangby joined #lisp 2018-09-07T05:48:50Z SaganMan joined #lisp 2018-09-07T05:51:43Z robotoad quit (Ping timeout: 245 seconds) 2018-09-07T05:54:04Z mfiano quit (Quit: WeeChat 2.1) 2018-09-07T05:59:29Z robotoad joined #lisp 2018-09-07T05:59:34Z phoe joined #lisp 2018-09-07T06:03:58Z mfiano joined #lisp 2018-09-07T06:09:10Z robotoad quit (Quit: robotoad) 2018-09-07T06:14:38Z Demosthenex: did i miss a standard function for splitting a long list into smaller lists of specific size? i know its minor to code one 2018-09-07T06:17:55Z dim: alexandria to the rescue again, maybe something names “partition” or such? 2018-09-07T06:19:29Z Demosthenex: dim: i've been reading through the alexandria doc, didnt' see one. my searches came up empty, so thought i'd ask. i thought it was a pretty common case and didn't want to reinvent the wheel. but i just reinvented it :P 2018-09-07T06:19:50Z dim: yeah I'm failing to find one too, bad guess 2018-09-07T06:20:01Z dim: I'm discovering https://github.com/ruricolist/serapeum now 2018-09-07T06:20:21Z vlatkoB joined #lisp 2018-09-07T06:21:39Z dim: so, Demosthenex, serapeum:batches 2018-09-07T06:23:48Z Demosthenex: cool, didn't see that before 2018-09-07T06:26:28Z dim: me neither! 2018-09-07T06:31:41Z no-defun-allowed: damn, they have runs 2018-09-07T06:31:43Z shrdlu68 joined #lisp 2018-09-07T06:32:13Z no-defun-allowed: i wrote a runs-if for my phoneme->syllable splitter, i wonder how they did theirs 2018-09-07T06:38:15Z gpiero joined #lisp 2018-09-07T06:39:29Z zxcvz joined #lisp 2018-09-07T06:48:03Z nowhere_man joined #lisp 2018-09-07T06:49:29Z zxcvz quit (Quit: zxcvz) 2018-09-07T06:54:24Z splittist joined #lisp 2018-09-07T07:08:55Z a7f4 joined #lisp 2018-09-07T07:12:25Z asarch quit (Quit: Leaving) 2018-09-07T07:12:35Z jasom: For very small fixed sizes, I'd do something like (loop for (a b c . d) on list by #'cdddr collect (list a b c)) 2018-09-07T07:13:54Z jasom: actually the . d I think is not required for loop destructuring 2018-09-07T07:18:28Z aeth: really? it's required in the equivalent destructuring-bind 2018-09-07T07:19:09Z aeth: hmm, it isn't required 2018-09-07T07:22:48Z a7f4 quit (Ping timeout: 272 seconds) 2018-09-07T07:23:32Z no-defun-allowed: loop's binder =/= destructuring-bind, it's way weaker 2018-09-07T07:29:12Z aeth: I can understand why they wouldn't want . d to be required because most of the time in a looping context you'd be ignoring it 2018-09-07T07:30:40Z scymtym quit (Ping timeout: 246 seconds) 2018-09-07T07:32:51Z charh joined #lisp 2018-09-07T07:42:14Z steiner joined #lisp 2018-09-07T07:42:55Z varjag joined #lisp 2018-09-07T07:43:22Z jochens joined #lisp 2018-09-07T07:54:07Z shka_ joined #lisp 2018-09-07T07:54:28Z shka_: good day 2018-09-07T07:55:03Z no-defun-allowed: hi shka_ 2018-09-07T07:55:21Z scymtym joined #lisp 2018-09-07T07:55:23Z shrdlu68: shka_: Good morning 2018-09-07T07:55:35Z shka_: shrdlu68: oh, hello 2018-09-07T07:55:56Z shka_: shrdlu68: is there a way for me to run your code? 2018-09-07T07:56:05Z shka_: i would try to benchmark it for you 2018-09-07T07:58:32Z shrdlu68: shka_: Try running #'arithmetic-coding::test-file on a small file (< 100kb) 2018-09-07T07:59:08Z shka_: what file, though? 2018-09-07T07:59:12Z shka_: and what repo? :-) 2018-09-07T07:59:26Z aeth: no-defun-allowed: Ohm in case I was unclear, I meant "in the equivalent destructuring-bind [form]" not "in the equivalent[, ] destructuring-bind" 2018-09-07T07:59:34Z shrdlu68: shka_: https://github.com/shrdlu68/ac-experiment/blob/master/coding.lisp 2018-09-07T07:59:36Z aeth: s/Ohm/Oh,/ 2018-09-07T08:00:04Z shka_: shrdlu68: can i have some test file? 2018-09-07T08:00:07Z no-defun-allowed: what's the internal resistance of loop again? 2018-09-07T08:00:43Z aeth: no-defun-allowed: I think that's implementation-dependent 2018-09-07T08:00:57Z no-defun-allowed: i see. 2018-09-07T08:01:15Z no-defun-allowed: do i need to factor in parasitic capacitance while i'm at it? 2018-09-07T08:04:02Z no-defun-allowed: (this is why lisp doesn't catch on: at least rust is mostly insulative) 2018-09-07T08:06:06Z dim: loop forms aren't composable at all, see iterate for a fix 2018-09-07T08:06:24Z no-defun-allowed: that's true but not the joke 2018-09-07T08:06:30Z aeth: The problem is that Lisp is built out of a bunch of equations on paper, and not a just abstractions over a physical machine. 2018-09-07T08:06:31Z dim: I personally like loop because it's simple for the simple cases and allows quite some level of complexity 2018-09-07T08:06:37Z beach: no-defun-allowed: I think you are totally wrong about why Lisp is not catching on. 2018-09-07T08:06:44Z dim: no-defun-allowed: oh. the joke passed well over my head here. 2018-09-07T08:07:06Z dim: I guess my English is not up to the joke at hand 2018-09-07T08:07:08Z beach: Mine too, I guess. 2018-09-07T08:07:15Z no-defun-allowed: ohm = resistance 2018-09-07T08:07:35Z aeth: Someone needs to make a programming language where loops are *real* 2018-09-07T08:07:37Z no-defun-allowed: "the resistance of LOOP is implementation dependent" 2018-09-07T08:08:12Z shka_: aeth: actually, this was already done 2018-09-07T08:08:26Z dim: aeth: I thought CL loop was that? 2018-09-07T08:08:41Z shka_: aeth: https://esolangs.org/wiki/Rail 2018-09-07T08:08:43Z shka_: :P 2018-09-07T08:08:48Z dim: I mean when I first read the docs/introduction about loop, I was in awe 2018-09-07T08:09:10Z aeth: shka_: Did someone port Ruby to that? 2018-09-07T08:09:20Z shka_: haha, not yet! 2018-09-07T08:09:21Z no-defun-allowed: someone said loops happen when your language doesn't have good recursion 2018-09-07T08:10:21Z beach: That someone was wrong. 2018-09-07T08:10:42Z beach: I guess anybody is allowed to say anything these days. 2018-09-07T08:10:51Z shka_: shrdlu68: anyway, please also send me some test file 2018-09-07T08:10:51Z beach: Too bad people tend to believe just anybody as well. 2018-09-07T08:11:08Z shka_: i don't have will to figure out what format you are using 2018-09-07T08:11:09Z shrdlu68: shka_: Here: https://gist.github.com/shrdlu68/081a78c6196b676395ca518a268d9119#file-text-bmp 2018-09-07T08:11:17Z shka_: shrdlu68: great! 2018-09-07T08:11:51Z shka_: shrdlu68: i think that this is output from sbcl-sprof 2018-09-07T08:11:57Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T08:12:00Z dim: beach: “don't believe everyting you can read on the internet”, as said Socrate 2018-09-07T08:12:13Z shrdlu68: shka_: There's a text.bmp file, scroll down 2018-09-07T08:12:20Z beach: dim: Right, of course he said that. 2018-09-07T08:12:36Z shrdlu68: shka_: https://gist.githubusercontent.com/shrdlu68/081a78c6196b676395ca518a268d9119/raw/44812d09545018ca4e258a3a23e92cc4a7d6d167/text.bmp 2018-09-07T08:12:46Z shka_: shrdlu68: you are right, thanks 2018-09-07T08:13:16Z shka_: shrdlu68: i will tackle this in the evening 2018-09-07T08:13:28Z shrdlu68: shka_: There is no format, you can pass any (small) file to that function. Thanks! 2018-09-07T08:14:58Z no-defun-allowed: actually, i quite agree with that statement, beach 2018-09-07T08:15:15Z no-defun-allowed: from recursion you can build map(car), ranges and quite a lot of useful structures 2018-09-07T08:15:33Z no-defun-allowed: admittedly it's not digital transistor-machine friendly but it's still a very pleasent system 2018-09-07T08:17:01Z beach: no-defun-allowed: It sounds like something a CS theoretician would say, i.e. someone who has never programmed anything significant in his or her entire life, and who also doesn't intend to. 2018-09-07T08:17:22Z beach: no-defun-allowed: I have way too many colleagues like that. 2018-09-07T08:17:30Z no-defun-allowed: cool, i'm a cs theoretician now 2018-09-07T08:18:01Z beach: no-defun-allowed: You just reversed the implication arrow, so, no, you are not sufficiently into theory. 2018-09-07T08:18:09Z no-defun-allowed: good point 2018-09-07T08:18:26Z no-defun-allowed: haha 2018-09-07T08:19:17Z glv joined #lisp 2018-09-07T08:20:04Z no-defun-allowed: theory sounds more exciting than actual code though 2018-09-07T08:23:33Z zfree joined #lisp 2018-09-07T08:25:05Z aeth: If theory is more exciting than code, then you need to find something more exciting to code. 2018-09-07T08:25:08Z pierpal joined #lisp 2018-09-07T08:25:09Z housel quit (Read error: Connection reset by peer) 2018-09-07T08:26:34Z no-defun-allowed: maybe 2018-09-07T08:26:34Z beach: no-defun-allowed: It is especially a much simpler activity to exercise. 2018-09-07T08:28:49Z shka_: beach: i guess this depends 2018-09-07T08:29:21Z shka_: neural network practicians seriouly could use some solid theory 2018-09-07T08:29:22Z beach: Of course. It's a generalization. 2018-09-07T08:30:54Z no-defun-allowed: i guess i'm just bored of writing programs that read two numbers and print out the sum for class 2018-09-07T08:33:23Z jlarocco quit (Ping timeout: 245 seconds) 2018-09-07T08:39:34Z flip214: no-defun-allowed: don't know whether someone told you that already, but get a few good books and work through them. SICP, PAIP, LoL (both ;) 2018-09-07T08:40:17Z no-defun-allowed: alright 2018-09-07T08:41:02Z pierpal quit (Quit: Poof) 2018-09-07T08:41:03Z flip214: I'm aware that (the classical) SICP does Scheme - but translating all that into CL is a good exercise. At least I enjoyed it. 2018-09-07T08:41:17Z pierpal joined #lisp 2018-09-07T08:41:20Z zfree quit (Quit: zfree) 2018-09-07T08:44:19Z beach: The other way around would be much harder. 2018-09-07T08:48:03Z no-defun-allowed: it wouldn't be that hard, people try to do it in non-lisps 2018-09-07T08:48:24Z no-defun-allowed: [observe](https://pedrokroger.net/sicp-python-1-1-elements-programming/) 2018-09-07T08:48:58Z no-defun-allowed: they'll fall over in chapter 2 i'm sure 2018-09-07T08:50:59Z beach: no-defun-allowed: The other thing you can do is to start working on some of my "suggested programming projects". Then you can expose your code for remarks. http://metamodular.com/Common-Lisp/suggested-projects.html 2018-09-07T08:51:32Z orivej joined #lisp 2018-09-07T08:52:33Z no-defun-allowed: that's a lot of projects 2018-09-07T08:52:43Z beach: You only have to do one. 2018-09-07T08:53:12Z beach: But they all need to be done I think. Plus a lot more. 2018-09-07T08:54:46Z no-defun-allowed: those look too hard actually 2018-09-07T08:55:12Z beach: Oh, OK. Too bad. 2018-09-07T08:55:39Z shka_: eh, i should get back to my graphviz clone 2018-09-07T08:55:52Z SenasOzys joined #lisp 2018-09-07T08:55:54Z no-defun-allowed: :c 2018-09-07T08:56:02Z shka_: it is not that hard 2018-09-07T08:56:09Z shka_: but kinda boring ;-) 2018-09-07T08:56:43Z SenasOzys quit (Remote host closed the connection) 2018-09-07T08:57:50Z SenasOzys joined #lisp 2018-09-07T09:04:35Z SenasOzys quit (Ping timeout: 244 seconds) 2018-09-07T09:06:07Z SenasOzys joined #lisp 2018-09-07T09:06:40Z SenasOzys quit (Remote host closed the connection) 2018-09-07T09:11:40Z yangby quit (Quit: Go out for a walk and buy a drink.) 2018-09-07T09:18:12Z troydm quit (Ping timeout: 252 seconds) 2018-09-07T09:19:35Z Demosthenex: hrm. can postmodern dao objects have foreign keys? 2018-09-07T09:28:21Z kushal quit (Ping timeout: 256 seconds) 2018-09-07T09:29:21Z kushal joined #lisp 2018-09-07T09:30:18Z SenasOzys joined #lisp 2018-09-07T09:41:22Z wigust joined #lisp 2018-09-07T09:48:17Z glv quit (Quit: Leaving) 2018-09-07T09:49:31Z m00natic joined #lisp 2018-09-07T09:52:09Z steiner quit (Remote host closed the connection) 2018-09-07T09:55:16Z troydm joined #lisp 2018-09-07T09:59:59Z shangul joined #lisp 2018-09-07T10:03:47Z dim: beach: I keep thinking it would be awesome to have some infrastructure level software written in Lisp that would target production environments... on the level of a DNS server, (HTTP) proxy, something that you deploy and trust in the background 2018-09-07T10:04:34Z troydm quit (Ping timeout: 240 seconds) 2018-09-07T10:04:52Z shrdlu68: dim: Me too! 2018-09-07T10:05:51Z dim: an example would be pgbouncer, which has some limitations that are hard to overcome because it's complex to do in C, but my take is that it wouldn't be too hard in CL 2018-09-07T10:06:27Z dim: https://pgbouncer.github.io is a proxy for PostgreSQL, and in "transaction mode" it doesn't know how to handle protocol-level prepared statements 2018-09-07T10:06:47Z dim: those need a 2-level indirection mapping data structure, dynamic 2018-09-07T10:07:08Z dim: having a pgbouncer on steroids would be quite something 2018-09-07T10:07:18Z shka_: oh, this really sounds like job for CL 2018-09-07T10:07:45Z dim: it does, right? 2018-09-07T10:08:22Z dim: also most of the PostgreSQL protocol is already implemented in Postmodern, and is quite well documented in the PostgreSQL docs themselves, and has been implemented in many other programming languages before 2018-09-07T10:08:42Z dim: (already *partially* implemented in Postmodern) 2018-09-07T10:08:47Z ym quit (Quit: Leaving) 2018-09-07T10:10:43Z shka_: right 2018-09-07T10:11:02Z shka_: well, i use both lisp, pg and postmodern daily 2018-09-07T10:11:09Z shka_: but i have just one user 2018-09-07T10:11:11Z shka_: ME :D 2018-09-07T10:11:51Z no-defun-allowed: you're your own worst enemy 2018-09-07T10:12:18Z dim: shka_: well do you have a single connection at a time? 2018-09-07T10:12:22Z shka_: i am but that's not releated :-) 2018-09-07T10:12:26Z shka_: dim: exactly 2018-09-07T10:12:32Z doubledup joined #lisp 2018-09-07T10:12:33Z shka_: just one 2018-09-07T10:12:44Z shka_: but i was looking at manardb 2018-09-07T10:12:59Z shka_: i think that it may improve my setup 2018-09-07T10:13:05Z dim: in typical web based situations I've seen pgbouncer in transaction mode reduce client connections from 600 (client side) to 4 (PostgreSQL side), which is quite impressive 2018-09-07T10:13:33Z shka_: yeah, certainly can see how it is usefull 2018-09-07T10:18:08Z dim: then if you have time and want a project to hack on, either you shka_ or no-defun-allowed, have a look at pgcharts too: https://github.com/dimitri/pgcharts 2018-09-07T10:18:34Z dim: it needs some Javascript foo and some lisp fixes too, and I don't have enough time in my hands to work on it 2018-09-07T10:18:45Z no-defun-allowed: what do the charts mean? 2018-09-07T10:18:55Z shka_: oooh 2018-09-07T10:19:02Z no-defun-allowed: are they just sql visualisations? 2018-09-07T10:19:03Z shka_: dim: i like it! 2018-09-07T10:19:07Z dim: how do you mean? 2018-09-07T10:19:16Z shka_: i will check it out 2018-09-07T10:19:25Z dim: as in the name of the project, or a specific chart you saw on the website? 2018-09-07T10:19:31Z no-defun-allowed: it's very cool 2018-09-07T10:20:31Z dim: thanks guys! yeah the charts are the visual results of the SQL queries 2018-09-07T10:21:25Z dim: in my head when done the project is awesome and allows to share documents with the other people in your company, maybe Marketing people etc, and you can save the result of a query in a doc or make it dynamic 2018-09-07T10:22:08Z dim: also ala notebook (Jupyter) I'd like it if embedded queries in docs would be easi to edit and run again, and you see the result updated 2018-09-07T10:22:27Z dim: well anyway 2018-09-07T10:23:21Z shka_: dim: this sounds really neat 2018-09-07T10:23:56Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-07T10:23:57Z dim: inspiration from https://zeppelin.apache.org and https://superset.incubator.apache.org/sqllab.html 2018-09-07T10:24:00Z steiner joined #lisp 2018-09-07T10:24:40Z shka_: sadly, zeppelin is resource hog, though 2018-09-07T10:24:44Z igemnace quit (Quit: WeeChat 2.2) 2018-09-07T10:25:56Z Shinmera: no-defun-allowed: I'm always open to more contributors, so if you think one of my projects is interesting, I'd be willing to offer help and guidance. 2018-09-07T10:26:14Z no-defun-allowed: alright thanks 2018-09-07T10:26:22Z dim: if you guys have some time and are bored, another easy project is https://github.com/dimitri/pgloader/issues/782#issuecomment-397758567 2018-09-07T10:28:15Z dddddd joined #lisp 2018-09-07T10:29:06Z dim: QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION attempting to load data from mysql 8.0.4-rc 2018-09-07T10:29:06Z dim: adding the new authentication method from MySQL in the CL driver 2018-09-07T10:29:06Z dim: no-defun-allowed: that might be a small enough hack for you to play with, really 2018-09-07T10:29:07Z dim quit (Quit: ZNC - http://znc.sourceforge.net) 2018-09-07T10:29:24Z ebrasca quit (Remote host closed the connection) 2018-09-07T10:29:50Z dim joined #lisp 2018-09-07T10:29:58Z no-defun-allowed: hmm ok 2018-09-07T10:33:03Z Bronsa quit (Remote host closed the connection) 2018-09-07T10:44:06Z xristos joined #lisp 2018-09-07T10:46:05Z fikka joined #lisp 2018-09-07T10:51:34Z jochens quit (Ping timeout: 240 seconds) 2018-09-07T10:57:20Z makomo joined #lisp 2018-09-07T11:01:50Z doubledup quit (Quit: Leaving) 2018-09-07T11:07:17Z AeroNotix: clhs function forms 2018-09-07T11:08:37Z AeroNotix: dim: not lisp but: https://github.com/ankane/dexter 2018-09-07T11:11:13Z phoe: I have a foreign pointer and a length. Can I somehow access that memory as if it was a Lisp array without copying? 2018-09-07T11:11:26Z phoe: Or am I stuck with CFFI's mem-aref? 2018-09-07T11:13:10Z fe[nl]ix: the latter 2018-09-07T11:13:33Z phoe: welp - fine, then 2018-09-07T11:14:01Z sword joined #lisp 2018-09-07T11:15:31Z kooga joined #lisp 2018-09-07T11:22:35Z pierpal quit (Quit: Poof) 2018-09-07T11:22:44Z zerobaud joined #lisp 2018-09-07T11:22:55Z pierpal joined #lisp 2018-09-07T11:24:01Z zerobaud: I want to learn lisp, I am getting completely crazy by writing boilerplate in any language, I want to exploit metaprogramming. I know PHP,C,ASM,JS,Python and they all suck in their own ways.... 2018-09-07T11:24:06Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T11:24:09Z zerobaud: Which (modern) lisp dialect should I start with? 2018-09-07T11:24:29Z zerobaud: I dont mind parenthesis, I want it for metaprogramming. I also want it to be compiled to assembly 2018-09-07T11:24:38Z zerobaud: No virtual machine bytecode type of things. 2018-09-07T11:25:08Z shrdlu68: zerobaud: We heartily recommend Common Lisp. 2018-09-07T11:28:57Z zerobaud: alrighty then, now I usually program with a text editor, is this okay for lisp? and what compiler do you recommend? my platform is linux 2018-09-07T11:29:09Z zerobaud: s/text editor/vim 2018-09-07T11:29:38Z AeroNotix: vim will work fine for CL 2018-09-07T11:31:48Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-07T11:31:55Z shrdlu68: zerobaud: http://www.sbcl.org/ 2018-09-07T11:36:08Z dim: zerobaud: read PCL to get started, I think (http://www.gigamonkeys.com/book/) 2018-09-07T11:37:06Z Lycurgus joined #lisp 2018-09-07T11:37:25Z zerobaud: Thanks guys, got everything I need now! 2018-09-07T11:39:22Z fikka joined #lisp 2018-09-07T11:45:00Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T11:45:44Z pierpal quit (Quit: Poof) 2018-09-07T11:46:01Z pierpal joined #lisp 2018-09-07T11:52:59Z shka_: zerobaud: most of people here use emacs, if you want to turn emacs into vim quickly take a look at the spacemacs 2018-09-07T11:53:31Z zerobaud: yeah shka_, I can understand why you people us emacs... its written in lisp itself and stuff 2018-09-07T11:53:35Z nbunjeva3 joined #lisp 2018-09-07T11:53:41Z zerobaud: I dont know... emacs is a great OS but its still lacking a good text editor ^^ 2018-09-07T11:53:42Z rumbler31 joined #lisp 2018-09-07T11:53:57Z shka_: anyway, do you guys think that it is possible to have something on par with slime in nvim nowdays? 2018-09-07T11:54:06Z j`ey: there is vlime 2018-09-07T11:54:14Z shka_: how good it is? 2018-09-07T11:54:14Z j`ey: I installed it, but haven't worked it out yet 2018-09-07T11:54:19Z shka_: ok 2018-09-07T11:55:54Z gypsydave5 joined #lisp 2018-09-07T11:57:02Z nbunjevac quit (Ping timeout: 272 seconds) 2018-09-07T11:59:45Z fikka joined #lisp 2018-09-07T12:01:56Z ym joined #lisp 2018-09-07T12:04:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-07T12:20:06Z fikka joined #lisp 2018-09-07T12:20:50Z TheWizard joined #lisp 2018-09-07T12:21:37Z random-nickname joined #lisp 2018-09-07T12:22:36Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T12:23:33Z flip214: j`ey: shka_: I'm maintaining a few patches on top of the "official" vlime at https://github.com/phmarek/vlime 2018-09-07T12:23:50Z flip214: zerobaud: ^^ 2018-09-07T12:24:09Z flip214: patches, comments, help is welcome, of course. 2018-09-07T12:24:45Z TheWizard quit (Quit: Leaving) 2018-09-07T12:26:26Z LiamH joined #lisp 2018-09-07T12:27:29Z TheWizard joined #lisp 2018-09-07T12:28:28Z AeroNotix: I'm looking for a state machine tester akin to PropEr's statem testing. Does anything like this exist for CL? Essentially you model transistions between states and the checker works much like a property tester to generate ops against that model. 2018-09-07T12:28:38Z nowhere_man joined #lisp 2018-09-07T12:30:22Z phoe: mfiano: inside pngload, can I first query the PNG file for its width and height, allocate a static-vector, and then tell pngload to load the image into that vector? 2018-09-07T12:30:34Z AeroNotix: There's https://github.com/DalekBaldwin/check-it which is about 10% of what's needed. 2018-09-07T12:30:36Z phoe: mfiano: or, in different words, can pngload load images into static-vectors? 2018-09-07T12:31:27Z phoe: mfiano: oh, I see that it can - wonderful! Thanks 2018-09-07T12:33:52Z jochens joined #lisp 2018-09-07T12:35:32Z Essadon joined #lisp 2018-09-07T12:36:18Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T12:36:24Z steiner quit (Remote host closed the connection) 2018-09-07T12:36:42Z igemnace joined #lisp 2018-09-07T12:37:24Z ym quit (Quit: Leaving) 2018-09-07T12:37:33Z rumbler31 quit (Remote host closed the connection) 2018-09-07T12:38:27Z steiner joined #lisp 2018-09-07T12:45:30Z j`ey: flip214: I should probably read vlime-tutor 2018-09-07T12:45:34Z Chream joined #lisp 2018-09-07T12:46:30Z fikka joined #lisp 2018-09-07T12:46:33Z steiner quit (Remote host closed the connection) 2018-09-07T12:47:09Z flip214: j`ey: might help, yeah ;) 2018-09-07T12:48:21Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-07T12:49:29Z argoneus joined #lisp 2018-09-07T12:53:06Z arbv quit (Quit: ZNC - https://znc.in) 2018-09-07T12:53:26Z arbv joined #lisp 2018-09-07T12:53:42Z makomo quit (Read error: Connection reset by peer) 2018-09-07T12:53:59Z Bike joined #lisp 2018-09-07T12:55:03Z aijony quit (Ping timeout: 245 seconds) 2018-09-07T12:58:02Z steiner joined #lisp 2018-09-07T13:00:16Z reverse_light joined #lisp 2018-09-07T13:03:46Z FreeBirdLjj joined #lisp 2018-09-07T13:04:18Z jkordani joined #lisp 2018-09-07T13:05:26Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-07T13:07:44Z cammey joined #lisp 2018-09-07T13:08:03Z jkordani_ quit (Ping timeout: 252 seconds) 2018-09-07T13:08:34Z Fare quit (Ping timeout: 240 seconds) 2018-09-07T13:08:48Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-07T13:09:09Z beach: dim: Sounds great. If you write a page for those, I'll add them to my "suggested projects". 2018-09-07T13:10:45Z makomo joined #lisp 2018-09-07T13:12:06Z arbv quit (Ping timeout: 252 seconds) 2018-09-07T13:12:55Z zerobaud: I really like the way linux kernel hanldes if(FEATURE(FEATURE_NAME)){}else{} etc... How do they implement this? 2018-09-07T13:13:23Z j`ey: macros/defines? 2018-09-07T13:13:25Z Shinmera: not with common lisp, that's for sure 2018-09-07T13:13:40Z zerobaud: can I just #define FEATUREX and then #define ENABLED(x) x 2018-09-07T13:13:45Z zerobaud: ops 2018-09-07T13:13:47Z zerobaud: wrong channel 2018-09-07T13:13:56Z dlowe: zerobaud: you could try defmacro on *features* 2018-09-07T13:14:08Z zerobaud: yeah sorry, was meant for ##c 2018-09-07T13:14:12Z dlowe: ;) 2018-09-07T13:14:51Z random-nickname is now known as random-nick 2018-09-07T13:15:48Z FreeBirdLjj joined #lisp 2018-09-07T13:16:43Z Chream quit (Ping timeout: 245 seconds) 2018-09-07T13:19:47Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-09-07T13:24:11Z aindilis quit (Remote host closed the connection) 2018-09-07T13:25:47Z aindilis joined #lisp 2018-09-07T13:27:27Z razzy quit (Ping timeout: 240 seconds) 2018-09-07T13:27:41Z Arcaelyx joined #lisp 2018-09-07T13:42:38Z cage_ joined #lisp 2018-09-07T13:42:54Z mindCrime joined #lisp 2018-09-07T13:51:47Z rippa joined #lisp 2018-09-07T13:56:55Z bradcomp joined #lisp 2018-09-07T13:57:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T13:58:28Z housel joined #lisp 2018-09-07T14:03:36Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-07T14:03:39Z kuribas joined #lisp 2018-09-07T14:03:51Z kuribas: what does the n in nconc stand for? 2018-09-07T14:03:53Z fikka joined #lisp 2018-09-07T14:04:13Z bradcomp quit (Ping timeout: 245 seconds) 2018-09-07T14:06:51Z cammey: I believe it's for non-consing, but don't take *my* word for it. 2018-09-07T14:07:00Z gypsydave5 quit (Remote host closed the connection) 2018-09-07T14:08:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T14:08:44Z Shinmera: it means destructive 2018-09-07T14:08:47Z SenasOzys joined #lisp 2018-09-07T14:09:34Z pfdietz: This is a convention that is followed in many places in Common Lisp, but not everywhere (glares at SORT). 2018-09-07T14:09:59Z Bike: stands for non-undestructive 2018-09-07T14:10:09Z beach: Heh! 2018-09-07T14:11:01Z Shinmera: or maybe not-necessary-unless-youre-optimizing 2018-09-07T14:11:56Z steiner quit (Remote host closed the connection) 2018-09-07T14:13:00Z cammey: Yeah, the #\n is for "non-consing". Search for "non-consing" here: http://www.gigamonkeys.com/book/they-called-it-lisp-for-a-reason-list-processing.html 2018-09-07T14:13:45Z fikka joined #lisp 2018-09-07T14:14:07Z kuribas: right, thanks 2018-09-07T14:14:29Z Shinmera: n functions can still cons though 2018-09-07T14:14:46Z Bike: yeah. 2018-09-07T14:14:56Z Shinmera: and pcl is not a spec by any means 2018-09-07T14:15:01Z Bike: they're just allowed to be destructive to avoid it. they don't HAVE to. except nconc i guess. 2018-09-07T14:15:34Z Shinmera: could still cons if you want it to as an implementor :) 2018-09-07T14:16:10Z Shinmera: maybe for Contrarian-CL 2018-09-07T14:18:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T14:18:38Z dyelar quit (Quit: Leaving.) 2018-09-07T14:22:29Z ebrasca joined #lisp 2018-09-07T14:23:22Z Bike: unlike the other n functions, it has a specific destructive algorithm laid out 2018-09-07T14:23:29Z Bike: though i guess the implementation could have it cons just for fun 2018-09-07T14:24:02Z mfiano: and nsubst 2018-09-07T14:24:15Z fikka joined #lisp 2018-09-07T14:27:13Z Fare joined #lisp 2018-09-07T14:27:17Z igemnace quit (Quit: WeeChat 2.2) 2018-09-07T14:27:22Z jochens quit 2018-09-07T14:29:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T14:30:55Z Bike: so it seems. 2018-09-07T14:32:45Z beach: We could compile a set of quizzes. Here is another: What functions are obliged to test the elements in reverse when :FROM-END is given? 2018-09-07T14:33:30Z steiner joined #lisp 2018-09-07T14:33:37Z Shinmera: didn't Xach do something like that once 2018-09-07T14:34:16Z Xach: https://xach.livejournal.com/312567.html 2018-09-07T14:34:34Z beach: Nice! 2018-09-07T14:36:03Z beach: No :from-end though? 2018-09-07T14:42:04Z equwal joined #lisp 2018-09-07T14:43:16Z Fare quit (Ping timeout: 246 seconds) 2018-09-07T14:44:17Z fikka joined #lisp 2018-09-07T14:44:52Z cammey: Hmmmm, is there a typo here?! shouldn't the parenthesized parts in the description be reversed?: http://www.lispworks.com/documentation/lw70/CLHS/Body/f_pos_p.htm 2018-09-07T14:45:55Z cammey: Or "leftmost" and "rightmost" could be swapped. 2018-09-07T14:46:08Z Khisanth quit (Ping timeout: 272 seconds) 2018-09-07T14:46:42Z beach: I believe you are right. 2018-09-07T14:47:36Z cammey: I really thought I was mad for a second. 2018-09-07T14:48:52Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T14:48:58Z cammey: Does someone have a copy of the ANSI spec to see what it says there? 2018-09-07T14:49:31Z dlowe: The hyperspec is, for all intensive purposes, identical to the ANSI spec 2018-09-07T14:49:48Z dlowe: but there definitely are errors in the spec docs 2018-09-07T14:50:06Z cammey: Yeah, thats what worries me. Now there are exactly zero fully conforming implementations... 2018-09-07T14:50:14Z cammey: :P 2018-09-07T14:50:34Z dlowe: https://www.cliki.net/ANSI%20Clarifications%20and%20Errata 2018-09-07T14:54:13Z pierpal quit (Quit: Poof) 2018-09-07T14:54:17Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-07T14:54:33Z pierpal joined #lisp 2018-09-07T14:54:45Z fikka joined #lisp 2018-09-07T14:54:54Z dlowe: I went ahead and added your observation to the cliki page. 2018-09-07T14:55:20Z blackwolf joined #lisp 2018-09-07T14:56:08Z cammey: Thanks :) 2018-09-07T14:59:04Z Khisanth joined #lisp 2018-09-07T15:00:04Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T15:00:06Z Bike: but for lazy purposes they're WAY different 2018-09-07T15:01:20Z shka_: Contrary Lisp 2018-09-07T15:01:39Z shka_: Shinmera: that is really funny to me :D 2018-09-07T15:02:08Z AeroNotix: uhm, I leaked some usocket listeners in my repl. How to find them? 2018-09-07T15:03:10Z dlowe: AeroNotix: The fast path here is to restart your lisp 2018-09-07T15:03:25Z AeroNotix: what's the slow path? 2018-09-07T15:03:28Z shka_: * 2018-09-07T15:03:30Z shka_: ** 2018-09-07T15:03:32Z shka_: *** 2018-09-07T15:03:42Z AeroNotix: shka_: they leaked within a let that returned something else 2018-09-07T15:03:44Z dlowe: check /proc//fd for listeners, then close them 2018-09-07T15:03:50Z dlowe: on linux at least 2018-09-07T15:04:06Z shka_: AeroNotix: eh, that sucks 2018-09-07T15:04:09Z dlowe: no idea what you could do on windows 2018-09-07T15:04:15Z AeroNotix: I'm not on windows 2018-09-07T15:05:00Z fikka joined #lisp 2018-09-07T15:09:19Z dyelar joined #lisp 2018-09-07T15:09:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T15:09:58Z AeroNotix: feckit, did it with gdb manually 2018-09-07T15:11:35Z shka_: well, that works 2018-09-07T15:11:45Z AeroNotix: indeed it does 2018-09-07T15:12:33Z scymtym quit (Ping timeout: 252 seconds) 2018-09-07T15:13:50Z sjl left #lisp 2018-09-07T15:15:14Z asarch joined #lisp 2018-09-07T15:15:23Z fikka joined #lisp 2018-09-07T15:16:59Z warweasle joined #lisp 2018-09-07T15:18:50Z robotoad joined #lisp 2018-09-07T15:20:12Z fikka quit (Ping timeout: 244 seconds) 2018-09-07T15:21:38Z pierpal quit (Read error: Connection reset by peer) 2018-09-07T15:22:21Z eschulte joined #lisp 2018-09-07T15:22:35Z jkordani: AeroNotix: how did you do that? 2018-09-07T15:23:19Z AeroNotix: jkordani: found the file descriptors with lsof, connected to the sbcl process with gdb and ran `p (int) close($FD)` 2018-09-07T15:23:43Z jkordani: slick 2018-09-07T15:24:40Z eschulte: Question on `match' from trivia. Can I match (e.g., with "(type string)") something in a condition *and* bind it to a variable for use in the clauses body? 2018-09-07T15:24:46Z shangul quit (Ping timeout: 272 seconds) 2018-09-07T15:25:18Z fikka joined #lisp 2018-09-07T15:28:23Z scymtym joined #lisp 2018-09-07T15:30:01Z fikka quit (Ping timeout: 244 seconds) 2018-09-07T15:39:49Z m00natic quit (Read error: Connection reset by peer) 2018-09-07T15:41:24Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T15:42:45Z m00natic joined #lisp 2018-09-07T15:45:35Z fikka joined #lisp 2018-09-07T15:49:03Z nika joined #lisp 2018-09-07T15:49:17Z gpiero quit (Remote host closed the connection) 2018-09-07T15:50:28Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T15:50:42Z k-hos quit (Read error: Connection reset by peer) 2018-09-07T15:51:27Z Fare joined #lisp 2018-09-07T15:53:51Z eschulte: I guess guard does this, but the syntax feels clunky 2018-09-07T15:55:36Z MoziM joined #lisp 2018-09-07T15:55:46Z MoziM left #lisp 2018-09-07T15:55:48Z Arcaelyx joined #lisp 2018-09-07T15:56:00Z fikka joined #lisp 2018-09-07T15:56:36Z fikka quit (Read error: Connection reset by peer) 2018-09-07T15:58:16Z k-hos joined #lisp 2018-09-07T15:59:16Z steiner left #lisp 2018-09-07T15:59:23Z shrdlu68 quit (Quit: WeeChat 2.0.1) 2018-09-07T15:59:40Z dale_ joined #lisp 2018-09-07T16:00:00Z dale_ is now known as dale 2018-09-07T16:00:38Z kuribas quit (Remote host closed the connection) 2018-09-07T16:01:07Z FreeBirdLjj joined #lisp 2018-09-07T16:05:28Z FreeBirdLjj quit (Ping timeout: 245 seconds) 2018-09-07T16:05:39Z jlarocco joined #lisp 2018-09-07T16:06:20Z fikka joined #lisp 2018-09-07T16:10:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T16:16:21Z TSA66 joined #lisp 2018-09-07T16:16:45Z fikka joined #lisp 2018-09-07T16:19:47Z jkordani_ joined #lisp 2018-09-07T16:21:06Z nbunjeva3 quit (Ping timeout: 252 seconds) 2018-09-07T16:21:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T16:22:43Z Fare quit (Ping timeout: 244 seconds) 2018-09-07T16:23:23Z jkordani quit (Ping timeout: 245 seconds) 2018-09-07T16:24:57Z Inline joined #lisp 2018-09-07T16:25:57Z Inline quit (Read error: Connection reset by peer) 2018-09-07T16:26:50Z fikka joined #lisp 2018-09-07T16:26:57Z Inline joined #lisp 2018-09-07T16:27:50Z Inline quit (Read error: Connection reset by peer) 2018-09-07T16:28:19Z Inline joined #lisp 2018-09-07T16:31:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T16:33:10Z TSA66: Hi all. Looking for help constructing a (define-condition x ...) along with (if ... (error x ...) exception handling pattern 2018-09-07T16:33:34Z steiner joined #lisp 2018-09-07T16:33:56Z fouric: zerobaud: as a former ("pure-")vim user, i _highly_ recommend spacemacs 2018-09-07T16:34:17Z fouric: it took me i think less than a day do get comfortably productive in it - 95% of the keybindings just work out of the box 2018-09-07T16:34:47Z Bike: TSA66: what do you need help with? 2018-09-07T16:34:47Z Xach: TSA66: what's up? 2018-09-07T16:35:19Z fouric: and there are equivalent elisp extensions for the most common vim scripts. also, you get SLIME/Sly, which are (1) generally better-tested and more feature-complete than VLIME because (2) more people use them 2018-09-07T16:35:27Z russellw: Terminology question: I want to say stuff like #+ is called special syntax, but then I also kind of feel like if/lambda/defun etc should also be called special syntax. What are the proper terms in each case? 2018-09-07T16:36:26Z TSA66: Using CCL on macOS. The define-condition part is pretty simple. But in the function where the error is being thrown, I'm getting "Unbound variable: ERROR". 2018-09-07T16:36:29Z Bike: eh, i guess #+ is like, textual or reader or character syntax, whereas "defun's first parameter is an unevaluated symbol name" is form syntax 2018-09-07T16:36:42Z Bike: TSA66: could you paste code for that function? 2018-09-07T16:36:45Z fikka joined #lisp 2018-09-07T16:37:09Z TSA66: I'm trying to trigger the condition as part of a (cond ((a) (b) (error x)) construct 2018-09-07T16:37:54Z TSA66: Bike: Here it is: (define-condition unknown-or-missing-target-type (error) 2018-09-07T16:37:55Z TSA66: ;; list of arguments, can be "()". 2018-09-07T16:37:57Z TSA66: ((target_type :initarg :message 2018-09-07T16:37:59Z TSA66: :reader target_type)) 2018-09-07T16:38:01Z beach: Not here 2018-09-07T16:38:01Z TSA66: ;; class arguments 2018-09-07T16:38:03Z TSA66: (:report (lambda (c s) (format s "unknown or missing option: ~s" (target_type c)))) 2018-09-07T16:38:05Z TSA66: (:documentation "This condition is thrown with the target type is unknown or missing.")) 2018-09-07T16:38:11Z beach: TSA66: On a pastebin site. 2018-09-07T16:38:12Z Bike: please use a pastebin service for pastes of more than one line 2018-09-07T16:38:19Z TSA66: SORRY !!! 2018-09-07T16:38:33Z Bike: and i'm interested in the function, not that definition (though it looks fine, cursorily) 2018-09-07T16:38:58Z Bike: stylewise it's "signaled" rather than "thrown", and you'd have target-type instead of target_type, but it's not a huge deal 2018-09-07T16:39:07Z Bike: "signaled when" even 2018-09-07T16:40:41Z TSA66: Bike: https://pastebin.com/PLHrKjhs 2018-09-07T16:41:06Z Bike: i see, you wrote the cond wrong 2018-09-07T16:41:22Z Bike: is the error supposed to be the default condition, if neither of the string=s are true? 2018-09-07T16:41:23Z pfdietz: (t (error ...)) for last clause 2018-09-07T16:41:34Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T16:41:37Z TSA66: Yes 2018-09-07T16:41:54Z Bike: yeah, the cond syntax is (cond (condition ...body) ...), so the first thing is the condition 2018-09-07T16:42:04Z Bike: in your case it takes ERROR to be a variable, which is why you get that error 2018-09-07T16:42:17Z TSA66: So silly. Thanks for the extra set of eyes. 2018-09-07T16:42:26Z Bike: no problem 2018-09-07T16:42:27Z pfdietz: You could also write ((error ...)) I guess. 2018-09-07T16:42:41Z beach: I would not encourage that. 2018-09-07T16:42:50Z pfdietz: No, it would not be idiomatic. 2018-09-07T16:42:53Z TSA66: I agree ... better to be explicit 2018-09-07T16:45:27Z TSA66: @Bike: @beach: @pfdietz: Thanks for your help. Got it working. 2018-09-07T16:45:55Z beach: Congratulations! 2018-09-07T16:47:15Z fikka joined #lisp 2018-09-07T16:47:51Z steiner quit (Remote host closed the connection) 2018-09-07T16:48:06Z TSA66 quit (Quit: WeeChat 2.2) 2018-09-07T16:48:33Z orivej quit (Ping timeout: 244 seconds) 2018-09-07T16:49:29Z steiner joined #lisp 2018-09-07T16:49:39Z phao joined #lisp 2018-09-07T16:50:09Z phao: Hi. Is there some sort of "low level lisp" in which you have lisp syntax, macros and some lisp-like things but for low level programming? 2018-09-07T16:51:26Z Fare joined #lisp 2018-09-07T16:51:47Z jlarocco quit (Ping timeout: 240 seconds) 2018-09-07T16:51:57Z beach: phao: This channel is dedicated to Common Lisp, which is pretty good with low-level programming, but I guess that depends on what you want to do. 2018-09-07T16:52:10Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T16:52:31Z m00natic quit (Remote host closed the connection) 2018-09-07T16:52:53Z phao: beach, thanks 2018-09-07T16:53:06Z phao: I was asking just out of curiosity. I have no specific use in mind. 2018-09-07T16:53:18Z beach: Hmm, OK. 2018-09-07T16:54:01Z beach: phao: People write operating systems in Common Lisp for instance. 2018-09-07T16:54:12Z phao: I see. 2018-09-07T16:55:20Z cammey quit (Ping timeout: 272 seconds) 2018-09-07T16:56:32Z Xach: rob warnock had some examples showing that if you can peek and poke, you can do pretty much what you want. 2018-09-07T16:57:17Z beach: And I believe that's what froggey is doing for the garbage collector. 2018-09-07T16:57:22Z beach: ... in Mezzano. 2018-09-07T16:58:11Z Lycurgus quit (Quit: Exeunt) 2018-09-07T16:58:49Z beach: phao: A garbage collector is a typical "low-level" thing, and froggey wrote the one for his Mezzano operating system in Common Lisp. Not in totally standard Common Lisp, of course, but he added primitives for accessing memory by address. 2018-09-07T16:59:10Z phao: Ok. 2018-09-07T16:59:42Z beach: phao: Do you have some planned project? 2018-09-07T16:59:46Z Fare quit (Ping timeout: 272 seconds) 2018-09-07T17:00:52Z phao: Nothing concrete. It was just out of curiosity really. I wanted just to see if there were people using lisp for low level programming and the sort of things they were doing, the kinds of results they were getting, etc. 2018-09-07T17:01:36Z beach: I see. 2018-09-07T17:06:25Z Jesin quit (Quit: Leaving) 2018-09-07T17:06:52Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T17:07:40Z fikka joined #lisp 2018-09-07T17:08:38Z beach: Interestingly, pretty much the entire object system can be written on top of only STANDARD-INSTANCE-ACCESS and (SETF STANDARD-INSTANCE-ACCESS). 2018-09-07T17:08:56Z beach: Those are just a step above PEEK and POKE. 2018-09-07T17:09:52Z beach: You need some bootstrapping code as well, of course, but those are the only "low-level" functions you need. Well, CLASS-OF as well perhaps. 2018-09-07T17:12:19Z fikka quit (Ping timeout: 244 seconds) 2018-09-07T17:12:42Z Jessin joined #lisp 2018-09-07T17:13:38Z beach: I wonder whether they introduced a GC in Firefox at some point. I recently updated it, and it behaves as if there is suddenly a really bad GC algorithm in it with very long pauses. 2018-09-07T17:14:21Z beach: If so, it would be a fantastic example of Greenspunning. 2018-09-07T17:14:40Z Arcaelyx joined #lisp 2018-09-07T17:19:06Z gpiero joined #lisp 2018-09-07T17:21:16Z flip214: beach: FF has had a GC since the beginning, IIRC. 2018-09-07T17:21:33Z beach: Hmm. 2018-09-07T17:21:39Z flip214: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection 2018-09-07T17:22:16Z beach: Thanks. 2018-09-07T17:22:44Z flip214: beach: also see about:memory 2018-09-07T17:22:52Z beach: good idea. 2018-09-07T17:22:55Z flip214: hmm, quite a lot of things here... 2018-09-07T17:22:58Z flip214: https://developer.mozilla.org/de/docs/Mozilla/Firefox/The_about_protocol 2018-09-07T17:23:13Z beach: What is the main code base written in ? 2018-09-07T17:23:43Z Bike: you also need something to actually allocate the instance, don't you 2018-09-07T17:24:04Z beach: Bike: True. ALLOCATE-INSTANCE. 2018-09-07T17:25:23Z Bike: i think standard-instance-access plus setf, class-of plus some kind of setf, and an %allocate-instance that took the number of slots would probably be it. that's how the implementation with vectors in amop works, if i remember rightly 2018-09-07T17:25:42Z pierpal joined #lisp 2018-09-07T17:27:21Z beach: Sounds right. 2018-09-07T17:27:26Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-07T17:27:32Z lavaflow_ joined #lisp 2018-09-07T17:27:58Z fikka joined #lisp 2018-09-07T17:30:50Z terpri joined #lisp 2018-09-07T17:32:00Z kajo joined #lisp 2018-09-07T17:32:04Z equwal quit (Ping timeout: 272 seconds) 2018-09-07T17:32:13Z beach: The question by phao was not very detailed, so it is hard to be more precise. 2018-09-07T17:33:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T17:33:11Z beach: Sometimes people come here with some similar questions, but more like "My colleagues told me not to even bother with Lisp because you can't do low-level programming it. Are they right?" 2018-09-07T17:33:54Z dlowe: and then they go on with "man, nodejs is the best thing ever" 2018-09-07T17:33:57Z dlowe shrugs. 2018-09-07T17:33:58Z beach: But it could also be "I have this great project that requires some low-level programming. Would you recommend I learn Common Lisp to make it easier to realize this project?" 2018-09-07T17:34:30Z beach: dlowe: I take it you talk from experience? 2018-09-07T17:35:29Z dlowe: beach: yes. 2018-09-07T17:35:47Z beach: :( 2018-09-07T17:41:25Z pjb joined #lisp 2018-09-07T17:44:07Z jkordani joined #lisp 2018-09-07T17:44:21Z flip214: the fewer one knows, the more sure he [sic] is of his opinion... 2018-09-07T17:44:54Z beach: "fewer" or "less"? 2018-09-07T17:45:15Z beach: "fewer" suggests the number of people the person knows. 2018-09-07T17:45:34Z flip214: beach: sorry, you're right, of course. 2018-09-07T17:45:51Z flip214: seems I'm too tired, perhaps I should do less complex things... 2018-09-07T17:46:10Z beach: Welcome to the club. I had a long week and a long day. 2018-09-07T17:46:28Z flip214: so I shouldn't bother you with things I noticed about your GC right now? 2018-09-07T17:46:39Z orivej joined #lisp 2018-09-07T17:46:42Z beach: The positive thing about the day was that my favorite coauthor came over for lunch. 2018-09-07T17:46:52Z beach: Correct, not right now. :) 2018-09-07T17:46:59Z flip214: well, tell me when it's more appropriate then... if I'm awake I might even make a bit of sense ;/ 2018-09-07T17:47:43Z jkordani_ quit (Ping timeout: 246 seconds) 2018-09-07T17:48:03Z beach: In the evening I usually spend time with my (admittedly small) family, but she is in Trump-land right now. Either way, I work from early in the morning, so in the evening I am unable to think straight. 2018-09-07T17:48:18Z fikka joined #lisp 2018-09-07T17:48:27Z beach: Also, before morning coffee is challenging. 2018-09-07T17:48:32Z beach: Otherwise I am fine. 2018-09-07T17:49:09Z flip214: good to hear! I'm looking forward to seeing you next year in Italy -- sadly I don't know any probable earlier chance (yet ;) 2018-09-07T17:49:24Z beach: Aww! 2018-09-07T17:49:33Z flip214: "Also, before morning coffee is challenging", ie. making coffee?? ;) 2018-09-07T17:49:44Z beach: :) 2018-09-07T17:50:34Z beach: We have already have friends of my (admittedly small) family on visit, then heisig and his gf, and soon drmeister and his family. Why would you hesitate? 2018-09-07T17:51:10Z beach: phoe has promised to come visit too, but nothing concrete so far. 2018-09-07T17:51:15Z flip214: I'd very much like to introduce you to my family ... but I'm afraid that we're too big a burden. 2018-09-07T17:51:41Z flip214: of course I could try to come alone.. 2018-09-07T17:51:45Z beach: That depends on how long you stay and what level of service you require. 2018-09-07T17:52:06Z beach: You can have the entire ground floor, but only for a limited period of time. 2018-09-07T17:53:08Z fikka quit (Ping timeout: 244 seconds) 2018-09-07T17:53:22Z beach: Like, if you handle the kitchen and invite me and my (admittedly small) family for meals every day, I would be delighted. 2018-09-07T17:53:35Z flip214: Bordeaux, right? no direct flights, sadly... 2018-09-07T17:53:51Z beach: Oh? 2018-09-07T17:54:05Z LdBeth: Yaki Soba for lunch today 2018-09-07T17:54:15Z beach: flip214: What is your nearest airport? 2018-09-07T17:54:24Z flip214: beach: VIE 2018-09-07T17:54:41Z flip214: and while I'd like to be your cook for some time, any visit needs careful planning - work & family... 2018-09-07T17:54:49Z LdBeth: Good morning 2018-09-07T17:55:01Z beach: flip214: I fully understand. 2018-09-07T17:55:23Z beach: Hello LdBeth. Yakisoba sounds good to me. 2018-09-07T17:55:25Z flip214: ouch, trains need ~ 15 hours. 2018-09-07T17:55:38Z beach: Might as well drive. 2018-09-07T17:56:10Z flip214: the flight, even with a stop, is only ~4.5 hours according to google. and even cheaper than going by train. 2018-09-07T17:56:26Z beach: I can imagine. 2018-09-07T17:56:43Z kooga quit (Quit: :) 2018-09-07T17:57:09Z beach: But hey, take some time off and dive through our beautiful regions on your way. 2018-09-07T17:57:16Z flip214: That 2018-09-07T17:57:47Z flip214: That's quite a big risk you're taking... imagine that I'm taking you up on that offer -- I can't even read what I buy in French supermarkets.... 2018-09-07T17:58:36Z beach: That, we can help with. Fixing three meals a day for 9 people would be beyond our physical capacity, though. 2018-09-07T17:59:12Z flip214: *That* I can fully understand ;) 2018-09-07T17:59:31Z beach: We don't look it, but we are getting old. :( 2018-09-07T17:59:34Z Demosthenex: lost in trumpland... aren't we all. 2018-09-07T18:00:12Z flip214: beach: try to get as old as I'm feeling at some times ;) 2018-09-07T18:00:12Z beach: Demosthenex: My wife tries to stay away, but she has family there. I don't so I do. :) 2018-09-07T18:00:22Z beach: Heh! 2018-09-07T18:00:47Z Demosthenex: as an american living in europe... i'm always apologizing. "oh you speak english, american?" "yes, sorry" 2018-09-07T18:01:18Z beach: Demosthenex: Congratulations. My (admittedly small) family is from Texas and she just loves living in France. 2018-09-07T18:01:26Z Demosthenex: i should start just adding "Eh?" at the end of each sentence, but it's hard to pass off "howdy eh?" as canadian instead of texasn 2018-09-07T18:01:41Z beach: :) 2018-09-07T18:01:51Z Demosthenex: france is great. i'm supremely grateful and humbled to be allowed to live in NL 2018-09-07T18:02:00Z beach: Sure. 2018-09-07T18:02:15Z Demosthenex: if i can retire here for life, i will be tremendously grateful 2018-09-07T18:02:30Z Demosthenex: it's so refreshing to live someplace civilized 2018-09-07T18:02:30Z beach: My (admittedly small) family just did that. :) 2018-09-07T18:02:38Z beach: I totally agree. 2018-09-07T18:03:59Z LdBeth: Too early, the restaurant haven’t open yet 2018-09-07T18:06:31Z Demosthenex: my son got to visit france over the summer, he was thrilled 2018-09-07T18:07:18Z beach: Demosthenex: If you bring your copy of Lisp in Small Pieces to ESL in April, my (admittedly small) family will sign it for you with the pen that she was offered as the "distinguished technical writer" at ILOG (which sold LeLisp). 2018-09-07T18:07:28Z beach: ELS 2018-09-07T18:07:47Z Demosthenex: beach: ha! awesome! 2018-09-07T18:07:51Z Demosthenex: but... i can beat that 2018-09-07T18:08:11Z beach: Bah, how? 2018-09-07T18:08:13Z Demosthenex: i paid a full retail value of ms-office (~$500 usd) for a copy of org-mode. 2018-09-07T18:08:24Z Demosthenex: to the author, and received a cdrom with the files AND a signed manual 2018-09-07T18:08:28Z sukaeto: theory sounds more exciting than actual code though 2018-09-07T18:08:40Z sukaeto: ^ can confirm. In theory, there is no difference between theory and practice 2018-09-07T18:08:47Z sukaeto: in practice, theory is much more fun :-) 2018-09-07T18:08:58Z beach: Demosthenex: ms-office beats Lisp in Small Pieces? Never! 2018-09-07T18:09:00Z fikka joined #lisp 2018-09-07T18:10:05Z Demosthenex: beach: not at all. as an independent consultant i use org-mode for everything. i nearly bought a copy of ms-office for compatibility reasons, and instead just bought excel. i figured i owed the author of org a compensation for the amount of usage i got that was comparable 2018-09-07T18:10:21Z beach: I see. 2018-09-07T18:10:46Z Demosthenex: he thought i was nuts, but i insisted on paying. not for the software, but for a "distribution and shipping" ;] 2018-09-07T18:10:55Z beach: Heh! 2018-09-07T18:11:05Z Demosthenex: gpl allows that 2018-09-07T18:11:12Z Demosthenex: so i have a signed org manual 2018-09-07T18:11:17Z stacksmith: Demosthenex: do you find libre office not compatible enough? 2018-09-07T18:11:51Z beach: Demosthenex: I am willing to bet you will have more fun talking to my (admittedly small) family than to the author ms-office. 2018-09-07T18:11:57Z Demosthenex: stacksmith: absolutely not. i can't stand libreoffice. or openoffice. 2018-09-07T18:12:07Z Demosthenex: stacksmith: not that it's a bad product, it's that i'm not the target market 2018-09-07T18:12:16Z Demosthenex: stacksmith: i'd rather write org/latex and compile my docs any day 2018-09-07T18:12:42Z Demosthenex: stacksmith: as to vs excel, excel was the finest product Ms ever made. they should have stopped there. it was the only product worth paying for, and libre doesn't come close 2018-09-07T18:13:32Z Demosthenex: can you imagine a world where ms made the best spreadsheet, and none of their other crap existed? such a happy dream 2018-09-07T18:13:48Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T18:13:58Z Demosthenex: beach: could be ;] i like to think i'm a humble american looking to learn 2018-09-07T18:14:08Z Demosthenex: teach me the ways of civilized living 2018-09-07T18:14:16Z Demosthenex: gates can suck a lemon 2018-09-07T18:14:22Z pjb: Yes, a world where scientific research has to be redone periodically, because of features of excel. 2018-09-07T18:14:41Z beach: Demosthenex: We have lived here since 1987 and my (admittedly small) family is now a citizen. 2018-09-07T18:14:45Z Demosthenex: pjb: i'm all too aware of how often IT encounters half-assed apps written in excel ;] 2018-09-07T18:14:51Z stacksmith: Demosthenex: interesting. I haven't used it in a decade or more. But then again I almost never use libre either. 2018-09-07T18:15:15Z Demosthenex: pjb: used to work for a company that had to run sales forecasting reports in excel for DAYS on ancient macs because the chairman was an excel guy. 2018-09-07T18:15:30Z Demosthenex: stacksmith: i'm on excel 2003. there's a decade of room ther e;] 2018-09-07T18:15:39Z stacksmith: I just have an absolute ban Microsoft and Google. 2018-09-07T18:15:58Z stacksmith: Second one is much harder. 2018-09-07T18:16:02Z Demosthenex: beach: i'm learning dutch in weekly classes, and hoping to apply for permanent residence or citizenship in a few more years. i'd be so glad 2018-09-07T18:16:07Z Demosthenex: stacksmith: same. 2018-09-07T18:16:20Z Demosthenex: like many consultants, i have to constantly deal with the windoze plague 2018-09-07T18:16:36Z beach: Demosthenex: Good plan. I love the Netherlands and the people living there. 2018-09-07T18:16:36Z tfb joined #lisp 2018-09-07T18:17:04Z Demosthenex: i had a friend at a hospital IT dept... they had a storage array die which took down over 300 windoze VM's... and in the after meeting the unix admin was quoted as saying that "it was a good start". i wish i'd bought him lunch 2018-09-07T18:17:26Z beach: Do it! 2018-09-07T18:17:29Z stacksmith: It's like that lawyer joke. 2018-09-07T18:17:55Z Demosthenex: professionally i 2018-09-07T18:18:13Z aeth: On the earlier topic of "low level lisp", I wonder if immutable arrays solves the array of struct problem. i.e. the array itself is immutable, but not necessarily the object slots for the contained objects, so the compiler is free to optimize for objects that can't change size. (Including structure-objects? Array-level immutability means even inheritance won't matter because allocated as simply foo means they are just a foo!) 2018-09-07T18:18:19Z aeth: Immutable arrays gives you AoS because you want COPY-INTO (already exists as REPLACE for sequences) and not SETF to copy that pattern, anyway. A lot of low-level programmers seem to consider AoS as a necessary feature when they list features and it seems to be the main thing CL doesn't do. This comes up enough that I keep refining this idea. 2018-09-07T18:18:23Z Demosthenex: i'm an uber-consultant on high end unix systems (ibm/aix) for hospitals and banks, but i've been a hobbyist programmer since i was 8 2018-09-07T18:18:52Z stacksmith: How do you get Windows to stop crashing? Install Linux. 2018-09-07T18:18:55Z Demosthenex: i wish i'd learned lisp a few decades ago 2018-09-07T18:19:02Z Demosthenex: stacksmith: it's patch omega. 2018-09-07T18:19:26Z fikka joined #lisp 2018-09-07T18:19:28Z stacksmith: What's the difference between Windows and a bucket of shit? The bucket. 2018-09-07T18:20:05Z stacksmith: Damn! Any lawyer joke just works. 2018-09-07T18:20:08Z Demosthenex: ha! 2018-09-07T18:20:20Z Demosthenex: my current bane is cloud-anything :P 2018-09-07T18:20:28Z Demosthenex: or "ooooh dev ops is shiny" 2018-09-07T18:20:41Z phoe: beach: yes, I'll visit - need to straighten out some things beforehand. 2018-09-07T18:20:43Z phoe: Real life and such. 2018-09-07T18:20:51Z phoe: 2019 is possible.. 2018-09-07T18:21:03Z Demosthenex: beach: the bicycling here is amazing =] 2018-09-07T18:21:04Z stacksmith: Mine is fingerprint analysis. Kind of ruins the web experience. 2018-09-07T18:21:06Z beach: Speaking of "shit", if I can only get my shit together, I will have a bootstrapping paper to submit to ELS 2019 2018-09-07T18:21:28Z banjiewen joined #lisp 2018-09-07T18:21:29Z Demosthenex: stacksmith: that's got to be an interesting field. 2018-09-07T18:21:34Z stacksmith: beach: you have a little time left, no? 2018-09-07T18:22:01Z beach: phoe: Sounds good. I am tired of empty threats, though. :) 2018-09-07T18:22:26Z beach: Demosthenex: flatland? Here too! 2018-09-07T18:23:08Z pierpal quit (Quit: Poof) 2018-09-07T18:23:10Z beach: stacksmith: I take as much time as I need depending on priorities. 2018-09-07T18:23:12Z varjag joined #lisp 2018-09-07T18:23:27Z pierpal joined #lisp 2018-09-07T18:23:32Z beach: stacksmith: Are you thinking of a visit as well? 2018-09-07T18:23:42Z Jessin is now known as Jesin 2018-09-07T18:23:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-07T18:23:52Z Demosthenex: beach: i was a communter cyclist in houston, tx in my college years, which was a huge personal risk. i didn't get a car until after i had kids. the NL cycling infrastructure is a cyclist paradise, i've come home. 2018-09-07T18:24:05Z stacksmith: beach: I missed the beginning of this conversation... Where are we visiting? 2018-09-07T18:24:16Z beach: Demosthenex: Wow! My (admittedly small) family is from Houston! 2018-09-07T18:24:29Z beach: Demosthenex: You have tons of things to talk about. 2018-09-07T18:25:07Z beach: stacksmith: I am located in a city called Bordeaux in a country called France. 2018-09-07T18:25:22Z oni-on-ion: ahh france =) is it bikin g country also ? 2018-09-07T18:25:23Z stacksmith: Demosthenex: houston eh. Did you get any 'get a car, faggot' combined with a beer can lobbed at your head? 2018-09-07T18:25:30Z Demosthenex: stacksmith: yeah. often 2018-09-07T18:25:35Z kristof joined #lisp 2018-09-07T18:25:45Z Demosthenex: stacksmith: but then at stoplights i'd balance on my clips, and take off before corvettes 2018-09-07T18:26:18Z beach: stacksmith: Lots of people visit is. I don't quite know why, because we don't think of ourselves as sociable. I guess it must be the service provided. 2018-09-07T18:26:25Z Demosthenex: stacksmith: the US car addiction is in for a rude awakening. i can't wait for global warming to cause gas prices to soar 2018-09-07T18:26:44Z stacksmith: beach: sounds good. 2018-09-07T18:26:49Z kristof: Is anyone familiar with a way to compile non-local transfer of control to a target with only structured control flow (lexical breaks, etc.) other than passing along the continuation? 2018-09-07T18:26:59Z sauvin quit (Read error: Connection reset by peer) 2018-09-07T18:27:14Z stacksmith: Demosthenex: unless that russian guy is right and the earth's core is all oil. 2018-09-07T18:27:25Z Demosthenex: stacksmith: we'll all just die of heat death then 2018-09-07T18:28:27Z sabrac quit (Ping timeout: 240 seconds) 2018-09-07T18:28:32Z stacksmith: Or drown in oil when we penetrate the upper mantle and pressurized oil comes out. 2018-09-07T18:28:35Z dlowe: kristof: sure, you define a function with a lexical closure describing all its state that returns itself, and on re-invocation, jumps to the proper line of execution 2018-09-07T18:29:18Z fikka joined #lisp 2018-09-07T18:29:36Z kristof: There are no nested functions here, either. 2018-09-07T18:29:45Z jmercouris joined #lisp 2018-09-07T18:29:50Z dlowe: this doesn't depend on nested functions 2018-09-07T18:30:00Z jmercouris: hello everyone :) 2018-09-07T18:30:03Z beach: OK, tomorrow I just *have* to make progress on my SICL bootstrapping. It involves making a special version of MAKE-METHOD-LAMBDA in one phase if the bootstrapping procedure, I imagine. 2018-09-07T18:30:29Z dlowe: kristof: anyway, you just keep a bit of state in whichever data object about where you are in the computation 2018-09-07T18:30:33Z stacksmith: dlowe: that sounds an awful lot like a continuation? 2018-09-07T18:30:39Z beach: But I had a long day and a long week, so I'll work on it tomorrow. 2018-09-07T18:30:40Z jmercouris: beach: I don't want to give advice or anything, but I find it best to avoid using words like "must" or "have" or "should" and instead replace them with terms like "would be nice" 2018-09-07T18:31:02Z jmercouris: this makes it so you don't stress yourself or put pressure on yourself 2018-09-07T18:31:55Z dlowe: stacksmith: sure, without language support 2018-09-07T18:31:56Z fouric: beach: do you have a second to give me a quick summary of SICL's status in general? 2018-09-07T18:32:09Z beach: jmercouris: I am pretty sure I do that deliberately. remember that I am a teacher. I may have done it in some wrong places of course. 2018-09-07T18:32:12Z kristof: dlowe: Can you elaborate further? 2018-09-07T18:32:14Z kristof: if you don't mind 2018-09-07T18:32:38Z beach: fouric: Sure. Give me two minutes to9 prepare... 2018-09-07T18:33:08Z fouric: of course! thanks in advance - i'm interested in the idea of SICL but haven't yet put aside the time to dive into the source and grok it myself 2018-09-07T18:33:24Z maarhart joined #lisp 2018-09-07T18:33:25Z maarhart quit (Excess Flood) 2018-09-07T18:33:45Z maarhart joined #lisp 2018-09-07T18:33:46Z maarhart quit (Excess Flood) 2018-09-07T18:33:57Z fikka quit (Ping timeout: 244 seconds) 2018-09-07T18:34:05Z jmercouris: beach: as you wish :) 2018-09-07T18:34:30Z dlowe: kristof: do you have a more concrete example? 2018-09-07T18:35:01Z kristof: I'm trying to implement catch and throw on web assembly. 2018-09-07T18:35:40Z dlowe: that's a very long way off from common lisp 2018-09-07T18:35:50Z kristof: Is it? 2018-09-07T18:35:59Z kristof: I know drmeister is interested in this :P 2018-09-07T18:36:12Z Bike: they can be common lisp catch and throw 2018-09-07T18:36:50Z kristof: Yes, I meant "I'm trying to figure out how to do common lisp catch and throw on web assembly". I should look at the compilation strategy for exceptions in other languages... 2018-09-07T18:37:18Z dlowe: yeah, I don't think my examples were gonna help. 2018-09-07T18:37:31Z kristof: I thought "just call the continuation" would work but I want to reclaim the stack space used. 2018-09-07T18:37:32Z dlowe: I thought you meant in common lisp 2018-09-07T18:38:10Z beach: fouric: I am all yours. 2018-09-07T18:38:11Z LdBeth: Continuation is just subroutine in lambda calculus 2018-09-07T18:39:37Z kristof: If I can gripe a little: I'm really annoyed that web assembly is a "stack machine", but then adds a few types on top to make the stack heterogenous. This really handicaps the architecture because the stack has to be verified for type correctness. 2018-09-07T18:39:43Z fouric: beach: oh, sorry - i didn't have any specific questions aside from "how complete is SICL as a Common Lisp implementation" and perhaps" how far away is it with competing with e.g. SBCL" 2018-09-07T18:39:46Z beach: jmercouris: I may be wrong of course, since I don't remember all the times I have used those words. 2018-09-07T18:39:54Z LdBeth: And any assembly languages would support subroutine in a very straight way I think 2018-09-07T18:40:08Z fouric: sorry if that's overly broad, again i'm not familiar at all with the project internals 2018-09-07T18:40:09Z beach: fouric: Oh, not to hard to answer... 2018-09-07T18:40:26Z Bike: LdBeth: if you're talking about rewriting all code in continuation passing style, this is not the most efficient strategy 2018-09-07T18:40:39Z Bike: though it would work 2018-09-07T18:40:44Z phoe: beach: no, I seriously want to visit you there. (: I just need a little bit of planning and another bit of luck. 2018-09-07T18:40:57Z jmercouris: phoe: all that one truly wills one can do. 2018-09-07T18:41:04Z beach: fouric: Almost all the code is written. The main remaining blob I finished yesterday (method combinations). 2018-09-07T18:41:05Z kristof: If it was just a stack of "words" (e.g. 32 bit), you could easily do catch-throw by saving the offset on the stack and dropping the difference between the stack pointer and the offset. 2018-09-07T18:41:12Z jmercouris: instead, acknowledge that it is simply not a priority 2018-09-07T18:41:13Z stacksmith: I hate saying it, but if the code is continuation-based, would not something like Racket be more appropriate? 2018-09-07T18:41:16Z LdBeth: Bike (IRC): I see 2018-09-07T18:41:54Z beach: fouric: I don't have an x86-64 backend, but I used to. It needs to be updated. 2018-09-07T18:42:16Z kristof: If you want efficient 64 bit words like longs and double floats, then just define those as "double words" and let the JIT compiler optimize accordingly. They really dropped the ball... 2018-09-07T18:42:17Z beach: phoe: I am joking. 2018-09-07T18:43:04Z kristof: but anyway. stacksmith: I meant continuation as in the compilation strategy, not the control flow construct for user consumption. 2018-09-07T18:43:43Z fouric: beach: excellent, thanks! 2018-09-07T18:43:50Z stacksmith: kristof: how do they mark types on the stack? Now I am curious. 2018-09-07T18:43:52Z beach: fouric: I am not working directly on Cleavir optimizations. Bike and drmeister are more interested in that aspect at the moment, so the level of optimization will still take some time to be able to compete with SBCL. 2018-09-07T18:44:38Z beach: fouric: Cleavir is pretty stable though. There are three current clients: Clasp, SICL, and CLISP. 2018-09-07T18:45:45Z kristof: kristof: The runtime representation of the stack contains no types (that's what the verification stage is for). There are just 32 bit words and 64 bit words. 2018-09-07T18:46:02Z kristof: Well, single and double ints, and single and double floats. 2018-09-07T18:46:46Z fouric: ...a CLISP client? 2018-09-07T18:46:49Z fouric was not expecting that 2018-09-07T18:46:51Z beach: Yep. 2018-09-07T18:46:53Z kristof: Yeah, that also surprised me 2018-09-07T18:47:04Z kristof: I didn't know clisp was still maintained, I thought the last maintainer just disappeared? 2018-09-07T18:47:14Z jmercouris: Clisp is not maintained 2018-09-07T18:47:22Z beach: karlosz had a GSoC project to implement a Cleavir-based compiler for CLISP. 2018-09-07T18:47:29Z kristof: interesting 2018-09-07T18:47:30Z beach: fouric: I am lucky. drmeister is paying Bike to work for me :) 2018-09-07T18:47:34Z drmeister: kristof: webassembly is supposed to get exception handling. Why not work with them? 2018-09-07T18:47:52Z beach: jmercouris: CLISP is maintained. 2018-09-07T18:47:53Z kristof: I want it *now* 2018-09-07T18:48:08Z jmercouris: beach: Judging by the website, the last release was in 2010 2018-09-07T18:48:15Z jmercouris: perhaps we have different definitions of "maintained" 2018-09-07T18:48:27Z kristof: Besides: other languages have exceptions and compile to it just fine so I suppose I should just see what they do. 2018-09-07T18:48:33Z phoe: jmercouris: release, yes, but there have been commits and bugfixes for clisp 2018-09-07T18:48:38Z beach: jmercouris: I don't keep up so I don't know the current website. 2018-09-07T18:49:04Z jmercouris: Why might someone choose CLISP over any other implementation? 2018-09-07T18:49:04Z drmeister: kristof: also my understanding is that the stack is not accessible in web assembly - this precludes me porting our GC and clasp to web assembly. 2018-09-07T18:49:11Z nika quit (Quit: Leaving...) 2018-09-07T18:49:35Z kristof: drmeister: You just write your own stack in linear memory. 2018-09-07T18:49:39Z fikka joined #lisp 2018-09-07T18:49:43Z kristof: Which is what C does 2018-09-07T18:49:43Z beach: jmercouris: Perhaps for the arbitrary-precision floats? 2018-09-07T18:49:57Z kristof: drmeister: Do you have a GC? I thought you just link to Boehm 2018-09-07T18:50:09Z phao quit (Quit: Leaving) 2018-09-07T18:51:31Z kristof: I actually wrote a small lisp-like macro expander for web assembly s expressions so that I could get to work on an interim allocator 2018-09-07T18:51:54Z kristof: but more than one person has said "Ok, now all I have to write is a garbage collector" and never resurfaced from that rabbit hole. 2018-09-07T18:52:08Z jmercouris: beach: do no other implementations support this? no libs to simulate this? 2018-09-07T18:52:22Z beach: I don't know. 2018-09-07T18:52:30Z beach: SBCL does not. 2018-09-07T18:52:59Z jmercouris: I guess it would be a pain if you used a lib to simulate it 2018-09-07T18:53:20Z jmercouris: because in any operations outside of the lib, with any other systems, you'd have to ultimately go down to a base level of precision 2018-09-07T18:53:22Z dlowe: could always make a wrapper for libm yourself 2018-09-07T18:53:22Z beach: jmercouris: So here is my goal: Write an implementation-independent compiler that is so good that most (all?) implementations would use it.l 2018-09-07T18:53:31Z drmeister: We use memory pool system and boehm. When I say “our” I mean that I’m a very loose sense. What does one truly “own”? 2018-09-07T18:53:43Z jmercouris: beach: that's an ambitious goal, I hope you succeed! 2018-09-07T18:54:02Z beach: jmercouris: It has already been done basically. 2018-09-07T18:54:12Z kristof: drmeister: (Only faults and failures are truly owned by oneself) 2018-09-07T18:54:13Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T18:54:22Z jmercouris: beach: well then, let me rephrase, congratulations on your invaluable contribution to the lisp community!!! :) 2018-09-07T18:54:36Z |3b| quit (Quit: k) 2018-09-07T18:54:37Z beach: jmercouris: The question is whether existing implementations will use it. 2018-09-07T18:55:03Z beach: jmercouris: Then, we can free up maintenance resources to use for other Common Lisp projects. 2018-09-07T18:55:07Z nbunjeva1 joined #lisp 2018-09-07T18:55:16Z jmercouris: hopefully one day I can say the same, that I have contributed to the Lisp community through Next by exposing more people to the language 2018-09-07T18:55:31Z beach: jmercouris: Oh, you really need to come to ELS. :) 2018-09-07T18:55:37Z jmercouris: beach: I guess you have to do some marketing :D 2018-09-07T18:55:43Z |3b| joined #lisp 2018-09-07T18:55:51Z drmeister: kristof: and faults and failures are why we have exception handling - now I understand. 2018-09-07T18:56:07Z kristof: drmeister: This is hypocritical given what I just said but there's no good reason to port Boehm to Web Assembly because there is a GC proposal and... it is actually quite good 2018-09-07T18:56:07Z jmercouris: beach: I would really like to, next year I'll have more money as I'll no longer be a student, at least in a full-time academic sense 2018-09-07T18:56:16Z beach: As I frequently say, I don't care if I am the only person using my stuff. 2018-09-07T18:56:38Z Demosthenex: indeed 2018-09-07T18:56:55Z stacksmith: beach: that's pretty good. Most of my stuff - even I don't use! 2018-09-07T18:56:55Z kristof: drmeister: At the very least, the plan is to use tagged pointers. The high bit for fixnum vs pointer, and then double word alignment to give another two bits for tags 2018-09-07T18:57:07Z beach: jmercouris: Do what I told froggey to do. Start a crowd funding site to finance your trip. 2018-09-07T18:57:16Z makomo: hello :-) 2018-09-07T18:57:22Z kristof: (two or three). There's some quibbling over how to do this in an architecture generic way but I've seen the discussions and I trust the person mainly responsible for this proposal 2018-09-07T18:58:22Z beach: stacksmith: I am afraid your utterance was cut off. 2018-09-07T18:58:35Z keppy joined #lisp 2018-09-07T18:59:14Z stacksmith: beach: I was just saying that even I don't use most of my stuff. So one person using it is a lofty goal. 2018-09-07T18:59:58Z beach: Got it. 2018-09-07T19:00:05Z fikka joined #lisp 2018-09-07T19:00:36Z fikka quit (Read error: Connection reset by peer) 2018-09-07T19:00:46Z jsjolen joined #lisp 2018-09-07T19:01:06Z jsjolen: Does anyone on here run Roswell and Ubuntu 18.04? 2018-09-07T19:01:10Z beach: jmercouris: I can promise you I will contribute. 2018-09-07T19:01:16Z Demosthenex: still wish i had a invoicing program that looks like dbase Iv i could use in ssh =] 2018-09-07T19:01:29Z Demosthenex: i've been looking at ncurses stuff, like croatoan just added ncurses support 2018-09-07T19:02:33Z beach: jsjolen: People might be reluctant to answer that unless you have a more specific question or suggestion. 2018-09-07T19:02:59Z phoe: jsjolen: kind of 2018-09-07T19:03:03Z phoe: I run roswell and debian sid 2018-09-07T19:03:08Z phoe: and I guess ubuntu is debian enough 2018-09-07T19:03:16Z beach: jsjolen: "If so, you have just won a 100k€ trip to Madeira" 2018-09-07T19:03:16Z phoe: what do you need support with? 2018-09-07T19:04:01Z jsjolen: beach: True, thanks for telling me :-). 2018-09-07T19:04:02Z beach: phoe: You spoil all the fun. :) 2018-09-07T19:04:38Z phoe: beach: no, I'm trying to win the 100k€ trip (: 2018-09-07T19:04:54Z jsjolen: phoe: Ubuntu 18.04 made a change to libcurl4 (OK, I'm not entirely in on the specifics of that) and it broke some apps for people. For me it broke Roswell, so I wanted to see if someone else is succesfully running it 2018-09-07T19:05:11Z stacksmith: I am 2018-09-07T19:05:21Z jsjolen: (and if they had any issues w/ regards to libcurl) 2018-09-07T19:05:23Z phoe: jsjolen: did you recompile roswell from scratch? 2018-09-07T19:05:28Z beach: phoe: Oh, sorry, I should be quiet. :) 2018-09-07T19:05:33Z phoe: beach: (; 2018-09-07T19:05:43Z phoe: I remember that issue and recompiling with the proper dev headers made it go away. 2018-09-07T19:05:53Z phoe: Something about curl version not being found. 2018-09-07T19:05:57Z stacksmith: Successfully?? that's another story. I am always scratching my head with roswell. 2018-09-07T19:06:12Z Demosthenex: i was looking at it, maybe for dumping executables 2018-09-07T19:06:18Z phoe: stacksmith: all I use roswell for is `ros install sbcl-bin` and `ros run` 2018-09-07T19:06:21Z makomo: beach: it's pretty fun to see how connected the lisp community is -- all these visitations and such :-) 2018-09-07T19:06:26Z phoe: Demosthenex: Shinmera's deploy package is for that 2018-09-07T19:06:34Z phoe: https://github.com/Shinmera/deploy 2018-09-07T19:06:42Z beach: makomo: Yes, it's great! 2018-09-07T19:06:45Z jsjolen: phoe: In the middle of that process actually :-) (also yes, that's exactly the error that I have) 2018-09-07T19:06:51Z stacksmith: phoe: same here. Until I notice things like .sbclrc being ignored and stuff. 2018-09-07T19:07:09Z phoe: stacksmith: ~/.roswell/init.lisp 2018-09-07T19:07:15Z phoe: jsjolen: do that then, it helped me in my case 2018-09-07T19:07:25Z beach: makomo: The central thing is ELS. 2018-09-07T19:07:57Z beach: makomo: Nearly 100 participants every year. 2018-09-07T19:08:43Z makomo: speaking of ELS, the 2018 ELS videos still aren't up :-(. i've read some of the proceeding, but hearing/seeing the real thing is a special feeling, especially if there are interesting questions at the end 2018-09-07T19:08:44Z jsjolen: Alright! Seems like the roswell error has now changed :). 2018-09-07T19:08:47Z kristof: lol. Ok, I looked up how one ocaml fork does exceptions in web assembly 2018-09-07T19:08:55Z makomo: proceedings* 2018-09-07T19:09:01Z a7f4 joined #lisp 2018-09-07T19:09:17Z kristof: they... do it in javascript! So it seems like everyone wants exceptions. 2018-09-07T19:09:25Z beach: makomo: You need to harass the local organizers. 2018-09-07T19:09:56Z makomo: beach: i emailed Didier about it and he said he'll try to put some pressure on the committee but still nothing 2018-09-07T19:10:12Z beach: He is not the local organizer. 2018-09-07T19:10:18Z fikka joined #lisp 2018-09-07T19:10:21Z beach: He is very busy as it is. 2018-09-07T19:10:31Z phoe: jsjolen: what is it? 2018-09-07T19:10:36Z makomo: yeah, true. i'm not sure who the local organizer is though, hmm 2018-09-07T19:10:46Z makomo: i only emailed him because his name was at the bottom of the webpage :-) 2018-09-07T19:11:00Z beach: makomo: Ravenpack 2018-09-07T19:11:19Z jsjolen: phoe: It was an unnecessary error when I tried doing ros setup. Compile error from ECL when compiling SB-GROVEL for some reason. I thought "hey I already have SBCL, what gives?" and tried ros use sbcl, ros run sbcl and bing-bada-boom it worked fine 2018-09-07T19:11:40Z makomo: beach: oh i see. does it say that somewhere on the ELS webpage or? i can't find anything obvious 2018-09-07T19:11:43Z jsjolen: Thanks for the help phoe, stacksmith! 2018-09-07T19:11:49Z phoe: jsjolen: no prob 2018-09-07T19:11:54Z phoe: see you the next time roswell blows up (;\ 2018-09-07T19:12:31Z jsjolen: Hahaha, now you made me feel like a tech support parasite :'(. Which I guess is true, but I have nothing interesting to say anyway :-/ 2018-09-07T19:12:52Z rpg joined #lisp 2018-09-07T19:13:03Z makomo: beach: i guess you can tell by the people listed as "Local Chair"? 2018-09-07T19:14:53Z keppy quit (Remote host closed the connection) 2018-09-07T19:15:47Z phoe: jsjolen: nah, it's perfectly fine 2018-09-07T19:15:56Z phoe: I can't count the times I needed support with roswell 2018-09-07T19:16:11Z phoe: it got much better in the last months but it's still immature software. 2018-09-07T19:16:21Z phoe: needs a year or two more to stabilize 2018-09-07T19:16:28Z graphene quit (Remote host closed the connection) 2018-09-07T19:17:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-07T19:17:33Z jsjolen quit (Remote host closed the connection) 2018-09-07T19:18:03Z graphene joined #lisp 2018-09-07T19:18:21Z beach: makomo: Not sure that that means. 2018-09-07T19:19:09Z makomo: beach: i mean, how can you tell ravenpack is the local organizer just by looking at the website? it's not stated anywhere explicitly 2018-09-07T19:20:19Z makomo: but the two guys that form the "Local Chair" are both from Ravenpack (listed at the beginning of the proceedings), so i guess that's a clue 2018-09-07T19:20:22Z beach: I have no idea. Shinmera is apparently in charge of the website these days. 2018-09-07T19:21:07Z beach: You have a good point though. 2018-09-07T19:21:36Z makomo: thanks for the info though, i'll try emailing them and see what they say :-) 2018-09-07T19:21:52Z beach: I am pretty sure the web site was med for people who were already there. 2018-09-07T19:22:20Z beach: So I see only one solution for 2019... 2018-09-07T19:22:30Z fikka joined #lisp 2018-09-07T19:22:43Z phoe: put the local organizers on quicklisp! 2018-09-07T19:23:00Z nanoz joined #lisp 2018-09-07T19:23:04Z phoe: (ql:quickload :els) (els:organizers) 2018-09-07T19:23:04Z beach: No, be there or be square. 2018-09-07T19:23:28Z graphene quit (Remote host closed the connection) 2018-09-07T19:23:51Z oni-on-ion: =) 2018-09-07T19:24:58Z graphene joined #lisp 2018-09-07T19:25:18Z beach: makomo: You should create a crowd-funding site. I would contribute. 2018-09-07T19:25:20Z makomo: beach: haha :-). well, i'm thinking about it, since it's pretty close 2018-09-07T19:25:39Z jmercouris: beach: maybe I should have, well, next time! 2018-09-07T19:26:02Z makomo: beach: thanks very nice to hear and thank you for the kind offer, but money isn't the problem 2018-09-07T19:26:12Z beach: makomo: Not a joke. Let me know and I will transfer some money. 2018-09-07T19:26:25Z beach: Oh? 2018-09-07T19:26:27Z lavaflow_ quit (Ping timeout: 240 seconds) 2018-09-07T19:26:32Z makomo: there's no problem really, but it'll be my first time at a conference (or going out of country by myself at all) 2018-09-07T19:26:55Z makomo: s/thanks/that's/ 2018-09-07T19:27:08Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T19:27:08Z makomo: beach: you are too kind :-) 2018-09-07T19:27:13Z beach: makomo: It would then be an excellent opportunity. 2018-09-07T19:27:30Z beach: makomo: You would be among friends. 2018-09-07T19:27:56Z makomo: :-) 2018-09-07T19:28:30Z phoe: makomo: what country are you from? 2018-09-07T19:28:32Z beach: Again, not a joke. I strongly encourage it. 2018-09-07T19:28:41Z makomo: phoe: croatia, literally right next to italy :-) 2018-09-07T19:29:24Z beach: makomo: Oh, come on! No reason to stay away! 2018-09-07T19:29:27Z makomo: i'll be starting my first job soon which is another plus since i'll probably earn the money by myself 2018-09-07T19:29:47Z makomo: yeah, i think you're right :-) 2018-09-07T19:30:32Z beach: We are, trust us! :) 2018-09-07T19:30:53Z kristof quit (Ping timeout: 245 seconds) 2018-09-07T19:30:56Z trittweiler quit (Ping timeout: 260 seconds) 2018-09-07T19:31:44Z makomo: i guess i'll have to start planning soon then :-D 2018-09-07T19:31:48Z beach: makomo: I know phoe and he is often right. 2018-09-07T19:32:02Z beach: makomo: you do. 2018-09-07T19:32:11Z pierpal quit (Quit: Poof) 2018-09-07T19:32:28Z pierpal joined #lisp 2018-09-07T19:32:30Z beach: I am very serious about the crowd funding 2018-09-07T19:32:51Z fikka joined #lisp 2018-09-07T19:32:56Z jmercouris: I was actually thinking about starting a crowd funding campaign to support the Linux port of Next 2018-09-07T19:32:56Z beach: I am sure you will get what you need. 2018-09-07T19:33:01Z lavaflow_ joined #lisp 2018-09-07T19:33:41Z makomo: beach: that's very inspiring to hear and nice of you, but i think it won't be needed 2018-09-07T19:33:55Z makomo: italy is very close and the trip isn't very expensive from what i've heard 2018-09-07T19:34:34Z phoe: makomo: wellll 2018-09-07T19:34:37Z phoe: that's close 2018-09-07T19:35:08Z makomo: yeah, i think it's a really good opportunity. it's just that i haven't made any concrete plans so far 2018-09-07T19:35:25Z makomo: but i am (was) seriously thinking about it 2018-09-07T19:35:47Z beach: makomo: Fine with me. Whatever it takes to make you consider going. 2018-09-07T19:36:05Z makomo: :-) 2018-09-07T19:38:06Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T19:39:20Z phoe: woah 2018-09-07T19:39:24Z phoe: DEFGENERIC accepts declarations! 2018-09-07T19:39:33Z phoe +1 Lisp experience 2018-09-07T19:39:37Z pjb: some of them at least. 2018-09-07T19:39:43Z rumbler31 joined #lisp 2018-09-07T19:40:06Z phoe: ... 2018-09-07T19:40:11Z phoe: http://bauhh.dyndns.org:8000/clim-spec/2-9.html 2018-09-07T19:40:11Z pjb: only optimize. 2018-09-07T19:40:16Z phoe: This has a DX declaration. 2018-09-07T19:42:01Z Fare joined #lisp 2018-09-07T19:42:46Z fikka joined #lisp 2018-09-07T19:43:47Z troydm joined #lisp 2018-09-07T19:47:08Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-07T19:47:08Z makomo quit (Ping timeout: 245 seconds) 2018-09-07T19:47:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T19:47:38Z warweasle is now known as warweasle_afk 2018-09-07T19:49:02Z zhlyg` joined #lisp 2018-09-07T19:49:54Z zhlyg`: What is the DECLARE form to inline a function? 2018-09-07T19:50:00Z jmercouris: flet 2018-09-07T19:50:06Z phoe: zhlyg`: (declare (inline foo)) (defun foo ...) 2018-09-07T19:50:08Z jmercouris: or what do you mean? 2018-09-07T19:50:15Z phoe: wait 2018-09-07T19:50:19Z phoe: s/declare/declaim/ 2018-09-07T19:50:19Z jmercouris: oh, sorry, I misunderstood 2018-09-07T19:50:22Z jasom: zhlyg`: declaim 2018-09-07T19:50:23Z zhlyg`: I want to inline AREF calls 2018-09-07T19:50:27Z stacksmith: (declaim ) 2018-09-07T19:50:30Z phoe: oh wait a second 2018-09-07T19:50:35Z jasom: zhlyg`: you have to hope the compiler does it for you then 2018-09-07T19:50:42Z rumbler31 quit (Remote host closed the connection) 2018-09-07T19:50:42Z phoe: zhlyg`: where? in a function body? 2018-09-07T19:50:45Z jasom: zhlyg`: make sure that your array is of a known type 2018-09-07T19:51:01Z lavaflow_ joined #lisp 2018-09-07T19:51:05Z jasom: zhlyg`: sbcl won't inline calls to arrays that aren't simple 2018-09-07T19:51:06Z stacksmith: outside the function. (declaim (inline foo))... 2018-09-07T19:51:21Z cage_ quit (Quit: Leaving) 2018-09-07T19:51:43Z stacksmith: And make sure to recompile any function that uses the inlined function. 2018-09-07T19:51:45Z phoe: zhlyg`: you don't want to inline AREF since declaiming standard CL symbols is undefined behavior. 2018-09-07T19:52:03Z phoe: What you want is use SBCL (because it has a very good type inference engine) and, inside your function (declare (optimize speed)). 2018-09-07T19:52:26Z phoe: SBCL will then tell you where it is unable to optimize and why. Mostly it is because of unknown or non-declared types. 2018-09-07T19:52:57Z nly joined #lisp 2018-09-07T19:52:58Z phoe: For instance, inside (defun foo (x y) (declare (optimize speed)) (+ x (aref y 0))) 2018-09-07T19:53:15Z phoe: There are two notes - first of all, X is of unknown type, second, Y is an array of unknown type. 2018-09-07T19:53:32Z phoe: You could try evaluating this form in SBCL and reading the notes the compiler gives you. 2018-09-07T19:53:38Z nanoz quit (Quit: Leaving) 2018-09-07T19:54:04Z zhlyg`: phoe: is declare-inline-aref inside a function also undefined? 2018-09-07T19:54:09Z jasom: (disassemble (lambda (x) (declare (type ( simple-array t (*)) x)) (aref x 3))) ;; <-- note this is inlined in sbcl, but without the type declaration it is not 2018-09-07T19:54:45Z phoe: zhlyg`: yes. 2018-09-07T19:54:46Z nly: "Hello" 2018-09-07T19:54:53Z phoe: zhlyg`: but it's not what you want to do, anyway. 2018-09-07T19:55:12Z zhlyg`: my array is a matrix, and I tell the type by using (declare (array single-float *) matrix) 2018-09-07T19:55:25Z phoe: zhlyg`: what is the dimension of that array??? 2018-09-07T19:55:33Z phoe: ...sorry, my keyboard multiplies keypresses at times 2018-09-07T19:55:47Z zhlyg`: phoe: 2! its a matrix?! 2018-09-07T19:56:00Z phoe: (declare (array single-float (* *)) matrix) 2018-09-07T19:56:10Z phoe: That'll be better. You'll tell Lisp that your array is two-dimensional. 2018-09-07T19:56:19Z zhlyg`: phoe: Oh! thanks! 2018-09-07T19:56:25Z phoe: Also 2018-09-07T19:56:27Z nly: I came here after seeing some demos of lisp machine and Gerry sussman's talk "we don't know how to compute", does anyone know about those things? 2018-09-07T19:56:35Z jasom: And if it's 3x3 you can do (array single-float (3 3)) 2018-09-07T19:56:52Z vlatkoB quit (Remote host closed the connection) 2018-09-07T19:56:57Z phoe: Do that trick with (optimize speed) on SBCL and read all the notes you get from the compiler. That's where SBCL needs more information to generate fast code. 2018-09-07T19:58:39Z zhlyg`: phoe: Thank you alot! Also thanks to jasom and stacksmith! I need to rewrite my home-grown vector/matrix lib now :) 2018-09-07T19:58:42Z jasom: Also make sure that your innermost loop gets inlined; sbcl will not elide type checks on function calls unless the safety is set to 0 (which is usually a bad idea), so having your inner loop inlined means it can hoist the type-check outside of the loop 2018-09-07T20:01:26Z makomo joined #lisp 2018-09-07T20:01:32Z zhlyg`: jasom: I dont know the size of each dimension at compile time, can it still unroll the loop? I was thinking about manually unroll the known modulo size. 2018-09-07T20:02:16Z jasom: zhlyg`: I think it won't. Most serious matrix libraries special case everything smaller than 3x3 2018-09-07T20:02:51Z jasom: zhlyg`: it will eliminate the type check, but I don't think it's smart enough to do the dimension check outside of the loop. Test it yourself though, as I haven't tried for 2+ years and sbcl is constanty improving 2018-09-07T20:03:10Z fikka joined #lisp 2018-09-07T20:03:24Z pjb: zhlyg`: you cannot put declarations on things in CL. 2018-09-07T20:03:28Z pjb: Only on your own things. 2018-09-07T20:03:41Z razzy joined #lisp 2018-09-07T20:04:01Z zhlyg`: Also last question, should you strive to remove the SB-KERNEL:HAIRY-DATA-VECTOR-REF ? 2018-09-07T20:05:07Z jasom: zhlyg`: almost certainly, if you are seeing that then it either can't tell the arity or cannot determine that it is a simple-array 2018-09-07T20:05:09Z pjb: But perhaps you can declare inline functions in CL, it doesn't seem to be forbidden in 11.1.2.1.2. 2018-09-07T20:05:48Z pjb: Only special, type and ftype declarations are forbidden. 2018-09-07T20:06:13Z AeroNotix: Why is #'usocket:socket-server not exported properly? It's in the exports but it seems the asd file doesn't include the file where it is defined but includes implementation specific files which end up not including the mentioned function 2018-09-07T20:06:14Z jasom: all functions in CL will meet the INLINE requirements anyways since redefinitions are forbidden 2018-09-07T20:06:41Z AeroNotix: NEVERMIND, DISREGARD. 2018-09-07T20:06:50Z jasom: AeroNotix: already disregarded 2018-09-07T20:07:00Z AeroNotix: It's exported through a different system 2018-09-07T20:08:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T20:08:12Z AeroNotix: oh wow and I just learned something about CL systems 2018-09-07T20:08:28Z AeroNotix: or asdf definitions any way 2018-09-07T20:11:35Z pjb: jasom: actually declaring a CL function inline may be counter productive (again), since already all functions in CL can be open-coded (which AFAICT, is a stronger version of inlining). 2018-09-07T20:12:44Z jasom: an inline declaration allows open-coding, doesn't it? 2018-09-07T20:13:28Z zhlyg`: Also, aren't there some fluid setting when you build sbcl? 2018-09-07T20:14:44Z pjb: jasom: I don't know. I see inlining as more restricted. For me, you need a lisp function body to replace the function call. Open-coding can be done as if it was a special operator, without having to have a source for the function. 2018-09-07T20:15:44Z jasom: pjb: ah, I see you consider open-coding to be anything that preserves the semantics of the function, rather than anything that preserves the semantics of the forms that implement the function? 2018-09-07T20:15:56Z pjb: Yes. 2018-09-07T20:16:37Z jasom: I can see how that can be a useful distinction, but mostly I hear open-coding and inlining used interchangably with compiler people. 2018-09-07T20:16:43Z jasom: of course these are non-lisp compiler people 2018-09-07T20:16:56Z zhlyg`: How do you see the compiler hints? I see HAIRY calls stuff but get no hints. 2018-09-07T20:17:06Z jasom: zhlyg`: how are you compiling your file? 2018-09-07T20:17:17Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-07T20:17:29Z zhlyg`: jasom: naivly doing sbcl --load my.lisp 2018-09-07T20:17:45Z jasom: zhlyg`: hmm let me see if that does it here... 2018-09-07T20:18:02Z aeth: pjb: isn't the main practical distinction that it's a conditional inlining? So + can be open-coded for single-float but not for integer. 2018-09-07T20:18:35Z pjb: This is a big difference, indeed. 2018-09-07T20:19:20Z jasom: zhlyg`: (compile-file "my.lisp") 2018-09-07T20:19:24Z Roy_Fokker joined #lisp 2018-09-07T20:19:46Z jasom: zhlyg`: also, I can strongly recommend learning slime at some point, you can compile a file open in it with two keystrokes 2018-09-07T20:21:07Z zhlyg`: jasom: I'll try putting (COMPILE 'myfun) directly after the function, but nothing spits out. 2018-09-07T20:21:37Z jasom: zhlyg`: I'm pretty sure notes are suppressed for the entire time sbcl is processing a --load option 2018-09-07T20:23:47Z fikka joined #lisp 2018-09-07T20:24:31Z aeth: I actually wonder if open-coding can be implemented in a non-implementation specific way, possibly with https://github.com/markcox80/specialization-store/ 2018-09-07T20:24:42Z zhlyg`: jasom: compile-file didn't do it, but I'll load up slime :) 2018-09-07T20:24:52Z pjb: aeth: yes, it can, with compiler macro. But not on CL functions! 2018-09-07T20:25:09Z aeth: The main issue is that the type information that's inferred would have to be provided to https://github.com/Bike/introspect-environment which is currently not done in SBCL (you have to manually DECLARE types for it to work iirc) 2018-09-07T20:25:38Z pjb: Said otherwise, the language reserves compiler macro on CL functions to the implementation, so it can open code them this way. 2018-09-07T20:25:51Z aeth: pjb: No, I mean, you could build a CL around *portably* doing this sort of thing, if the compiler can provide information to introspect-environment and then work through introspect-environment 2018-09-07T20:26:25Z aeth: So the internals of the open-coding would be portable CL 2018-09-07T20:27:40Z flazh quit (Ping timeout: 246 seconds) 2018-09-07T20:27:56Z pjb: You could propose such an API to SICL. 2018-09-07T20:28:22Z fikka quit (Ping timeout: 246 seconds) 2018-09-07T20:30:28Z Bike: sbcl type inference is done aftercompiler macros are expanded 2018-09-07T20:30:50Z Bike: it would be a huge pain in the ass to do type inference on source 2018-09-07T20:30:51Z aeth: Oh, hmm, just realized a problem for arithmetic. + takes in a list of numbers (i.e. &rest numbers) 2018-09-07T20:30:59Z Bike: and type inference is ALREADY a huge pain in the ass 2018-09-07T20:33:02Z Bike: so no, you cannot build a CL around portably doing this sort of thing. 2018-09-07T20:33:27Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T20:33:32Z aeth: pjb: I expected a negative response, though 2018-09-07T20:33:47Z aeth: Easiest way to find out something won't work is to say it on IRC 2018-09-07T20:33:51Z Bike: sicl already includes environment accessors 2018-09-07T20:33:52Z aeth: Bike: thanks 2018-09-07T20:34:17Z fikka joined #lisp 2018-09-07T20:34:25Z Bike: i could write a backend for introspect-environment, but SICL is non-operational and specialization-store is the only thing using the library anyway 2018-09-07T20:34:33Z trittweiler joined #lisp 2018-09-07T20:34:48Z fikka quit (Read error: Connection reset by peer) 2018-09-07T20:35:07Z Bike: actually i suppose i'd have to fix sicl up so that the global enviroment readers work on lexenvs. 2018-09-07T20:37:25Z aeth: Bike: specialization-store is fairly popular for solving certain problems, though. Not enough to make it to http://blog.quicklisp.org/2018/03/download-stats-for-february-2018.html yet but I wouldn't be surprised to see it there eventually once something that uses it gets enough popularity. 2018-09-07T20:38:42Z aeth: (well, it looks like download stats aren't being published after February) 2018-09-07T20:40:33Z aeth: (The problems are problems involving numbers and sequences, by the way.) 2018-09-07T20:41:09Z mindCrime quit (Ping timeout: 252 seconds) 2018-09-07T20:41:32Z no-defun-allowed: Hi everyone 2018-09-07T20:43:15Z Arcaelyx joined #lisp 2018-09-07T20:44:22Z AeroNotix: aeth: do you know if the download stats are available for every package? 2018-09-07T20:44:32Z fikka joined #lisp 2018-09-07T20:44:38Z aeth: AeroNotix: I would ask Xach 2018-09-07T20:44:48Z aeth: AeroNotix: The numbers are probably skewed by automated testing, though 2018-09-07T20:44:54Z AeroNotix: Sure, I get that 2018-09-07T20:45:27Z AeroNotix: btw what happens when Xach is no longer around? 2018-09-07T20:45:32Z AeroNotix: with quicklisp I mean 2018-09-07T20:45:39Z AeroNotix: bus factor seems rather high 2018-09-07T20:46:10Z jasom: AeroNotix: anyone can setup a distribution; there sources for each package in quicklisp are in git. You could run a clone of the main distribution today. 2018-09-07T20:46:15Z aeth: AeroNotix: Someone used to use the name busfactorone (or something similar) here. 2018-09-07T20:46:33Z aeth: AeroNotix: I'm not sure I've seen one higher than 3 in the Lisp community. 2018-09-07T20:46:52Z aeth: Maybe some compilers 2018-09-07T20:47:06Z AeroNotix: jasom: I know custom distributions are a thing but the "de facto" main quicklisp dist seems at risk 2018-09-07T20:47:31Z Denommus joined #lisp 2018-09-07T20:49:04Z aeth: jasom: The problem is that most people never touch a setup that works. If the main Quicklisp dist stopped being updated and everyone moved to FooLisp it would literally take years for the migration. 2018-09-07T20:49:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T20:50:40Z fikka joined #lisp 2018-09-07T20:51:14Z AeroNotix: to me it seems like a "self serve" system like mvn/pypi/crates.io would seem "better" 2018-09-07T20:51:18Z acolarh quit (Ping timeout: 245 seconds) 2018-09-07T20:51:26Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T20:52:05Z AeroNotix: though it ruins that awesome feature of QL that as far as I understand it X a c h takes time to test that all systems work together/pass tests within that distribution 2018-09-07T20:52:19Z aeth: Oh, and not every guide gets updated. People still come to Lisp help places with issues about Lisp in a Box or whatever it was called 2018-09-07T20:53:00Z aeth: AeroNotix: Quicklisp is something that cannot scale but offers a superior experience (i.e. curation and testing that everything works together) to something that would scale 2018-09-07T20:53:21Z AeroNotix: I agree 2018-09-07T20:53:25Z aeth: The tooling isn't really designed to handle a chaotic anything-goes environment for libraries. 2018-09-07T20:53:43Z aeth: Right now the only issue is package name collisions. 2018-09-07T20:53:54Z AeroNotix: I feel far more comfortable bringing in dependencies with QL and trusting them to be relatively stable than I do with other platforms 2018-09-07T20:54:09Z AeroNotix: but I still do think what would happen if x a c h got bored or hit by a bus 2018-09-07T20:54:42Z flazh joined #lisp 2018-09-07T20:59:26Z jkordani_ joined #lisp 2018-09-07T21:01:21Z phoe: AeroNotix: nowadays anyone can create a QL dist using the code published in the quicklisp repository 2018-09-07T21:01:36Z AeroNotix: phoe: I know that :) the above delves into my issues with that a bit 2018-09-07T21:01:39Z phoe: so, at least, theoretically, it should be possible to bootstrap a quicklisp-2.0 2018-09-07T21:02:00Z phoe: there's also a proof of concept in form of http://ultralisp.org/ 2018-09-07T21:02:11Z phoe: which is a rolling dist updated whenever a new commit lands in a repository 2018-09-07T21:02:19Z phoe: that's as bleeding-edge as you can get. 2018-09-07T21:03:01Z jkordani quit (Ping timeout: 246 seconds) 2018-09-07T21:03:05Z aeth: phoe: I wonder if there are any Linux distros based on the same principle 2018-09-07T21:03:50Z aeth: Linux kernel straight from git! 2018-09-07T21:04:46Z msb quit (Ping timeout: 246 seconds) 2018-09-07T21:06:04Z jasom: there are linux distros that you update with a "git pull" then "make" but you are pulling from the distros git, not upstream. 2018-09-07T21:06:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-07T21:07:09Z aeth: I suspect you'd want to use tags or, failing that, user-contributed known-stable commits. 2018-09-07T21:07:14Z Denommus quit (Remote host closed the connection) 2018-09-07T21:08:08Z aeth: (If you don't just have your own distro git, of course) 2018-09-07T21:08:39Z msb joined #lisp 2018-09-07T21:08:43Z aeth: I guess a distro git is a way of doing the latter. 2018-09-07T21:09:48Z razzy: ultralisp :D the hooks are awesome :D 2018-09-07T21:10:49Z aeth: Unless that hasn't updated, it's currently just one organization with the exception of two projects 2018-09-07T21:11:47Z aeth: It also doesn't support Gitlab, which is fairly common (mostly gitlab.common-lisp.net rather than gitlab.com) 2018-09-07T21:12:08Z anewuser joined #lisp 2018-09-07T21:12:26Z razzy: i am hooked, my guts are dragging me through mud 2018-09-07T21:15:22Z fikka joined #lisp 2018-09-07T21:15:46Z Hu0p joined #lisp 2018-09-07T21:18:15Z Bike quit (Ping timeout: 252 seconds) 2018-09-07T21:21:30Z itruslove quit (Remote host closed the connection) 2018-09-07T21:25:09Z beknoll joined #lisp 2018-09-07T21:26:20Z asarch quit (Quit: Leaving) 2018-09-07T21:27:43Z jmercouris quit (Remote host closed the connection) 2018-09-07T21:28:44Z beknoll: IRC logfile link leads to Not Found? 2018-09-07T21:29:38Z aeth: beknoll: because it's poorly formated 2018-09-07T21:29:46Z aeth: it's two different urls separated by a , 2018-09-07T21:30:08Z aeth: so it gets parsed by many clients as one URL as https://irclog.whitequark.org/lisp,http://ccl.clozure.com/irc-logs/lisp/ 2018-09-07T21:30:13Z beknoll: ah, see it now. Thanks. 2018-09-07T21:31:14Z acolarh joined #lisp 2018-09-07T21:32:22Z beknoll: I'm learning Lisp. Working through Land of Lisp. Read on Stackoverflow that it's not a good primer. Anyone read it? Thoughts? 2018-09-07T21:32:51Z phoe: beknoll: Practical Common Lisp is the generally suggested book 2018-09-07T21:32:55Z aeth: http://www.gigamonkeys.com/book/ 2018-09-07T21:33:04Z phoe: I haven't read LoL though so I cannot comment on it. 2018-09-07T21:34:16Z AeroNotix: beknoll: +1 for Practical Common Lisp. Far superior to Land of Lisp imho. PCL doesn't try to deify CL as practically every other author does 2018-09-07T21:34:22Z aeth: You can also write programs and ask for advice in #clschool and you'll find easier or more idiomatic ways to write them. 2018-09-07T21:34:51Z beknoll: LoL is cool because of the angle... Make 80s-type text adventure and other games. And there are comics. 2018-09-07T21:35:12Z no-defun-allowed: The Haskell comic was great. 2018-09-07T21:35:29Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-07T21:35:32Z aeth: beknoll: these days you can use something like https://borodust.org/projects/trivial-gamekit/ 2018-09-07T21:35:47Z aeth: You just need to learn enough to get to the point of being able to use something like that 2018-09-07T21:36:18Z DGASAU quit (Ping timeout: 245 seconds) 2018-09-07T21:40:06Z DGASAU joined #lisp 2018-09-07T21:41:50Z beknoll: @aeth I'll have to check out the #clschool. Tx 2018-09-07T21:42:21Z phoe: beknoll: usually the Lisp Learning Kit™ that gets served over here is PCL + Portacle 2018-09-07T21:43:26Z beknoll: Lol. Cool. I'll work through PCL. Using portacle now 2018-09-07T21:45:08Z varjag quit (Read error: Connection reset by peer) 2018-09-07T21:46:23Z edgar-rft always thought that Portable Common Loops was superseded by CLOS 2018-09-07T21:49:27Z graphene quit (Remote host closed the connection) 2018-09-07T21:49:39Z razzy quit (Ping timeout: 252 seconds) 2018-09-07T21:49:46Z random-nick quit (Ping timeout: 244 seconds) 2018-09-07T21:49:58Z aeth: edgar-rft: Nowadays we recommend it, though 2018-09-07T21:51:06Z graphene joined #lisp 2018-09-07T21:51:53Z aeth: edgar-rft: You have to work through it first to appreciate CLOS 2018-09-07T21:52:22Z whartung: Portable Common Loops!?!? 2018-09-07T21:52:59Z bmansurov is now known as bmansurov|ooo 2018-09-07T21:53:31Z phoe: whartung: yep, portable common loops 2018-09-07T21:53:38Z phoe: an object system for early Common Lisp 2018-09-07T21:53:48Z whartung: yes, I knew that. 2018-09-07T21:56:09Z varjag joined #lisp 2018-09-07T21:58:06Z dented42 joined #lisp 2018-09-07T21:58:45Z rumbler31 joined #lisp 2018-09-07T21:59:23Z housel quit (Remote host closed the connection) 2018-09-07T21:59:54Z housel joined #lisp 2018-09-07T22:00:04Z beknoll: So work through loops (?) to appreciate CLOS? 2018-09-07T22:00:11Z loli quit (Quit: WeeChat 2.2) 2018-09-07T22:00:27Z DGASAU quit (Ping timeout: 252 seconds) 2018-09-07T22:01:27Z aeth: no 2018-09-07T22:01:40Z aeth: edgar-rft only speaks in jokes 2018-09-07T22:03:23Z aeth: The original joke was that "PCL" = "Portable CommonLoops" and "PCL" = "Practical Common Lisp" 2018-09-07T22:04:23Z rumbler31 quit (Remote host closed the connection) 2018-09-07T22:05:41Z aeth: I then explained what "working through PCL" meant 2018-09-07T22:05:45Z LiamH quit (Quit: Leaving.) 2018-09-07T22:06:12Z graphene quit (Read error: Connection reset by peer) 2018-09-07T22:07:54Z graphene joined #lisp 2018-09-07T22:08:51Z beknoll: Ah good to know. Sorry to kill the joke. :/ 2018-09-07T22:11:01Z DGASAU joined #lisp 2018-09-07T22:13:16Z lavaflow_ joined #lisp 2018-09-07T22:13:22Z Fare quit (Ping timeout: 246 seconds) 2018-09-07T22:13:39Z aeth: beknoll: That's fine, you were missing context: that edgar-rft always jokes 2018-09-07T22:14:50Z aeth: The joke in Common Lisp would have made perfect sense because you would have been able to use the SLIME inspector to inspect edgar-rft 2018-09-07T22:15:41Z AeroNotix: Does SBCL have an API somewhere that I can't find that will allow me to list all mutexes? 2018-09-07T22:16:13Z no-defun-allowed: C-c I edgar-rft 2018-09-07T22:17:06Z pierpal quit (Quit: Poof) 2018-09-07T22:17:29Z pierpal joined #lisp 2018-09-07T22:17:58Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-07T22:18:15Z varjag quit (Ping timeout: 252 seconds) 2018-09-07T22:21:26Z jasom: AeroNotix: almost certainly not, since make-mutex is just a constructor for a defstruct 2018-09-07T22:22:25Z AeroNotix: jasom: yeah was worried about that 2018-09-07T22:22:42Z blackwolf quit (Quit: ERC (IRC client for Emacs 25.3.1)) 2018-09-07T22:24:40Z orivej quit (Ping timeout: 272 seconds) 2018-09-07T22:26:13Z aeth: I would ask in #sbcl 2018-09-07T22:27:15Z AeroNotix: aeth: done 2018-09-07T22:27:28Z jasom: It's a userspace mutex, so no syscalls even happen to create a mutex. 2018-09-07T22:28:11Z jasom: well on targets that support CAS anyways 2018-09-07T22:32:24Z kooga joined #lisp 2018-09-07T22:32:44Z edgar-rft: In Lisp history PCL is a well-known acronym for "Portable Common Loops", one of the predecesor OO systems predating CLOS. The fact that Peter Seibel's book "Practical Common Lisp" shares the same acronym is a bad accident, because "Portable Common Loops" was first. But what I originally wanted to point out is that people using acronyms in communication are *begging* for being misinterpreted. 2018-09-07T22:32:54Z zhlyg` quit (Ping timeout: 252 seconds) 2018-09-07T22:34:33Z AeroNotix: Why *Loops* though? Seems a weird name for an OO system 2018-09-07T22:34:49Z aeth: edgar-rft: It's generally called an "OO gauge" or an "OO scale", not an "OO system", and I'm not sure what PCL *or* CLOS has to do with model railway tracks. https://en.wikipedia.org/wiki/OO_gauge 2018-09-07T22:35:04Z loli joined #lisp 2018-09-07T22:35:37Z AeroNotix: aeth: what you did there, I see it. 2018-09-07T22:37:23Z edgar-rft: aeth: and what have model trains to do with the Corel Linux Operating System? 2018-09-07T22:38:34Z beknoll quit (Ping timeout: 240 seconds) 2018-09-07T22:38:50Z edgar-rft: beknoll gave up :-) 2018-09-07T22:46:20Z beknoll joined #lisp 2018-09-07T22:48:15Z pierpa joined #lisp 2018-09-07T22:48:29Z jasom: edgar-rft: Xandrod purchesed model trains and CLOS 2018-09-07T22:48:35Z jasom: s/Xandrod/Xandros 2018-09-07T22:49:40Z aeth: But does railway oriented programming work in Common Lisp? https://fsharpforfunandprofit.com/posts/recipe-part2/ 2018-09-07T22:50:08Z jasom: aeth: all forms of programming work in common lisp, it's pan-paradigm 2018-09-07T22:57:07Z acolarh quit (Ping timeout: 240 seconds) 2018-09-07T22:57:15Z rumbler31 joined #lisp 2018-09-07T22:57:16Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-07T22:58:21Z jasmith quit (Quit: Leaving) 2018-09-07T22:58:23Z pjb: AeroNotix: Lisp Object Oriented Programming System. LOOPS. 2018-09-07T22:58:44Z pjb: AeroNotix: Common Lisp Object System. CLOS. 2018-09-07T23:00:07Z pjb: AeroNotix: Fine Lisp Addition Via Object Run-time System. Flavors. 2018-09-07T23:00:22Z aeth: (afaik the CL equivalent to my link would be something like (lambda (x) (if (null x) nil (foo x)))) 2018-09-07T23:00:58Z pjb: (lambda (x) (ignore-errors (foo x))) 2018-09-07T23:01:14Z aeth: pjb: both 2018-09-07T23:01:53Z aeth: pjb: You'd want foo to return NIL on an error instead of throwing an error, but you'd also want to accept NIL as input and return NIL in that case. Except you'd probably want something like :FAILURE instead of NIL 2018-09-07T23:02:03Z pjb: Note that lisp already implements rails, with conditions. 2018-09-07T23:02:29Z pjb: Only nobody elaborated the type system including conditions and non-local exits. 2018-09-07T23:03:16Z pjb: (tagbody (funcall (lambda () (go foo))) foo) ; what is the type of (funcall (lambda () (go foo))) ? 2018-09-07T23:03:23Z pjb: of (lambda () (go foo)) I mean? 2018-09-07T23:06:16Z aeth: GOTO: The Ultimate Lambda 2018-09-07T23:07:56Z FreeBirdLjj joined #lisp 2018-09-07T23:09:16Z no-defun-allowed: pretty sure if it will never return it's NIL 2018-09-07T23:09:26Z robotoad quit (Quit: robotoad) 2018-09-07T23:10:04Z aeth: (You also wouldn't want to ignore it, you'd probably want to log it or something. The important thing is to give it some failure return value rather than just fail.) 2018-09-07T23:13:03Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-07T23:14:13Z AeroNotix: pjb: gotcha, thanks 2018-09-07T23:16:54Z Pixel_Outlaw joined #lisp 2018-09-07T23:17:03Z Shinmera: makomo: beach: each page on the els website contains a footer that says: Authored by Didier Verna www@european-lisp-symposium.org Generated by https://github.com/european-lisp-symposium/els-web 2018-09-07T23:23:47Z Kevslinger quit (Quit: Connection closed for inactivity) 2018-09-07T23:25:19Z zooey quit (Ping timeout: 256 seconds) 2018-09-07T23:30:32Z Bike joined #lisp 2018-09-07T23:31:06Z zooey joined #lisp 2018-09-07T23:31:45Z fikka quit (Ping timeout: 252 seconds) 2018-09-07T23:33:07Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-07T23:33:17Z eschatologist joined #lisp 2018-09-07T23:34:28Z Bike quit (Client Quit) 2018-09-07T23:35:12Z Achylles joined #lisp 2018-09-07T23:37:34Z Bike joined #lisp 2018-09-07T23:38:24Z Achylles quit (Remote host closed the connection) 2018-09-07T23:43:32Z robotoad joined #lisp 2018-09-07T23:44:18Z Achylles joined #lisp 2018-09-07T23:47:23Z fikka joined #lisp 2018-09-07T23:48:37Z Essadon quit (Quit: Qutting) 2018-09-07T23:52:42Z fikka quit (Ping timeout: 272 seconds) 2018-09-07T23:54:05Z Fare joined #lisp 2018-09-07T23:54:22Z makomo: Shinmera: true, but that's because you two are in charge of the webpage and not in charge of the actual organization of the event, right? 2018-09-07T23:54:50Z makomo: my point was that Ravenpack seems to be the organizer of 2018, but that's not stated explicitly anywhere 2018-09-07T23:55:16Z makomo: Shinmera: oh also, the proceedings pdf lists 2 people as part of the "local chair", but the websites lists only 1 2018-09-07T23:55:38Z makomo: website* 2018-09-07T23:56:52Z makomo: i guess one could infer who the local organizer is by looking who the people within the "local chair" work for, but i wouldn't know about that if it wasn't for beach who mentioned Ravenpack 2018-09-08T00:03:14Z SenasOzys quit (Remote host closed the connection) 2018-09-08T00:07:22Z SenasOzys joined #lisp 2018-09-08T00:07:45Z fikka joined #lisp 2018-09-08T00:10:36Z housel quit (Read error: Connection reset by peer) 2018-09-08T00:10:49Z housel joined #lisp 2018-09-08T00:12:28Z SenasOzys quit (Remote host closed the connection) 2018-09-08T00:12:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T00:14:57Z Fare quit (Ping timeout: 244 seconds) 2018-09-08T00:16:29Z phenoble quit (Quit: ZNC 1.7.0 - https://znc.in) 2018-09-08T00:18:12Z fikka joined #lisp 2018-09-08T00:22:54Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T00:23:36Z Essadon joined #lisp 2018-09-08T00:23:37Z ebrasca quit (Read error: Connection reset by peer) 2018-09-08T00:24:03Z Essadon quit (Client Quit) 2018-09-08T00:24:29Z dale quit (Quit: dale) 2018-09-08T00:24:34Z beknoll quit (Ping timeout: 240 seconds) 2018-09-08T00:24:48Z phenoble joined #lisp 2018-09-08T00:25:51Z robotoad quit (Max SendQ exceeded) 2018-09-08T00:28:20Z SenasOzys joined #lisp 2018-09-08T00:30:39Z SenasOzys quit (Remote host closed the connection) 2018-09-08T00:31:05Z Achylles quit (Remote host closed the connection) 2018-09-08T00:31:36Z AeroNotix: Why is it called sb-grovel? 2018-09-08T00:31:45Z robotoad joined #lisp 2018-09-08T00:31:56Z AeroNotix: I've seen the word used a few times in Lisp contexts for reading/parsing C headers (among other things) 2018-09-08T00:38:40Z fikka joined #lisp 2018-09-08T00:40:36Z pjb: What image does "grovel" bring to your mind? 2018-09-08T00:41:43Z AeroNotix: pjb: someone begging for scraps 2018-09-08T00:42:06Z pjb: Yep, scraps of C. 2018-09-08T00:42:29Z AeroNotix: seems self-depracating 2018-09-08T00:42:37Z AeroNotix: w/e 2018-09-08T00:42:38Z pjb: Growler + shovel : it eats dirt so its stomach growls. 2018-09-08T00:42:57Z AeroNotix: How can I regrovel SBCL contrib modules? 2018-09-08T00:43:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T00:44:18Z AeroNotix: hmm, actually, probably my distro doesn't ship everything I need for that. 2018-09-08T00:44:22Z oni-on-ion: S craps 2018-09-08T00:44:29Z pjb: You'd need the headers. 2018-09-08T00:44:44Z AeroNotix: Well I have the headers, at least. 2018-09-08T00:44:57Z AeroNotix: I just mean the makefiles for sbcl itself, I can see my distro isn't shipping them 2018-09-08T00:46:14Z DataLinkDroid quit (Ping timeout: 256 seconds) 2018-09-08T00:47:05Z graphene quit (Remote host closed the connection) 2018-09-08T00:48:48Z graphene joined #lisp 2018-09-08T00:49:07Z fikka joined #lisp 2018-09-08T00:53:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T00:55:26Z djuber joined #lisp 2018-09-08T00:58:59Z fikka joined #lisp 2018-09-08T00:59:26Z rptx joined #lisp 2018-09-08T01:03:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-08T01:03:56Z kristof joined #lisp 2018-09-08T01:06:07Z Oddity quit (Ping timeout: 240 seconds) 2018-09-08T01:07:28Z graphene quit (Remote host closed the connection) 2018-09-08T01:09:09Z graphene joined #lisp 2018-09-08T01:09:22Z fikka joined #lisp 2018-09-08T01:12:25Z Oddity joined #lisp 2018-09-08T01:13:09Z warweasle_afk is now known as warweasle 2018-09-08T01:14:03Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T01:14:39Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-08T01:14:40Z Shinmera: makomo: My point was to say who makes the website content (didier) and where it is at (on github) 2018-09-08T01:16:51Z makomo: Shinmera: ah, ok 2018-09-08T01:17:42Z Shinmera: I only do technical work, and not even the hosting, just the design and software 2018-09-08T01:18:11Z v0|d quit (Remote host closed the connection) 2018-09-08T01:25:01Z lavaflow_ joined #lisp 2018-09-08T01:26:02Z AeroNotix: I can't reproduce it now but I managed to break #'sb-posix:get-host-by-name by starting/destroying threads quickly that used the underlying implementation. Calling get-by-host-name would hang. The stacktrace was in a foreign-function so I know the issue isn't with SBCL per se but was wondering if it's worthwhile implementing the asynchronous/re-entrant versions for sbcl and/or if they would be accepted. 2018-09-08T01:29:24Z fikka joined #lisp 2018-09-08T01:30:03Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-08T01:32:38Z rptx quit (Remote host closed the connection) 2018-09-08T01:33:55Z fikka quit (Ping timeout: 246 seconds) 2018-09-08T01:37:14Z Shinmera: AeroNotix: better ask in #sbcl 2018-09-08T01:37:59Z AeroNotix: sure 2018-09-08T01:40:14Z fikka joined #lisp 2018-09-08T01:40:57Z no-defun-allowed: grammarly's blog said they broke get-protocol-by-name in a similar way 2018-09-08T01:45:26Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T01:48:59Z Fare joined #lisp 2018-09-08T01:50:10Z fikka joined #lisp 2018-09-08T01:52:21Z lavaflow_ joined #lisp 2018-09-08T01:54:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T01:55:29Z AeroNotix: no-defun-allowed: link 2018-09-08T01:55:31Z AeroNotix: ? 2018-09-08T01:56:01Z no-defun-allowed: https://tech.grammarly.com/blog/posts/Running-Lisp-in-Production.html​ 2018-09-08T01:56:13Z no-defun-allowed: stupid matrix 2018-09-08T01:56:25Z no-defun-allowed: delete the %crap and it's under "The Hardest Bug I've Ever Debugged" 2018-09-08T02:01:58Z AeroNotix: no-defun-allowed: Oh yes this article. Wish there were far more like it 2018-09-08T02:02:22Z AeroNotix: There's a lot of low hanging fruit with some of the older bsd socket APIs to expose re-entrant versions 2018-09-08T02:10:20Z kooga quit (Quit: :) 2018-09-08T02:10:26Z fikka joined #lisp 2018-09-08T02:10:45Z robotoad quit (Quit: robotoad) 2018-09-08T02:12:41Z k-hos is now known as nEatoBoRRITO 2018-09-08T02:15:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T02:20:51Z jlarocco joined #lisp 2018-09-08T02:25:11Z kristof: I figured out how emscripten currently does exceptions. 2018-09-08T02:30:21Z kristof: The gist is that asm.js has to save the entire shadow stack hidden in linear memory and then restore it 2018-09-08T02:30:45Z fikka joined #lisp 2018-09-08T02:32:33Z robotoad joined #lisp 2018-09-08T02:33:00Z kristof: So... that's how you'd do non-local transfer of control in web assembly without blowing the stack. I seriously doubt asm.js's stack saving is fast, though 2018-09-08T02:35:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T02:36:49Z rumbler31 quit (Remote host closed the connection) 2018-09-08T02:38:13Z zooey quit (Remote host closed the connection) 2018-09-08T02:38:31Z zooey joined #lisp 2018-09-08T02:38:36Z rumbler31 joined #lisp 2018-09-08T02:40:27Z rumbler31 quit (Remote host closed the connection) 2018-09-08T02:42:32Z pierpa quit (Quit: Page closed) 2018-09-08T02:45:49Z kristof quit (Ping timeout: 244 seconds) 2018-09-08T02:51:00Z itruslove joined #lisp 2018-09-08T02:51:30Z fikka joined #lisp 2018-09-08T02:53:30Z ym joined #lisp 2018-09-08T02:53:35Z Roy_Fokker quit (Quit: Leaving) 2018-09-08T02:56:10Z fikka quit (Ping timeout: 246 seconds) 2018-09-08T02:56:43Z djuber quit (Ping timeout: 245 seconds) 2018-09-08T02:57:14Z djuber joined #lisp 2018-09-08T02:59:39Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-08T03:01:56Z fikka joined #lisp 2018-09-08T03:02:27Z kristof joined #lisp 2018-09-08T03:07:08Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T03:12:50Z LdBeth: How would one judge CL-PDF, possibly comparing to simple lisp SDL generating PostScript? 2018-09-08T03:12:59Z LdBeth: *DSL 2018-09-08T03:17:20Z Kristoft joined #lisp 2018-09-08T03:21:58Z fikka joined #lisp 2018-09-08T03:26:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T03:30:02Z jkordani_ quit (Read error: Connection reset by peer) 2018-09-08T03:34:42Z kristof quit (Remote host closed the connection) 2018-09-08T03:35:01Z jlarocco quit (Ping timeout: 246 seconds) 2018-09-08T03:35:16Z AeroNotix: Hmm, I kind of want to have a defgeneric where one of the types is known already. It's not possible, right? 2018-09-08T03:35:36Z AeroNotix: I guess it makes no difference since the defmethod forms would still need to include the class specifier 2018-09-08T03:36:27Z djuber quit (Ping timeout: 240 seconds) 2018-09-08T03:39:44Z kristof joined #lisp 2018-09-08T03:42:23Z fikka joined #lisp 2018-09-08T03:47:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T03:51:34Z aeth: AeroNotix: can you give an example of what you mean? 2018-09-08T03:53:45Z AeroNotix: aeth: (defgeneric some-generic-function (abstract-value (c concrete-class))) 2018-09-08T03:54:03Z AeroNotix: where concrete-class is an existing class. Abstract-value just being any old thing not yet defined 2018-09-08T03:55:35Z Bike: what good would that do? 2018-09-08T03:56:46Z earl-ducaine joined #lisp 2018-09-08T03:57:11Z AeroNotix: I have a generic function that will always take a specific class, but be handled differently 2018-09-08T03:57:15Z AeroNotix: imagine like an encoder 2018-09-08T03:57:39Z dale joined #lisp 2018-09-08T03:57:47Z AeroNotix: (defgeneric image-encode (encoder image-to-encode))) 2018-09-08T03:58:04Z AeroNotix: And the image data would always be the same, but the encoder could be different depending how you wanted to encodei t 2018-09-08T03:58:38Z aeth: AeroNotix: depending on how you implement it, you could get away with (let ((foo ...)) (defun ...) (defun ...) ...) 2018-09-08T03:58:44Z Bike: i mean what would the actual effect of specifying a class in the generic function be 2018-09-08T03:59:17Z AeroNotix: Bike: well, I understand somewhat why it's not possible 2018-09-08T03:59:23Z steiner quit (Remote host closed the connection) 2018-09-08T03:59:27Z AeroNotix: aeth: nah, not a fan 2018-09-08T03:59:28Z Bike: i'm just asking you what you even want 2018-09-08T03:59:29Z aeth: AeroNotix: Or at the very least (let ((foo ...)) (values (lambda ...) (lambda ...) ...)) 2018-09-08T03:59:49Z AeroNotix: Bike: well, it'd more be for documentation. 2018-09-08T04:00:14Z earl-ducaine: Lisp-o-manians! I'm running into the getf/get issue again. I feel that they must be exactly the same otherwise I would have surely remembered that there is some difference between them. 2018-09-08T04:00:15Z AeroNotix: the defmethod forms themselves would still have the class specifiers on them 2018-09-08T04:00:32Z earl-ducaine: But saddly I have to ask again, to make sure. 2018-09-08T04:00:32Z Bike: getf and get aren't the same. too bad. 2018-09-08T04:01:18Z Bike: (get x y) = (getf (symbol-plist x) y) 2018-09-08T04:01:59Z aeth: How did they get away with assigning such a common/short word like GET to one of the most niche features in the language? 2018-09-08T04:02:10Z no-defun-allowed: It's probably old. 2018-09-08T04:02:15Z kristof: geneaology 2018-09-08T04:02:18Z Bike: it wasn't niche at the time, which was like seventy years ago 2018-09-08T04:02:37Z aeth: I thought plists were fairly new and alists were the old thing 2018-09-08T04:03:05Z fikka joined #lisp 2018-09-08T04:03:43Z kristof: It's right there in the lisp 1.5 manual 2018-09-08T04:04:49Z earl-ducaine: ok, just did a word by word diff between the clhs of the two in my emacs buffer, and I can see the difference now. 2018-09-08T04:05:40Z kristof: Ok, that's really interesting. Property lists were very specially treated in Lisp 1.5 2018-09-08T04:05:52Z kristof: First off, their first element was always -1 2018-09-08T04:07:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T04:13:57Z earl-ducaine: I swore I tested get and getf both ways, but sadly I screwed up with a clerical error. 2018-09-08T04:16:39Z SaganMan quit (Ping timeout: 252 seconds) 2018-09-08T04:22:41Z caltelt_ joined #lisp 2018-09-08T04:23:21Z fikka joined #lisp 2018-09-08T04:24:17Z dddddd quit (Remote host closed the connection) 2018-09-08T04:28:29Z windoze joined #lisp 2018-09-08T04:28:50Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T04:28:57Z windoze: hello; im trying to run a lisp file with (load "main.lisp") 2018-09-08T04:29:09Z windoze: but SBCL complains that package ASDF does not exist, when it does 2018-09-08T04:29:20Z windoze: if i type the contents of the file into the console manually, it works 2018-09-08T04:29:29Z windoze: there is only a problem when i run (load "main.lisp") 2018-09-08T04:29:51Z SaganMan joined #lisp 2018-09-08T04:35:37Z windoze quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2018-09-08T04:40:14Z SaganMan quit (Ping timeout: 272 seconds) 2018-09-08T04:43:45Z fikka joined #lisp 2018-09-08T04:47:37Z ym quit (Quit: Leaving) 2018-09-08T04:48:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T04:48:39Z sbadger joined #lisp 2018-09-08T04:49:27Z sword quit (Ping timeout: 240 seconds) 2018-09-08T04:50:56Z beach: Good morning everyone! 2018-09-08T04:51:31Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-08T04:51:59Z dented42 joined #lisp 2018-09-08T04:52:19Z sword joined #lisp 2018-09-08T04:52:28Z razzy joined #lisp 2018-09-08T04:53:23Z drmeister: Hello beach 2018-09-08T04:54:30Z fikka joined #lisp 2018-09-08T04:57:18Z SaganMan joined #lisp 2018-09-08T04:57:34Z nly quit (Ping timeout: 244 seconds) 2018-09-08T04:59:00Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T05:00:28Z wigust quit (Ping timeout: 245 seconds) 2018-09-08T05:08:55Z sauvin joined #lisp 2018-09-08T05:12:04Z _whitelogger quit (Remote host closed the connection) 2018-09-08T05:14:17Z _whitelogger joined #lisp 2018-09-08T05:14:27Z dale quit (Quit: dale) 2018-09-08T05:14:35Z fikka joined #lisp 2018-09-08T05:19:21Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T05:22:27Z X-Scale joined #lisp 2018-09-08T05:23:13Z steiner joined #lisp 2018-09-08T05:26:39Z anewuser quit (Quit: anewuser) 2018-09-08T05:27:46Z jlarocco joined #lisp 2018-09-08T05:28:15Z Bike quit (Quit: Lost terminal) 2018-09-08T05:34:06Z makomo quit (Ping timeout: 252 seconds) 2018-09-08T05:34:55Z fikka joined #lisp 2018-09-08T05:39:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T05:42:23Z robotoad quit (Quit: robotoad) 2018-09-08T05:45:20Z fikka joined #lisp 2018-09-08T05:50:16Z no-defun-allowed: hi beach 2018-09-08T05:50:16Z fikka quit (Ping timeout: 244 seconds) 2018-09-08T05:54:03Z _whitelogger quit (Remote host closed the connection) 2018-09-08T05:55:28Z kristof quit (Ping timeout: 245 seconds) 2018-09-08T05:55:40Z fikka joined #lisp 2018-09-08T05:56:16Z _whitelogger joined #lisp 2018-09-08T06:00:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T06:05:18Z razzy: hi all 2018-09-08T06:05:57Z vlatkoB joined #lisp 2018-09-08T06:07:45Z Fare quit (Ping timeout: 252 seconds) 2018-09-08T06:12:58Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-08T06:15:54Z fikka joined #lisp 2018-09-08T06:20:56Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T06:22:23Z no-defun-allowed: are there any good opengl bindings/abstractions similar to pyglut? 2018-09-08T06:23:50Z steiner quit (Remote host closed the connection) 2018-09-08T06:24:26Z earl-ducaine: re: getf/get cltl has a nice sumerization: "to clarify the permissible side effects of certain operations; (setf (get symbol indicator) newvalue) is required to behave exactly the same as (setf (getf (symbol-plist symbol) indicator) newvalue). " 2018-09-08T06:27:47Z oni-on-ion: no-defun-allowed: cl-opengl ? 2018-09-08T06:28:01Z no-defun-allowed: that was my first thought 2018-09-08T06:28:05Z no-defun-allowed: i might look at cepl for a bi 2018-09-08T06:28:08Z no-defun-allowed: *bit 2018-09-08T06:31:36Z oni-on-ion: ok 2018-09-08T06:35:52Z acolarh joined #lisp 2018-09-08T06:36:16Z fikka joined #lisp 2018-09-08T06:36:46Z no-defun-allowed: pyglut was good in how it took care of textures itself 2018-09-08T06:36:59Z no-defun-allowed: [eg](https://www.youtube.com/watch?v=Hqg4qePJV2U) 2018-09-08T06:41:50Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T06:44:49Z steiner joined #lisp 2018-09-08T06:47:57Z nirved joined #lisp 2018-09-08T06:55:32Z pierpal quit (Read error: Connection reset by peer) 2018-09-08T06:57:03Z fikka joined #lisp 2018-09-08T07:00:00Z caltelt_ quit (Ping timeout: 252 seconds) 2018-09-08T07:01:39Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T07:02:39Z pjb quit (Ping timeout: 252 seconds) 2018-09-08T07:14:02Z pierpal joined #lisp 2018-09-08T07:17:15Z fikka joined #lisp 2018-09-08T07:21:49Z fikka quit (Ping timeout: 246 seconds) 2018-09-08T07:27:03Z _whitelogger quit (Remote host closed the connection) 2018-09-08T07:29:15Z _whitelogger joined #lisp 2018-09-08T07:32:05Z zooey quit (Ping timeout: 256 seconds) 2018-09-08T07:36:03Z _whitelogger quit (Remote host closed the connection) 2018-09-08T07:37:36Z fikka joined #lisp 2018-09-08T07:37:36Z zooey joined #lisp 2018-09-08T07:38:15Z _whitelogger joined #lisp 2018-09-08T07:42:07Z fikka quit (Ping timeout: 246 seconds) 2018-09-08T07:47:24Z steiner quit (Remote host closed the connection) 2018-09-08T07:48:03Z fikka joined #lisp 2018-09-08T07:52:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T07:58:19Z fikka joined #lisp 2018-09-08T08:01:15Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-08T08:01:23Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-08T08:02:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T08:05:34Z zxcvz joined #lisp 2018-09-08T08:09:53Z lavaflow_ joined #lisp 2018-09-08T08:12:54Z steiner joined #lisp 2018-09-08T08:15:15Z slyrus1: phoe: around? 2018-09-08T08:15:58Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-08T08:18:40Z fikka joined #lisp 2018-09-08T08:19:01Z phoe: slyrus1: sup 2018-09-08T08:19:23Z slyrus1: hey, I made a POC of an hsv-image for opticl 2018-09-08T08:19:31Z no-defun-allowed: nice 2018-09-08T08:19:33Z phoe: slyrus1: yes, I have noticed 2018-09-08T08:19:34Z phoe: <3 2018-09-08T08:19:48Z phoe: I'll try using it today or tomorrow 2018-09-08T08:20:19Z slyrus1: ok, let me know if it works and if you need support to/from other image types. and then I can push it to the master branch. 2018-09-08T08:20:33Z phoe: All I need is 8-bit RGB 2018-09-08T08:20:55Z slyrus1: Cool. That works for me. 2018-09-08T08:20:57Z jlarocco joined #lisp 2018-09-08T08:21:06Z phoe: do you use floats/doubles in the HSV colorspace? if yes, you should be able to export/import from 16-bit images as well 2018-09-08T08:21:28Z slyrus1: right. should be pretty trivial to add support for those. 2018-09-08T08:21:29Z phoe: since the bitcount just increases resolution 2018-09-08T08:23:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T08:25:06Z orivej joined #lisp 2018-09-08T08:29:03Z fikka joined #lisp 2018-09-08T08:33:34Z fikka quit (Ping timeout: 246 seconds) 2018-09-08T08:33:44Z K1rk joined #lisp 2018-09-08T08:38:16Z jmercouris joined #lisp 2018-09-08T08:39:10Z fikka joined #lisp 2018-09-08T08:41:37Z borodust quit (Quit: Leavin') 2018-09-08T08:43:52Z fikka quit (Ping timeout: 244 seconds) 2018-09-08T08:48:35Z slyrus1: phoe: OK, 16-bit (and 2-, 4-, etc..) are trivial. 16-bit works, but I'l commit tomorrow. 2018-09-08T08:48:38Z slyrus1: good night. 2018-09-08T08:48:44Z jmercouris: goodnight! 2018-09-08T08:49:03Z fikka joined #lisp 2018-09-08T08:51:39Z doubledup joined #lisp 2018-09-08T08:52:18Z phoe: night! 2018-09-08T08:54:03Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T08:55:34Z azimut_ joined #lisp 2018-09-08T08:57:49Z azimut quit (Ping timeout: 244 seconds) 2018-09-08T09:00:05Z graphene quit (Remote host closed the connection) 2018-09-08T09:01:45Z graphene joined #lisp 2018-09-08T09:03:13Z zerobaud quit (Quit: Page closed) 2018-09-08T09:07:01Z random-nick joined #lisp 2018-09-08T09:07:03Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-08T09:07:39Z ebrasca joined #lisp 2018-09-08T09:09:45Z fikka joined #lisp 2018-09-08T09:14:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T09:17:04Z zhlyg joined #lisp 2018-09-08T09:18:11Z zhlyg: Isn't tpapp/LLA used anymore? 2018-09-08T09:19:58Z astalla joined #lisp 2018-09-08T09:20:03Z steiner quit (Remote host closed the connection) 2018-09-08T09:20:15Z fikka joined #lisp 2018-09-08T09:20:29Z steiner joined #lisp 2018-09-08T09:20:32Z steiner quit (Remote host closed the connection) 2018-09-08T09:21:31Z steiner joined #lisp 2018-09-08T09:24:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T09:28:23Z kooga joined #lisp 2018-09-08T09:37:17Z phoe: zhlyg: what's tpapp? 2018-09-08T09:37:33Z phoe: ooh 2018-09-08T09:37:42Z phoe: you mean https://github.com/tpapp/LLA 2018-09-08T09:38:40Z phoe: it's unmaintained AFAIK - tpapp stopped working in Lisp 2018-09-08T09:38:50Z phoe: unrelated: https://github.com/phoe/protest/blob/master/doc/common.md I finally have some PROTEST examples pushed 2018-09-08T09:40:14Z fikka joined #lisp 2018-09-08T09:41:13Z borodust joined #lisp 2018-09-08T09:42:39Z zhlyg: phoe: Thanks! I see now he's doing Julia, nice choice! 2018-09-08T09:45:12Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T09:48:02Z scymtym quit (Ping timeout: 272 seconds) 2018-09-08T09:55:46Z razzy: phoe: is it attempt to make universal protocol? 2018-09-08T09:56:00Z phoe: razzy: nah 2018-09-08T09:56:04Z phoe: more like a library for handling them 2018-09-08T09:57:01Z razzy: cool :] it will iterate to one universal eventually 2018-09-08T09:57:30Z phoe: I don't think so, I think it's impossible to have one universal protocol for everything™ 2018-09-08T09:57:39Z phoe: there's way too much variety. 2018-09-08T09:58:14Z razzy: phoe: it will be inteligent, self-transforming one 2018-09-08T09:58:30Z phoe: now that's some #lispcafe worthy stuff 2018-09-08T10:00:32Z razzy: phoe: maybe we should call it auto-comm library 2018-09-08T10:00:58Z fikka joined #lisp 2018-09-08T10:01:04Z razzy: which will negotiate proper protocol :] 2018-09-08T10:02:06Z razzy: sry, carried away :] 2018-09-08T10:04:31Z beach: razzy: "universal protocol" doesn't make any sense. 2018-09-08T10:05:20Z razzy: beach same as universal character set? 2018-09-08T10:05:42Z beach: #lispcafe as phoe suggested. 2018-09-08T10:05:48Z razzy: T 2018-09-08T10:05:54Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T10:21:16Z fikka joined #lisp 2018-09-08T10:24:11Z scymtym joined #lisp 2018-09-08T10:26:40Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T10:28:06Z SenasOzys joined #lisp 2018-09-08T10:30:25Z pjb joined #lisp 2018-09-08T10:33:07Z phoe: pjb: do you have a package for lorem ipsum generation perhaps? 2018-09-08T10:36:11Z pjb: That rings a bell, but no, not currently. 2018-09-08T10:36:26Z pjb: Copy-and-paste from the web? 2018-09-08T10:38:00Z phoe: I found myself in need of a lorem ipsum generator in Lisp. 2018-09-08T10:38:19Z phoe: Like, something that generates paragraphs of arbitary length. 2018-09-08T10:38:35Z housel quit (Read error: Connection reset by peer) 2018-09-08T10:39:41Z phoe: Sure, I could generate it online and copypaste, but I'd rather craft a library and upload it to QL. 2018-09-08T10:40:15Z zhlyg quit (Remote host closed the connection) 2018-09-08T10:41:37Z fikka joined #lisp 2018-09-08T10:42:48Z pjb: Well, (let ((word-count 10)) (format nil "~{~A~^ ~}" (loop repeat word-count collect (format nil "~(~36R~)" (random 10000000))))) #| --> "3qew7 14uhr 4bqp9 5g5nk 5lgic 4qt4d ra41 n4s3 ru4 53orl" |# 2018-09-08T10:43:03Z phoe: pjb: yep, that's trivial, I just want it to look like Latin. 2018-09-08T10:43:08Z pjb: Ok. 2018-09-08T10:43:10Z phoe: Nah, I'll just write it. 2018-09-08T10:43:14Z phoe: Gimme half an hour. 2018-09-08T10:43:55Z pjb: https://gist.github.com/papoanaya/4042962 2018-09-08T10:44:15Z phoe: pjb: correct, that one is a binding to an online service though. 2018-09-08T10:44:21Z pjb: As I said, copy-and-paste from the web :-) 2018-09-08T10:45:52Z pjb: Make it look like Kinglon! 2018-09-08T10:46:07Z pjb: Klingon, I mean. 2018-09-08T10:46:15Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T10:46:37Z pjb: https://tradukka.com/translate/en/tlh 2018-09-08T10:47:01Z pjb: qo' vIvan! ghotvam'e' wa'DIch nID DeSDu' tlhIngan mu'tlhegh! 2018-09-08T10:48:20Z makomo joined #lisp 2018-09-08T10:54:37Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-08T10:59:21Z eminhi joined #lisp 2018-09-08T11:01:22Z eminhi: how to set lisp implementation sources (lisp binary is not built from sources) in emacs-slime? 2018-09-08T11:02:17Z fikka joined #lisp 2018-09-08T11:02:57Z heisig joined #lisp 2018-09-08T11:03:56Z eminhi: or is it set in a lisp initialization file? 2018-09-08T11:04:12Z beach: eminhi: Do you mean that you want to install the binary and the source separately and still have SLIME be able to find the source? I don't know the answer to the question, but it was not clear to me what you meant. 2018-09-08T11:04:20Z eminhi: yes 2018-09-08T11:05:19Z eminhi: there is bug which isn't allowing me to build from sources, so I want to work with existing binary and available source code. 2018-09-08T11:06:24Z scymtym: eminhi: which implementation are you using? i doubt there is a portable way 2018-09-08T11:06:30Z eminhi: cmucl 2018-09-08T11:06:36Z beach: Wow. 2018-09-08T11:06:59Z beach: eminhi: I suggest you change to SBCL. That way you can build from source. 2018-09-08T11:07:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T11:07:13Z phoe: cmucl is pretty ancient 2018-09-08T11:07:38Z scymtym: SBCL has SB-EXT:SET-SBCL-SOURCE-LOCATION which sets up "SYS:SRC;", "SYS:CONTRIB;", and "SYS:OUTPUT;" logical pathname translations. maybe CMUCL has something similar (given the relation between the two) 2018-09-08T11:08:19Z eminhi: I have a working sbcl setup, but I am trying something out with cmucl and wanted to see if sources can be setup. 2018-09-08T11:10:01Z beach: What is it that you are trying out, in case you care to share. 2018-09-08T11:10:02Z beach: ? 2018-09-08T11:13:53Z eminhi: beach: some profiling for experimental code, trying to get a portable code which does all the profiling work. 2018-09-08T11:14:18Z eminhi: time macro is pretty implementation dependent 2018-09-08T11:17:22Z beach: eminhi: So CMUCL is just one of many implementation that you want to use in order to make sure your code is portable? 2018-09-08T11:18:05Z scymtym: eminhi: if you use CL:TIME for profiling maybe have a look at https://github.com/Shinmera/trivial-benchmark 2018-09-08T11:21:47Z eminhi: beach: I'm looking at how varied the my running times(gc, mem) are on different implementations. 2018-09-08T11:22:02Z eminhi: scymtym: Thanks, I'll look into it. 2018-09-08T11:22:04Z beach: Oh, I see. 2018-09-08T11:22:40Z fikka joined #lisp 2018-09-08T11:25:44Z jmercouris quit (Remote host closed the connection) 2018-09-08T11:25:49Z phoe: pjb: that was a quickie 2018-09-08T11:25:50Z phoe: https://github.com/phoe/lorem-ipsum/blob/master/lorem-ipsum.lisp 2018-09-08T11:26:01Z jmercouris joined #lisp 2018-09-08T11:26:07Z eminhi: scymtym: Hmm, I've been re-implementing much of *trivial-benchmark* library, thanks for the suggestion. 2018-09-08T11:27:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T11:28:15Z FreeBirdLjj joined #lisp 2018-09-08T11:33:02Z fikka joined #lisp 2018-09-08T11:36:32Z phoe: eminhi: that's why I usually ask on #lisp before I start writing stuff on my own 2018-09-08T11:36:42Z phoe: I had a few moments when I wrote stuff that somebody else already wrote 2018-09-08T11:37:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T11:37:53Z gector quit (Read error: Connection reset by peer) 2018-09-08T11:37:54Z lavaflow_ joined #lisp 2018-09-08T11:38:24Z gector joined #lisp 2018-09-08T11:41:27Z scymtym: eminhi: sure, no problem 2018-09-08T11:42:02Z eminhi: phoe: I was doing some simple profiling, it just grew before I thought to look for a library. 2018-09-08T11:42:42Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-08T11:43:32Z Kristoft quit (Quit: Connection closed for inactivity) 2018-09-08T11:45:08Z phoe: eminhi: I know the feeling (: 2018-09-08T11:46:18Z SenasOzys quit (Ping timeout: 245 seconds) 2018-09-08T11:47:23Z eminhi: phoe: Thanks, I should make a habit of looking for a library before abstracting too much. 2018-09-08T11:50:11Z Essadon joined #lisp 2018-09-08T11:53:05Z fikka joined #lisp 2018-09-08T11:53:34Z nbunjeva3 joined #lisp 2018-09-08T11:56:28Z graphene quit (Remote host closed the connection) 2018-09-08T11:56:34Z nbunjeva1 quit (Ping timeout: 246 seconds) 2018-09-08T11:57:58Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T11:58:04Z graphene joined #lisp 2018-09-08T11:59:47Z astalla quit (Ping timeout: 240 seconds) 2018-09-08T12:03:55Z fikka joined #lisp 2018-09-08T12:03:56Z SenasOzys joined #lisp 2018-09-08T12:08:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T12:08:28Z heisig quit (Quit: Leaving) 2018-09-08T12:14:00Z fikka joined #lisp 2018-09-08T12:18:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T12:19:29Z jlarocco joined #lisp 2018-09-08T12:23:47Z rumbler31 joined #lisp 2018-09-08T12:23:57Z fikka joined #lisp 2018-09-08T12:27:13Z AeroNotix: is there a linter that's relatively widely used? 2018-09-08T12:27:17Z AeroNotix: like gofmt 2018-09-08T12:27:30Z phoe: AeroNotix: you mean something that can format your code? 2018-09-08T12:27:51Z AeroNotix: phoe: a mixture between that and hinting at smelly forms 2018-09-08T12:28:08Z phoe: emacs for formatting, SBCL compiler for hinting at smelly forms 2018-09-08T12:28:31Z AeroNotix: phoe: will it warn about things like (when (not (form))) => (unless (form)) 2018-09-08T12:28:59Z phoe: nope 2018-09-08T12:29:02Z phoe: it'll just compile them 2018-09-08T12:29:03Z _death: sometimes (when (not ...) ...) is clearer to me 2018-09-08T12:29:12Z AeroNotix: _death: to each their own 2018-09-08T12:29:23Z AeroNotix: but it's why I like gofmt. It removes bikeshedding 2018-09-08T12:29:32Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T12:29:38Z _death: lisp is totally the language for bikeshedding 2018-09-08T12:29:39Z AeroNotix: if there was clfmt and it chose one over the other, I'd agree with that. Just to no longer care 2018-09-08T12:30:43Z AeroNotix: https://github.com/fukamachi/sblint hmm 2018-09-08T12:33:30Z AeroNotix: https://github.com/norvig/paip-lisp huh, totally missed this getting released. Always wanted to read this book! 2018-09-08T12:34:41Z beach: That's an interesting project though. And Eclector would be the thing to use to read the source code. 2018-09-08T12:34:59Z beach: It can preserve source position, so incorrect indentation could be signaled. 2018-09-08T12:36:45Z AeroNotix: beach: I just like how gofmt has become the standard way of formatting/indenting/etc in Go code. It removes a tonne of useless discussion at dayjobs/open sores projects. 2018-09-08T12:37:01Z AeroNotix: I see lisp code all the time where the indentation especially is really out of whack 2018-09-08T12:38:24Z beach: Indeed, and it would be something to give to newbies who come here with bad code. 2018-09-08T12:38:48Z lavaflow_ joined #lisp 2018-09-08T12:39:07Z _death: lisp syntax is context sensitive, in general it makes no sense to suggest such transformations because they may be invalid 2018-09-08T12:39:22Z beach: _death: What do you mean? 2018-09-08T12:39:59Z _death: it may be that (when (not x) ...) cannot be replaced by (unless x ...) 2018-09-08T12:40:12Z beach: I don't think that would ever be the case. 2018-09-08T12:40:21Z _death: you'd be wrong 2018-09-08T12:40:32Z beach: Can you give an example? 2018-09-08T12:40:42Z _death: for example (my-macro (when (not ...) ...)) 2018-09-08T12:41:06Z _death: for example (:shadow #:when) 2018-09-08T12:41:09Z beach: What does MY-MACRO do? 2018-09-08T12:41:18Z AeroNotix: _death: why would you shadow when? 2018-09-08T12:41:27Z _death: beach: exactly.. it may treat that form another way 2018-09-08T12:41:34Z pjb quit (Ping timeout: 240 seconds) 2018-09-08T12:41:40Z beach: _death: That would be very confusing code to write. 2018-09-08T12:41:50Z _death: AeroNotix: because you can?.. I've shadowed all kinds of symbols throughout my lisp development :) 2018-09-08T12:41:55Z AeroNotix: _death: plus a linter could be informed to macroexpand before linting 2018-09-08T12:42:28Z AeroNotix: actually if I had my way a linter would warn on shadowing :) 2018-09-08T12:42:51Z beach: _death: If you have strange code like that, you deserve a message from a linter. 2018-09-08T12:43:31Z _death: I disagree.. I have all kinds of programs written in different styles and it certainly makes sense to do those things in these contexts 2018-09-08T12:43:33Z scymtym: beach: why? imagine (with-my-dsl-syntax … (when (not …) …) …) 2018-09-08T12:43:40Z pjb joined #lisp 2018-09-08T12:44:18Z fikka joined #lisp 2018-09-08T12:44:31Z _death: if your linter is aimed at newbies only, ok.. there's lisp-critic and such.. but no experienced lisper will find it adequate 2018-09-08T12:44:42Z rumbler31 quit (Remote host closed the connection) 2018-09-08T12:44:59Z beach: scymtym: That would be unusual enough that the person writing such code would just ignore the message from the linter. 2018-09-08T12:45:22Z _death: unless you want to give up linguistic abstraction and have your lisp code to look like Go 2018-09-08T12:45:27Z razzy quit (Ping timeout: 240 seconds) 2018-09-08T12:47:11Z scymtym: after an amount of experimentation, i have come to the conclusion that a custom reader, a code walker, first class environments and knowing where to stop can get you pretty far in terms of linting. case in point: https://techfak.de/~jmoringe/eclector-cst-toy-2.ogv 2018-09-08T12:47:48Z orivej quit (Ping timeout: 252 seconds) 2018-09-08T12:49:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T12:51:27Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-08T12:51:53Z _death: AeroNotix: if you macroexpand it misses the point of the linter, since it's no longer source code 2018-09-08T12:53:11Z pjb: AeroNotix: out of whack indentation is often due to the use of TAB. 2018-09-08T12:53:35Z oni-on-ion: macropacksand 2018-09-08T12:53:36Z _death: sometimes it's due to copying the form from the repl 2018-09-08T12:53:36Z pjb: AeroNotix: remember, it's scientifically proven, programmers who use SPC to indent earn more money. (as are those who use emacs instead of vi). 2018-09-08T12:53:51Z AeroNotix: _death: sure, I get that, it's why I mentioned it should be hidden behind a flag or something. You'd still want to lint macroexpansions as the author of macros. 2018-09-08T12:54:00Z AeroNotix: pjb: they don't think it be like it is but it do 2018-09-08T12:54:35Z _death: AeroNotix: I doubt that assumption :) 2018-09-08T12:57:30Z pjb: https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/ 2018-09-08T12:57:47Z pjb: Notice the curve! Scientifically proven! 2018-09-08T12:58:04Z pjb: Over all countries, even! 2018-09-08T12:58:09Z AeroNotix: correlation/causation blah blah blah 2018-09-08T12:58:09Z madnificent joined #lisp 2018-09-08T12:58:39Z pjb: Imagine the poor PHP programmer who uses vi and TABs! 2018-09-08T12:59:21Z madnificent: Xach: Is there a standardised way to discover a new quicklisp release has been made? I'd estimate whether or not it's worth automatically creating docker images for them or not. 2018-09-08T13:00:08Z pjb: madnificent: http://planet.lisp.org/ 2018-09-08T13:00:11Z madnificent: pjb: that's a nice perspective to take if you're tired programming :P 2018-09-08T13:00:22Z madnificent: pjb: I'd prefer something I can automate ^_^ 2018-09-08T13:00:30Z pjb: madnificent: wget, etc. 2018-09-08T13:00:49Z _death: looks like ql-dist:available-update 2018-09-08T13:00:50Z pjb: madnificent: alternatively, you may watch the github repo of quicklisp. 2018-09-08T13:01:46Z AeroNotix: madnificent: (ql-dist:available-update (ql-dist:find-dist "quicklisp")) 2018-09-08T13:01:51Z beach: scymtym: Nice demo! 2018-09-08T13:01:56Z madnificent: _death: #'cl-dist:available-versions could work 2018-09-08T13:01:59Z beach: Are you using SICL first-class global environments? 2018-09-08T13:02:28Z mrcom quit (Ping timeout: 272 seconds) 2018-09-08T13:02:42Z madnificent: Ideally, I'd have something I could easily run from a cron-tab. But I could go heavy and do this in lisp... 2018-09-08T13:03:01Z AeroNotix: madnificent: well http://beta.quicklisp.org/dist/quicklisp-versions.txt 2018-09-08T13:03:19Z madnificent: AeroNotix: that's perfect 2018-09-08T13:03:19Z AeroNotix: and you'd still need to store the version# of the last dist you saw. Might as well just use the ql-dist functions at that point 2018-09-08T13:03:38Z AeroNotix: (ql-dist:available-update (ql-dist:find-dist "quicklisp")) is literally doing what you'd end up doing with wget/crontab though 2018-09-08T13:04:00Z AeroNotix: plus, installing the dist itself would maintain the state. It's like 10 lines of lisp, max 2018-09-08T13:04:01Z scymtym: beach: not currently. the thing uses simple environments for lexical information. i mentioned first class global environments because they provide a way to run reader macro functions and macro expanders in a controlled way (i hope to go into that direction later) 2018-09-08T13:04:06Z pjb: (when (ql-dist:available-update (ql-dist:find-dist "quicklisp")) (format t ";; There's a quicklisp update available.~%")) in your rc file. 2018-09-08T13:04:06Z pjb: 2018-09-08T13:04:07Z rumbler31 joined #lisp 2018-09-08T13:04:22Z madnificent: AeroNotix: I think I'd prefer to monitor it with a crontab, then push a new configuration to github, push a tag, and let docker hub build it. 2018-09-08T13:04:22Z pjb: Assuming you will boot more than one lisp image per month… 2018-09-08T13:04:35Z AeroNotix: madnificent: you do you 2018-09-08T13:05:02Z fikka joined #lisp 2018-09-08T13:05:06Z AeroNotix: pjb: sticking some randomness/once a day checking in that and adding to my rc file 2018-09-08T13:05:23Z madnificent: So it's more from a tooling perspective than anything else. Within lisp, I'd certainly take your route. (but I wouldn't go for updates which I don't overesee on production systems, so then I wouldn't) 2018-09-08T13:06:01Z AeroNotix: madnificent: I'm not sure I follow. Surely if you're implementing a system to automatically build Dockerfiles then you would either be running from a Dockerfile that already has a lisp installed or the system it is running on has lisp installed. 2018-09-08T13:06:10Z pjb: I would never put automatic updates on production systems. The best way to be called back from holidays, or not having any night or week end. 2018-09-08T13:06:19Z pjb: Well once a month for quicklisp, but still… 2018-09-08T13:06:24Z AeroNotix: pjb: no one is saying "automatically updating production" lolwat 2018-09-08T13:06:46Z AeroNotix: madnificent seems to just be preemptively building dockerfiles with the latest quicklisp dist, a fine goal. 2018-09-08T13:07:01Z madnificent: AeroNotix: in practice, I have lisp installed. But the servers don't have a native lisp installed. That runs in docker containers. 2018-09-08T13:07:30Z beach: scymtym: I see. 2018-09-08T13:08:25Z AeroNotix: madnificent: dockerfile+persistent volume is how I'd do it. The quicklisp dist tagger dockerfile would have a lisp installed and install quicklisp into that (with the persistent volume). Add the code we gave above. Run that dockerfile within a crontab. 2018-09-08T13:10:04Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T13:10:37Z rumbler31 quit (Remote host closed the connection) 2018-09-08T13:10:51Z froggey quit (Ping timeout: 260 seconds) 2018-09-08T13:11:42Z madnificent quit (Ping timeout: 252 seconds) 2018-09-08T13:12:22Z froggey joined #lisp 2018-09-08T13:12:29Z madnificent joined #lisp 2018-09-08T13:12:49Z madnificent: Bad connection 2018-09-08T13:14:33Z madnificent: Anyhow, I received an issue on madnificent/lisp-webservice-docker (GitHub) which boils down to "your image has an old version of swank, because you have an old version of quicklisp". As I tried to upgrade, it seems the newer versions require a newer version of SBCL. There I went down the rabbit hole. Docker is now widely accepted as a way of deployment, the lisp community can benefit from that too :) 2018-09-08T13:14:57Z AeroNotix: madnificent: no-one asserted you shouldn't use docker :) 2018-09-08T13:15:11Z orivej joined #lisp 2018-09-08T13:16:07Z madnificent: AeroNotix: I don't have your question in my buffer anymore, but I was hoping that that cleared up confusion. 2018-09-08T13:18:38Z astalla joined #lisp 2018-09-08T13:22:34Z isoraqathedh joined #lisp 2018-09-08T13:22:38Z anewuser joined #lisp 2018-09-08T13:25:15Z fikka joined #lisp 2018-09-08T13:27:03Z Fare joined #lisp 2018-09-08T13:30:06Z fikka quit (Ping timeout: 244 seconds) 2018-09-08T13:37:33Z pjb quit (Ping timeout: 252 seconds) 2018-09-08T13:37:58Z nbunjeva3 quit (Ping timeout: 245 seconds) 2018-09-08T13:41:04Z madnificent quit (Ping timeout: 240 seconds) 2018-09-08T13:45:40Z fikka joined #lisp 2018-09-08T13:47:22Z jmercouris quit (Remote host closed the connection) 2018-09-08T13:47:40Z jmercouris joined #lisp 2018-09-08T13:50:18Z pjb joined #lisp 2018-09-08T13:50:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T14:03:54Z rippa joined #lisp 2018-09-08T14:06:12Z SenasOzys quit (Remote host closed the connection) 2018-09-08T14:06:20Z fikka joined #lisp 2018-09-08T14:06:30Z SenasOzys joined #lisp 2018-09-08T14:08:28Z graphene quit (Remote host closed the connection) 2018-09-08T14:10:00Z graphene joined #lisp 2018-09-08T14:10:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T14:11:57Z rpg quit (Ping timeout: 252 seconds) 2018-09-08T14:14:40Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-08T14:16:43Z fikka joined #lisp 2018-09-08T14:18:17Z hifitim joined #lisp 2018-09-08T14:21:39Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T14:24:49Z dueyfinster joined #lisp 2018-09-08T14:26:47Z astalla quit (Ping timeout: 240 seconds) 2018-09-08T14:27:10Z cage_ joined #lisp 2018-09-08T14:28:05Z hifitim quit (Remote host closed the connection) 2018-09-08T14:31:28Z razzy joined #lisp 2018-09-08T14:32:57Z hifitim joined #lisp 2018-09-08T14:36:46Z fikka joined #lisp 2018-09-08T14:38:59Z asarch joined #lisp 2018-09-08T14:40:27Z jmercouris quit (Ping timeout: 240 seconds) 2018-09-08T14:41:54Z fikka quit (Ping timeout: 272 seconds) 2018-09-08T14:45:06Z astalla joined #lisp 2018-09-08T14:50:05Z sabrac joined #lisp 2018-09-08T14:52:05Z Bike joined #lisp 2018-09-08T14:53:23Z gypsydave5 joined #lisp 2018-09-08T14:56:39Z gypsydave5: I was having a conversation with a friend about CL - they're pretty in to Go - and he was wondering how to write a CL program that compiled to a binary. I had a go with ECL, which worked - but required a the ECL dylib to be on the libraries path. Does anyone know if there's a way to compile ECL which would produce a (mostly) portable binary in the way that Go does? 2018-09-08T14:57:05Z fikka joined #lisp 2018-09-08T14:58:22Z beach: gypsydave5: You would have to ask jackdaniel. But other implementations can certainly produce "standalone" binaries, like SBCL. They get pretty big though, because they must include the entire Common Lisp run-time system. 2018-09-08T14:59:59Z lavaflow_ joined #lisp 2018-09-08T15:00:33Z pjb: gypsydave5: don't they use a libgo for the runtime? 2018-09-08T15:00:49Z gypsydave5: beach: Yeah, I did it for SBCL, and using Roswell, which was nice and easy. I was _kinda_ trying to compete/show off with the binary size. The 'hello world' from ECL was comparible with the size of a C binary. 2018-09-08T15:01:00Z pjb: gypsydave5: it's possible to compile libecl as a static library too. 2018-09-08T15:01:19Z Bike: you're probably going to lose that competition most of the time 2018-09-08T15:01:40Z beach: gypsydave5: You can't do that basically. The Common Lisp run-time contains the entire compiler and the garbage collector. 2018-09-08T15:01:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T15:01:57Z pjb: gypsydave5: remember, C binaries use libc. 2018-09-08T15:02:01Z gypsydave5: pjb: Hmmm... I'm ignorant about what's happening under the hood in Go. So maybe it's comparing apples to oranges. 2018-09-08T15:02:05Z Roy_Fokker joined #lisp 2018-09-08T15:02:06Z beach: gypsydave5: Who cares about binary size anyway? 2018-09-08T15:02:47Z pjb: gypsydave5: try: ldd goprogram # to see what shared libraries it uses. 2018-09-08T15:03:11Z pjb: (otool -L goprogram # on macOS). 2018-09-08T15:03:34Z gypsydave5: beach: fair point - more of an academic exercise really 2018-09-08T15:03:34Z pjb: gypsydave5: (actually ldd, and otool -L only gives the minimal set of shared libraries. The program can also dynamically load other libraries at run-time). 2018-09-08T15:04:39Z gypsydave5: pjb: just trying that now... thanks :D 2018-09-08T15:05:25Z pjb: The small sizes of memories in our childhood computers has been a big trauma for all of us… 2018-09-08T15:05:36Z beach: Not me. 2018-09-08T15:05:48Z gypsydave5: pjb: basic hello world has a dependence on `libSystem.B.dylib` on macOS 2018-09-08T15:05:55Z pjb: Yep. 2018-09-08T15:06:24Z beach: So then Go and ECL are comparable? 2018-09-08T15:06:56Z gypsydave5: beach: I'm going to take a poke at the ECL bin with the same tool 2018-09-08T15:07:42Z pjb: gypsydave5: perhaps you may want to consider MoCL. 2018-09-08T15:08:07Z pjb: https://wukix.com/mocl 2018-09-08T15:08:30Z pjb: or clicc for a free software equivalent (but clicc would require some love and updating). 2018-09-08T15:08:47Z beach: gypsydave5: Does go require the compiler to be present at run-time? 2018-09-08T15:08:47Z gypsydave5: pjb: Yes, I was looking at that. When I've got $200 to spare... :D 2018-09-08T15:08:58Z pjb: Try clicc then! 2018-09-08T15:09:06Z gypsydave5: pjb: will do 2018-09-08T15:09:31Z gypsydave5: beach: Don't _think_ so 2018-09-08T15:09:33Z beach: Of not, you are definitely comparing completely different things. 2018-09-08T15:10:12Z gypsydave5: yeah... just looked at the dependencies from otool on the ECL hello world and there were another three libraries it needed. 2018-09-08T15:11:09Z rumbler31 joined #lisp 2018-09-08T15:12:29Z pjb: gypsydave5: shared libraries are good. Often programs will depend on 50 or hundreds of shared libraries. This is what makes the size of the binaries small. 2018-09-08T15:14:27Z mrcom joined #lisp 2018-09-08T15:14:30Z gypsydave5: Thanks pjb, beach - useful and interesting :D 2018-09-08T15:16:01Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-08T15:19:03Z scymtym quit (Ping timeout: 252 seconds) 2018-09-08T15:19:07Z Jesin quit (Quit: Leaving) 2018-09-08T15:22:58Z Jesin joined #lisp 2018-09-08T15:23:10Z Jesin quit (Client Quit) 2018-09-08T15:30:41Z mkolenda quit (Remote host closed the connection) 2018-09-08T15:31:14Z mkolenda joined #lisp 2018-09-08T15:32:03Z eschulte quit (Ping timeout: 252 seconds) 2018-09-08T15:32:57Z Jesin joined #lisp 2018-09-08T15:36:27Z Pixel_Outlaw joined #lisp 2018-09-08T15:38:06Z phoe: gypsydave5: if anything, you could do a different thing 2018-09-08T15:38:17Z phoe: which is to compile FASLs 2018-09-08T15:38:43Z phoe: in that way, you could treat the SBCL binary as a runtime (and therefore provided by system, doesn't count into your executable size!) and only take into account the FASL size 2018-09-08T15:38:56Z phoe: theoretically, SBCL FASLs are executable, soooo you could try cheating that way. 2018-09-08T15:39:14Z beach: They are? 2018-09-08T15:39:26Z phoe: One sec 2018-09-08T15:39:58Z phoe: Yes 2018-09-08T15:40:01Z phoe: they use a hack 2018-09-08T15:40:07Z phoe: the first line of FASLs compiled on my machine is: 2018-09-08T15:40:08Z phoe: #!/home/phoe/.roswell/impls/x86-64/linux/sbcl-bin/1.4.10/bin/sbcl --script 2018-09-08T15:40:12Z oni-on-ion: ./take-selfie.fasl ? 2018-09-08T15:40:28Z phoe: so, essentially, OS thinks this is a shell script, and executes SBCL with that file. 2018-09-08T15:40:52Z phoe: which is essentially what happens with all interpreted languages whenever you launch stuff like ./python_file.py from the shell 2018-09-08T15:41:34Z phoe: so you could theoretically compile a (format t "Hello world!~%") into a FASL and run that. 2018-09-08T15:42:13Z phoe: gypsydave5: there, that's a tactic for shaving off binary sizes. (; 2018-09-08T15:42:22Z oni-on-ion: hmm cool! idk where my fasls are but i found some in ~/.slime/ 2018-09-08T15:42:31Z phoe: oni-on-ion: you can produce them using 2018-09-08T15:42:32Z phoe: clhs compile-file 2018-09-08T15:42:41Z phoe: ... 2018-09-08T15:42:49Z phoe: oh, minion is dead 2018-09-08T15:42:58Z phoe: http://www.lispworks.com/documentation/lw61/CLHS/Body/f_cmp_fi.htm#compile-file 2018-09-08T15:43:17Z oni-on-ion: yea =) i just guess that slime/swank compiles a bunch. i thought that sbcl had some of its own in ~/.sbcl/ but i dont have that. are they bytecode+native ? 2018-09-08T15:43:38Z phoe: there's no bytecode in there 2018-09-08T15:44:02Z phoe: it's basically a dump of Lisp data, straight from memory - plus some data to make it loadable 2018-09-08T15:44:21Z oni-on-ion: hmm i ran sbcl.fasl all it did was dump codes of bytes to my eshell. =P 2018-09-08T15:44:37Z oni-on-ion: ohh. cool cool, so, can it be used for like binary blobs ? 2018-09-08T15:45:29Z phoe: yes - exactly that. 2018-09-08T15:45:44Z phoe: you can distribute Lisp data in binary format via FASLs. 2018-09-08T15:45:49Z jlarocco joined #lisp 2018-09-08T15:45:50Z regreg joined #lisp 2018-09-08T15:46:43Z phoe: they're volatile though - you need to use the same architecture, the same implementation and the same implementation version. 2018-09-08T15:46:53Z phoe: you can' 2018-09-08T15:47:11Z phoe: you can't execute Windows fasls on Linux, SBCL fasls on CCL, SBCL 1.4.9 fasls on SBCL 1.4.10. 2018-09-08T15:48:39Z oni-on-ion: ah thats understandable =) 2018-09-08T15:48:50Z oni-on-ion: can they be "decompiled" to produce lisp code? ie. proprietary secret codes 2018-09-08T15:49:16Z phoe: not really. 2018-09-08T15:49:20Z phoe: compilation is a one-way street. 2018-09-08T15:49:27Z oni-on-ion: ah nice =) hmm. 2018-09-08T15:49:50Z phoe: theoretically you could use some Lisp debugger to inspect that, since it's all just Lisp data, but in practice, it ain't trivial. 2018-09-08T15:50:07Z SenasOzys quit (Ping timeout: 244 seconds) 2018-09-08T15:50:24Z oni-on-ion: cool cool. same with an elf object file pretty much 2018-09-08T15:50:55Z phoe: something like that, yep 2018-09-08T15:52:50Z gypsydave5: phoe: nice one wrt the fasl executables 2018-09-08T16:02:00Z phoe: clhs pi 2018-09-08T16:05:43Z robotoad joined #lisp 2018-09-08T16:12:33Z rumbler31 joined #lisp 2018-09-08T16:12:36Z Lycurgus joined #lisp 2018-09-08T16:14:16Z regreg quit (Remote host closed the connection) 2018-09-08T16:17:11Z Kevslinger joined #lisp 2018-09-08T16:17:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-08T16:18:04Z lavaflow_ quit (Ping timeout: 240 seconds) 2018-09-08T16:18:32Z oni-on-ion quit (Read error: No route to host) 2018-09-08T16:18:43Z eminhi_ joined #lisp 2018-09-08T16:18:49Z housel joined #lisp 2018-09-08T16:20:39Z oni-on-ion joined #lisp 2018-09-08T16:21:32Z PuercoPop: phoe: you use roswell? :O How do you like it so far? 2018-09-08T16:21:58Z eminhi quit (Ping timeout: 272 seconds) 2018-09-08T16:22:16Z phoe: PuercoPop: it's a good tool for my use cases 2018-09-08T16:22:22Z phoe: and they're simple - running SBCL and upgrading SBCL 2018-09-08T16:23:31Z steiner quit (Remote host closed the connection) 2018-09-08T16:24:15Z PuercoPop: phoe: what are your use cases? For running shell scripts I use cl-launch (mainly to launch StumpWM and used it to try out lem) 2018-09-08T16:26:06Z phoe: PuercoPop: running SBCL and upgrading SBCL. (: 2018-09-08T16:27:41Z PuercoPop: ^_^, I just compile from source. I've been meaning to give guix a try though. I'm surprised it has SBCL, SLY, StumpWM, etc as readily available packages 2018-09-08T16:28:13Z rumbler31 joined #lisp 2018-09-08T16:28:23Z phoe: fe[nl]ix: do you know the nickserv passwords for specbot and minion? 2018-09-08T16:28:41Z phoe: they can't join #lisp because they don't identify with nickserv. 2018-09-08T16:28:58Z phoe: and we can't make them identify because both nicks are taken, and #common-lisp.net doesn't know the passwords. 2018-09-08T16:30:47Z beach: They can join #clasp apparently. 2018-09-08T16:32:29Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-08T16:34:35Z phoe: Yep 2018-09-08T16:34:46Z phoe: only users registered with nickserv can join #lisp though. 2018-09-08T16:34:58Z phoe: That's fallout from the recent spam attacks. 2018-09-08T16:35:28Z jlarocco quit (Ping timeout: 245 seconds) 2018-09-08T16:35:53Z oni-on-ion: most of my channels need registration, but i cant talk to nickserv without a channel joined associated with the server, so then i can join everything by hand after identifying manually. this is the reason i dont shut off my desktop as often as i'd like 2018-09-08T16:36:05Z groovy2shoes quit (Ping timeout: 250 seconds) 2018-09-08T16:36:16Z oni-on-ion: i think ##lisp is what i use for my landing strip or runway 2018-09-08T16:36:20Z SenasOzys joined #lisp 2018-09-08T16:39:46Z k-stz joined #lisp 2018-09-08T16:40:48Z lavaflow_ joined #lisp 2018-09-08T16:41:18Z dueyfinster quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-08T16:41:59Z Lycurgus: that's odd, but off topic, most clients have a default channel for the server 2018-09-08T16:42:22Z maarhart joined #lisp 2018-09-08T16:42:22Z maarhart quit (Excess Flood) 2018-09-08T16:42:42Z maarhart joined #lisp 2018-09-08T16:42:43Z maarhart quit (Excess Flood) 2018-09-08T16:42:45Z dueyfinster joined #lisp 2018-09-08T16:43:00Z maarhart joined #lisp 2018-09-08T16:43:02Z maarhart quit (Excess Flood) 2018-09-08T16:43:20Z maarhart joined #lisp 2018-09-08T16:43:21Z maarhart quit (Excess Flood) 2018-09-08T16:43:43Z maarhart joined #lisp 2018-09-08T16:45:03Z kristof joined #lisp 2018-09-08T16:47:03Z dueyfinster quit (Ping timeout: 252 seconds) 2018-09-08T16:48:52Z zxcvz quit (Quit: zxcvz) 2018-09-08T16:49:04Z zxcvz joined #lisp 2018-09-08T16:49:17Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-08T16:52:45Z beach: OK, enough work for today. 2018-09-08T16:53:10Z refpga joined #lisp 2018-09-08T16:53:14Z refpga: Hello, how do I use save-lisp-and-die to create native executables? 2018-09-08T16:53:14Z refpga: I'm currently trying to put (save-lisp-and-die cd.elf :executable t) 2018-09-08T16:53:14Z refpga: at the end. But I get an error that variable cd.elf is unbound. 2018-09-08T16:53:17Z refpga: 2018-09-08T16:53:23Z zxcvz quit (Client Quit) 2018-09-08T16:53:34Z beach: Try a string. 2018-09-08T16:53:35Z zxcvz joined #lisp 2018-09-08T16:55:01Z pierpal quit (Quit: Poof) 2018-09-08T16:55:17Z pierpal joined #lisp 2018-09-08T16:56:06Z beach: refpga: SAVE-LISP-AND-DIE is a Common Lisp function, so it evaluates its arguments. 2018-09-08T16:56:25Z beach: So if you type cd.elf, then that is taken to be a variable to evaluate. 2018-09-08T16:56:47Z beach: ... to evaluate in order to get the core-file-name that save-lisp-and-die wants as its first argument. 2018-09-08T16:57:25Z refpga quit (Read error: Connection reset by peer) 2018-09-08T16:57:42Z beach: Oh well. 2018-09-08T16:58:33Z oni-on-ion: great explanation tho. hopefully he still got it 2018-09-08T16:58:57Z beach: Thanks. 2018-09-08T17:01:41Z jmercouris joined #lisp 2018-09-08T17:04:01Z eminhi_ quit (Quit: leaving) 2018-09-08T17:06:16Z groovy2shoes joined #lisp 2018-09-08T17:07:48Z kaun joined #lisp 2018-09-08T17:10:42Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-08T17:14:13Z kaun quit 2018-09-08T17:20:55Z maarhart quit (Quit: Mutter: www.mutterirc.com) 2018-09-08T17:21:53Z maarhart joined #lisp 2018-09-08T17:22:32Z slyrus1: phoe: did you try it out yet? 2018-09-08T17:22:42Z FreeBirdLjj joined #lisp 2018-09-08T17:24:55Z nbunjeva1 joined #lisp 2018-09-08T17:27:21Z kristof quit (Remote host closed the connection) 2018-09-08T17:27:37Z kristof joined #lisp 2018-09-08T17:28:39Z Bike quit (Quit: Lost terminal) 2018-09-08T17:30:08Z scymtym joined #lisp 2018-09-08T17:33:03Z azimut_ quit (Ping timeout: 252 seconds) 2018-09-08T17:33:11Z maarhart quit (Quit: Mutter: www.mutterirc.com) 2018-09-08T17:35:58Z maarhart joined #lisp 2018-09-08T17:36:33Z cage_ quit (Quit: Leaving) 2018-09-08T17:38:22Z maarhart quit (Client Quit) 2018-09-08T17:39:56Z azimut joined #lisp 2018-09-08T17:42:12Z maarhart joined #lisp 2018-09-08T17:44:36Z azimut quit (Ping timeout: 252 seconds) 2018-09-08T17:48:12Z maarhart quit (Quit: Mutter: www.mutterirc.com) 2018-09-08T17:48:16Z pierpal quit (Quit: Poof) 2018-09-08T17:48:34Z pierpal joined #lisp 2018-09-08T17:49:42Z hifitim quit (Ping timeout: 250 seconds) 2018-09-08T17:57:08Z kristof quit (Ping timeout: 245 seconds) 2018-09-08T17:57:55Z azimut joined #lisp 2018-09-08T17:59:30Z gypsydave5 quit (Ping timeout: 272 seconds) 2018-09-08T18:10:28Z graphene quit (Remote host closed the connection) 2018-09-08T18:13:52Z graphene joined #lisp 2018-09-08T18:14:47Z anewuser quit (Ping timeout: 244 seconds) 2018-09-08T18:14:53Z slyrus1: phoe: there's a new version for you with 16-bit support and properly exported symbols. Let me know if you need anything else! 2018-09-08T18:15:17Z slyrus1: it's still on the branch on all 3 repos. If you can give it a review, I'll merge to the master branches. 2018-09-08T18:16:56Z aindilis quit (Remote host closed the connection) 2018-09-08T18:17:17Z gravicappa joined #lisp 2018-09-08T18:17:27Z anewuser joined #lisp 2018-09-08T18:18:30Z aindilis joined #lisp 2018-09-08T18:18:44Z kooga quit (Quit: :) 2018-09-08T18:18:46Z azimut quit (Ping timeout: 246 seconds) 2018-09-08T18:19:05Z azimut joined #lisp 2018-09-08T18:20:05Z kristof joined #lisp 2018-09-08T18:22:17Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-08T18:24:19Z mkolenda joined #lisp 2018-09-08T18:25:42Z pjb quit (Read error: Connection reset by peer) 2018-09-08T18:25:50Z refpga joined #lisp 2018-09-08T18:26:47Z pjb joined #lisp 2018-09-08T18:28:59Z rumbler31 joined #lisp 2018-09-08T18:30:20Z H4ns joined #lisp 2018-09-08T18:31:22Z vaporatorius joined #lisp 2018-09-08T18:33:23Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-08T18:34:51Z azimut quit (Ping timeout: 252 seconds) 2018-09-08T18:37:31Z azimut joined #lisp 2018-09-08T18:37:59Z phoe: slyrus1: <3 2018-09-08T18:38:04Z phoe: I'll check it out tomorrow 2018-09-08T18:38:06Z phoe: Have no time today. 2018-09-08T18:38:09Z steiner joined #lisp 2018-09-08T18:38:14Z slyrus1: ok, sounds good! 2018-09-08T18:46:59Z hifitim joined #lisp 2018-09-08T18:47:24Z dueyfinster joined #lisp 2018-09-08T18:47:52Z dueyfinster quit (Client Quit) 2018-09-08T18:49:03Z dueyfinster joined #lisp 2018-09-08T18:49:55Z azimut quit (Ping timeout: 244 seconds) 2018-09-08T18:52:36Z azimut joined #lisp 2018-09-08T19:00:16Z Lycurgus quit (Quit: Exeunt) 2018-09-08T19:01:01Z Oladon joined #lisp 2018-09-08T19:03:01Z vlatkoB quit (Remote host closed the connection) 2018-09-08T19:06:03Z _whitelogger quit (Remote host closed the connection) 2018-09-08T19:08:16Z _whitelogger joined #lisp 2018-09-08T19:09:10Z jmercouris quit (Ping timeout: 246 seconds) 2018-09-08T19:13:16Z refpga quit (Remote host closed the connection) 2018-09-08T19:16:46Z Hu0p quit (Ping timeout: 272 seconds) 2018-09-08T19:17:55Z holycow joined #lisp 2018-09-08T19:19:42Z maarhart joined #lisp 2018-09-08T19:20:55Z azimut quit (Ping timeout: 244 seconds) 2018-09-08T19:23:32Z buffergn0me quit (Remote host closed the connection) 2018-09-08T19:24:31Z buffergn0me joined #lisp 2018-09-08T19:26:00Z kristof quit (Ping timeout: 252 seconds) 2018-09-08T19:27:27Z atgreen quit (Ping timeout: 252 seconds) 2018-09-08T19:29:45Z rumbler31 joined #lisp 2018-09-08T19:30:23Z phoe: Can I (locally (declare (inline foo)) ...) if FOO is a function bound globally? 2018-09-08T19:31:49Z |3b|: yes, might not do anything though 2018-09-08T19:32:36Z phoe: ; Call to FOO:BAR could not be inlined because its source code was not saved. A global INLINE or SB-EXT:MAYBE-INLINE proclamation must be in effect to save function definitions for inlining. 2018-09-08T19:32:40Z phoe: welp 2018-09-08T19:32:41Z |3b|: in particular, you should declaim the global function inline before defining it to tell implementations you would like them to save data for inlining 2018-09-08T19:32:54Z phoe: yep 2018-09-08T19:33:01Z |3b|: and then declaim it notinline after defining it for the local declaration to not be redundant 2018-09-08T19:33:01Z phoe: looks like I'll cannibalize some code because of that 2018-09-08T19:33:27Z phoe: either that, or submit a PR to that library... 2018-09-08T19:33:47Z holycow quit (Ping timeout: 240 seconds) 2018-09-08T19:34:05Z |3b|: yeah, if it isn't your function you'd have to resort to hacks :/ 2018-09-08T19:34:21Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-08T19:35:01Z |3b|: like defining the package manually to declaim it before loading, or putting something on *macroexpand-hook* to do so during the DEFUN, neither really suitable for released code :) 2018-09-08T19:37:51Z kristof joined #lisp 2018-09-08T19:39:38Z maarhart quit (Quit: Mutter: www.mutterirc.com) 2018-09-08T19:45:54Z lnostdal quit (Read error: Connection reset by peer) 2018-09-08T19:47:34Z hifitim quit (Ping timeout: 240 seconds) 2018-09-08T19:49:27Z graphene quit (Remote host closed the connection) 2018-09-08T19:50:34Z jmercouris joined #lisp 2018-09-08T19:51:01Z graphene joined #lisp 2018-09-08T19:52:19Z azimut joined #lisp 2018-09-08T19:56:27Z graphene quit (Read error: Connection reset by peer) 2018-09-08T19:58:06Z graphene joined #lisp 2018-09-08T19:59:27Z astalla quit (Ping timeout: 240 seconds) 2018-09-08T20:06:58Z sabrac quit (Quit: Konversation terminated!) 2018-09-08T20:10:33Z azimut quit (Ping timeout: 252 seconds) 2018-09-08T20:11:49Z astalla joined #lisp 2018-09-08T20:12:29Z azimut_ joined #lisp 2018-09-08T20:16:21Z fikka joined #lisp 2018-09-08T20:20:12Z flip214: anyone to help with cl-sat? SAT:SOLVE throws an error "the value NIL is not of type NUMBER" in PRINT-CNF 2018-09-08T20:20:53Z lnostdal joined #lisp 2018-09-08T20:24:53Z jmercouris: I guess you'll just have to M-. :\ 2018-09-08T20:26:22Z hifitim joined #lisp 2018-09-08T20:26:34Z phoe: Does roswell install SBCL 1.4.11 successfully? 2018-09-08T20:26:47Z phoe: Running `ros install sbcl-bin` pulls 1.4.10 which isn't the newest. 2018-09-08T20:28:52Z jack_rabbit joined #lisp 2018-09-08T20:30:05Z nirved quit (Quit: Leaving) 2018-09-08T20:33:38Z hifitim quit (Remote host closed the connection) 2018-09-08T20:35:00Z kristof: So... I had been planning on offloading macro-expansions (and especially read-time expansions!) of a common lisp source file to sbcl or some other expansion but 2018-09-08T20:35:53Z anewuser quit (Ping timeout: 245 seconds) 2018-09-08T20:36:10Z kristof: I had forgotten that most facilities in lisp are defined as macros which expand into internal implementations, such as sb-impl::%defun 2018-09-08T20:36:14Z varjag joined #lisp 2018-09-08T20:36:42Z kristof: does anyone know of a "suitably minimal lisp implementation" built over macros? 2018-09-08T20:37:05Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-08T20:37:27Z pjb: kristof: all CL implementations are suitably minimal lisp implementations built over macros. 2018-09-08T20:38:06Z kristof: touche. I don't know what I'm asking for. 2018-09-08T20:39:13Z gravicappa quit (Ping timeout: 245 seconds) 2018-09-08T20:39:43Z aeth: kristof: do you mean something like repeatedly doing macroexpand-1 until you stop getting portable forms? 2018-09-08T20:40:30Z kristof: And I don't even want a minimal one, either. For instance, I'd want defun to be a special form, not a top-level set-fdefinition... 2018-09-08T20:40:43Z pjb: kristof: there are 35 special operators (not all of them are semantically significant), about 70 macros (they can all be written with a conforming expansion), about 30 reader macros, and plenty of functions, of which only a few are "primitive" for some meaning of the term (for example, APPLY). 2018-09-08T20:40:46Z kristof: aeth: Yeah. Basically I want a small, comprehensible IR that I can compile. 2018-09-08T20:41:05Z pjb: kristof: so you can implement a CL by implementing only those special operator and a few functions. 2018-09-08T20:41:16Z kristof: pjb: The special forms are not the issues, actually. In fact, now that I think about it more, what I don't want is a small lisp, what I want is one that's larger than what they usually expand to 2018-09-08T20:41:33Z pjb: I don't understand. 2018-09-08T20:41:38Z aeth: kristof: Then I guess the way I'd do it is I'd repeatedly macroexpand-1 until I get to a desired form (i.e. part of a MEMBER type that I defined based on the HyperSpec). 2018-09-08T20:41:48Z aeth: i.e. stop macroexpanding if you get a DEFUN 2018-09-08T20:42:05Z aeth: (or any other symbol in that MEMBER type) 2018-09-08T20:42:10Z pjb: macroexpand the defun! (setf (symbol-function 'foo) (lambda (…) (block foo …))) 2018-09-08T20:42:52Z pjb: kristof: see minimal compilation in clhs. 2018-09-08T20:42:59Z aeth: There's also e.g. (macroexpand-1 `(dotimes (i 42))) ; in SBCL it's built on DO, in some implementations I think it uses an internal macro or its own TAGBODY 2018-09-08T20:43:16Z kristof: I see now that I can't have my cake and eat it, too. Basically, I don't want to write a lisp to handle macroexpansion, existing lisps are plenty good. But I also wanted to suppress the macroexpansion of certain commonplace forms like defun, because that high level information is useful to me. 2018-09-08T20:43:39Z kristof: or maybe it's not? 2018-09-08T20:43:43Z |3b|: might try sicl or sacla, though not sure either will give you 100% of what you want 2018-09-08T20:44:05Z |3b|: sicl+cleavir 2018-09-08T20:44:12Z kristof: I would hope to use sicl eventually. I just wanted to do my own thing for a while, for instructive purposes. I have not heard of sacla. 2018-09-08T20:44:22Z kristof: pjb: I will check that out. 2018-09-08T20:44:40Z dueyfinster joined #lisp 2018-09-08T20:44:42Z oni-on-ion quit (Quit: WeeChat 1.9.1) 2018-09-08T20:46:09Z |3b|: you could try expanding the macros yourself using implementation macroexpander where it works and your own if needed 2018-09-08T20:46:31Z |3b|: so you write a code walker but hopefully can reuse some of the implementation's macros 2018-09-08T20:46:31Z aeth: kristof: I think you want something like this: (let ((candidate-macroexpand (macroexpand-1 foo))) (if (typep (car candidate-macroexpand) member-type-with-forms-to-stop-on) #| continue on the candiate-macroexpand |# #| return the old macroexpand |#)) 2018-09-08T20:46:34Z housel quit (Read error: Connection reset by peer) 2018-09-08T20:47:00Z kristof: aeth: Oh, there's an idea 2018-09-08T20:47:18Z PuercoPop: kristof: maybe CMUCL/SBCL's IR1 would work for what you want? The CMUCL design document describes as a subset of CL 2018-09-08T20:47:22Z |3b|: or just read things into a package that shadows things like DEFUN where you don't like the built-in definition 2018-09-08T20:47:23Z aeth: kristof: e.g. (macroexpand-1 `(dotimes (i 42))) in SBCL gives a form beginning with DO and (macroexpand-1 (macroexpand-1 `(dotimes (i 42)))) gives a form beginning with BLOCK over a LET over a TAGBODY 2018-09-08T20:47:38Z aeth: So you just need to define where to stop macroexpanding 2018-09-08T20:47:53Z PuercoPop: except instead of plain sexps, you get a graph of structs 2018-09-08T20:48:03Z kristof: Although I also like |3b|'s idea, to be honest. I could write my own package that doesn't use CL and imports only the macroexpansions I want. 2018-09-08T20:48:41Z aeth: (Note I put the comments in my IF backwards) 2018-09-08T20:49:19Z kristof: PuercoPop: if I'm going to eventually port to Cleavir I see no reason to devote myself to someone else's IR, but I appreciate the suggestion 2018-09-08T20:49:27Z astalla quit (Ping timeout: 240 seconds) 2018-09-08T20:49:52Z Fare quit (Ping timeout: 272 seconds) 2018-09-08T20:50:34Z oni-on-ion joined #lisp 2018-09-08T20:51:26Z pjb: kristof: if you want more "primitive" then go ahead! ALL the operators in CL can be primitives! The macros in CL can be special operators (but you must still provide macros for the user programs to macroexpand them), and all the functions in CL can be open-coded. 2018-09-08T20:51:40Z pjb: ie. basically implemented as special opertors too. 2018-09-08T20:52:34Z kristof: Yeah, you're right 2018-09-08T20:57:27Z aeth: kristof: (defun macroexpand-until-symbols (form) (loop :for macroexpand := (macroexpand-1 form) :then candidate-macroexpand :for candidate-macroexpand := macroexpand :then (macroexpand-1 macroexpand) :until (or (typep (car candidate-macroexpand) '(member do)) (eql candidate-macroexpand macroexpand)) :finally (return macroexpand))) 2018-09-08T20:57:50Z aeth: That stops macroexpand-1 on either DO or exhausting the macroexpansion (i.e. the macroexpand being itself) 2018-09-08T20:57:54Z kristof: stashing that somewhere 2018-09-08T20:58:25Z aeth: one test is: (macroexpand-until-symbols '(dotimes (i 12))) 2018-09-08T20:58:26Z housel joined #lisp 2018-09-08T20:59:42Z aeth: hmm, doesn't work on (defmacro foo (i &body body) `(dotimes (,i 42) ,@body)) (macroexpand-until-symbols '(foo a)) 2018-09-08T21:01:06Z random-nick quit (Read error: Connection reset by peer) 2018-09-08T21:01:49Z aeth: This one works on both: (defun macroexpand-until-symbols (form) (loop :for macroexpand := form :then candidate-macroexpand :for candidate-macroexpand := (macroexpand-1 macroexpand) :until (or (typep (car candidate-macroexpand) '(member do)) (eql candidate-macroexpand macroexpand)) :finally (return candidate-macroexpand))) 2018-09-08T21:03:21Z aeth: You have to have two versions of the macroexpand to eventually terminate in the case that it's not part of the member type, in this case an example would be '(defun foo ()) 2018-09-08T21:04:45Z kooga joined #lisp 2018-09-08T21:07:22Z aeth: kristof: poke in case you stored the bugged version instead of the corrected version 2018-09-08T21:09:55Z kristof: oh, I see 2018-09-08T21:09:57Z kristof: :P 2018-09-08T21:10:14Z kristof: I'll correct and test 2018-09-08T21:10:16Z pjb: Or you can macroexpand in an environment where you've removed all the macros that are implemented as special operators. 2018-09-08T21:10:29Z kristof: That was what I said earlier was a better idea. 2018-09-08T21:10:38Z kristof: At that point I might as well "start fresh" 2018-09-08T21:11:11Z kristof: On the bright side, I don't have to reimplement read and friends. 2018-09-08T21:25:42Z a7f4 quit (Ping timeout: 252 seconds) 2018-09-08T21:27:41Z kajo joined #lisp 2018-09-08T21:27:52Z kristof quit (Ping timeout: 272 seconds) 2018-09-08T21:27:52Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-08T21:28:04Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-08T21:28:33Z kristof joined #lisp 2018-09-08T21:30:40Z rumbler31 joined #lisp 2018-09-08T21:30:57Z marusich joined #lisp 2018-09-08T21:31:07Z varjag quit (Ping timeout: 244 seconds) 2018-09-08T21:31:09Z Essadon quit (Quit: Qutting) 2018-09-08T21:34:44Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-08T21:36:53Z elem6 joined #lisp 2018-09-08T21:52:11Z SenasOzys quit (Remote host closed the connection) 2018-09-08T21:53:06Z elem6 quit (Ping timeout: 252 seconds) 2018-09-08T21:58:25Z SenasOzys joined #lisp 2018-09-08T21:58:57Z SenasOzys quit (Remote host closed the connection) 2018-09-08T21:59:23Z SenasOzys joined #lisp 2018-09-08T22:04:06Z doubledup quit (Quit: Leaving) 2018-09-08T22:19:27Z elem6 joined #lisp 2018-09-08T22:24:34Z elem6 quit (Ping timeout: 240 seconds) 2018-09-08T22:25:30Z SenasOzys quit (Read error: Connection reset by peer) 2018-09-08T22:28:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-08T22:32:51Z housel quit (Remote host closed the connection) 2018-09-08T22:38:20Z housel joined #lisp 2018-09-08T22:40:02Z elem6 joined #lisp 2018-09-08T22:41:39Z elem6 quit (Remote host closed the connection) 2018-09-08T22:44:35Z fikka joined #lisp 2018-09-08T22:44:54Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-08T22:48:06Z makomo quit (Read error: Connection reset by peer) 2018-09-08T22:48:56Z azimut_ quit (Ping timeout: 272 seconds) 2018-09-08T22:49:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T22:50:10Z SaganMan quit (Ping timeout: 244 seconds) 2018-09-08T22:50:34Z Tristam quit (Remote host closed the connection) 2018-09-08T22:51:59Z CraigL64 joined #lisp 2018-09-08T22:53:21Z Tristam joined #lisp 2018-09-08T22:54:25Z azimut joined #lisp 2018-09-08T22:54:59Z dented42 joined #lisp 2018-09-08T22:55:05Z fikka joined #lisp 2018-09-08T22:58:04Z jack_rabbit joined #lisp 2018-09-08T22:59:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T23:01:03Z azimut quit (Ping timeout: 252 seconds) 2018-09-08T23:05:05Z fikka joined #lisp 2018-09-08T23:09:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-08T23:11:02Z jlarocco joined #lisp 2018-09-08T23:14:02Z ckonstanski joined #lisp 2018-09-08T23:15:05Z fikka joined #lisp 2018-09-08T23:18:12Z SenasOzys joined #lisp 2018-09-08T23:19:45Z fikka quit (Ping timeout: 252 seconds) 2018-09-08T23:19:49Z SenasOzys quit (Remote host closed the connection) 2018-09-08T23:21:22Z SenasOzys joined #lisp 2018-09-08T23:22:23Z mercourisj joined #lisp 2018-09-08T23:22:35Z rumbler31 joined #lisp 2018-09-08T23:26:21Z jmercouris quit (Ping timeout: 252 seconds) 2018-09-08T23:26:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-08T23:33:06Z SaganMan joined #lisp 2018-09-08T23:34:07Z mercourisj quit (Ping timeout: 240 seconds) 2018-09-08T23:35:43Z fikka joined #lisp 2018-09-08T23:40:17Z fikka quit (Ping timeout: 244 seconds) 2018-09-08T23:43:49Z atgreen joined #lisp 2018-09-08T23:48:02Z _whitelogger quit (Remote host closed the connection) 2018-09-08T23:50:14Z _whitelogger joined #lisp 2018-09-08T23:56:03Z fikka joined #lisp 2018-09-08T23:58:52Z Hu0p joined #lisp 2018-09-09T00:00:01Z kozy quit (Remote host closed the connection) 2018-09-09T00:00:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-09T00:00:53Z kozy joined #lisp 2018-09-09T00:06:18Z Khisanth quit (Ping timeout: 252 seconds) 2018-09-09T00:16:23Z fikka joined #lisp 2018-09-09T00:19:19Z Khisanth joined #lisp 2018-09-09T00:21:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-09T00:22:53Z AeroNotix: ,clhs fileposition 2018-09-09T00:22:56Z AeroNotix: clhs fileposition 2018-09-09T00:23:08Z AeroNotix: jesus I'll do it myself http://clhs.lisp.se/Body/f_file_p.htm 2018-09-09T00:23:18Z AeroNotix: and people think AI will take over the world 2018-09-09T00:23:57Z AeroNotix: This should've been setf'able instead of taking an optional. 2018-09-09T00:24:23Z ebrasca quit (Read error: Connection reset by peer) 2018-09-09T00:26:10Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T00:31:37Z marusich quit (Quit: Leaving) 2018-09-09T00:35:27Z Hu0p quit (Ping timeout: 252 seconds) 2018-09-09T00:37:08Z fikka joined #lisp 2018-09-09T00:41:46Z fikka quit (Ping timeout: 244 seconds) 2018-09-09T00:46:28Z nEatoBoRRITO is now known as potatonomicon 2018-09-09T00:47:27Z anewuser joined #lisp 2018-09-09T00:50:33Z pjb: AeroNotix: file-position it is. 2018-09-09T00:50:46Z pjb: AeroNotix: it's legacy. 2018-09-09T00:51:16Z pjb: You can alway (defun fpos (f) (file-position f)) (defun (setf fpos) (n f) (file-position f n) n) and use fpos instead. 2018-09-09T00:52:05Z |3b|: setf function returning NIL on failure instead of erroring would be a bit odd though 2018-09-09T00:52:29Z |3b|: or returning N 2018-09-09T00:53:02Z pjb: setf functions are specified to return the value set. 2018-09-09T00:53:09Z pjb: So you've got no choice here. 2018-09-09T00:53:16Z |3b|: right, which is why NIL would be odd 2018-09-09T00:53:33Z |3b| initially missed that your version returns N either way 2018-09-09T00:54:12Z |3b|: but silently discarding errors doesn't seem good either, so i'd say it just shouldn't return if it can't validly return the value returned from FILE-POSITION 2018-09-09T00:54:35Z pjb: Exactly, which is probably why file-position is not setf-able. 2018-09-09T00:54:59Z pjb: I've got a serie of accessor to read and write files, but of course, you have to take them with a grain of salt. 2018-09-09T00:55:18Z pjb: (defun (setf fpos) (n f) (or (file-position f n) (error "Cannot set file position")) n) 2018-09-09T00:55:23Z |3b| can't tell from spec if it is allowed to set it to a position other than the one you requested (and then return that different position, though doesn't seem like it) 2018-09-09T00:55:28Z pjb: or cerror. 2018-09-09T00:55:44Z pjb: |3b|: it's not forbidden, but it may just not work. 2018-09-09T00:56:01Z |3b|: no, i mean if you tell it to set to 5, can it set to 4 2018-09-09T00:56:04Z pjb: The only file position that have a good chance of success are those returned by file-position. 2018-09-09T00:56:09Z |3b|: right 2018-09-09T00:56:26Z pjb: or do wrong things, eg on a text file with a multi-byte encoding. 2018-09-09T00:56:40Z pjb: (and there's not only utf-8, there are a lot of such encodings). 2018-09-09T00:56:46Z |3b|: though presumably modification to the file could even invalidate those 2018-09-09T00:57:25Z fikka joined #lisp 2018-09-09T00:57:33Z pjb: So, you have (unsigned-byte 8) files, which will probably do what you expect on posix systems, and there are other files for which you need to be more careful. 2018-09-09T00:57:43Z |3b|: so in other words, files are too hard, just store everything in the cloud :) 2018-09-09T00:57:54Z pjb: :-) 2018-09-09T01:02:08Z fikka quit (Ping timeout: 245 seconds) 2018-09-09T01:03:19Z SenasOzys quit (Remote host closed the connection) 2018-09-09T01:04:28Z graphene quit (Remote host closed the connection) 2018-09-09T01:06:00Z graphene joined #lisp 2018-09-09T01:07:49Z fikka joined #lisp 2018-09-09T01:10:42Z AeroNotix: pjb: thanks for informing me that functions and setf functions are a possibility in Common Lisp 2018-09-09T01:10:50Z dented42 joined #lisp 2018-09-09T01:12:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-09T01:15:27Z graphene quit (Remote host closed the connection) 2018-09-09T01:16:54Z graphene joined #lisp 2018-09-09T01:17:00Z lisper29 joined #lisp 2018-09-09T01:17:53Z fikka joined #lisp 2018-09-09T01:22:32Z lisper29 left #lisp 2018-09-09T01:22:35Z fikka quit (Ping timeout: 244 seconds) 2018-09-09T01:23:30Z rumbler31 joined #lisp 2018-09-09T01:27:04Z _whitelogger quit (Remote host closed the connection) 2018-09-09T01:27:45Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-09T01:27:54Z fikka joined #lisp 2018-09-09T01:29:16Z _whitelogger joined #lisp 2018-09-09T01:29:25Z ckonstanski quit (Remote host closed the connection) 2018-09-09T01:32:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-09T01:36:01Z _whitelogger quit (Remote host closed the connection) 2018-09-09T01:38:14Z _whitelogger joined #lisp 2018-09-09T01:38:45Z fikka joined #lisp 2018-09-09T01:41:50Z housel quit (Ping timeout: 272 seconds) 2018-09-09T01:42:26Z k-stz quit (Remote host closed the connection) 2018-09-09T01:43:23Z fikka quit (Ping timeout: 245 seconds) 2018-09-09T01:45:40Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T01:48:33Z fikka joined #lisp 2018-09-09T01:53:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-09T02:00:55Z robotoad quit (Quit: robotoad) 2018-09-09T02:08:55Z fikka joined #lisp 2018-09-09T02:10:35Z equwal joined #lisp 2018-09-09T02:11:51Z robotoad joined #lisp 2018-09-09T02:13:40Z azimut joined #lisp 2018-09-09T02:13:48Z fikka quit (Ping timeout: 245 seconds) 2018-09-09T02:14:55Z no-defun-allowed: if spi speed isn't a problem, i might have a go at writing an "extended" lisp for arduino 2018-09-09T02:15:22Z no-defun-allowed: i have two 128kb sram chips, so one will be from-space and the other is to-space 2018-09-09T02:15:37Z drmeister: Is it incorrect to automatically use COMMON-LISP in any package that is created? 2018-09-09T02:15:44Z drmeister: in every package that is created. 2018-09-09T02:16:28Z no-defun-allowed: sbcl doesn't automatically use CL when defining a new package 2018-09-09T02:16:43Z |3b|: if there is no :use clause in defpackage, behavior is unspecified so it is OK, :use () shouldn't use any other package though 2018-09-09T02:16:44Z drmeister: Otherwise &optional, &key, &aux etc can't be used without package prefixes. 2018-09-09T02:17:20Z |3b|: not every package is intended to be used from in-package 2018-09-09T02:17:36Z drmeister: Hmmm, :use () shouldn't use any other package - that's clear - ok. 2018-09-09T02:17:58Z no-defun-allowed: that's cute, this 1969 paper uses m-expressions 2018-09-09T02:19:28Z fikka joined #lisp 2018-09-09T02:20:00Z |3b|: "implementation-defined" rather than "unspecified" to be more precise 2018-09-09T02:20:24Z |3b|: and same applies to MAKE-PACKAGE, not just DEFPACKAGE 2018-09-09T02:20:59Z no-defun-allowed: *when the reader reads a symbol it flips a coin and uses that to decide if it should intern a new symbol or use the CL symbol 2018-09-09T02:23:16Z equwal: That sounds like fake news. 2018-09-09T02:23:24Z antonv joined #lisp 2018-09-09T02:23:38Z antonv: why is (read-sequence #(1 2) ...) invalid? 2018-09-09T02:23:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-09T02:23:54Z no-defun-allowed: equwal: it's a kind of motivation to not rely on UB 2018-09-09T02:24:14Z antonv: 2018-09-09T02:24:14Z antonv: ; caught WARNING: 2018-09-09T02:24:14Z antonv: ; Destructive function READ-SEQUENCE called on constant data: #(1 2) 2018-09-09T02:24:14Z antonv: ; See also: 2018-09-09T02:24:17Z kristof: Constants may not be motivated. 2018-09-09T02:24:17Z antonv: ; The ANSI Standard, Special Operator QUOTE 2018-09-09T02:24:20Z antonv: ; The ANSI Standard, Section 3.2.2.3 2018-09-09T02:24:23Z antonv: 2018-09-09T02:24:24Z no-defun-allowed: "what do you mean the variable FOOBAR::&OPTIONAL is never used" 2018-09-09T02:24:26Z kristof: use (vector 2018-09-09T02:24:46Z no-defun-allowed: i think read-sequence changes the insert pointer or something 2018-09-09T02:25:05Z kristof: Right, but the *compiler* might not even store a fill pointer (and I would hope not) 2018-09-09T02:25:12Z antonv: kristof: I can't understand where standard says #(1 2) is a constant value 2018-09-09T02:25:13Z no-defun-allowed: yes, that's called a fill pointer. 2018-09-09T02:25:23Z equwal: Works fine for me. 2018-09-09T02:25:43Z equwal: (read-sequence *x* *standard-input*) 2018-09-09T02:25:44Z equwal: >34 2018-09-09T02:25:44Z equwal: >*x* 2018-09-09T02:25:44Z equwal: #(#\3 #\4) 2018-09-09T02:25:45Z |3b|: antonv: you aren't allowed to modify any object created by the reader while reading the program source 2018-09-09T02:25:53Z no-defun-allowed: ^^ 2018-09-09T02:26:07Z |3b|: including the #() reader syntax 2018-09-09T02:26:19Z no-defun-allowed: you must create the object through vector in this case 2018-09-09T02:26:30Z antonv: |3b|: where in the docs I can find this constraint? 2018-09-09T02:26:52Z |3b| is trying to remember 2018-09-09T02:27:10Z |3b|: http://www.lispworks.com/documentation/HyperSpec/Body/03_ga.htm i think 2018-09-09T02:27:24Z |3b|: yeah 2018-09-09T02:28:07Z no-defun-allowed: i heard parts of cltl2 weren't implemented, which parts were those? 2018-09-09T02:29:14Z fikka joined #lisp 2018-09-09T02:29:35Z antonv: |3b|: the link you sent is about Literal Objects 2018-09-09T02:29:42Z antonv: not about objects created by reader 2018-09-09T02:30:09Z equwal: antov: Try finding out what a literal object is. 2018-09-09T02:30:13Z equwal: antonov 2018-09-09T02:30:19Z equwal: antonv 2018-09-09T02:31:02Z |3b|: right, at the point where you are evaluating (read-sequence #() ...) you are evaluating a list containing the symbol CL:READ-SEQUENCE, the self-evaluating object #(), and whatever objects are in the ...) 2018-09-09T02:31:03Z antonv: equwal: I did 2018-09-09T02:32:31Z |3b|: as opposed to when you evaluate (read-sequence some-vector ...) or (read-sequence (vector ...) ...), in which case the 2nd element of the list is a symbol (which evaluates as a variable), or a list starting with the symbol CL:VECTOR (which evaluates as a function call), in neither case a self-evaluating object 2018-09-09T02:32:52Z Balooga_ joined #lisp 2018-09-09T02:33:11Z antonv: |3b|: self-evaluating, I see 2018-09-09T02:33:18Z antonv: so it is a literal... 2018-09-09T02:33:37Z antonv: everything produced by reader is a literal than 2018-09-09T02:33:45Z |3b|: right 2018-09-09T02:33:49Z antonv: ok, it will be (vector ..) 2018-09-09T02:34:01Z fikka quit (Ping timeout: 246 seconds) 2018-09-09T02:35:39Z antonv: kristof: the reference to The ANSI Standard, Section 3.2.2.3 doen't really help, IMHO 2018-09-09T02:36:34Z |3b|: consider what would happen if you were using a lisp editor to edit your code, and it stored your source (read-sequence #(1 2 3) ...) as lisp forms instead of a string, then evaluated the form and it changed the #(1 2 3) that was being used to store your code 2018-09-09T02:39:28Z |3b|: and for a more current example, i think sbcl gets confused (or has recently) by macros that modify their input since it changes the forms it stores for debug info (or something like that, been a while) 2018-09-09T02:39:40Z antonv: kristof: adding "3.7.1 Modification of Literal Objects" to the warning message might be helpful 2018-09-09T02:40:05Z fikka joined #lisp 2018-09-09T02:40:21Z dented42 joined #lisp 2018-09-09T02:43:05Z antonv: thanks all 2018-09-09T02:43:23Z kristof quit (Ping timeout: 245 seconds) 2018-09-09T02:44:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-09T02:44:42Z dented42 quit (Ping timeout: 252 seconds) 2018-09-09T02:45:10Z beach: Good morning everyone! 2018-09-09T02:46:32Z dented42 joined #lisp 2018-09-09T02:50:05Z fikka joined #lisp 2018-09-09T02:53:21Z no-defun-allowed: afternoon, beach 2018-09-09T02:53:41Z no-defun-allowed: well actually it's still lunchtime 2018-09-09T02:53:52Z no-defun-allowed: isn't it a bit early then? 2018-09-09T02:54:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-09T02:55:21Z beach: no-defun-allowed: http://www.total-knowledge.com/~ilya/mips/ugt.html 2018-09-09T02:55:43Z beach: "The idea behind establishing this convention was to eliminate noise generated almost every time someone comes in and greets using some form of day-time based greeting, and then channel members on the other side of the globe start pointing out that it's different time of the day for them." 2018-09-09T02:56:12Z no-defun-allowed: b...but it's like five in the morning in france 2018-09-09T02:56:33Z dented42 quit (Read error: Connection reset by peer) 2018-09-09T02:57:03Z no-defun-allowed: on a sunday too 2018-09-09T02:57:11Z dented42 joined #lisp 2018-09-09T02:57:54Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T03:00:05Z fikka joined #lisp 2018-09-09T03:00:45Z beach: no-defun-allowed: [getting back to topic] There is lots of work to be done in all the Common Lisp projects I have listed. Yesterday I made excellent progress on SICL bootstrapping, and I want to continue that work while it is still fresh in my mind. 2018-09-09T03:01:11Z no-defun-allowed: oh, well done 2018-09-09T03:01:20Z dented42_ joined #lisp 2018-09-09T03:02:11Z beach: This bootstrapping thing has got to be one of the most complicated tasks I have ever tried. 2018-09-09T03:02:25Z no-defun-allowed: what makes it difficult? 2018-09-09T03:02:31Z beach: The Cleavir compiler framework is straightforward in comparison. 2018-09-09T03:03:41Z beach: no-defun-allowed: A mixture of the fact that nobody has tried this before (as far as I can tell) and (more importantly) that I have 4 different SICL first-class global environments in which the meaning of classes and generic functions may be different. 2018-09-09T03:03:57Z dented42 quit (Ping timeout: 252 seconds) 2018-09-09T03:04:13Z no-defun-allowed: i see 2018-09-09T03:04:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-09T03:04:51Z beach: In my head, I know how it works (though I sometimes need a little diagram), but I still have no real clue how to document it so that other people can understand. 2018-09-09T03:05:44Z sabrac joined #lisp 2018-09-09T03:09:55Z no-defun-allowed: i wonder if there's a really obscure loop expression i can use to do box blur 2018-09-09T03:10:04Z jack_rabbit joined #lisp 2018-09-09T03:10:33Z fikka joined #lisp 2018-09-09T03:10:53Z equwal: Jesus christ 2018-09-09T03:11:08Z no-defun-allowed: (loop for this-x from (- pixel-x width) to (+ pixel-x width) summing (aref image this-x) into total finally (return (/ total (* 2 width))) 2018-09-09T03:11:18Z no-defun-allowed: is a grayscale, 1 dimensional possibility 2018-09-09T03:11:30Z equwal: Well that simplifies things. 2018-09-09T03:11:47Z equwal: I was slammed with "you can but you shouldn't" when I read that sentence. 2018-09-09T03:13:45Z equwal: Have you seen the object oriented stuff in els2018 with graphics? 2018-09-09T03:14:14Z beach: equwal: What are you referring to and who are you asking? 2018-09-09T03:14:42Z jlarocco quit (Ping timeout: 244 seconds) 2018-09-09T03:14:47Z no-defun-allowed: beach: i think equwal was reacting to my "box blur in LOOP" implementation 2018-09-09T03:15:06Z no-defun-allowed: although it's more accurately line blur in one dimension 2018-09-09T03:15:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-09T03:15:37Z equwal: I was asking if no-defun-allowed has read an obscure paper about graphics only tangentially related to the original topic. 2018-09-09T03:15:57Z beach: Got it. 2018-09-09T03:16:44Z no-defun-allowed: hmm, no, els topics are way too advanced for me 2018-09-09T03:20:22Z fikka joined #lisp 2018-09-09T03:25:02Z FreeBirdLjj quit (Ping timeout: 244 seconds) 2018-09-09T03:25:42Z fikka quit (Ping timeout: 272 seconds) 2018-09-09T03:26:08Z equwal: Object Oriented Shader Composition using CLOS by Nicholas Hafner. I think it is pretty accessible if you are interested. 2018-09-09T03:28:25Z regreg joined #lisp 2018-09-09T03:31:08Z lavaflow_ joined #lisp 2018-09-09T03:34:30Z dented42_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T03:40:37Z dented42 joined #lisp 2018-09-09T03:41:07Z fikka joined #lisp 2018-09-09T03:46:36Z fikka quit (Ping timeout: 272 seconds) 2018-09-09T03:48:26Z housel joined #lisp 2018-09-09T03:55:52Z caltelt_ joined #lisp 2018-09-09T03:57:12Z dented42 quit (Read error: Connection reset by peer) 2018-09-09T03:58:36Z dented42 joined #lisp 2018-09-09T04:01:27Z fikka joined #lisp 2018-09-09T04:06:52Z fikka quit (Ping timeout: 272 seconds) 2018-09-09T04:15:14Z Roy_Fokker quit (Quit: Leaving) 2018-09-09T04:16:29Z slyrus1 quit (Quit: slyrus1) 2018-09-09T04:16:50Z slyrus1 joined #lisp 2018-09-09T04:21:48Z fikka joined #lisp 2018-09-09T04:26:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-09T04:26:44Z dale joined #lisp 2018-09-09T04:27:39Z nanoz joined #lisp 2018-09-09T04:28:24Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-09T04:29:41Z steiner quit (Remote host closed the connection) 2018-09-09T04:30:36Z lavaflow_ joined #lisp 2018-09-09T04:30:52Z pierpal quit (Quit: Poof) 2018-09-09T04:31:10Z pierpal joined #lisp 2018-09-09T04:36:02Z _whitelogger quit (Remote host closed the connection) 2018-09-09T04:38:15Z _whitelogger joined #lisp 2018-09-09T04:42:23Z fikka joined #lisp 2018-09-09T04:47:00Z fikka quit (Ping timeout: 252 seconds) 2018-09-09T04:47:27Z atgreen quit (Ping timeout: 240 seconds) 2018-09-09T04:48:55Z nanozz joined #lisp 2018-09-09T04:51:45Z nanoz quit (Ping timeout: 252 seconds) 2018-09-09T04:55:00Z dented42_ joined #lisp 2018-09-09T04:57:08Z dented42 quit (Ping timeout: 245 seconds) 2018-09-09T04:58:23Z Pixel_Outlaw is now known as Portly_Outlaw 2018-09-09T05:04:33Z dented42_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T05:05:52Z asarch quit (Quit: Leaving) 2018-09-09T05:07:36Z pjb quit (Ping timeout: 252 seconds) 2018-09-09T05:11:58Z ober` joined #lisp 2018-09-09T05:12:14Z ober` is now known as Ober` 2018-09-09T05:12:45Z Ober` is now known as ober 2018-09-09T05:18:04Z _whitelogger quit (Remote host closed the connection) 2018-09-09T05:20:17Z _whitelogger joined #lisp 2018-09-09T05:21:39Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-09T05:22:45Z pyx joined #lisp 2018-09-09T05:23:30Z pyx quit (Client Quit) 2018-09-09T05:25:27Z jlarocco joined #lisp 2018-09-09T05:25:29Z |3b|: no-defun-allowed: for separable filters like box, 1d is all you need, and for box you can just keep a running total adding in pixel at leading edge and subtracting out pixel at trailing edge 2018-09-09T05:29:09Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T05:32:06Z Portly_Outlaw quit (Quit: Leaving) 2018-09-09T05:33:07Z nanozz quit (Ping timeout: 240 seconds) 2018-09-09T05:33:26Z drmeister: Stupid question - is there any reason why quicklisp/setup.lisp can't be compile-file'd ? 2018-09-09T05:37:57Z Balooga_ left #lisp 2018-09-09T05:41:21Z makomo joined #lisp 2018-09-09T05:42:12Z dented42 joined #lisp 2018-09-09T05:42:28Z LdBeth: good evenign 2018-09-09T05:45:49Z |3b|: drmeister: probably harder for it to figure out its containing directory if compiled (.fasl wouldn't get recompiled to change *compile-file-truename* if directory was moved for example) 2018-09-09T05:49:03Z drmeister: Hmm, that might be a bit of trouble for us for a while. Clasp's compiler is slow and will probably remain that way for a while (llvm dominates compilation time 60-90%). 2018-09-09T05:49:05Z drmeister: Thank you. 2018-09-09T05:49:51Z |3b|: no interpreter? 2018-09-09T05:50:30Z drmeister: Yes - we have an interpreter - I could try that. 2018-09-09T05:55:39Z jack_rabbit joined #lisp 2018-09-09T05:55:58Z antonv quit (Ping timeout: 246 seconds) 2018-09-09T06:06:53Z arduo joined #lisp 2018-09-09T06:06:59Z kooga quit (Quit: :) 2018-09-09T06:11:32Z Oladon quit (Quit: Leaving.) 2018-09-09T06:14:49Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T06:15:16Z beach: This is a figure I am planning to use in the SICL specification document to illustrate the bootstrapping phases: http://metamodular.com/bootstrapping.pdf 2018-09-09T06:24:51Z nydel: beach: do you keep anything like a weblog or etc that i might add to my list of things i read? 2018-09-09T06:25:07Z beach: I am afraid I don't. 2018-09-09T06:25:33Z nydel: thank you anyway 2018-09-09T06:25:35Z beach: I document as much as I can in the specification document, of course. 2018-09-09T06:25:54Z beach: But the bootstrapping chapter is being worked on now, so it is not consistent. 2018-09-09T06:26:13Z pierpal quit (Quit: Poof) 2018-09-09T06:26:32Z pierpal joined #lisp 2018-09-09T06:32:19Z nirved joined #lisp 2018-09-09T06:32:41Z moei quit (Ping timeout: 260 seconds) 2018-09-09T06:32:57Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T06:35:09Z CraigL64 left #lisp 2018-09-09T06:35:24Z makomo: morning! 2018-09-09T06:35:58Z beach: Hello makomo. 2018-09-09T06:36:08Z ski joined #lisp 2018-09-09T06:36:14Z makomo: hello :-) 2018-09-09T06:37:20Z anewuser quit (Quit: anewuser) 2018-09-09T06:37:22Z beach: Slightly updated figure: http://metamodular.com/bootstrapping.pdf showing that ersatz generic functions are capable of operating on ersatz instances. 2018-09-09T06:39:18Z shrdlu68 joined #lisp 2018-09-09T06:40:13Z shrdlu68: Good morning 2018-09-09T06:41:27Z beach: Hello shrdlu68. 2018-09-09T06:45:54Z phoe: Morning 2018-09-09T06:46:23Z jack_rabbit joined #lisp 2018-09-09T06:49:43Z dale quit (Quit: dale) 2018-09-09T06:54:10Z beach: Hi phoe. 2018-09-09T06:54:11Z a7f4 joined #lisp 2018-09-09T06:54:31Z laqq3 joined #lisp 2018-09-09T06:56:52Z caltelt_ quit (Ping timeout: 244 seconds) 2018-09-09T07:04:51Z phoe: Hey beach. 2018-09-09T07:05:32Z dented42 joined #lisp 2018-09-09T07:06:55Z phoe: drmeister: a workaround would be to change setup.lisp and split it into two files - one doing the basic setup (compilable), the other being tiny, non-compilable, and only used to fetch *compile-file-truename* on each load 2018-09-09T07:07:48Z phoe: I think that literally a file containing only (defparameter quicklisp::*ql-path* *compile-file-truename*) would be enough to solve this issue. 2018-09-09T07:08:12Z phoe: But then again, there might be other ones, too - Xach would need to be asked for more insight. 2018-09-09T07:09:40Z X-Scale joined #lisp 2018-09-09T07:11:38Z nanoz joined #lisp 2018-09-09T07:13:54Z doubledup joined #lisp 2018-09-09T07:14:32Z FreeBirdLjj joined #lisp 2018-09-09T07:16:19Z robotoad quit (Quit: robotoad) 2018-09-09T07:31:45Z d4ryus: is there a system in quicklisp to benchmark/compare runtime speed of cl implementations? 2018-09-09T07:32:09Z ober: cl-bench, not in ql 2018-09-09T07:32:54Z ober: like http://zeniv.linux.org.uk/~ober/report.html 2018-09-09T07:34:24Z d4ryus: ober: perfect, thank you 2018-09-09T07:37:28Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T07:41:18Z beach: Isn't trivial-benchmark in Quicklisp? 2018-09-09T07:41:54Z orivej quit (Ping timeout: 252 seconds) 2018-09-09T07:42:51Z laqq3 quit (Ping timeout: 244 seconds) 2018-09-09T07:45:09Z d4ryus: beach: yes 2018-09-09T07:55:04Z no-defun-allowed: |3b|: I've read how to implement box blur as a two-pass O(n) procedure, don't you worry. 2018-09-09T07:55:22Z beach: d4ryus: Oh, but maybe I'm mistaken about what it does. Now that I think about it, I think Shinmera created a system for exactly the purpose you want. 2018-09-09T07:56:10Z Shinmera: beach: trivial-benchmark is for benchmarking user code, it won't automatically compare the performance of implementations across a standardised set of forms for you. 2018-09-09T07:57:20Z Shinmera: my other project, cl-all can help you compare implementation behaviour though, by invoking them for you 2018-09-09T07:57:44Z no-defun-allowed: I should add start and end keywords for ffmpeg to allow it to create high quality Lisp ytp. 2018-09-09T07:58:13Z Shinmera: so maybe a combination of trivial-benchmark and cl-all would be a solution 2018-09-09T07:58:43Z no-defun-allowed: To go full circle, I'll make ytps of baggers first. 2018-09-09T07:58:48Z beach: Shinmera: Got it. 2018-09-09T07:59:47Z d4ryus: Shinmera: cl-bench:bench-run works fine for what iam trying to measure :) but thanks 2018-09-09T07:59:49Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-09T07:59:51Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T08:04:45Z Lycurgus joined #lisp 2018-09-09T08:11:47Z pierpal quit (Remote host closed the connection) 2018-09-09T08:13:24Z vlatkoB joined #lisp 2018-09-09T08:13:30Z jack_rabbit joined #lisp 2018-09-09T08:13:51Z ober quit (Ping timeout: 244 seconds) 2018-09-09T08:20:25Z nika joined #lisp 2018-09-09T08:23:36Z rippa joined #lisp 2018-09-09T08:30:51Z froggey quit (Ping timeout: 252 seconds) 2018-09-09T08:32:39Z froggey joined #lisp 2018-09-09T08:39:51Z FreeBirdLjj joined #lisp 2018-09-09T08:41:39Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-09T08:51:00Z nanoz quit (Ping timeout: 252 seconds) 2018-09-09T08:56:06Z ebrasca joined #lisp 2018-09-09T09:03:09Z astalla joined #lisp 2018-09-09T09:04:55Z kooga joined #lisp 2018-09-09T09:19:06Z kenanb joined #lisp 2018-09-09T09:19:20Z pjb joined #lisp 2018-09-09T09:22:54Z gpiero quit (Ping timeout: 252 seconds) 2018-09-09T09:28:18Z kenanb left #lisp 2018-09-09T09:30:53Z razzy quit (Ping timeout: 245 seconds) 2018-09-09T09:34:27Z astalla quit (Ping timeout: 252 seconds) 2018-09-09T09:36:21Z orivej joined #lisp 2018-09-09T09:41:16Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-09T09:43:39Z cage_ joined #lisp 2018-09-09T09:54:03Z _whitelogger quit (Remote host closed the connection) 2018-09-09T09:56:15Z _whitelogger joined #lisp 2018-09-09T09:57:44Z FreeBirdLjj quit (Ping timeout: 272 seconds) 2018-09-09T09:57:58Z pfdietz quit (Ping timeout: 245 seconds) 2018-09-09T10:01:03Z orivej quit (Ping timeout: 252 seconds) 2018-09-09T10:02:28Z pfdietz joined #lisp 2018-09-09T10:05:17Z ebrasca: Does someone know what license have Second-Climacs ? 2018-09-09T10:06:18Z no-defun-allowed: i would guess it's the same as Cluffer but you better check with beach 2018-09-09T10:06:30Z phoe: that's right, there's no LICENSE file in the repo 2018-09-09T10:06:33Z phoe: beach: ^ 2018-09-09T10:06:39Z no-defun-allowed: beach: btw the license in second-climacs is missing 2018-09-09T10:19:25Z Essadon joined #lisp 2018-09-09T10:27:26Z orivej joined #lisp 2018-09-09T10:31:39Z pfdietz quit (Ping timeout: 252 seconds) 2018-09-09T10:31:51Z terpri quit (Ping timeout: 252 seconds) 2018-09-09T10:34:07Z terpri joined #lisp 2018-09-09T10:35:09Z orivej quit (Ping timeout: 252 seconds) 2018-09-09T10:42:03Z _whitelogger quit (Remote host closed the connection) 2018-09-09T10:43:54Z SenasOzys joined #lisp 2018-09-09T10:44:16Z _whitelogger joined #lisp 2018-09-09T10:47:33Z DataLinkDroid joined #lisp 2018-09-09T10:48:46Z razzy joined #lisp 2018-09-09T10:52:36Z orivej joined #lisp 2018-09-09T10:55:51Z atgreen joined #lisp 2018-09-09T10:57:01Z SenasOzys quit (Remote host closed the connection) 2018-09-09T10:58:31Z vlatkoB_ joined #lisp 2018-09-09T11:01:54Z vlatkoB quit (Ping timeout: 252 seconds) 2018-09-09T11:02:33Z astalla joined #lisp 2018-09-09T11:02:49Z SaganMan quit (Read error: Connection reset by peer) 2018-09-09T11:03:49Z dueyfinster joined #lisp 2018-09-09T11:04:06Z lavaflow_ joined #lisp 2018-09-09T11:08:29Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-09T11:11:47Z housel quit (Read error: Connection reset by peer) 2018-09-09T11:14:16Z lavaflow_ joined #lisp 2018-09-09T11:16:36Z makomo: how exactly does one achieve indentation like this https://i.imgur.com/oWepfcn.png as opposed to this https://i.imgur.com/HwhEoqp.png 2018-09-09T11:17:03Z varjag joined #lisp 2018-09-09T11:17:51Z makomo: i hope it's clearly visible what i mean but to describe it a little: i want a "body form" within my macro's custom syntax to be indented just like macros' body forms are usually indented 2018-09-09T11:18:29Z makomo: note how in the first picture the body is indented nicely under :lambda, while in the second the body is aligned with the previous form 2018-09-09T11:20:58Z makomo: scymtym: the first picture is an example using ESRAP so maybe you'll know 2018-09-09T11:22:09Z makomo: the nice indentation started working only once i loaded ESRAP (i think, checking now), so i suppose there's a way to do it 2018-09-09T11:24:59Z pierpal joined #lisp 2018-09-09T11:29:09Z makomo: :lambda indents nicely without loading ESRAP, but :destructure requires ESRAP to be loaded to indent nicely 2018-09-09T11:31:25Z nika quit (Quit: Leaving...) 2018-09-09T11:32:47Z makomo: maybe it has something to do with SB-EXT:WITH-CURRENT-SOURCE-FORM? 2018-09-09T11:35:39Z jmercouris joined #lisp 2018-09-09T11:39:21Z parseval left #lisp 2018-09-09T11:42:40Z ym_ joined #lisp 2018-09-09T11:43:09Z _death: https://github.com/scymtym/esrap/blob/master/src/editor-support.lisp also see trivial-indent 2018-09-09T11:43:12Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-09T11:43:31Z beach: ebrasca: BSD, but it is not usable at the moment. 2018-09-09T11:44:11Z beach: no-defun-allowed: I'll add it at some point, but there is no great point in doing that until I have something that can be experimented with. 2018-09-09T11:44:36Z makomo: _death: oh boy, if only i looked carefully at the file list -- i was looking at macros.lisp and now interface.lisp... 2018-09-09T11:44:39Z makomo: _death: thanks 2018-09-09T11:48:03Z _whitelogger quit (Remote host closed the connection) 2018-09-09T11:50:16Z _whitelogger joined #lisp 2018-09-09T11:58:30Z scymtym: makomo: what _death said. SB-EXT:WITH-CURRENT-SOURCE-FORM is for associating macro expansion errors with sub-forms. for example to allow SLIME to highlight a sub-form instead of the whole macro form 2018-09-09T11:59:33Z shrdlu68 quit (Read error: Connection reset by peer) 2018-09-09T12:00:46Z k-stz joined #lisp 2018-09-09T12:03:45Z makomo: scymtym: ah, that confirms the vague idea i formed by reading the docstring a couple of times. gooling for it doesn't really give much except for messages in #sbcl and sbcl mailing lists posts, both of which are yours :-) 2018-09-09T12:07:33Z astalla quit (Ping timeout: 245 seconds) 2018-09-09T12:13:57Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T12:16:57Z k-stz: cffi:load-foreign-library searches for library.so but cant find those with number extensions library.so., is there some setting that does that? My linux distribution saves only the newest library with number extensions and cant (no symlink "libfreetype.so -> libfreetype.so.6") 2018-09-09T12:18:59Z dddddd joined #lisp 2018-09-09T12:22:15Z Shinmera: fix the bindings to specify a version 2018-09-09T12:22:22Z jmercouris: k-stz: why can't you use a symlink? 2018-09-09T12:22:56Z jmercouris: it is pretty standard practice to have a symlink pointing to the latest version of a shared library 2018-09-09T12:26:22Z jack_rabbit joined #lisp 2018-09-09T12:26:44Z Shinmera: probably Nix 2018-09-09T12:27:50Z reverse_light quit (Remote host closed the connection) 2018-09-09T12:40:56Z scymtym: makomo: all SBCL users benefit though, as this is used in SBCL itself as well. compare left (with WITH-CURRENT-SOURCE-FORM) to right (without) in https://techfak.de/~jmoringe/macroexpansion-condition-locations.png 2018-09-09T12:41:16Z groovy2shoes quit (Ping timeout: 246 seconds) 2018-09-09T12:48:17Z igemnace joined #lisp 2018-09-09T12:51:56Z atgreen quit (Read error: Connection reset by peer) 2018-09-09T12:52:02Z atgreen_ joined #lisp 2018-09-09T12:55:38Z dueyfinster joined #lisp 2018-09-09T12:55:49Z k-stz: I can symlink no problem, but I'd rather fix it at the source or it won't work on all distributions. And the bindings aren't mine, so you'd say its a bug and I should tell the maintainer? 2018-09-09T13:00:25Z Shinmera: well, some may argue one way or the other. 2018-09-09T13:00:36Z wiselord quit (Ping timeout: 260 seconds) 2018-09-09T13:05:13Z Jesin quit (Quit: Leaving) 2018-09-09T13:08:21Z groovy2shoes joined #lisp 2018-09-09T13:15:00Z orivej quit (Ping timeout: 252 seconds) 2018-09-09T13:15:43Z SaganMan joined #lisp 2018-09-09T13:15:51Z orivej joined #lisp 2018-09-09T13:17:57Z rumbler31 joined #lisp 2018-09-09T13:19:34Z moei joined #lisp 2018-09-09T13:21:02Z rumbler31 quit (Remote host closed the connection) 2018-09-09T13:26:11Z asarch joined #lisp 2018-09-09T13:38:54Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-09T13:59:26Z dueyfinster joined #lisp 2018-09-09T14:11:29Z rumbler31 joined #lisp 2018-09-09T14:16:07Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-09T14:37:30Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-09T14:42:31Z nika joined #lisp 2018-09-09T14:45:50Z mkolenda quit (Remote host closed the connection) 2018-09-09T14:46:20Z mkolenda joined #lisp 2018-09-09T14:47:24Z X-Scale quit (Quit: HydraIRC -> http://www.hydrairc.com <- Now with extra fish!) 2018-09-09T14:48:43Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-09T14:51:26Z rumbler31 joined #lisp 2018-09-09T14:51:48Z orivej quit (Ping timeout: 252 seconds) 2018-09-09T14:52:11Z rumbler31 quit (Remote host closed the connection) 2018-09-09T14:54:15Z lavaflow_ joined #lisp 2018-09-09T15:06:06Z dueyfinster joined #lisp 2018-09-09T15:08:14Z housel joined #lisp 2018-09-09T15:14:05Z shrdlu68 joined #lisp 2018-09-09T15:24:12Z doubledup quit (Quit: Leaving) 2018-09-09T15:32:02Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-09T15:32:31Z lnostdal quit (Quit: https://www.Quanto.ga/) 2018-09-09T15:34:03Z lnostdal joined #lisp 2018-09-09T15:37:01Z beach quit (Remote host closed the connection) 2018-09-09T15:42:03Z nika quit (Quit: Leaving...) 2018-09-09T15:51:57Z slyrus1 quit (Ping timeout: 252 seconds) 2018-09-09T15:52:29Z rumbler31 joined #lisp 2018-09-09T15:53:18Z lemonpepper24 joined #lisp 2018-09-09T15:56:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-09T15:58:42Z beach joined #lisp 2018-09-09T16:00:00Z nanoz joined #lisp 2018-09-09T16:00:57Z dueyfinster joined #lisp 2018-09-09T16:04:53Z housel quit (Read error: Connection reset by peer) 2018-09-09T16:09:41Z j`ey: can you return from a let*? 2018-09-09T16:09:59Z phoe: j`ey: return? 2018-09-09T16:10:10Z phoe: the simplest way is to do (BLOCK NIL (LET* ...)) 2018-09-09T16:10:18Z phoe: that way you can (RETURN) from anywhere 2018-09-09T16:10:59Z j`ey: actually I'll just split up my lets into two, that's a better idea 2018-09-09T16:13:10Z nbunjeva2 joined #lisp 2018-09-09T16:14:03Z beach: j`ey: That sounds strange. Would you care to share your code (on a pastebin site)? 2018-09-09T16:14:36Z phoe: ^ 2018-09-09T16:15:00Z phoe: remember that you can do (let* ((foo (return)) (bar ...)) ...) 2018-09-09T16:15:33Z pfdietz joined #lisp 2018-09-09T16:15:34Z j`ey: that's basically the pattern I was going to do ^ 2018-09-09T16:15:36Z j`ey: but that seems odd? 2018-09-09T16:16:28Z nbunjeva1 quit (Ping timeout: 272 seconds) 2018-09-09T16:16:43Z a7f4 quit (Ping timeout: 245 seconds) 2018-09-09T16:17:00Z beach: phoe: I don't understand what it is supposed to do. 2018-09-09T16:20:19Z steiner joined #lisp 2018-09-09T16:20:28Z charh quit (Ping timeout: 245 seconds) 2018-09-09T16:20:57Z Pixel_Outlaw joined #lisp 2018-09-09T16:26:36Z lemonpepper24 quit (Ping timeout: 252 seconds) 2018-09-09T16:26:57Z slyrus1 joined #lisp 2018-09-09T16:29:01Z _whitelogger quit (Remote host closed the connection) 2018-09-09T16:31:25Z phoe: beach: well, not directly like that 2018-09-09T16:31:43Z phoe: (let* ((foo (if (something) ... (return))) (bar ...)) ...) 2018-09-09T16:32:03Z j`ey: phoe: doesnt that seem 'bad'? 2018-09-09T16:32:04Z phoe: this way you can do early exit if (SOMETHING) isn't true. 2018-09-09T16:32:22Z phoe: j`ey: it does. I'd rather (when (something) (let* ...)) 2018-09-09T16:32:35Z j`ey: bar was a recursive call, which I wanted to not call if foo was false 2018-09-09T16:32:59Z phoe: (when-let ((foo ...) (bar ...)) ...) 2018-09-09T16:33:09Z phoe: use alexandria:when-let for that perhaps. 2018-09-09T16:33:28Z j`ey: it would have been (let* ((foo (calc-foo) (bar (if foo (return)) (baz foo)) 2018-09-09T16:33:54Z phoe: that's a use case for when-let 2018-09-09T16:33:59Z beach: That doesn't look great for several reasons. 2018-09-09T16:34:29Z beach: j`ey: I would encourage you to paste your code. 2018-09-09T16:34:56Z j`ey: ok, it's terrible since this is my first CL program 2018-09-09T16:35:12Z beach: I see. 2018-09-09T16:35:21Z j`ey: http://sprunge.us/TvZAac?scheme 2018-09-09T16:35:25Z beach: But that way, you can get feedback. 2018-09-09T16:35:32Z j`ey: lines 9-11 was what I was looking at 2018-09-09T16:35:45Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T16:35:53Z phoe: j`ey: no problem (: 2018-09-09T16:36:04Z phoe: #lisp and #clschool are your places to go, where the latter has a focus on newcomers 2018-09-09T16:36:20Z beach: j`ey: +foo+ is the convention for constant variables. You can't increment those. 2018-09-09T16:36:21Z phoe: you don't need the PROGN at line 2 2018-09-09T16:36:33Z phoe: (defun foo () (bar) (baz) (quux) (quuz) (fred)) 2018-09-09T16:36:46Z phoe: you can put multiple forms inside a DEFUN - it has an "implicit PROGN", or so it's called. 2018-09-09T16:36:51Z j`ey: aha 2018-09-09T16:37:03Z beach: j`ey: Please don't put parentheses by themselves on a line. 2018-09-09T16:37:12Z phoe: *counter* instead of +counter+, as beach said. It's just notation - +foo+ denotes constants, *foo* variables. 2018-09-09T16:37:21Z j`ey: beach: just an accident after isnerting the new let, fixed that :) 2018-09-09T16:37:24Z phoe: or even - dynamic variables, not lexical ones. 2018-09-09T16:37:28Z j`ey: fixing +constant+ 2018-09-09T16:37:45Z phoe: that COND could be rewritten as an IF because you have a very simple test in there 2018-09-09T16:37:48Z beach: j`ey: WHEN exists so that you don't need a PROGN. 2018-09-09T16:38:07Z phoe: (if (zerop depth) (solved-p perm) (dotimes ...)) 2018-09-09T16:38:09Z nbunjeva2 quit (Quit: leaving) 2018-09-09T16:38:13Z Roy_Fokker joined #lisp 2018-09-09T16:38:34Z phoe: IF with one branch is replaceable by either WHEN or UNLESS. 2018-09-09T16:38:45Z phoe: (if (foo) (bar)) => (when (foo) (bar)) 2018-09-09T16:38:47Z j`ey: fixing when+progn 2018-09-09T16:38:55Z phoe: (if (foo) nil (bar)) => (unless (foo) (bar)) 2018-09-09T16:39:03Z beach: j`ey: If the (WHEN DFS-RES is supposed to be inside the LET, then the line is badly indented. 2018-09-09T16:39:22Z phoe: oh right! 2018-09-09T16:39:26Z phoe: j`ey: what editor do you use? 2018-09-09T16:39:32Z j`ey: vim 2018-09-09T16:39:33Z phoe: does it automatically count parens and indent code for you? 2018-09-09T16:39:50Z j`ey: it does indent, but I haven't set much else up for lisp yet 2018-09-09T16:40:04Z orivej joined #lisp 2018-09-09T16:40:23Z phoe: there's packages called slimv or vlime - they allow live interaction with Lisp images and should get you the best experience 2018-09-09T16:40:37Z j`ey: yeah, I actually download vlime, but haven't used it yet 2018-09-09T16:40:41Z phoe: I'm a spacemacs user myself, so won't be able to help you with vim setup - but perhaps someone else on the channel has that. 2018-09-09T16:41:01Z dim: j`ey: for growing a style and learning so many tricks when starting with CL I did like reading https://www.cs.umd.edu/~nau/cmsc421/norvig-lisp-style.pdf ; I should give it another read even 2018-09-09T16:41:03Z phoe: j`ey: please do. half a fun of doing Lisp is its interactivity - and you need a toolkit that leverages that interactivity, so a mere text editor won't do 2018-09-09T16:41:30Z phoe: dim: and yeah, the three basic things: reading other people's code, writing your own code, and sending it for reviews 2018-09-09T16:41:37Z phoe: a combo of these should work 2018-09-09T16:41:59Z j`ey: my friend has looked at my code, but he's been too busy to look at some of the recent changes 2018-09-09T16:42:16Z phoe: well, post it here or on #clschool 2018-09-09T16:42:26Z phoe: someone should be able to give you some feedback once you post it 2018-09-09T16:43:15Z _whitelogger joined #lisp 2018-09-09T16:46:36Z j`ey: a REPL would be nice, since my current code takes 10mins to initialise :S 2018-09-09T16:49:27Z phoe: go grab a REPL 2018-09-09T16:49:40Z phoe: that's the basic feature that slime/slimv/vlime/sly/other toolkits like that give you 2018-09-09T16:49:43Z pjb: (loop (print (eval (read)))) or implement it yourself! 2018-09-09T16:49:58Z phoe: a REPL where you can also send code to be compiled to the Lisp image. 2018-09-09T16:50:04Z pjb: (com.informatimago.common-lisp.interactive.interactive:repl) 2018-09-09T16:50:40Z phoe: pjb: that won't give you compiling files or forms with two keychords 2018-09-09T16:50:47Z j`ey: i could also use save-lisp-and-ide probably 2018-09-09T16:53:15Z rumbler31 joined #lisp 2018-09-09T16:55:46Z phoe: j`ey: theoretically, yep - but it's not a good idea in general 2018-09-09T16:57:08Z Lycurgus quit (Ping timeout: 245 seconds) 2018-09-09T16:58:30Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-09T16:58:49Z xuxuru joined #lisp 2018-09-09T17:03:46Z ski quit (Ping timeout: 246 seconds) 2018-09-09T17:08:38Z drmeister: Are these lambda-lists congruent? 2018-09-09T17:08:39Z drmeister: (clos::congruent-lambda-p '(page &key if-exists &allow-other-keys) '(page &key)) 2018-09-09T17:09:17Z drmeister: The first one is from the (defgeneric foo (page &key if-exists &allow-other-keys) ) definition 2018-09-09T17:10:25Z drmeister: The second one is a method (defmethod foo :around ((page page) &key) ...) 2018-09-09T17:12:13Z jmercouris quit (Ping timeout: 244 seconds) 2018-09-09T17:12:56Z oni-on-ion: drmeister: hi. seen the thing in october; good luck on the stuff! 2018-09-09T17:13:14Z drmeister: Thank you 2018-09-09T17:13:21Z oni-on-ion: ^_^ 2018-09-09T17:19:04Z beach: drmeister: They don't appear to be congruent. 2018-09-09T17:20:34Z jlarocco joined #lisp 2018-09-09T17:21:26Z beach: drmeister: See point 4 in the Common Lisp HyperSpec. 2018-09-09T17:21:38Z makomo: clhs 7.6.4 2018-09-09T17:21:45Z beach: No bots apparently. 2018-09-09T17:21:47Z makomo: bot dead? :C 2018-09-09T17:21:51Z makomo: i see 2018-09-09T17:22:10Z beach: Can't sign in because of the new rules of freenode that you have to be registered. 2018-09-09T17:22:39Z Trystam joined #lisp 2018-09-09T17:23:30Z dmiles quit (Read error: Connection reset by peer) 2018-09-09T17:23:36Z Tristam quit (Ping timeout: 252 seconds) 2018-09-09T17:23:39Z Trystam is now known as Tristam 2018-09-09T17:24:28Z makomo: Colleen: clhs 7.6.4 2018-09-09T17:24:29Z Colleen: Clhs: section 7.6.4 http://www.lispworks.com/documentation/HyperSpec/Body/07_fd.htm 2018-09-09T17:24:35Z makomo: Colleen works :-D 2018-09-09T17:24:35Z Colleen: Unknown command. Possible matches: 8, mop, roll, set, say, get, login, block, award, time, 2018-09-09T17:25:15Z regreg quit (Ping timeout: 252 seconds) 2018-09-09T17:25:16Z laqq3 joined #lisp 2018-09-09T17:28:11Z dmiles joined #lisp 2018-09-09T17:28:53Z regreg joined #lisp 2018-09-09T17:33:51Z sabrac: whatever happened to minion? 2018-09-09T17:34:14Z beach: Can't sign in because of the new rules of freenode that you have to be registered. 2018-09-09T17:35:08Z robotoad joined #lisp 2018-09-09T17:38:39Z oni-on-ion: aw 2018-09-09T17:40:30Z slyrus1: scymtym: around? 2018-09-09T17:47:28Z phoe: someone needs to tell minion and specbot to register with nickserv 2018-09-09T17:48:54Z wigust joined #lisp 2018-09-09T17:53:00Z jasmith joined #lisp 2018-09-09T17:54:08Z jmercouris joined #lisp 2018-09-09T18:03:37Z atgreen_ quit (Ping timeout: 246 seconds) 2018-09-09T18:09:34Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-09T18:12:00Z j`ey: what's the opposite of ash? Ive tried searching 2018-09-09T18:12:10Z beach: Use a negative number. 2018-09-09T18:12:56Z j`ey: ah 2018-09-09T18:23:14Z drmeister: makomo: Thank you - I encountered those incongruent lambda lists in some code from someone that I trust and I know that it is accepted in sbcl. I couldn't believe that clasp/ecl determined correctly that the lambda lists were correct and that the author and sbcl were incorrect. 2018-09-09T18:25:33Z beach: drmeister: Perfect! 2018-09-09T18:27:07Z makomo: drmeister: i'm glad you've found what you need :-) 2018-09-09T18:27:14Z Lycurgus joined #lisp 2018-09-09T18:28:24Z Lycurgus quit (Client Quit) 2018-09-09T18:28:34Z nanoz quit (Ping timeout: 240 seconds) 2018-09-09T18:33:14Z zhlyg joined #lisp 2018-09-09T18:33:17Z suskeyhose joined #lisp 2018-09-09T18:34:22Z kooga quit (Quit: :) 2018-09-09T18:35:34Z drmeister: s/I couldn't believe that clasp/ecl determined correctly that the lambda lists were correct and that the author and sbcl were incorrect./I couldn't believe that clasp/ecl determined correctly that the lambda lists were INCONGRUENT and that the author and sbcl were incorrect./ 2018-09-09T18:35:41Z lavaflow_ joined #lisp 2018-09-09T18:35:45Z drmeister: With that I think I've had enough internet today. 2018-09-09T18:37:51Z orivej quit (Ping timeout: 252 seconds) 2018-09-09T18:41:10Z SenasOzys joined #lisp 2018-09-09T18:45:32Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-09T18:51:57Z housel joined #lisp 2018-09-09T18:59:31Z cage_ quit (Quit: Leaving) 2018-09-09T19:04:43Z pierpal quit (Quit: Poof) 2018-09-09T19:05:03Z pierpal joined #lisp 2018-09-09T19:14:24Z charh joined #lisp 2018-09-09T19:17:57Z rumbler31 joined #lisp 2018-09-09T19:18:42Z jack_rabbit joined #lisp 2018-09-09T19:22:50Z rumbler31 quit (Ping timeout: 250 seconds) 2018-09-09T19:26:23Z j`ey: here's my table serialisation code: http://sprunge.us/uq7Fuy?scheme 2018-09-09T19:28:36Z phoe: the (declare ...) form should be on new line 2018-09-09T19:28:51Z phoe: generally there's always a newline in the DEFUN form after you finish typing the arguments 2018-09-09T19:29:17Z j`ey: oh, that was just bad copy/paste 2018-09-09T19:29:18Z zhlyg: I *think* you should add tuple :if-does-not-exist :create to your with-open-file form (I'm cargo culting from PCL). 2018-09-09T19:29:18Z j`ey: will fix 2018-09-09T19:29:33Z dale joined #lisp 2018-09-09T19:30:22Z phoe: (merge-pathnames filename) isn't necessary 2018-09-09T19:30:28Z phoe: you have nothing to merge it with 2018-09-09T19:30:38Z phoe: filename alone should be enough. 2018-09-09T19:30:57Z j`ey: ok, the file stuff I just copied from the hyperspe 2018-09-09T19:30:58Z j`ey: c 2018-09-09T19:31:20Z phoe: weird 2018-09-09T19:31:31Z phoe: oh well, yet another issue in the hyperspec™ 2018-09-09T19:31:50Z jmercouris: link to the page? phoe how about that ultraspec :P? 2018-09-09T19:32:15Z phoe: jmercouris: paused for the time being as I pursue different options in my life 2018-09-09T19:32:18Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T19:32:18Z j`ey: http://clhs.lisp.se/Body/m_w_open.htm 2018-09-09T19:32:21Z j`ey: see the first example 2018-09-09T19:32:24Z phoe: in other words, I'm doing other stuff 2018-09-09T19:32:33Z jmercouris: phoe: I remember, I was just joking 2018-09-09T19:32:40Z j`ey: Ive been outside the LispWorks building, it's not far from me 2018-09-09T19:32:47Z phoe: j`ey: https://plaster.tymoon.eu/view/915#915 2018-09-09T19:32:58Z phoe: j`ey: yep, that example is weird 2018-09-09T19:33:06Z jmercouris: Indeed, merge pathnames there is totally unnecessary 2018-09-09T19:33:18Z jmercouris: at least for the purposes of a demonstration 2018-09-09T19:33:38Z phoe: j`ey: anyway, that's how I'd indent that code 2018-09-09T19:33:40Z j`ey: phoe: apart from create-if-exists, just looks like the indentation changed? 2018-09-09T19:33:54Z jmercouris: j`ey: I believe you said you were using VIM earlier? 2018-09-09T19:33:55Z phoe: yep 2018-09-09T19:33:57Z phoe: ...though, well 2018-09-09T19:34:06Z j`ey: jmercouris: ye 2018-09-09T19:34:11Z phoe: when you're opening the file for input, you likely don't want to supersede it if it exists 2018-09-09T19:34:14Z phoe: or create if it doesn't 2018-09-09T19:34:15Z jmercouris: are there any VIM plugins for proper indentation? I belive steve losh is also a vim usr 2018-09-09T19:34:26Z phoe: I think you'd need :if-does-not-exist :error instead of that 2018-09-09T19:34:28Z zhlyg: jèy: write-sequence could maybe be used instead of the bit-dance and write-byte. 2018-09-09T19:35:17Z j`ey: zhlyg: wouldnt I still need to get the different bytes out of the value into a sequence? 2018-09-09T19:35:20Z phoe: anyway, I'm off to sleep 2018-09-09T19:35:23Z phoe: good night #parens 2018-09-09T19:35:28Z jmercouris: goodnight! 2018-09-09T19:35:32Z zhlyg: j`ey: also :input is more correct than ':input in my best knowledge. 2018-09-09T19:35:50Z pjb: equivalent. But indeed it's customary to write :input. 2018-09-09T19:35:55Z jmercouris: well, ':input will just evaluate to :input, not sure why you would do one over the other 2018-09-09T19:36:06Z pjb: ':input would insist on the symbol, not on it's meaning. 2018-09-09T19:36:23Z phoe: they're equivalent but keywords are rarely ever quoted. they evaluate to themselves. 2018-09-09T19:36:25Z j`ey: ok changed to :input 2018-09-09T19:36:26Z jmercouris: is there ever a scenario in which the computation result would be different? 2018-09-09T19:36:35Z phoe: yes, macro processing 2018-09-09T19:36:39Z pjb: jmercouris: a bad compiler could generate better code for ':input than :input. But it would need to be very bad. 2018-09-09T19:36:40Z phoe: where you don't evaluate your input 2018-09-09T19:36:53Z jmercouris: okay, fair enough, I didn't think about macros 2018-09-09T19:37:06Z phoe: jmercouris: in which case one input is :INPUT and the other is (QUOTE :INPUT) 2018-09-09T19:37:10Z pjb: jmercouris: it can never be different (unless the implementation allow for non-conforming setting of the keyword value) 2018-09-09T19:37:10Z phoe: one is a symbol the other is a list 2018-09-09T19:37:23Z jmercouris: Yes. 2018-09-09T19:38:00Z pjb: But of course, this is only when they'er evaluated. If not, then there's a big difference: (quote (:foo ':foo)) #| --> (:foo ':foo) |# doesn't contain two symbols! 2018-09-09T19:38:16Z jmercouris: Indeed, indeed 2018-09-09T19:39:30Z j`ey: is there a way to use aref with a 'flat' indexing on a multidimensional array? 2018-09-09T19:40:25Z j`ey: so I can read/write multidimensional arrays transparently 2018-09-09T19:40:31Z pjb: row-major-aref 2018-09-09T19:41:11Z pjb: j`ey: I would use a displaced vector on the multidimensional array to avoid a copy. 2018-09-09T19:41:19Z j`ey: a what what 2018-09-09T19:41:30Z pjb: (write-sequence (make-array (reduce '* (array-dimensions a)) :displaced-to a) stream) 2018-09-09T19:41:31Z zhlyg: j`ey: scratch my idea of using write-sequence, it won't work because you are building an little-endian integer. 2018-09-09T19:42:02Z pjb: j`ey: a displaced array is an array whose elements are actually stored in another array. 2018-09-09T19:42:16Z pjb: It can be used to change the dimensions, or view a part of the other array. 2018-09-09T19:42:18Z phoe: it's a window through which you look at another array 2018-09-09T19:42:26Z pjb: It's constrained to the row-major order of the slots however. 2018-09-09T19:42:28Z j`ey: pjb: im not exactly sure where youre suggesting I use that 2018-09-09T19:42:36Z pjb: j`ey: write-sequence. 2018-09-09T19:42:49Z ealfonso quit (Disconnected by services) 2018-09-09T19:42:59Z ealfonso` joined #lisp 2018-09-09T19:43:02Z ealfonso joined #lisp 2018-09-09T19:43:06Z pjb: and similarly, read-sequence, once you've read the dimensions and initialized the multidimensional array. 2018-09-09T19:43:51Z j`ey: now im confused. why am I doing all this byte stuff if write-sequence and read-sequence can write out an array? 2018-09-09T19:43:51Z pierpa joined #lisp 2018-09-09T19:45:30Z jack_rabbit joined #lisp 2018-09-09T19:46:33Z pjb: j`ey: ah, well, this is not an array of bytes, so you still need to convert the elements into sequences of bytes (if you want to write your file portably). 2018-09-09T19:46:59Z pjb: j`ey: so yes, you will have to loop with row-major-aref. 2018-09-09T19:49:41Z vlatkoB_ quit (Remote host closed the connection) 2018-09-09T19:49:43Z j`ey: looks like row-major-aref is working, thanks 2018-09-09T19:58:37Z sbadger quit (Remote host closed the connection) 2018-09-09T20:01:07Z shrdlu68 quit (Ping timeout: 240 seconds) 2018-09-09T20:02:05Z ealfonso` quit (Quit: ERC (IRC client for Emacs 25.3.1)) 2018-09-09T20:02:14Z j`ey: loooks like I spoke too soon 2018-09-09T20:02:29Z ealfonso quit (Disconnected by services) 2018-09-09T20:02:43Z ealfonso joined #lisp 2018-09-09T20:03:14Z pjb: (loop :for i :below (reduce (function *) (array-dimensions a)) :do (write-sequence (element-to-byte-sequence (row-major-aref a i)) stream)) 2018-09-09T20:05:28Z pjb: (loop :with buffer (make-array +size-of-serialized-element+ :element-type '(unsigned-byte 8)) :for i :below (reduce (function *) (array-dimensions a)) :while (= +size-of-serialized-element+ (read-sequence buffer stream)) :do (setf (row-major-aref a i) (element-from-byte-sequence buffer))) 2018-09-09T20:10:12Z AeroNotix: Out of interest where is the most complete description of LOOP/ 2018-09-09T20:10:14Z AeroNotix: ? 2018-09-09T20:10:19Z pjb: clhs loop 2018-09-09T20:10:24Z pjb: and follow link 2018-09-09T20:10:39Z aeth: I think loop is unnecesary there. 2018-09-09T20:10:41Z pjb: AeroNotix: type: /msg specbot clhs loop 2018-09-09T20:10:52Z pjb: aeth: if you want to avoid a big buffer. 2018-09-09T20:11:03Z aeth: dotimes is normally enough for working with arrays 2018-09-09T20:11:18Z j`ey: http://sprunge.us/a2Lqm9?scheme current code 2018-09-09T20:11:23Z pjb: Well of course. loop = loop, don't care which operator you use. 2018-09-09T20:11:33Z j`ey: for some reason this reads in the multi dimension array incorrectly 2018-09-09T20:11:45Z dale quit (Quit: dale) 2018-09-09T20:11:57Z pjb: j`ey: well what did your programming teachers taught you? 2018-09-09T20:12:03Z aeth: pjb: Yeah, I'm just saying when everyone's reaction is to go to the documentation maybe a simpler form is better 2018-09-09T20:12:05Z pjb: j`ey: a function shall do a single thing! 2018-09-09T20:12:07Z astalla joined #lisp 2018-09-09T20:12:11Z pjb: j`ey: here, write-table does 2 things. 2018-09-09T20:12:19Z tankf33der joined #lisp 2018-09-09T20:12:27Z pjb: j`ey: it writes bytes to a file, and it serialize an element. 2018-09-09T20:12:32Z j`ey: yes 2018-09-09T20:12:39Z pjb: j`ey: this is one too many things. 2018-09-09T20:13:04Z pjb: j`ey: but otherwise, it's ok. 2018-09-09T20:13:15Z j`ey: well something is not ok :P 2018-09-09T20:13:48Z pjb: j`ey: yes, you only write quartets, not octets. 2018-09-09T20:14:05Z pjb: #xf instead of #xff (unless you have a special reason to). 2018-09-09T20:14:32Z pjb: Perhaps writing #b00001111 or #b11111111 would make things clearer? 2018-09-09T20:15:48Z j`ey: woops 2018-09-09T20:15:55Z dented42 joined #lisp 2018-09-09T20:16:56Z pjb: j`ey: also, what did you programming teachers say about literals? 2018-09-09T20:17:14Z pjb: j`ey: didn't tell you that you should never use a literal value directly in the code? Instead, define a constant! 2018-09-09T20:17:57Z asarch quit (Quit: Leaving) 2018-09-09T20:18:03Z pjb: (eval-when (:compile-toplevel :load-toplevel :execute) (defconstant +byte-size+ 8)) and then :element-type `(unsigned-byte ,+byte-size+) and (logand (1- (expt 2 +byte-size)) ...) 2018-09-09T20:18:08Z pjb: this way you can't make such errors. 2018-09-09T20:18:28Z pjb: and (ash x (* -2 +byte-size+)) etc. 2018-09-09T20:18:52Z rumbler31 joined #lisp 2018-09-09T20:19:05Z pjb: j`ey: perhaps you should revise your programming lectures notes? 2018-09-09T20:19:13Z j`ey: lol 2018-09-09T20:19:30Z pjb: Alternatively, ask for a refund. 2018-09-09T20:19:32Z aeth: pjb: To be fair, I recognize parts of this from IRC 2018-09-09T20:19:46Z j`ey: aeth: yes, the combine was yours 2018-09-09T20:19:50Z aeth: pjb: Our small code snippits weren't built that way. 2018-09-09T20:20:33Z pjb: But seriously, given the cost of studies, and the final results, I can't wait to see a suit asking refund. 2018-09-09T20:20:47Z j`ey: lol 2018-09-09T20:20:50Z aeth: pjb: Personally, I wouldn't use a constant for something like that, I'd use a *macro*. 2018-09-09T20:21:05Z aeth: Then you could handle multiple byte sizes by defining a new function from the macro 2018-09-09T20:21:12Z aeth: The constant restricts you to one 2018-09-09T20:21:25Z aeth: Macros are just better constants :-p 2018-09-09T20:21:26Z pjb: Yes, depending on your needs. 2018-09-09T20:22:04Z pjb: You can also start with (deftype octet () `(unsigned-byte 8)) and use that type in :element-type everywhere… 2018-09-09T20:22:16Z aeth: I do 2018-09-09T20:22:28Z aeth: https://gitlab.com/zombie-raptor/zombie-raptor/blob/5135a3ca53351660aa6482c18a1044afa04d5b9e/util/types.lisp 2018-09-09T20:23:11Z pjb: Isn't it dangerous to be a zombie raptor? Don't you risk contamination? 2018-09-09T20:24:12Z aeth: That file's a decent candidate to move into a general utility library. 2018-09-09T20:24:26Z aeth: I'm considering using the name carthage. 2018-09-09T20:24:37Z j`ey: cool, now my program takes only 2.5s to start 2018-09-09T20:24:45Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-09T20:24:50Z pjb: Which was also burnt down like libraries, but wasn't quite a library AFAIK. 2018-09-09T20:24:51Z pjb: :-) 2018-09-09T20:25:10Z aeth: Well, it was the *other* major North African port city 2018-09-09T20:25:20Z aeth: (in ancient times, of course) 2018-09-09T20:26:30Z pjb: Then, there remains all the little monasteries and abbey where copist had libraries of volumes. 2018-09-09T20:27:02Z pjb: Scriptorium 2018-09-09T20:28:50Z pjb: Biblioteca Marciana in Venice -> zombie-raptor/marciana 2018-09-09T20:29:19Z pjb: There were also medieval universities. 2018-09-09T20:29:36Z pjb: Constantinople. Oxford, Padua. 2018-09-09T20:33:15Z j`ey: in the CLHS it shows you can (map 'string..), with characters, is there a simple way to do it but with a list of strings? 2018-09-09T20:34:28Z aeth: Are the strings one character long? 2018-09-09T20:34:43Z j`ey: no 2018-09-09T20:35:12Z zhlyg quit (Remote host closed the connection) 2018-09-09T20:35:31Z aeth: Do you want to concatenate the strings together? 2018-09-09T20:35:36Z j`ey: (reduce (lambda (x y) (concatenate 'string x y)) works 2018-09-09T20:35:49Z j`ey: just wondered if I was missing something with map 2018-09-09T20:36:37Z aeth: I think you could probably do it with a mapfoo (probably not map) but it would be functionally equivalent to the reduce, but more verbose. 2018-09-09T20:36:51Z aeth: (and it would return a list of one string in the end) 2018-09-09T20:37:22Z aeth: I wouldn't recommend trying to abuse the mapfoo functions like that, though. 2018-09-09T20:37:41Z j`ey: ok, will stick with reduce 2018-09-09T20:38:49Z aeth: It doesn't look like my version of SBCL has a fast route for string concatenation when the types are known. i.e. this won't speed up your reduce (it will slow it down slightly, to check the types of x and y): (defun concatenate-string (x y) (declare (string x y)) (concatenate 'string x y)) 2018-09-09T20:39:52Z j`ey: it's not a hot function 2018-09-09T20:39:57Z aeth: j`ey: The other way to do it is (apply #'concatenate 'string list) 2018-09-09T20:40:37Z j`ey: oh, that's nicer 2018-09-09T20:40:41Z aeth: j`ey: That will turn it into (concatenate 'string a b c d e ...) where "a b c d e ..." are elements of the list. It might be slower or faster. It's limited to call-arguments-limit 2018-09-09T20:40:52Z aeth: And it will only work on lists, not sequences 2018-09-09T20:40:57Z j`ey: my list should always be relatively small 2018-09-09T20:42:36Z xuxuru quit (Quit: xuxuru) 2018-09-09T20:42:55Z aeth: well, call-arguments-limit in 64-bit SBCL is 4611686018427387903 2018-09-09T20:43:12Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-09T20:43:31Z j`ey: hm, my lists should fit 2018-09-09T20:43:38Z lemonpepper24 joined #lisp 2018-09-09T20:48:48Z pierpal quit (Ping timeout: 272 seconds) 2018-09-09T20:50:28Z dented42 joined #lisp 2018-09-09T20:56:19Z Xof: (with-output-to-string (*standard-output*) (map nil 'princ list-of-strings)) 2018-09-09T21:00:04Z DGASAU quit (Ping timeout: 244 seconds) 2018-09-09T21:01:13Z dmiles quit (Read error: Connection reset by peer) 2018-09-09T21:02:04Z Mutex7 joined #lisp 2018-09-09T21:03:08Z Jesin joined #lisp 2018-09-09T21:03:16Z pjb: Xof: write-string may be nice too. 2018-09-09T21:03:20Z Balooga_ joined #lisp 2018-09-09T21:05:20Z dmiles joined #lisp 2018-09-09T21:06:56Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-09T21:22:46Z rumbler31 joined #lisp 2018-09-09T21:27:07Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-09T21:37:34Z Balooga_ quit (Quit: Balooga_) 2018-09-09T21:40:13Z pfdietz: It might be nice if SBCL images could make the standard part shareable between different images, like libraries. Or is that the case already? 2018-09-09T21:40:47Z k-stz quit (Remote host closed the connection) 2018-09-09T21:41:26Z Jachy joined #lisp 2018-09-09T21:42:00Z robotoad quit (Ping timeout: 272 seconds) 2018-09-09T21:46:47Z nirved quit (Ping timeout: 240 seconds) 2018-09-09T21:46:57Z Balooga_ joined #lisp 2018-09-09T21:47:36Z slyrus1: pfdietz: I agree. It might already be a thing, but, without thinking about it too deeply, something like dougk's shrinkwrapped binaries linked against a common libsbcl would be awesome. 2018-09-09T21:50:58Z robotoad joined #lisp 2018-09-09T21:52:49Z slyrus1: Then again I'm busy downloading a 17MB string handling R package as some chained dependency so clearly nobody cares about package size anymore... 2018-09-09T21:55:18Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-09T22:00:59Z fikka joined #lisp 2018-09-09T22:04:14Z pfdietz: ../../include/clasp/asttooling/astVisitor.h:30:10: fatal error: 'clang/AST/RecursiveASTVisitor.h' file not found 2018-09-09T22:04:37Z oni-on-ion: Colleen: oh! 2018-09-09T22:04:38Z Colleen: Unknown command. Possible matches: 8, roll, clhs, set, say, mop, get, login, block, time, 2018-09-09T22:04:56Z oni-on-ion: awesome, just what i was looking for. about to quicklisp her =P 2018-09-09T22:05:07Z pfdietz: wrong channel :) 2018-09-09T22:06:11Z oni-on-ion: who me? Colleen was mentioned here just earlier, thats where i first heard the name. i searched CL irc bot and got the same name, these reasons are why i say hi to her. 2018-09-09T22:06:31Z astalla quit (Ping timeout: 246 seconds) 2018-09-09T22:08:02Z pfdietz: No, me 2018-09-09T22:08:21Z jack_rabbit joined #lisp 2018-09-09T22:12:04Z _whitelogger quit (Remote host closed the connection) 2018-09-09T22:13:09Z oni-on-ion: oh oops sorry =) didnt read your msg 2018-09-09T22:13:21Z oni-on-ion: cant wait until i can use clang =) (dont have a system to compile it) 2018-09-09T22:13:39Z oni-on-ion: or do i mean clasp. im a bit dyxlecis 2018-09-09T22:14:05Z pjb: confusing words shall be confused. 2018-09-09T22:14:17Z _whitelogger joined #lisp 2018-09-09T22:15:03Z oni-on-ion: julia, colleen, ruby .. lady names are easy to remember, and at least partially altruistic =) 2018-09-09T22:17:12Z Mutex7 quit (Remote host closed the connection) 2018-09-09T22:25:16Z vsync: bit of a model minority stereotype to assume ladies are altruistic, oni-on-ion 2018-09-09T22:26:12Z vsync: women do tend to score higher in extraversion, agreeableness, and conscientiousness, sure, but I prefer to keep the focus mainly on the individual 2018-09-09T22:27:19Z vsync: but now we're veering away from programming 2018-09-09T22:27:41Z LdBeth: I remember a developer changed his legal name to Cons 2018-09-09T22:28:02Z vsync: only acceptable if name children car and cdr 2018-09-09T22:28:15Z vsync: car and cadr rather 2018-09-09T22:28:58Z LdBeth: So how to pronounce CADDADADR 2018-09-09T22:33:11Z pfdietz: Lifehack: give your children common names so they aren't social outcasts. 2018-09-09T22:33:23Z pfdietz: Dad: are you still upset about your name, Lifehack? 2018-09-09T22:36:35Z dale joined #lisp 2018-09-09T22:39:01Z lemonpepper24 quit (Read error: Connection reset by peer) 2018-09-09T22:39:56Z bsund joined #lisp 2018-09-09T22:40:03Z terpri quit (Read error: Connection reset by peer) 2018-09-09T22:40:46Z pjb: LdBeth: caduhdadader 2018-09-09T22:41:10Z oni-on-ion: vsync: i mean for man to treat a lady. software and computers like we call the cars we work on "our baby" 2018-09-09T22:41:11Z pjb: LdBeth: alternatively, you may pronounce it "you're lacking abstraction!". 2018-09-09T22:41:34Z oni-on-ion: vsync: altruism in the form of etiquette and gentlemanlyness.. 9_6 2018-09-09T22:44:24Z oni-on-ion: Shinmera: broken link on colleen README.md - points to http://plaster.tymoon.eu/view/5A 2018-09-09T22:53:27Z graphene quit (Remote host closed the connection) 2018-09-09T22:55:05Z graphene joined #lisp 2018-09-09T22:55:37Z varjag quit (Read error: Connection reset by peer) 2018-09-09T22:57:25Z pierpal joined #lisp 2018-09-09T23:00:58Z Shinmera: oni-on-ion: colleen the project is abandoned, see Maiden instead 2018-09-09T23:00:59Z Colleen: Shinmera: drmeister said 6 hours, 23 minutes ago: You used (:local-nicknames (#:cst #:concrete-syntax-tree)) 2018-09-09T23:00:59Z Colleen: Shinmera: drmeister said 6 hours, 23 minutes ago: https://github.com/quicklisp/quicklisp-client/blob/master/dists/quicklisp/software/staple-20180711-git/parser/package.lisp#L11 2018-09-09T23:00:59Z Colleen: Shinmera: drmeister said 6 hours, 22 minutes ago: That last link won't work of course: https://github.com/Shinmera/staple/blob/master/parser/package.lisp#L11 2018-09-09T23:00:59Z Colleen: Shinmera: drmeister said 5 hours, 7 minutes ago: In staple here https://github.com/Shinmera/staple/blob/master/inference.lisp#L43 you use the symbol definition:declaration - that is only defined for sbcl.lisp in the definitions system. 2018-09-09T23:00:59Z Colleen: Shinmera: drmeister said 4 hours, 33 minutes ago: There are some incongruent lambda lists in staple. https://github.com/quicklisp/quicklisp-client/blob/master/local-projects/staple/page.lisp#L30 the methods look like they need to have &allow-other-keys added to them. 2018-09-09T23:01:15Z Shinmera: oh jesus 2018-09-09T23:01:24Z drmeister: Ha - good morning. 2018-09-09T23:01:27Z pierpal quit (Ping timeout: 240 seconds) 2018-09-09T23:06:43Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-09T23:07:06Z Shinmera: Hmm. I wonder why I explicitly remember that just specifying &key was allowed 2018-09-09T23:09:36Z pfdietz: You mean, what purpose does that serve? 2018-09-09T23:10:00Z Shinmera: Might be a fluke based on GFs that dont specify any explicit keys 2018-09-09T23:10:03Z SenasOzys quit (Ping timeout: 245 seconds) 2018-09-09T23:10:11Z Shinmera: no 2018-09-09T23:10:19Z AroPar joined #lisp 2018-09-09T23:11:46Z pfdietz: Even ignoring GFs, it could make sense to do that with ordinary functions, since you can pass keyword parameters if you include a :allow-other-keys t pair of arguments. 2018-09-09T23:14:02Z Shinmera: We're specifically talking about (defgeneric f (a &key b &allow-other-keys)) (defmethod f (a &key)) 2018-09-09T23:14:17Z kjeldahl quit (Ping timeout: 276 seconds) 2018-09-09T23:14:20Z pfdietz: k 2018-09-09T23:14:34Z no-defun-allowed: hello everyone 2018-09-09T23:15:25Z no-defun-allowed: wait, you can put values in apply as well as lists? 2018-09-09T23:15:33Z orivej joined #lisp 2018-09-09T23:15:40Z no-defun-allowed: wonderful 2018-09-09T23:15:55Z Shinmera: only the last argument is unrolled 2018-09-09T23:15:57Z lavaflow_ joined #lisp 2018-09-09T23:16:54Z Shinmera: drmeister: the sbcl-isms in staple should be fixed now. (except for the local nicknames) 2018-09-09T23:17:16Z drmeister: What do you recommend wrt the local nicknames. 2018-09-09T23:17:36Z Shinmera: implementing them in clasp of course 2018-09-09T23:18:05Z Shinmera: they're very useful for large systems 2018-09-09T23:18:07Z drmeister: What's involved in implementing local package nicknames? 2018-09-09T23:18:37Z drmeister: It means when you are in a particular package - that certain additional nicknames are available. 2018-09-09T23:19:29Z Shinmera: adding a local-nickname table to the package object and making intern look there when it searches for symbols 2018-09-09T23:19:56Z Shinmera: based on *package* 2018-09-09T23:20:11Z Kaisyu joined #lisp 2018-09-09T23:20:22Z pfdietz: The various standard functions that take packages are arguments may have to be modified, as well as the reader and the printer. 2018-09-09T23:20:34Z pfdietz: as arguments 2018-09-09T23:20:42Z kjeldahl joined #lisp 2018-09-09T23:21:45Z Shinmera: right. there's also a protocol to query the system, if you want to be fully compatible with onther implementations 2018-09-09T23:22:20Z Shinmera: but basic support should not be hard (famous last words I know) 2018-09-09T23:22:39Z rumbler31 joined #lisp 2018-09-09T23:23:27Z pfdietz: I've been thinking there should also be "standard" local nicknames for a package, and a way to say "use that package's standard local nicknames inside this package". The standard local nicknames could collide, but if they do it's immediately detectable and you just manually specify a different one for one of the colliding packages. 2018-09-09T23:26:15Z jmercouris quit (Ping timeout: 252 seconds) 2018-09-09T23:27:21Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-09T23:29:48Z Essadon quit (Quit: Qutting) 2018-09-09T23:36:29Z Lycurgus joined #lisp 2018-09-09T23:37:15Z Lycurgus quit (Client Quit) 2018-09-09T23:37:33Z Lycurgus joined #lisp 2018-09-09T23:40:34Z atgreen_ joined #lisp 2018-09-09T23:41:16Z fikka quit (Ping timeout: 244 seconds) 2018-09-09T23:42:58Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-09T23:44:43Z oni-on-ion: Shinmera: oh!! alright. it was the first search result and i've come across it before, and seen her here in chan. 2018-09-09T23:45:33Z Balooga_ quit (Quit: Balooga_) 2018-09-09T23:46:13Z Shinmera: yeah, colleen runs on https://shirakumo.github.io/maiden now 2018-09-09T23:47:40Z oni-on-ion: oh! tricky =) 2018-09-09T23:48:17Z oni-on-ion: this seems a lot simpler too. great work homie 2018-09-09T23:48:27Z oni-on-ion: going to see what i can muster up with her. =) 2018-09-09T23:50:12Z oni-on-ion: and oh i love eldoc so much mucho. 2018-09-09T23:50:58Z Shinmera: maiden is a lot more complex though 2018-09-09T23:51:46Z oni-on-ion: in framework? could be a good thing. i've got some wierd big ideas for something; ive had a couple game servers that had irc integration for eg. 2018-09-09T23:56:20Z terpri joined #lisp 2018-09-09T23:57:01Z Balooga_ joined #lisp 2018-09-09T23:57:20Z fikka joined #lisp 2018-09-09T23:58:15Z lavaflow_ joined #lisp 2018-09-10T00:01:58Z oni-on-ion: Shinmera: encountered connection errors, can't get her on freenode =( 2018-09-10T00:02:36Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T00:03:01Z AroPar quit (Quit: Leaving) 2018-09-10T00:04:56Z oni-on-ion: hmm yes maiden is quite complex. why did you write it ? 2018-09-10T00:06:24Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-10T00:09:00Z AeroNotix: If I'm using a macro to generate some symbols, how should I export them? 2018-09-10T00:09:18Z dale quit (Quit: dale) 2018-09-10T00:09:23Z oni-on-ion: can use EXPORT method right alongside their creation 2018-09-10T00:09:27Z oni-on-ion: *function 2018-09-10T00:09:30Z oni-on-ion: ,clhs export 2018-09-10T00:09:34Z oni-on-ion: clhs export 2018-09-10T00:09:35Z AeroNotix: oh dang, ok 2018-09-10T00:09:39Z AeroNotix: thanks 2018-09-10T00:09:57Z oni-on-ion: yeh but its possible to accomplish in other ways surely. dang tho, its not a good solution ? 2018-09-10T00:10:51Z AeroNotix: oni-on-ion: no no I meant "dang I didn't realise export was a function on its own" 2018-09-10T00:11:10Z oni-on-ion: ahh, ok ^_^ 2018-09-10T00:17:39Z fikka joined #lisp 2018-09-10T00:22:19Z fikka quit (Ping timeout: 246 seconds) 2018-09-10T00:23:04Z AeroNotix: is anyone using sb-cover with rove? 2018-09-10T00:23:15Z AeroNotix: or just sb-cover in general 2018-09-10T00:23:20Z emaczen quit (Read error: Connection reset by peer) 2018-09-10T00:23:43Z pfdietz: I've used sb-cover 2018-09-10T00:23:52Z pfdietz: Also COVER 2018-09-10T00:27:49Z AeroNotix: pfdietz: seems something with rove+sb-cover breaks. 2018-09-10T00:28:07Z fikka joined #lisp 2018-09-10T00:28:30Z pfdietz: A bug report would be great. 2018-09-10T00:28:43Z AeroNotix: I'm trying to figure out if it is just something stupid I've done or not 2018-09-10T00:29:26Z lavaflow_ joined #lisp 2018-09-10T00:30:21Z pierpal joined #lisp 2018-09-10T00:31:37Z emaczen joined #lisp 2018-09-10T00:31:51Z ebrasca quit (Read error: Connection reset by peer) 2018-09-10T00:32:31Z oni-on-ion: (loop for value being the hash-values of (irc:users *con*) using (hash-key key) do (print value)) ;; holy moses....! 2018-09-10T00:32:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T00:34:55Z pfdietz quit (Ping timeout: 246 seconds) 2018-09-10T00:35:40Z AeroNotix: oni-on-ion: which channel? 2018-09-10T00:37:36Z oni-on-ion: just a private one, its logged in as "aleash" right now 2018-09-10T00:37:38Z megalography joined #lisp 2018-09-10T00:38:48Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-10T00:39:11Z oni-on-ion: putting it in #lispgames because i want to generate some amusing fake titles among other useful bits of musery 2018-09-10T00:41:54Z plathrop quit (Ping timeout: 264 seconds) 2018-09-10T00:42:19Z plathrop joined #lisp 2018-09-10T00:42:30Z stnutt quit (Ping timeout: 264 seconds) 2018-09-10T00:43:34Z pfdietz joined #lisp 2018-09-10T00:46:03Z stnutt joined #lisp 2018-09-10T00:48:08Z fikka joined #lisp 2018-09-10T00:48:28Z commanderkeen joined #lisp 2018-09-10T00:50:22Z commanderkeen: it's been a long time since i've touched common lisp. how do i access a variable defined via defvar from another package? say im package :stumpwm and I want to access *servers* in :swank. my initial thought was swank:*servers* but that doesnt work 2018-09-10T00:50:56Z no-defun-allowed: did you export the symbol? 2018-09-10T00:50:59Z oni-on-ion: that should work, whats the error ? 2018-09-10T00:51:05Z no-defun-allowed: otherwise you might need to do `swank::*servers*` 2018-09-10T00:51:28Z commanderkeen: oooh. double colon got me. thanks a bunch 2018-09-10T00:51:50Z oni-on-ion: hm i dont have that defined here with just slime =) (no stumpwm) 2018-09-10T00:52:46Z aeth: oni-on-ion: (alexandria:maphash-values #'print (irc:users *con*)) 2018-09-10T00:53:03Z commanderkeen: i was trying with single colon. double works as expected 2018-09-10T00:53:12Z lavaflow_ joined #lisp 2018-09-10T00:53:16Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T00:54:46Z AeroNotix: commanderkeen: but that's because it's not exported. Single colon works when the symbol is exported from the package. 2018-09-10T00:55:11Z AeroNotix: Double is for accessing unexported package symbols. Not recommended to build software around relying on unexported symbols. 2018-09-10T00:55:48Z makomo quit (Ping timeout: 272 seconds) 2018-09-10T00:56:26Z commanderkeen: AeroNotix: thanks for the info. i was just reading up on the difference. i just wanted get running swank servers from my window manager. 2018-09-10T00:56:29Z no-defun-allowed: aeth: `(maphash (lambda (k v) (declare (ignore k)) (print v)) (irc:users *con*))` 2018-09-10T00:56:50Z Shinmera: oni-on-ion: I created it because I wanted a general framework for chat systems, and that's what it is. 2018-09-10T00:57:36Z no-defun-allowed: looks nice 2018-09-10T00:58:21Z pjb quit (Ping timeout: 252 seconds) 2018-09-10T01:03:44Z saturn2: anyone know the author of this? https://github.com/brown/city-hash 2018-09-10T01:04:18Z aeth: no-defun-allowed: That's basically what maphash-values is. 2018-09-10T01:04:23Z saturn2: it no longer compiles with the latest sbcl and i wonder if they still want to maintain it or if i should try to figure it out 2018-09-10T01:05:29Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-10T01:07:30Z oni-on-ion: aeth: aha cool =) 2018-09-10T01:07:49Z oni-on-ion: no-defun-allowed: oh i like that one. 2018-09-10T01:08:21Z oni-on-ion: Shinmera: alright, just curious, it looks awesome. i will try to get it to connect later, playing with cl-irc right now 2018-09-10T01:08:55Z fikka joined #lisp 2018-09-10T01:09:17Z SenasOzys joined #lisp 2018-09-10T01:09:21Z no-defun-allowed: cl-irc is fun 2018-09-10T01:09:25Z no-defun-allowed: i hooked it up to a markov generator 2018-09-10T01:09:29Z oni-on-ion: heheh =) 2018-09-10T01:10:20Z bsund quit (Remote host closed the connection) 2018-09-10T01:11:33Z arduo quit (Remote host closed the connection) 2018-09-10T01:12:18Z oni-on-ion: for some reason though, the hooks don't get updated 2018-09-10T01:12:38Z arduo joined #lisp 2018-09-10T01:13:05Z oni-on-ion: ie. a privmsg hook added, then change the hook , still uses the "old" one. maybe there is a priority for "compiled" code? i've been using C-c C-c in slime and i think its doing something different than my usual C-x e 2018-09-10T01:13:46Z ym_ is now known as ym 2018-09-10T01:14:04Z oni-on-ion: saturn2: not sure, have you tried to contact them through github ? 2018-09-10T01:14:10Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T01:14:28Z oni-on-ion: i've just come across about 6 erlang irc bots , all from 6+ 8+ years ago =P 2018-09-10T01:14:45Z oni-on-ion: (last commits) 2018-09-10T01:15:11Z dddddd quit (Remote host closed the connection) 2018-09-10T01:16:37Z AeroNotix: Ahhh no, it's a bug in sb-cover 2018-09-10T01:16:48Z AeroNotix: it doesn't handle utf8 when it is in source code. 2018-09-10T01:17:10Z saturn2: oni-on-ion: i just thought i'd check irc first but i'll do that next 2018-09-10T01:17:14Z AeroNotix: rove has some fancy pants symbols showing test success/failure (tick/cross) which sb-cover chokes on 2018-09-10T01:18:23Z oni-on-ion: from different packages ? 2018-09-10T01:19:07Z AeroNotix: oni-on-ion: was that a question to me 2018-09-10T01:20:56Z oni-on-ion: just wondering if symbol choking is because package conflict, idk 2018-09-10T01:22:19Z AeroNotix: oni-on-ion: shit, bad choice of wording there from me 2018-09-10T01:22:35Z AeroNotix: rove has some unicode chars within its source. It seemed sb-cover was choking on those 2018-09-10T01:22:47Z Bike joined #lisp 2018-09-10T01:23:01Z AeroNotix: hmm, I remvoed them from the rove source (to test), sb-cover worked, I've since replaced them and now it's not failing in the exact same way 2018-09-10T01:23:15Z AeroNotix: I can't find any fasl files related to the source file I edited. HMM 2018-09-10T01:29:12Z fikka joined #lisp 2018-09-10T01:31:53Z oni-on-ion: ohh 2018-09-10T01:32:22Z oni-on-ion: not sure where fasls go, they only are made when compiling ? 2018-09-10T01:33:47Z AeroNotix: well, locate/find can't find a fasl for the file which had the unicode 2018-09-10T01:34:06Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T01:34:13Z AeroNotix: anyway, looks like you can pass :external-format to sb-cover:report any way. That might help if I can see why it's not failing again 2018-09-10T01:34:27Z arduo quit (Ping timeout: 240 seconds) 2018-09-10T01:36:48Z smokeink joined #lisp 2018-09-10T01:38:50Z AeroNotix: well, I've deleted the fasls and it's still not failing 2018-09-10T01:39:38Z fikka joined #lisp 2018-09-10T01:40:53Z AeroNotix: Ugh, is there a better coverage system than sb-cover then? Now I'm running in to a different issue. 2018-09-10T01:41:13Z AeroNotix: It's spitting out weird warnings about lisp files it can't find but their names are lists of numbers like (3 3 3 2 2 1 2 3) 2018-09-10T01:41:23Z AeroNotix: WARNING: 2018-09-10T01:41:25Z AeroNotix: Error finding source location for source path (3 2 2 1 2 2 2 1 0 2018-09-10T01:41:27Z AeroNotix: 1) in file /home/xeno/.quicklisp/dists/quicklisp/software/portable-threads-20180131-git/portable-threads.lisp 2018-09-10T01:41:47Z AeroNotix: ah I have an idea 2018-09-10T01:41:48Z robotoad quit (Quit: robotoad) 2018-09-10T01:42:41Z AeroNotix: yeah, deleting the fasls, recompiling without sb-coverage enabled removes those warnings 2018-09-10T01:44:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T01:44:17Z lavaflow_ joined #lisp 2018-09-10T01:48:11Z saturn2: on further investigation it wasn't city-hash's fault but a different package, nibbles, and updating that fixed things 2018-09-10T01:53:01Z oni-on-ion: whats coverage ? 2018-09-10T01:53:23Z oni-on-ion: saturn2: good that it works =) how old was city-hash ? 2018-09-10T01:53:48Z saturn2: city-hash was last updated in 2016 2018-09-10T01:57:32Z Oladon joined #lisp 2018-09-10T01:58:35Z robotoad joined #lisp 2018-09-10T01:59:06Z AeroNotix: oni-on-ion: runs your code (e.g. your test suite) and outputs a set of files which highlight what parts of the code were actually ran. Helps figure out what code is left untested. 2018-09-10T01:59:43Z fikka joined #lisp 2018-09-10T02:04:23Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T02:06:03Z caltelt_ joined #lisp 2018-09-10T02:15:55Z SenasOzys quit (Remote host closed the connection) 2018-09-10T02:16:02Z potatonomicon quit (Quit: blap) 2018-09-10T02:16:20Z SenasOzys joined #lisp 2018-09-10T02:18:10Z Lycurgus quit (Ping timeout: 246 seconds) 2018-09-10T02:18:11Z k-hos joined #lisp 2018-09-10T02:19:18Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-10T02:20:25Z fikka joined #lisp 2018-09-10T02:22:26Z graphene quit (Remote host closed the connection) 2018-09-10T02:24:01Z graphene joined #lisp 2018-09-10T02:24:13Z SenasOzys quit (Ping timeout: 245 seconds) 2018-09-10T02:25:03Z fikka quit (Ping timeout: 245 seconds) 2018-09-10T02:30:47Z fikka joined #lisp 2018-09-10T02:31:25Z jack_rabbit joined #lisp 2018-09-10T02:35:23Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T02:36:15Z dale joined #lisp 2018-09-10T02:40:44Z fikka joined #lisp 2018-09-10T02:41:40Z beach: Good morning everyone! 2018-09-10T02:41:44Z Oladon: Morning beach! 2018-09-10T02:43:27Z oni-on-ion: AeroNotix: ah, test summary ? 2018-09-10T02:43:45Z smokeink quit (Quit: Leaving) 2018-09-10T02:44:32Z Oladon: Anyone play around with Weblocks recently? 2018-09-10T02:45:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T02:45:58Z AeroNotix: oni-on-ion: no 2018-09-10T02:46:11Z AeroNotix: oni-on-ion: https://lispcookbook.github.io/cl-cookbook/testing.html#code-coverage 2018-09-10T02:47:28Z pierpa quit (Quit: Page closed) 2018-09-10T02:49:22Z oni-on-ion: ohhh interesting! i dont understand the legend but that looks very useful. 2018-09-10T02:50:15Z oni-on-ion: great website, thx for the link also 2018-09-10T02:51:36Z AeroNotix: oni-on-ion: it shows in green what was ran, yellow where only one branch in a conditional was taken e.g. (if (some-predicate) (foo) (bar)) 2018-09-10T02:51:55Z AeroNotix: and various shades of red for if certain code didn't run at all 2018-09-10T02:52:07Z oni-on-ion: and the predicates seem always green / 2018-09-10T02:52:38Z AeroNotix: oni-on-ion: no, that page shows some predicates in yellow/red 2018-09-10T02:53:00Z AeroNotix: It looks like it doesn't deal with how WHEN expands (always leading it to be yellow) 2018-09-10T02:53:03Z oni-on-ion: oops i mixed up the colors yes 2018-09-10T02:53:12Z oni-on-ion: ah 2018-09-10T02:53:25Z AeroNotix: or maybe not, it's 5am here. I might be not thinking straight. 2018-09-10T02:53:31Z AeroNotix: of course it can handle WHEN 2018-09-10T02:53:44Z johnjay joined #lisp 2018-09-10T02:54:35Z no-defun-allowed: morning beach 2018-09-10T02:55:00Z no-defun-allowed: re a previous discussion on generational hypothesis: i read the gc handbook and it says older objects are often less mutated 2018-09-10T02:55:26Z no-defun-allowed: still a remembered inter-gen set is necessary otherwise i'd be pulling a lot of data to keep no old->new pointers 2018-09-10T02:55:36Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-10T02:56:19Z johnjay: what is the biggest lisp by installs, emacs, racket, sbcl, or allegro? 2018-09-10T02:57:38Z aeth: Emacs by far. Does that make it a good idea to use? No. 2018-09-10T02:57:58Z aeth: Emacs Lisp is for scripting an editor 2018-09-10T02:58:39Z Xach: it is a pretty good choice for extending emacs. 2018-09-10T02:58:54Z AeroNotix: johnjay: there's some metrics somewhere on the quicklisp blog about downloads by implementation. SBCL was far and away the most widely used implementation, at least as far as using quicklisp 2018-09-10T03:00:36Z no-defun-allowed: yeah emacs isn't a great lisp for general purpose computing but it's certainly the most used 2018-09-10T03:00:39Z oni-on-ion: emacs lisp is a fine lisp. 2018-09-10T03:00:44Z no-defun-allowed: it's got a lot of stuff for string processing too 2018-09-10T03:01:02Z fikka joined #lisp 2018-09-10T03:01:04Z oni-on-ion: there is nothing really missing in elisp aside from performance and namespaces 2018-09-10T03:01:48Z AeroNotix: it's absolutely garbage 2018-09-10T03:01:52Z oni-on-ion: we can take python as a general purpose language 2018-09-10T03:01:54Z oni-on-ion: why ? 2018-09-10T03:02:02Z aeth: Basically everything I use in Common Lisp couldn't be ported to Emacs Lisp afaik. 2018-09-10T03:02:07Z oni-on-ion: its a lot like CL 2018-09-10T03:02:13Z johnjay: aeth: what do you edit CL in? emacs? 2018-09-10T03:02:20Z aeth: Emacs Lisp is essentially a time capsule of an old pre-CL Lisp with some things ported from CL much later on 2018-09-10T03:02:21Z no-defun-allowed: i don't think elisp has bignumx 2018-09-10T03:02:22Z no-defun-allowed: *bignums 2018-09-10T03:02:25Z AeroNotix: oni-on-ion: have you ever tried to actually write a big codebase with Elisp? 2018-09-10T03:03:01Z AeroNotix: it's incredibly inconsistent, basic text handling functionality is baroque 2018-09-10T03:03:40Z no-defun-allowed: still better than vimscript 2018-09-10T03:03:44Z aeth: And a lot of it is about performance hacks based on how the interpreter behaves 2018-09-10T03:03:45Z oni-on-ion: no-defun-allowed: it has bignums. it has GMP support 2018-09-10T03:04:01Z aeth: johnjay: I'd say at least 90% of people use Emacs 2018-09-10T03:04:02Z no-defun-allowed: (vimscript's other name is teco 2: vt100 boogaloo) 2018-09-10T03:04:04Z oni-on-ion: AeroNotix: so that would be namespaces ? aside from that. 2018-09-10T03:04:17Z aeth: johnjay: I use Emacs with SLIME 2018-09-10T03:04:21Z oni-on-ion: heh 2018-09-10T03:04:36Z Oladon: aeth: I am amused by your definition of "people" :) 2018-09-10T03:04:45Z aeth: Oladon: Only CL programmers are people 2018-09-10T03:04:54Z aeth: Oladon: Okay, I meant 'people here' 2018-09-10T03:04:55Z AeroNotix: oni-on-ion: it's more than that. 2018-09-10T03:05:00Z oni-on-ion: no-defun-allowed: https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS#L897 2018-09-10T03:05:06Z oni-on-ion: AeroNotix: i'm listening 2018-09-10T03:05:10Z Oladon: aeth: :) 2018-09-10T03:05:13Z no-defun-allowed: nice nice 2018-09-10T03:05:19Z AeroNotix: oni-on-ion: it's 5am. 2018-09-10T03:05:32Z AeroNotix: Just go write a large project with Elisp 2018-09-10T03:05:38Z oni-on-ion: AeroNotix: alright. 2018-09-10T03:05:42Z aeth: johnjay: I don't really like Emacs, though. I like its concept of being programmable in a Lisp and I like its key bindings. 2018-09-10T03:05:54Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T03:06:05Z AeroNotix: lots of respect for people who maintain things like slime, magit etc 2018-09-10T03:06:26Z aeth: I think pretty much every other editor is worse than GNU Emacs, especially for Common Lisp programming, but that doesn't make Emacs Lisp a good editor. 2018-09-10T03:06:28Z oni-on-ion: yeh amen. 2018-09-10T03:06:56Z aeth: s/Emacs Lisp a good editor/GNU Emacs a good editor/ 2018-09-10T03:06:59Z oni-on-ion: because you see it every day, just look at it noew 2018-09-10T03:07:02Z oni-on-ion: new* 2018-09-10T03:07:29Z aeth: Look at GNU Emacs new? I'd be looking at about 4 years before being comfortable in it. I can understand why people try to avoid it. 2018-09-10T03:08:01Z oni-on-ion: when did you start using it? 2018-09-10T03:08:08Z aeth: If anything needs an interactive gamified tutorial, it's GNU Emacs, but it can't because it's not capable enough. 2018-09-10T03:08:46Z aeth: oni-on-ion: What editors are available? Especially years ago. ed, nano, vim, emacs, gedit, kate, etc. 2018-09-10T03:08:52Z no-defun-allowed: teco 2018-09-10T03:08:52Z oni-on-ion: i've been using it since hmm 1994 i guess, didnt really truly grasp as much as i do in the last couple years. (i took a hiatus from comp/tech before that) 2018-09-10T03:09:04Z oni-on-ion: aeth: notepad++ ? =/ 2018-09-10T03:09:07Z aeth: Of these Unix editors, emacs might be the only editor that's both graphical and terminal-based. 2018-09-10T03:09:13Z no-defun-allowed: oni-on-ion: delete this 2018-09-10T03:09:27Z oni-on-ion: what is gamified tutorial? like jupyter ? 2018-09-10T03:09:40Z aeth: oni-on-ion: https://en.wikipedia.org/wiki/Gamification 2018-09-10T03:10:09Z oni-on-ion: o_o 2018-09-10T03:10:13Z no-defun-allowed: New achievement: Closed Emacs 2018-09-10T03:10:17Z oni-on-ion: interesting . i do that with life sometimes 2018-09-10T03:11:15Z AeroNotix: aeth: there is an achievements package for emacs 2018-09-10T03:11:26Z fikka joined #lisp 2018-09-10T03:11:38Z no-defun-allowed: https://github.com/Fuco1/achievements-mode 2018-09-10T03:11:43Z no-defun-allowed: correction: https://bitbucket.org/gvol/emacs-achievements 2018-09-10T03:11:47Z aeth: Emacs can't be sufficiently gamified because it is based entirely around text buffers. 2018-09-10T03:12:02Z aeth: The tutorial is just a text buffer, not a special mode. 2018-09-10T03:12:04Z no-defun-allowed: Achievement get: wrote an entire buffer without using E 2018-09-10T03:12:25Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-10T03:12:34Z ym: Emacs/Elisp is great framework for rogulikes. 2018-09-10T03:12:36Z aeth: no-defun-allowed: that's easy, write a brainfuck file without comments 2018-09-10T03:12:49Z ym: s/rogu/rogue/ 2018-09-10T03:13:24Z no-defun-allowed: Achievement get: you blow your inferior-lisp's heap. 2018-09-10T03:13:49Z aeth: I prefer rougelikes. The best is probably burgundy 2018-09-10T03:14:35Z aeth: #x900020 2018-09-10T03:15:37Z kristof joined #lisp 2018-09-10T03:15:50Z Oladon: Is a rogulike the Japanese version of Nethack? 2018-09-10T03:16:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T03:16:33Z Bike quit (Quit: Lost terminal) 2018-09-10T03:17:23Z oni-on-ion: Oladon: Mystery Dungeon series 2018-09-10T03:17:35Z kristof: minion: tell antonv "Wrong christophe!" 2018-09-10T03:17:51Z oni-on-ion: https://en.wikipedia.org/wiki/Category:Chunsoft_games 2018-09-10T03:18:37Z johnjay: by the way why doesn't Lisp Operating System exist? 2018-09-10T03:18:40Z johnjay: i've always wondered this. 2018-09-10T03:18:42Z oni-on-ion: mezzano ? 2018-09-10T03:18:49Z no-defun-allowed: no hardware support 2018-09-10T03:18:56Z johnjay: so build a userland on top of linux 2018-09-10T03:19:04Z ym: You can re-implement MIT CADR on FPGA. 2018-09-10T03:19:05Z johnjay: call it The Lispix distro 2018-09-10T03:19:24Z no-defun-allowed: a new CADR would be nice 2018-09-10T03:19:26Z oni-on-ion: stumpwm + mcclim ? 2018-09-10T03:19:28Z johnjay: Lispian. Lispdora. Lisptoo 2018-09-10T03:19:32Z oni-on-ion: it has a decent Listener 2018-09-10T03:20:17Z johnjay: mcclim looks like a good start. The Lisp Windows System 2018-09-10T03:20:45Z ym: McCLIM still raw. 2018-09-10T03:20:58Z no-defun-allowed: it should be lisp all the way down 2018-09-10T03:21:25Z oni-on-ion: some use mcclim for their common lisp dev 2018-09-10T03:21:26Z beach: johnjay: What makes you think that Lisp operating systems do not exist. 2018-09-10T03:21:30Z beach: I am aware of 3. 2018-09-10T03:21:34Z johnjay: well it has to be x86_64 at some point 2018-09-10T03:21:37Z oni-on-ion: it is in a good state right now, mcclim 2018-09-10T03:21:39Z johnjay: or ppc, mips, etc 2018-09-10T03:21:44Z fikka joined #lisp 2018-09-10T03:21:48Z no-defun-allowed: i have a dev build of my very own CrapOS in tarballs somewhere 2018-09-10T03:21:50Z johnjay: beach: can you name one? 2018-09-10T03:21:52Z ym: Or RISC-V. 2018-09-10T03:21:59Z beach: Genera, Movitz, Mezzano. 2018-09-10T03:22:13Z no-defun-allowed: it runs on i386 with no GC and there's a commodore 64 fork which has a faulty GC 2018-09-10T03:22:22Z oni-on-ion: i agree that its better to build on linux kernel 2018-09-10T03:22:32Z no-defun-allowed: that's a bit silly IMO 2018-09-10T03:22:34Z johnjay: https://www.reddit.com/r/lisp/comments/5zbmwo/lisp_os_is_mezzano_the_closest_to_being_a_modern/ 2018-09-10T03:22:43Z no-defun-allowed: lisp<->lisp IPC would be terrible 2018-09-10T03:23:00Z oni-on-ion: why? just send lisp forms on pipes or sockets 2018-09-10T03:23:09Z beach: johnjay: So now you can stop wondering. 2018-09-10T03:24:57Z no-defun-allowed: oni-on-ion: which requires serialisation and deserialisation. a real lispos could pass a pointer quite easily 2018-09-10T03:26:00Z oni-on-ion: no-defun-allowed: oh true. and run a closure located on another process? >:) 2018-09-10T03:26:14Z no-defun-allowed: also possible. 2018-09-10T03:26:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-10T03:26:47Z johnjay: beach: indeed, i shall wonder no more 2018-09-10T03:27:05Z ym: The only thing which stops me from implementing/porting LISP OS is Altera's proprietary bitstream format. 2018-09-10T03:27:19Z Oladon: johnjay: I don't think beach was actually suggesting that you never wonder again, just that you don't wonder about that specific item anymore. 2018-09-10T03:27:28Z ym: No too much difficult to reverse-engineer though. 2018-09-10T03:27:33Z no-defun-allowed checks cadr specs 2018-09-10T03:27:39Z johnjay: Oladon: yes that was the joke. maybe i was too dry... 2018-09-10T03:27:53Z no-defun-allowed: hm, 22 address words x 32 data bits = 16mb memory space 2018-09-10T03:28:01Z Oladon: johnjay: Or perhaps it's too late, and I should be abed. :) 2018-09-10T03:28:03Z Oladon: G'night all! 2018-09-10T03:28:40Z oni-on-ion: Oladon: heh. gn 2018-09-10T03:28:43Z aeth: johnjay's right 2018-09-10T03:28:58Z oni-on-ion: no-defun-allowed: why 22 ?!?!?!??! 2018-09-10T03:29:05Z no-defun-allowed: i really don't know 2018-09-10T03:29:09Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-10T03:29:25Z aeth: A Linux distro is just something with its own package repositories, possibly with its own package manager, too. (Most just use an existing one with custom repos, though.) 2018-09-10T03:29:28Z oni-on-ion: well i need to know because i was designing a pretend computer using a count of 22 for something 2018-09-10T03:29:39Z no-defun-allowed: here's some names you might be able to complain to: Thomas F Knight Jr, David Moon, Jack Holloway and Guy L Steele Jr 2018-09-10T03:29:52Z oni-on-ion: a special reason for that number? 2018-09-10T03:29:54Z no-defun-allowed: http://www.unlambda.com/cadr/aimemo528_75pgs.pdf 2018-09-10T03:30:04Z johnjay: aeth: have you used NixOS? it supports atomic operations for package management 2018-09-10T03:30:44Z aeth: I've been using Fedora since 2006. I stopped even trying out other distros in VMs probably 6 years ago. 2018-09-10T03:30:46Z no-defun-allowed: iirc there's a J1 fpga processor which runs forth. add some tags and clean up the function stack and you're halfway to a lispm 2018-09-10T03:31:40Z aeth: Nix seems wasteful to me 2018-09-10T03:31:46Z ym: The original CADR was highly constrained with technical capabilities of that time. One can expand it any way. 2018-09-10T03:31:54Z ym: major-kusanagi.svg 2018-09-10T03:31:58Z johnjay: This mezzano already has Intel HD Audio support. nice 2018-09-10T03:31:59Z oni-on-ion: was it guix that uses guile scheme for its stuff ? 2018-09-10T03:32:06Z aeth: oni-on-ion: guix is a fork of nix afaik 2018-09-10T03:32:08Z no-defun-allowed: i'd have a go at trying replace-string 22 32 but it might not work like that 2018-09-10T03:32:16Z fikka joined #lisp 2018-09-10T03:32:18Z oni-on-ion: aeth: ah, does it use guile ? 2018-09-10T03:32:37Z aeth: Yes 2018-09-10T03:32:49Z oni-on-ion: no-defun-allowed: where is the 22 from? cadr? 2018-09-10T03:32:58Z no-defun-allowed: yes, that's the address width of the CADR 2018-09-10T03:33:07Z oni-on-ion: kk. ty 2018-09-10T03:33:28Z aeth: But GNU is politically opposed to "nonfree software" so you won't be able to easily run things like Steam on it. Well, you might be able to get around that with the Steam Flatpak. Drivers will be trickier. I guess you'd need to use an AMD GPU. 2018-09-10T03:34:21Z no-defun-allowed: gnu doesn't go far enough 2018-09-10T03:34:25Z aeth: Most people have some proprietary software that they want to run. That's one of the advantages of a "LispOS" running Android-style on top of the Linux kernel 2018-09-10T03:34:42Z aeth: no-defun-allowed: because it's not anti-capitalist? 2018-09-10T03:34:56Z no-defun-allowed: i was just about to say that, how dare you 2018-09-10T03:34:58Z oni-on-ion: cadr machine == lisp machine ? 2018-09-10T03:35:01Z no-defun-allowed: "the bourgeois will release sources for the ropes they are hung on" 2018-09-10T03:35:11Z aeth: https://wiki.p2pfoundation.net/Copyfarleft 2018-09-10T03:35:23Z no-defun-allowed: according to the doc, the cadr machine is hardware to run lispm firmware but i say the cadr machine is a lisp machine 2018-09-10T03:35:27Z aeth: Note that copyfarleft's added restrictions would make it neither open source nor free software 2018-09-10T03:35:35Z no-defun-allowed: if you listen to gnu 2018-09-10T03:36:00Z no-defun-allowed: also we need to make space cadet keyboard emulators 2018-09-10T03:36:15Z oni-on-ion: no-defun-allowed: ok. says here that cadr machine is the microprocessor, and lisp machine is cadr machine plus microcode to interpret 2018-09-10T03:36:20Z no-defun-allowed: yep 2018-09-10T03:36:24Z oni-on-ion: kk 2018-09-10T03:36:36Z oni-on-ion: keyboard emulator? on a tablet? =) 2018-09-10T03:36:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T03:36:52Z orivej quit (Ping timeout: 244 seconds) 2018-09-10T03:37:15Z no-defun-allowed: in other words: 3d print the keycaps and make your own hall effect switches 2018-09-10T03:37:39Z oni-on-ion: ahh cherry mx 2018-09-10T03:37:53Z oni-on-ion: just thinking how loud my kbd is, got to upgrade soon. tmrw or next day 2018-09-10T03:37:56Z no-defun-allowed: fuck that mechanical shit, you want magnets and sensors 2018-09-10T03:37:58Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-10T03:38:30Z ym: Magnets? 2018-09-10T03:38:49Z no-defun-allowed: ym: https://en.wikipedia.org/wiki/Hall_effect 2018-09-10T03:39:01Z ym: Why not photo-sensors? 2018-09-10T03:39:06Z beach: Perhaps it is time to get back on topic. 2018-09-10T03:39:12Z no-defun-allowed: okay 2018-09-10T03:39:14Z oni-on-ion: idk i dont use mechanical,i like the flat ones or even touch screens. 2018-09-10T03:39:46Z oni-on-ion: there's a cadr emulator around ? 2018-09-10T03:40:04Z johnjay: oni-on-ion: i think so yes 2018-09-10T03:40:05Z no-defun-allowed: yep, https://github.com/joshuaeckroth/cadr 2018-09-10T03:40:07Z johnjay: i haven't tried it 2018-09-10T03:40:15Z no-defun-allowed: "works a treat") 2018-09-10T03:40:36Z ym: It's also quite raw. 2018-09-10T03:41:22Z aeth: If you wanted to make a LispOS on top of the Linux kernel you would need: (1) a package manager, (2) a terminal emulator, (3) a posix shell, (4) a Lisp shell, (5) a text editor, (6) a file manager (not everything is convenient in the terminal) 2018-09-10T03:41:32Z aeth: You could just ship stumpwm as the default desktop 2018-09-10T03:42:04Z aeth: stumpwm isn't very convenient on laptops, though, because there it's nice to have a bar for wifi/battery/volume/brightness 2018-09-10T03:42:05Z johnjay: aeth: i thought i could see how to do a terminal emulator by looking at xfce-terminal's code. but it refers to vte which does the actual term emulation 2018-09-10T03:42:50Z aeth: johnjay: most things in the C world are so hard that they just use libraries to do all of the real work 2018-09-10T03:43:02Z no-defun-allowed: i broke the emulator and it's telling me someone can't use the elevator to get to the ninth floor 2018-09-10T03:43:13Z johnjay: would there be architectural or performance differences between a LispOS on a linux and something like mezzano, that's lisp all the way down? 2018-09-10T03:43:18Z aeth: e.g. there's like two libraries that do font rendering and they share a common core iirc 2018-09-10T03:43:19Z no-defun-allowed: yes 2018-09-10T03:43:27Z johnjay: hah, wow 2018-09-10T03:44:00Z oni-on-ion: eh \wow@cadr emu 2018-09-10T03:44:27Z jack_rabbit joined #lisp 2018-09-10T03:44:34Z oni-on-ion: aeth: nahh exwm +emacs solves all those. 2018-09-10T03:44:47Z oni-on-ion: just write a framebuffer backend =p 2018-09-10T03:44:59Z aeth: johnjay: With Lisp on Linux you have a decision to make fairly early on. Do you put everything in one Lisp image or do you accept having 10x the memory use of the equivalent C application by running one Lisp image per thing? 2018-09-10T03:45:00Z no-defun-allowed: nice, the cadr can multitask 2018-09-10T03:45:03Z ym: There is wayland compositor in Common Lisp. 2018-09-10T03:45:39Z ym: And EXWM+Emacs doesn't solve CPU backdoors. 2018-09-10T03:45:43Z oni-on-ion: ah nice. get wayland going on a bare linux kernel, emacs loaded with exwm and slime connected to system, use eshell and yea 2018-09-10T03:45:48Z oni-on-ion: cpu backdoors ? 2018-09-10T03:46:04Z ym: CPU backdoors. 2018-09-10T03:46:23Z aeth: https://en.wikipedia.org/wiki/Intel_Management_Engine 2018-09-10T03:46:31Z aeth: ring -3 2018-09-10T03:47:08Z beach: johnjay: Yes, they would be very different. 2018-09-10T03:47:11Z no-defun-allowed: now try to write a driver in common lisp 2018-09-10T03:47:11Z aeth: I wouldn't recommend making your own CPU, though. If that's your concern, just use RISC V. 2018-09-10T03:48:00Z beach: no-defun-allowed: What would be the problem with that? 2018-09-10T03:48:01Z fikka joined #lisp 2018-09-10T03:48:38Z no-defun-allowed: it's not lisp all the way down and the "lisp machine" abstraction would end when the kernel starts 2018-09-10T03:48:45Z beach: johnjay: This document http://metamodular.com/lispos.pdf is not about Mezzano, but it explains how different a Lisp OS could be. 2018-09-10T03:49:02Z aeth: CPUs have a network effect. That's one of the reasons why Lisp on x86 quickly was faster than Lisp on LispMs even though 32 bits isn't really enough for Lisp imo (36-bit is good because of tags) 2018-09-10T03:49:29Z oni-on-ion: put the kernel on a chip 2018-09-10T03:49:42Z aeth: Even if you wanted 100% FOSH, RISC V will be faster and more feature complete than what you can design and make 2018-09-10T03:49:55Z aeth: (well, a CPU implementing the RISC V instruction set, technically) 2018-09-10T03:50:52Z aeth: oni-on-ion: you don't want a lot of logic in the microcode (or the circuits or whatever) 2018-09-10T03:51:07Z aeth: oni-on-ion: Optimizing compilers on general purpose hardware is generally the way to go. 2018-09-10T03:51:41Z aeth: Besides, people aren't going to update their hardware every 2 years these days, so updates will come much faster for software. 2018-09-10T03:51:45Z oni-on-ion: yea? not special hardware? 2018-09-10T03:51:57Z oni-on-ion: GPUs are quite general purpose 2018-09-10T03:52:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T03:52:45Z aeth: oni-on-ion: You are probably not going to beat the performance of SBCL on x86-64 ever. It will optimize faster than you can with your Lisp-on-a-chip. 2018-09-10T03:53:14Z oni-on-ion: what about lisp on gpu? 2018-09-10T03:53:34Z oni-on-ion: sbcl errr ecl compiled to opencl 2018-09-10T03:53:36Z oni-on-ion: =) 2018-09-10T03:53:39Z aeth: (i.e. by the time you get to the level of performance SBCL is now, SBCL will have had dozens of revisions and x86-64 will get its annual 10% improvements) 2018-09-10T03:54:57Z ealfonso left #lisp 2018-09-10T03:55:17Z aeth: oni-on-ion: A Lisp on a GPU would be really fast at things like MAP, but not in general 2018-09-10T03:55:19Z kristof: lamenting about computer architectures is this really weird control freak thing 2018-09-10T03:55:54Z oni-on-ion: oh im not lamenting. im on really old hardware myself i couldnt care less 2018-09-10T03:56:13Z kristof: for all the ugly architectures we've had and all the good ones in the dust bin (I think SPARC is beautiful), mass producing intel chips has resulted in a computing power explosion 2018-09-10T03:56:19Z oni-on-ion: just curious \ 2018-09-10T03:56:33Z oni-on-ion: bitcoin mining 2018-09-10T03:56:33Z kristof: that people rarely appreciate in the same way as if there house suddenly doubled in size every two months 2018-09-10T03:56:48Z kristof: or their physical running speed 2018-09-10T03:56:52Z ym: aeth, what that general purposes you are talking about? 2018-09-10T03:57:19Z aeth: ym: a CL implementation 2018-09-10T03:57:28Z ym: Oh. 2018-09-10T04:00:35Z aeth: kristof: those days are behind us, though 2018-09-10T04:02:17Z oni-on-ion: my phone is faster and way better gfx than my desktop and tablet probably combined 2018-09-10T04:02:22Z aeth: We're basically now at the point where more cores are what we expect, not faster CPUs 2018-09-10T04:02:33Z aeth: Especially on x86-64 desktop 2018-09-10T04:02:36Z kristof: https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Moore%27s_Law_Transistor_Count_1971-2016.png/1200px-Moore%27s_Law_Transistor_Count_1971-2016.png 2018-09-10T04:02:45Z kristof: they were saying that in the 90s, too 2018-09-10T04:02:47Z kristof: looks fine to me! 2018-09-10T04:03:17Z aeth: kristof: Transistor count used to translate into single-threaded performance. Now we're at the point where that's essentially false 2018-09-10T04:03:42Z aeth: Single-threaded performance is still going up a bit, but mostly due to cleverness (of the kind that causes Spectre/Meltdown) 2018-09-10T04:04:25Z aeth: It's possible that a switch to a new material will temporarily bring back the trend. 2018-09-10T04:05:06Z johnjay: aeth: the concept of process was just designed for computers with small memory/addressing? 2018-09-10T04:05:10Z aeth: I suspect what we'll see is consumer CPU core counts dramatically increasing until that also hits a wall. (I wonder where that wall will be. 128? more?) 2018-09-10T04:06:00Z ym: Why all this talks about performance if we still writing code by hands? 2018-09-10T04:06:31Z oni-on-ion: hmm =) 2018-09-10T04:07:35Z beach: johnjay: Pretty much. In some cases (like Unix), it was meant to emulate the raw machine so that old technology could be used for compilers and linkers. 2018-09-10T04:07:41Z oni-on-ion: typing in little letters with our fingers and it explodes into essentially a heaven of information and entertainment and complexity and discovery, the computers multiply those key presses ... 2018-09-10T04:08:20Z caltelt_ quit (Ping timeout: 272 seconds) 2018-09-10T04:08:21Z fikka joined #lisp 2018-09-10T04:08:37Z aeth: johnjay: beach is the resident expert on this sort of thing 2018-09-10T04:08:43Z ym: I can't see a heaven. I can see overthinked specifications and constant reimplementations. 2018-09-10T04:09:01Z johnjay: beach: i feel like im learning more in the last 5 minutes than 5 years of programming (!) 2018-09-10T04:09:03Z aeth: johnjay: i.e. beach has a PhD and writes extensively about this 2018-09-10T04:09:10Z beach: johnjay: Now, if you look at the OS literature, it is often presented as a security thing. It is true that running programs in separate address spaces gives a certain degree of security. 2018-09-10T04:09:16Z johnjay: ahh, gotcha 2018-09-10T04:09:38Z beach: johnjay: Though, attacks like overwriting the return address on the stack are hard to prevent. 2018-09-10T04:09:59Z oni-on-ion: ym: yea its a fractalised mess. black magic and holograms 2018-09-10T04:10:25Z beach: johnjay: Plus, there is a case of turning the implication arrow the wrong way. Security can be obtained with other means than processes, and processes are definitely overkill in other respects. 2018-09-10T04:10:55Z beach: johnjay: In order to communicate between programs, you can't just pass a pointer. You have to serialize and unserialize everything. 2018-09-10T04:11:29Z dale quit (Quit: dale) 2018-09-10T04:11:53Z beach: johnjay: I know what you mean. #lisp has some smart and knowledgeable people, so people who have not come here before often learn a lot. 2018-09-10T04:12:32Z johnjay: beach: did you write the document? it mentioned serialization 2018-09-10T04:12:54Z beach: The one I gave you a link to? Yes, I did. 2018-09-10T04:13:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T04:14:44Z AeroNotix: beach: how would you lispos handle having a single address space wrt security? 2018-09-10T04:14:50Z AeroNotix: your* 2018-09-10T04:15:23Z beach: Just don't give the programmer access to the raw address space. 2018-09-10T04:15:25Z johnjay: ah ok. i think that's some kind of security flaw or something. link to a document with you real name. 2018-09-10T04:15:27Z kristof: AeroNotix: You've read the paper he wrote on this, I thought 2018-09-10T04:15:31Z johnjay: then repeat verbatim the opening remarks of it. XD 2018-09-10T04:15:36Z AeroNotix: I did but it completely glosses over it 2018-09-10T04:15:53Z beach: johnjay: What is a security flaw? 2018-09-10T04:15:54Z johnjay: that's how it is in MSDOS, correct? 2018-09-10T04:16:14Z johnjay: beach: just a little joke there. i was able to figure out you wrote the document from the way you spoke about it 2018-09-10T04:16:24Z kristof: AeroNotix: Having tag bits for capabilities is not glossing over it :P 2018-09-10T04:16:38Z beach: johnjay: Ah, OK. It is no secret. 2018-09-10T04:16:45Z kristof: Capabilities is basically the right way to go for security, anyway 2018-09-10T04:16:50Z johnjay: well since you wrote that document 2018-09-10T04:16:57Z beach: johnjay: Lots of #lisp participants know each other quite well. We meet every year at ELS. 2018-09-10T04:16:57Z johnjay: what do you think of mezzano w.r.t the points in it? 2018-09-10T04:17:03Z kristof: Although I also like the idea of sandboxing code that might use raw addresses like C programs. 2018-09-10T04:17:07Z johnjay: oh ok 2018-09-10T04:17:35Z AeroNotix: kristof: ah, it's not referenced in the sections talking about the issues with a single address space 2018-09-10T04:17:35Z beach: johnjay: I don't think froggey has the same considerations with Mezzano as I have in that document. 2018-09-10T04:17:55Z johnjay: i haven't heard of mezzano before today but it appears to be all lisp. a lot of it is lisp that is emitting machine code though. -_- 2018-09-10T04:18:14Z beach: johnjay: That would be quite normal. 2018-09-10T04:18:25Z beach: johnjay: SBCL compiles to machine code. 2018-09-10T04:18:38Z johnjay: right. i just thought it would be easier to have files of machine code 2018-09-10T04:18:46Z johnjay: instead of a lisp file that is emitting machine code 2018-09-10T04:18:58Z AeroNotix: kristof: I've read it now. Seems fraught with issues. 2018-09-10T04:19:07Z kristof: Shoot 2018-09-10T04:19:08Z AeroNotix: concurrency, incorrect permission bits 2018-09-10T04:19:10Z aeth: johnjay: What Lispers generally do is they put things in s-expressions and then turn that into the desired output. You see this with asm, HTML, XML, JSON, CSS, JavaScript, GLSL, SQL, etc. 2018-09-10T04:19:32Z aeth: Lispers want their s-expressions and macros 2018-09-10T04:19:50Z johnjay: right 2018-09-10T04:19:52Z kristof: AeroNotix: Really? You think incorrect permission bits are a valid concern even though it's the equivalent of bugs in a UNIX kernel? 2018-09-10T04:20:20Z beach: Thanks kristof. I don't think I can handle arguing with AeroNotix about this. 2018-09-10T04:20:34Z AeroNotix: beach: Why not? 2018-09-10T04:21:04Z beach: I don't think I want to argue the meta-issue either. 2018-09-10T04:21:19Z kristof: Life is too short 2018-09-10T04:21:37Z kristof: AeroNotix: What's the concurrency issue? 2018-09-10T04:21:39Z AeroNotix: Suit yourself. Not sure if you're offended by something I've said or done in the past. If so, just let me know in PM or whatever. Wouldn't like there to be beef 2018-09-10T04:22:02Z AeroNotix: kristof: multiple threads of execution sharing the same pointer to some memory 2018-09-10T04:22:37Z AeroNotix: read/writing it. I'd love to see an explanation of how concurrency is supposed to work in a system like this 2018-09-10T04:22:42Z beach: AeroNotix: I am not offended. Just tired of repeating the same arguments over and over again, even though they are all spelled out in the document and in the OS literature. 2018-09-10T04:22:52Z AeroNotix: beach: What about concurrency? 2018-09-10T04:23:04Z beach: What about it? 2018-09-10T04:23:15Z beach: We have threads in just about every Common Lisp implementation. 2018-09-10T04:23:34Z kristof: AeroNotix: You were right about glossing over the essay since there was an entire section on concurrency. 2018-09-10T04:23:37Z johnjay: beach: is SCIP a good book to get into lisp and/or scheme? 2018-09-10T04:23:45Z johnjay: i use emacs lisp casually but that's about it 2018-09-10T04:23:47Z AeroNotix: kristof: it literally just says "We have locks (...)" 2018-09-10T04:24:01Z beach: johnjay: This channel is dedicated to Common Lisp. SICP is Scheme. 2018-09-10T04:24:16Z no-defun-allowed: it's a good book but won't teach you common lisp 2018-09-10T04:24:35Z beach: johnjay: Generally, #lisp will recommend PCL to people who already know some programming. 2018-09-10T04:24:44Z johnjay: ok. idk if there's any good common lisp books? 2018-09-10T04:24:49Z johnjay: i just know paul graham's one 2018-09-10T04:24:58Z no-defun-allowed: a gentle introduction to symbolic computation has 80 pages of box diagrams 2018-09-10T04:25:19Z AeroNotix: kristof: dealing with concurrency issues within a single program, with threads and locks is already tedious and requires careful testing. Imagine that being multiplied by additional external processes, some of whose code you may not be in control of. 2018-09-10T04:25:22Z no-defun-allowed: it's the only one i have in hard copy (cause it was only $30, compared to SICP's $100) 2018-09-10T04:25:30Z kristof: johnjay: You will be surprised to learn that Common Lisp has *more* "good" books than most other programming languages do. Combined, eevn. 2018-09-10T04:25:31Z beach: johnjay: Practical Common Lisp, PAIP, On Lisp, OO programming in Common Lisp, Common Lisp recipes, etc, etc. 2018-09-10T04:26:08Z oni-on-ion: kristof: yeah ? prolog has some good ones too i thought 2018-09-10T04:26:17Z kristof: The past four (!) decades has produced an amazingly large amount of good books written in lisp. 2018-09-10T04:26:32Z AeroNotix: kristof: it sounds like a good use-case of this single address space could be something akin to "plugins". You write code that plugs into a separate code base to read/write it's internal datastructures. Are the locks administered by the programmer writing the code which shares these pointers around? 2018-09-10T04:26:33Z kristof: I've only read The Art of Prolog. That was a mind expanding, yes. 2018-09-10T04:26:58Z aeth: johnjay: I'd recommend The Little Schemer before SICP. It's a simpler book. Yes, both are Scheme, but most of the concepts do translate. Both are probably the most relevant books written in Scheme for a CL programmer. The main thing you want to keep in mind if you're coming from Scheme is that tail recursion cannot be relied upon to be optimized in CL. 2018-09-10T04:27:07Z oni-on-ion: also there is symbolic programming with lisp, book 2018-09-10T04:27:16Z oni-on-ion: land of lisp i like =) =) 2018-09-10T04:27:35Z aeth: (Okay, I've heard that another relevant Scheme book for a Lisper is Lisp in Small Pieces, but that's an advanced book for writing language implementations) 2018-09-10T04:28:14Z no-defun-allowed: i've converted two haskell users using land of lisp 2018-09-10T04:28:54Z no-defun-allowed: while waiting for the book to arrive, one played the song over microphone in every game we'd play so he probably liked it 2018-09-10T04:29:07Z fikka joined #lisp 2018-09-10T04:29:30Z kristof: AeroNotix: I don't want to sound dismissive but this sounds like an easy problem to me. The first observation is that Lisp is strongly typed, meaning you can only operate mutably on data structures using the correct accessing functions. 2018-09-10T04:29:38Z reverse_light joined #lisp 2018-09-10T04:30:07Z johnjay: land of lisp ah i remember that odd looking cover 2018-09-10T04:30:15Z AeroNotix: kristof: sure, it's easy to create the tools to implement safe guards. Using them correctly however, is another matter. 2018-09-10T04:30:32Z Oladon quit (Quit: Leaving.) 2018-09-10T04:30:39Z kristof: The second is that "concurrent access" is well within the realm of a capability, right? So the underlying system can very easily make accesses guarded by lock granularity etc. 2018-09-10T04:30:44Z AeroNotix: and adding another vector to use them incorrectly surely warrants a fresh look on what kind of safe guards are needed 2018-09-10T04:30:53Z kristof: There are a lot of options, here. It's hardly "fraught with problems". 2018-09-10T04:31:28Z johnjay: beach: thanks for the recommendations. it would be cool if i could learn enough to work on that mezzano thing. it looks amazing 2018-09-10T04:32:17Z aeth: johnjay: land of lisp is a normal cover. all other covers are odd 2018-09-10T04:32:25Z oni-on-ion: dont need a linux kernel if you need a VM to run the os =) 2018-09-10T04:32:27Z kristof: AeroNotix: Well, the Lisp philosophy is that you should give people the tools to do things the right way, and you shouldn't worry about an imaginary person that is intent on doing them the wrong way. 2018-09-10T04:32:28Z no-defun-allowed: i don't like this school assessment i'm doing right now very much. 2018-09-10T04:32:43Z kristof: AeroNotix I already know that you know that but I think the reminder here is appropriate 2018-09-10T04:32:45Z oni-on-ion: just tie in to the system that is running the vm. 2018-09-10T04:32:53Z AeroNotix: kristof: it's not like a single address space is a thing unique feature only a LispOS could provide. 2018-09-10T04:33:14Z kristof: It's not, and I'm not a person who's interested in a LispOS, actually. 2018-09-10T04:33:18Z AeroNotix: I genuinely do wonder about adding yet another concurrency issue is a boon 2018-09-10T04:33:26Z AeroNotix: add a whether in there* 2018-09-10T04:33:32Z AeroNotix: 6.40 am I really should get to bed 2018-09-10T04:33:35Z no-defun-allowed: this idiot called John Quest is supposed to be finding correlations between internet usage and fertility rates and also needs a bunch of other crap for some reason 2018-09-10T04:33:38Z kristof: if you get rid of the arbitrary process boundary? I am willing to make that tradeoff. 2018-09-10T04:33:42Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T04:33:44Z no-defun-allowed: i used native oberon a few times. it's very nice. 2018-09-10T04:33:53Z johnjay: aeth: i'm wondering how hard it is to write a driver for say fat32 or intel HD audio bus. mezzano already has both of those 2018-09-10T04:34:11Z AeroNotix: kristof: even then it's essentially saving on the serialization/deserialization of requests to improve execution times? 2018-09-10T04:34:32Z beach: AeroNotix: Correct. The document in question does not introduce anything new. All of what is described there has been used in the past, tested, verified, etc. That is why it makes me so tired to have to explain it over and over again. 2018-09-10T04:34:39Z dmiles: what would make prolgo really good is if it had all the types of common lisp 2018-09-10T04:34:59Z kristof: AeroNotix: It's worse than that. Making byte boundaries the common interface is like making your programming language only accept strings. 2018-09-10T04:35:08Z kristof: *byte streams 2018-09-10T04:35:22Z AeroNotix: kristof: plenty of serialization formats come with code generators. 2018-09-10T04:35:28Z aeth: AeroNotix: There's "LispOS" as in an OS written in Lisp and "LispOS" as in a proposal for what such an OS could look like. 2018-09-10T04:35:50Z aeth: So yeah, a lot of the features in the latter aren't unique to Lisp 2018-09-10T04:36:07Z AeroNotix: aeth: Sure, I just LispOS as a shorthand for a general set of operating systems like this 2018-09-10T04:36:31Z beach: AeroNotix: Then you are not using it the way I do in the document. 2018-09-10T04:36:45Z beach: I should rename it. 2018-09-10T04:37:12Z beach: CLOSOS probably. Nice negative urban term. 2018-09-10T04:37:33Z AeroNotix: CLOS would've been good itself 2018-09-10T04:37:38Z AeroNotix: Common Lisp Operating System 2018-09-10T04:37:43Z beach: Taken though. 2018-09-10T04:37:45Z AeroNotix: Aye 2018-09-10T04:37:51Z aeth: PCL was taken before PCL was written 2018-09-10T04:38:11Z slyrus1: I thought that said PCL was broken before PCL was written 2018-09-10T04:38:13Z aeth: AeroNotix: Personally, if I made an OS in Lisp I'd make it POSIX compatible and port a C compiler as one of the first steps (probably would actually need to port both GCC and LLVM these days). I'm sure everyone has their own design in mind. 2018-09-10T04:38:16Z slyrus1: which is probably true 2018-09-10T04:38:40Z AeroNotix: aeth: all I'd care about is whether or not the guts of the system used a non tedious language like C 2018-09-10T04:38:42Z aeth: (My reasoning is pretty simple, I don't think anyone would run a desktop OS without a web browser, and it's probably easier to port Firefox than to write one.) 2018-09-10T04:38:47Z kristof: AeroNotix: Sending everything in JSON helps, but how do I make thread B modify thread A's data structures using JSON? 2018-09-10T04:38:48Z kristof: :P 2018-09-10T04:39:16Z no-defun-allowed: >posix >lisp 2018-09-10T04:39:19Z no-defun-allowed: choose one 2018-09-10T04:39:32Z AeroNotix: kristof: in a single address space how do you make thread B modify thread A's data structure in a way that won't cause it to crash? 2018-09-10T04:39:35Z aeth: no-defun-allowed: You need to build a layer that C can talk to. The only difference is that the C layer wouldn't be the bottom layer. 2018-09-10T04:40:09Z no-defun-allowed: AeroNotix: using the same type safety and checks thread A has 2018-09-10T04:40:12Z kristof: AeroNotix: That's a weird question. People let threads modify other thread's datastructures all the time: using well defined interfaces and shared type definitions. 2018-09-10T04:40:23Z no-defun-allowed: you can't rplaca thread A's 2 for example 2018-09-10T04:40:27Z aeth: Interestingly, I think this means that SBCL would also be able to be ported to the OS and SBCL might (okay, it will) outperform the host CL. That would be a bit awkward. 2018-09-10T04:40:50Z beach: AeroNotix: It won't crash, but you might get error messages. If the programmer writes incorrect code, there is nothing I can do about it. 2018-09-10T04:40:52Z no-defun-allowed: you don't say 2018-09-10T04:41:12Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-10T04:41:23Z no-defun-allowed: beach: you need to add a DWIM function for your compiler 2018-09-10T04:41:31Z beach: Thanks. 2018-09-10T04:41:51Z AeroNotix: kristof: beach: I understand how the situations are similar. Intefaces must be used to guarantee safety/correctness in both cases, but in a single address space it has the difference of more "spooky action at a distance" type behaviours that multithreaded programs are prone to 2018-09-10T04:42:16Z no-defun-allowed: also, more compile-type guessing isn't a bad idea imho 2018-09-10T04:42:17Z johnjay: beach: would it be relatively straight forward to write a parser in lisp for C header files? 2018-09-10T04:42:29Z no-defun-allowed: sbcl already tells you if it thinks your types are a bit odd 2018-09-10T04:42:38Z beach: AeroNotix: You must be thinking of multi-threaded programs where the threads all share the same raw address space. 2018-09-10T04:43:06Z beach: johnjay: It has been done several times. I think pjb has one. 2018-09-10T04:43:17Z kristof: Off the top of my head: 2018-09-10T04:43:28Z johnjay: i don't see pjb in here 2018-09-10T04:43:30Z kristof: ..never mind 2018-09-10T04:43:42Z AeroNotix: johnjay: he's in france. Probably still in bed at this time 2018-09-10T04:43:51Z beach: johnjay: try his site informatimago.com I think it is. 2018-09-10T04:44:09Z johnjay: my particular use case is i have a giant .h file that seems to be wrapped in one giant #ifdef ... else .. #endif 2018-09-10T04:44:13Z aeth: The code is mostly here. https://gitlab.com/com-informatimago/com-informatimago 2018-09-10T04:44:19Z beach: johnjay: I am sorry to hear that. 2018-09-10T04:44:23Z johnjay: but the #else is in the middle of the file and i can't be sure what it matches to 2018-09-10T04:44:44Z kristof: AeroNotix: I think there's something you might not be getting. The proposal is not "take our existing most-minimal, obvious operating system, and add all this flexibility to it that I might not need." There is not very much about UNIX that is obvious, like first principles or something. 2018-09-10T04:44:59Z no-defun-allowed: i'm sure you can "break" the syntax of C so that it's very different with different defines 2018-09-10T04:45:04Z kristof: The proposal is "question the abstractions that the operating system provides". 2018-09-10T04:45:15Z no-defun-allowed: for example: pop some { and }s in #ifdefs 2018-09-10T04:45:57Z johnjay: no-defun-allowed: i thought of something like that. like add 1 to an variable if a new #ifdef appears and subtract one when #endif appears. something like that. 2018-09-10T04:46:52Z AeroNotix: kristof: I'll print out beach's paper and read it once more, then. Please don't get the idea I'm just shitting all over it from superior understanding. I just hear something like "single address space" and try to think how I would use it and how it could be misused. 2018-09-10T04:47:16Z kristof: UNIX already imposes a baseline that all other users must adhere to. Dynamic linking must include symbol tables with offsets into machine code, for instance. Executables accept an array of c-string arguments. Etc. 2018-09-10T04:47:36Z kristof: It's an entire paradigm unto itself. 2018-09-10T04:48:24Z AeroNotix: Has there been any attempt of implementation for beach's paper? 2018-09-10T04:48:25Z oni-on-ion: C is really the language of the unix machine 2018-09-10T04:48:41Z no-defun-allowed: is it a microkernel if all your drivers are in functions which can be compiled quickly and can't execute dangerous code? 2018-09-10T04:48:54Z AeroNotix: oni-on-ion: C really is the language of the PDP-11 2018-09-10T04:49:00Z oni-on-ion: no-defun-allowed: sounds like a vm =) 2018-09-10T04:49:16Z no-defun-allowed: AeroNotix: i think the idea was that all the concepts have been implemented before. 2018-09-10T04:49:18Z oni-on-ion: AeroNotix: yea. but its current state is unix world 2018-09-10T04:49:24Z fikka joined #lisp 2018-09-10T04:49:29Z AeroNotix: ok 2018-09-10T04:49:29Z oni-on-ion: no different than sexp language for lisp world, really 2018-09-10T04:49:33Z no-defun-allowed: oni-on-ion: sounds like a safe compiler 2018-09-10T04:49:57Z no-defun-allowed: squeak on bare metal was also an interesting experience 2018-09-10T04:50:00Z aeth: AeroNotix: https://github.com/robert-strandh/SICL is a necessary prerequisite 2018-09-10T04:51:51Z emaczen quit (Ping timeout: 252 seconds) 2018-09-10T04:51:51Z aeth: and afaik "single address space" is why 2018-09-10T04:52:08Z AeroNotix: https://github.com/robert-strandh/SICL/blob/master/Ideas/package-extensions.text#L4-L8 <- always thought about thi 2018-09-10T04:52:10Z AeroNotix: this* 2018-09-10T04:52:10Z kristof: AeroNotix: Some propositions that necessitate a paradigm shift: maybe operating system data should be strongly typed, i.e. it is not an interpretable set of bytes but rather a computational object in its own right 2018-09-10T04:52:48Z oni-on-ion: hehe i wrote a little squeak plugin for 3d gfx engine tests and some basic multiplayer demo 2018-09-10T04:52:50Z AeroNotix: kristof: at some point it must be an interpretable set of bytes. Somewhere on the machine 2018-09-10T04:53:11Z oni-on-ion: we can just full screen stuff and pretend 2018-09-10T04:53:15Z aeth: AeroNotix: but you wouldn't have access to it as that 2018-09-10T04:53:24Z kristof: AeroNotix: This is as true as "at some point you must write to memory mapped hardware" 2018-09-10T04:53:31Z aeth: AeroNotix: if anything it would be more secure 2018-09-10T04:54:05Z kristof: AeroNotix: There shouldn't be one programming language, but maybe processes, or threads, or applications, or whatever should be able to freely share data with one another, and 2018-09-10T04:54:12Z jack_rabbit joined #lisp 2018-09-10T04:54:25Z AeroNotix: aeth: something must have access to it as that 2018-09-10T04:54:30Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T04:54:57Z kristof: rather than the operating system catering to the *lowest* common denominator (C), it should cater to the highest common denominator, a strongly typed language with a garbage collector and whose objects carry their type information with them 2018-09-10T04:55:10Z jlarocco joined #lisp 2018-09-10T04:55:31Z Lycurgus joined #lisp 2018-09-10T04:56:05Z kristof: Common Lisp is an extraordinarily good language in this regard. You can get dynamic duck typed languages pretty easily (like Javascript, using a-lists or association vectors of symbols) and you can still share data with statically typed languages 2018-09-10T04:56:26Z emaczen joined #lisp 2018-09-10T04:56:33Z kristof: which simply don't need to do the same type checks that Lisp does. The representation doesn't need to change at all between F# and Lisp. 2018-09-10T04:57:08Z kristof: These Common Language Runtimes have been proposed for decades because they're really good ideas. 2018-09-10T04:57:13Z beach: AeroNotix: I am working on it. SICL will be the basis for CLOSOS. 2018-09-10T04:57:13Z kristof: (See what I did there? :P) 2018-09-10T04:57:32Z aeth: kristof: Why shouldn't there be one programming language? I'd imagine that in such an environment everything would compile to CL 2018-09-10T04:57:50Z oni-on-ion: jvm, clr, ... 2018-09-10T04:58:05Z oni-on-ion: beach: yeah!! =) 2018-09-10T04:58:23Z kristof: Even Symbolics Genera supported at least two different programming languages (Lisp Machine Lisp and Common Lisp) 2018-09-10T04:58:29Z smokeink joined #lisp 2018-09-10T04:58:43Z no-defun-allowed: also fortran, c, prolog and some more 2018-09-10T04:58:43Z aeth: kristof: Only for backwards compatibility 2018-09-10T04:59:32Z kristof: I think one of Guy Steele's most important contributions was getting people to understand that there are two things that people confuse: programs, which are abstract, mathematical constructs that "compute", and the languages we use to describe them 2018-09-10T04:59:50Z fikka joined #lisp 2018-09-10T05:00:12Z aeth: no-defun-allowed: You can compile Fortran to CL iirc 2018-09-10T05:00:22Z kristof: What I'm saying by proposing that the operating system should have a baseline high level language is more like saying that everyone can write whatever programming language they want to target a system that has the denotational semantics of common lisp. 2018-09-10T05:00:37Z no-defun-allowed: aeth: symbolics compiled everything to common lisp afaik 2018-09-10T05:01:00Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-10T05:01:54Z kristof: aeth: Anyway, these are examples of "propositions" that would necessitate a total paradigm shift in conventional operating system design. 2018-09-10T05:01:58Z AeroNotix: all very interesting but I must go to bed. Just turned 7am here. 2018-09-10T05:02:09Z kristof: Goodnight 2018-09-10T05:02:18Z no-defun-allowed: night kristof 2018-09-10T05:02:18Z AeroNotix: night 2018-09-10T05:02:23Z oni-on-ion: languages were for computers and they are becoming more for people 2018-09-10T05:02:30Z aeth: kristof: I think it would be more like CLR or JVM, where it's not like you can program whatever language you want, but that there's an equivalent to Foo as Bar in the runtime. 2018-09-10T05:02:41Z kristof: Hopefully I saved beach a headache or two. 2018-09-10T05:03:19Z oni-on-ion: its fun to live in a logical digital world but the analog of change is why we code 2018-09-10T05:03:26Z kristof: aeth: You can program whatever language you want on the CLR or JVM. They're just machines. 2018-09-10T05:03:32Z beach: kristof: You definitely did. I admire your patience. 2018-09-10T05:04:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T05:04:30Z kristof: beach: I hit the "paradigm shift" only recently, when I watched a presentation by a symbolics developer show off Genera. It all clicked, and suddenly I was very impressed. 2018-09-10T05:04:43Z beach: Nice! 2018-09-10T05:05:12Z oni-on-ion: sauce 2018-09-10T05:05:19Z johnjay: guy steele sure has written in diverse areas. C, Java, common lisp 2018-09-10T05:05:37Z beach: johnjay: A very smart guy. 2018-09-10T05:05:47Z beach: And knowledgeable too. 2018-09-10T05:06:28Z graphene quit (Remote host closed the connection) 2018-09-10T05:06:30Z Lycurgus quit (Quit: Exeunt) 2018-09-10T05:07:13Z johnjay: i was browsing his wikipedia and i thought from java to lisp... to parallel C... this is all very broad 2018-09-10T05:07:29Z kristof: You've got that backwards 2018-09-10T05:08:05Z graphene joined #lisp 2018-09-10T05:08:14Z no-defun-allowed: halfway from C to Lisp is a strange place 2018-09-10T05:08:24Z kristof: It was from Lisp to Java. Well, to Pizza. Which is not quibbling, because Pizza was notable precisely for the things that were not in Java. 2018-09-10T05:08:39Z aeth: kristof: What tends to happen in practice is that people program in conceptual ports that interoperate better on the common environment, such as F# on CLR instead of a port of ML or Haskell. 2018-09-10T05:09:24Z kristof: aeth: In practice, sure. But F# is the way it is because of *C#* compatibility, not because of anything inherent in the CLR. 2018-09-10T05:09:47Z fikka joined #lisp 2018-09-10T05:10:03Z aeth: kristof: Mostly, yes, but it's probably also built with CLR performance in mind 2018-09-10T05:10:21Z kristof: Can you name an example? 2018-09-10T05:10:24Z Inline quit (Quit: Leaving) 2018-09-10T05:11:03Z kristof: I happen to know F# very well, better than i know Common Lisp, so this is sort of my wheelhouse. :P 2018-09-10T05:11:04Z aeth: kristof: I would suspect that C# compatibility is itself an example of that. The C# built-in things it interoperates with are probably well-optimized. 2018-09-10T05:12:06Z aeth: (Possibly optimized to the point of "cheating", i.e. you wouldn't be able to do that.) 2018-09-10T05:13:03Z kristof: The only example I can think of is that the CLR, unlike other garbage collected environments, distinguishes between heap allocated composite datatypes (classes) and stack allocated ones (structs). But that's still a CLR thing, not a C# thing. 2018-09-10T05:14:10Z aeth: kristof: Since you program in a language with a modern type system... I wonder: What is the CL type system missing? 2018-09-10T05:14:22Z kristof: Nothing. 2018-09-10T05:14:30Z aeth: As in a Nothing type? 2018-09-10T05:14:31Z kristof: It's statically typed languages that miss a *lot*. 2018-09-10T05:14:54Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T05:16:28Z aeth: kristof: Well what I mean is, I've done some reading on various things that languages brag about in their type system and CL has a lot of direct equivalents, e.g. the maybe type appears to be (or null foo), although that obviously won't work on lists, symbols, or booleans. 2018-09-10T05:17:16Z aeth: kristof: What can't be expressed well in CL and would it be worth trying to get it into implementations as an extension? 2018-09-10T05:17:19Z kristof: You know people talk about type safe nullables a lot and they cause more pain than they're worth. The first issue of course is the syntactic overhead. 2018-09-10T05:17:27Z graphene quit (Remote host closed the connection) 2018-09-10T05:18:34Z aeth: kristof: but CL is itself a language where only lists, symbols, and booleans are nullable without (or null foo), at least afaik. And with booleans it really doesn't count because NIL *is* false. 2018-09-10T05:18:58Z kristof: Every binding can be nil. 2018-09-10T05:18:59Z graphene joined #lisp 2018-09-10T05:19:50Z kristof: In fact what I think you mean to say is that "only lists, symbols, and booleans are not trivially nullable in Common Lisp" 2018-09-10T05:20:08Z aeth: yes 2018-09-10T05:20:16Z fikka joined #lisp 2018-09-10T05:20:27Z kristof: The situation is trivially remedied by multiple values 2018-09-10T05:20:47Z fikka quit (Read error: Connection reset by peer) 2018-09-10T05:20:53Z aeth: Although if you give a type something (various ways, only CHECK-TYPE and maybe ASSERT being guaranteed) you do have to (or null foo) to permit nil 2018-09-10T05:21:35Z kristof: aeth: You're starting from a certain axiom I think that underlies your messages 2018-09-10T05:22:10Z aeth: s/give a type something/give a type to something/ 2018-09-10T05:22:17Z aeth: or maybe "give something a type" 2018-09-10T05:22:21Z kristof: and I'm going to try to outline what it is so correct me if you think this is wrong 2018-09-10T05:22:38Z kristof: "Everything has one type, and it is important to know what that type is." 2018-09-10T05:23:28Z kristof: Types are important. But what statically typed languages think types are and what lisp, and mathematicians, think types are is totally different. 2018-09-10T05:23:45Z aeth: kristof: No. I suspect I mix (implementation-optional) static typing and dynamic typing often enough in my CL that neither group would be happy. 2018-09-10T05:24:03Z kristof: I think you should do whatever makes you happy :P 2018-09-10T05:24:54Z kristof: aeth: Have you ever read this? https://groups.google.com/forum/#!msg/comp.lang.lisp/7nhbeh2NIuw/fD-PUkA1yBoJ 2018-09-10T05:25:12Z p_l: kristof: I think comparing LML and Symbolics CL is a bit of a missm at least on later versions where I think ZL differed mostly in available library 2018-09-10T05:25:19Z aeth: kristof: I have not 2018-09-10T05:25:28Z kristof: It's a good read, I highly recommend it 2018-09-10T05:26:15Z p_l: OTOH, pretty sure the Symbolics C, Fortran, Pascal and Ada compilers all used Lisp as intermediate stage 2018-09-10T05:26:54Z p_l: don't think they actually targeted "the machine" direct 2018-09-10T05:26:54Z kristof: Could you trivially pass lisp data into Ada? 2018-09-10T05:27:12Z aeth: kristof: I do write CL sort of like what could be described as "gradually typed", but that's not really a good name for it because there are definitely places where I will never add type declarations or CHECK-TYPE or typed slots or whatever, especially in macros and "gradually typed" sort of implies that you start with T and eventually refine yourself into a Haskell program or something. 2018-09-10T05:27:24Z p_l: kristof: I recall that it works with C, but haven't got access to Symbolics Ada 2018-09-10T05:28:32Z kristof: aeth: Sure, I agree, and I would say that the people who repackaged lisp type systems and called it "gradual typing", pretending it was novel, do not intend to fully type their programs, either 2018-09-10T05:29:57Z kristof: Because static typing is primarily about optimization, not correctness, and optimization is only important in certain places. 2018-09-10T05:30:15Z aeth: kristof: Repackaged lisp type systems? I hope they included both the numerical tower and multiple kinds of floating point! 2018-09-10T05:30:22Z ealfonso joined #lisp 2018-09-10T05:30:22Z kristof: lol 2018-09-10T05:30:29Z fikka joined #lisp 2018-09-10T05:30:40Z kristof: aeth: I remember when Hack came out and they tried to pretend they had done something novel and I thought "this is already on SBCL" 2018-09-10T05:31:23Z p_l: kristof: arguably Ada's type system is concerned with correctness, not speed (what with subtyping that touches halfway to CL's 'satisfies) 2018-09-10T05:31:45Z kristof: That's true, and I can't think of any usable programming languages that come anywhere near Ada's type system. 2018-09-10T05:32:11Z p_l: Don't some pascal descendants have slightly similar? 2018-09-10T05:32:17Z kristof: I wouldn't know 2018-09-10T05:32:38Z kdas_ joined #lisp 2018-09-10T05:32:54Z p_l: also I guess some in the ML family and such might have it as extension or so 2018-09-10T05:33:27Z kushal quit (Ping timeout: 256 seconds) 2018-09-10T05:34:18Z aeth: kristof: this will give a compilation warning in SBCL (and it will compile BAR to always throw a SIMPLE-TYPE-ERROR). (with-compilation-unit () (defun foo (x) (+ x x)) (defun bar () (concatenate 'list (foo 42) "Hello"))) 2018-09-10T05:34:44Z aeth: And if you (setf sb-ext:*derive-function-types* t) then it will always happen, even outside of a compilation-unit or file. 2018-09-10T05:35:02Z kristof: Lisp systems were responsible for a lot of the early research in type inference 2018-09-10T05:35:11Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T05:35:13Z aeth: kristof: So types in CL can be useful for catching bugs early... and I didn't even statically type my example 2018-09-10T05:35:22Z aeth: well, I didn't use type declarations 2018-09-10T05:35:26Z aeth: SBCL statically typed it for me 2018-09-10T05:35:45Z aeth: But I do have to tell it to sb-ext:*derive-function-types* to make full use of it because it violates the ANSI standard iirc 2018-09-10T05:36:34Z aeth: (That variable tells it to assume that function types will not be redefined even when functions are redefined, which allows the compiler to make more assumptions.) 2018-09-10T05:37:04Z kristof: aeth: That's good, but do you think you never would have caught that bug if you didn't have static typing there? 2018-09-10T05:37:08Z p_l: I think it was more of undefined behaviour rather than ansi violation 2018-09-10T05:37:41Z aeth: kristof: I would have caught it in the middle of executing the program. FOO and BAR might be very far apart, and that runtime error might happen rarely, or after a long time. 2018-09-10T05:38:06Z kristof: You would have caught it in the middle of executing the *line*, not necessarily the whole program. 2018-09-10T05:38:10Z kristof: This is what line coverage is good for 2018-09-10T05:38:35Z aeth: I like it when things fail early, especially if it's running in a program that has to CFFI, which can make debugging less fun. 2018-09-10T05:38:40Z kristof: line coverage also solves the problem of "I don't know when this might be triggered." Go on and trigger it yourself! 2018-09-10T05:38:54Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-10T05:39:02Z ldb joined #lisp 2018-09-10T05:39:04Z ldb: hola 2018-09-10T05:39:13Z kristof: aeth: When I hear this argument for (completely, not gradually) statically typed languages, I like to compare it to spellcheckers 2018-09-10T05:39:29Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-10T05:39:39Z kristof: I think there is a set of things that I would want to check for when I write an essay. I think spelling is a good one, and it's also an easy one. I think there are many more ipmortant things, though, than spellchecking. 2018-09-10T05:39:44Z kristof: And moreover I don't use a spellchecker. 2018-09-10T05:40:02Z kristof: (because I can spell. Except, apparently, the word "ipmortant") 2018-09-10T05:40:14Z aeth: You should try flyspell-mode. :-p 2018-09-10T05:40:18Z LdBeth: Then just do both 2018-09-10T05:40:19Z aeth: I don't use a spellchecker on IRC, though. 2018-09-10T05:40:20Z kristof: I don't use emacs! 2018-09-10T05:40:46Z LdBeth: Only kids argues which one is better 2018-09-10T05:41:01Z kristof: You missed 90% of the discussion :P 2018-09-10T05:41:09Z aeth: If I don't know how to spell a word, I just type it into *scratch* as "foo", i.e. as a string, so flyspell-prog-mode catches it 2018-09-10T05:41:10Z beach: Hello ldb. 2018-09-10T05:41:28Z ldb: hello 2018-09-10T05:41:31Z kristof: He or she specifically asked me "What do you thinks Lisp's type system is missing that other languages have", and I countered that it's other languages that should adopt Lisp's more general, more useful type system. 2018-09-10T05:42:10Z LdBeth: Lisp can be say “untyped” 2018-09-10T05:42:38Z beach: LdBeth: Don't go there, please. 2018-09-10T05:42:50Z LdBeth: Okay 2018-09-10T05:42:51Z no-defun-allowed: No thanks LdBeth 2018-09-10T05:43:07Z no-defun-allowed: We had bcpl and it died for good reason. 2018-09-10T05:43:25Z no-defun-allowed: Maybe it was B actually 2018-09-10T05:43:31Z LdBeth: Than Forth still survives 2018-09-10T05:43:56Z no-defun-allowed: So does the Unabomber. 2018-09-10T05:44:06Z p_l: Forth has other benefits 2018-09-10T05:44:07Z no-defun-allowed: At least we think, no one probably knows. 2018-09-10T05:44:17Z p_l: Bless, B, and BCPL all died 2018-09-10T05:44:34Z kristof: aeth: Did you read that article? It's good food for thought. 2018-09-10T05:44:47Z aeth: kristof: I'm still wondering what I'm missing in a typed slot, e.g. (defstruct foo (name nil :type (or null keyword))) ; it's unfortunate that :type, while optional in both, is respected in defstruct more than in defclass... I actually have a metaclass that enforces a type check portably on a slot 2018-09-10T05:44:58Z ldb: Forth people regard it as a feature rather than bug 2018-09-10T05:45:11Z kristof: aeth: Respected in what way? 2018-09-10T05:45:23Z igemnace quit (Quit: WeeChat 2.2) 2018-09-10T05:45:26Z aeth: kristof: SBCL on default optimization levels completely ignores :type in defclass 2018-09-10T05:46:33Z aeth: When I want to rely on a type check, I use a metaclass that has a :checked-type arg that does this: https://gitlab.com/zombie-raptor/zombie-raptor/blob/e404e51d899b45808e6fc4b7af281861073892a1/util/util.lisp#L536-543 2018-09-10T05:46:56Z kristof: aeth: Define "ignores" 2018-09-10T05:47:09Z kristof: You mean like an ignored type declaration? 2018-09-10T05:47:25Z aeth: kristof: Yes, where it does not check types and you can set it to whatever you want in a writer or in a constructor 2018-09-10T05:47:40Z kristof: what about on higher safety levels? 2018-09-10T05:47:51Z beach quit (Disconnected by services) 2018-09-10T05:48:30Z aeth: I cannot assume that my users will use higher safety levels, especially because I am writing a game engine, where the focus will be on performance. But I do try to use the type system to ensure that I'll catch bad input as early as possible, and in Lisp rather than when feeding it to the CFFI (which is necessary for a 3D game, unfortunately) 2018-09-10T05:49:16Z Patzy quit (Ping timeout: 268 seconds) 2018-09-10T05:49:17Z kristof: Oh, I see what you mean 2018-09-10T05:49:39Z nirved joined #lisp 2018-09-10T05:50:23Z kristof: Yeah, I would have expected default safety and speed levels to warn on provably bad input 2018-09-10T05:50:28Z graphene quit (Remote host closed the connection) 2018-09-10T05:50:37Z Patzy joined #lisp 2018-09-10T05:50:48Z fikka joined #lisp 2018-09-10T05:51:57Z graphene joined #lisp 2018-09-10T05:52:00Z kristof: In a game engine I would expect there to be a *lot* of type directed dispatch though, right? 2018-09-10T05:52:10Z aeth: kristof: absolutely, and I think the rest do check except for CLISP, which hates types 2018-09-10T05:52:30Z aeth: (re default safety) 2018-09-10T05:53:03Z kristof: I would imagine there's a fair amount of difficulty when it comes to type propagation and CLOS but I don't want to speculate. 2018-09-10T05:53:04Z aeth: kristof: directed dispatch? 2018-09-10T05:53:12Z kristof: aeth: I mean ad hoc polymorphism 2018-09-10T05:53:18Z martinium joined #lisp 2018-09-10T05:53:29Z ldb: or dynamic dispatch 2018-09-10T05:54:08Z aeth: kristof: Not at the moment. I'm still working on the optimized core (it's not really premature optimization, this is the stuff that's run 60 or 100 times a second in a hot loop at the core of everything else) 2018-09-10T05:54:28Z kristof: I see 2018-09-10T05:54:38Z kristof: Anyway this has been a stimulating exchange of ideas, but I have to go 2018-09-10T05:54:51Z aeth: There are some higher order functions already, though. Where those make sense. I think at the moment that's input and scripting 2018-09-10T05:55:22Z aeth: (Maybe it's not wise as far as performance goes to funcall items from an array for all of the input, but it's just too convenient.) 2018-09-10T05:55:42Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T05:55:52Z aeth: (And I funcall 'foo, not #'foo, so I can have them recompiled. Not sure if that would hurt performance even more. But, again, a necessary evil.) 2018-09-10T05:56:21Z aeth: kristof: bye 2018-09-10T05:56:45Z ealfonso quit (Ping timeout: 252 seconds) 2018-09-10T05:57:35Z kristof: aeth if you're worried about performance I'm actually quite surprised you funcall a symbol :P 2018-09-10T05:57:56Z aeth: I suppose I can add a # in the build script? 2018-09-10T05:58:09Z kristof: >.> 2018-09-10T05:59:22Z ldb: kinda can't get why use explit funcall 2018-09-10T05:59:41Z Balooga_ quit (Quit: Balooga_) 2018-09-10T06:01:01Z aeth: ldb: Well, I guess an alternative to an array might be to make it a several hundred line CASE, but I doubt SBCL optimizes for that. Still might be faster, though. 2018-09-10T06:01:05Z kristof: The correct thing to do is to define your own reader macro, or perhaps redefine #', so that in dev mode you get (quote foo), and in release mode (function foo) 2018-09-10T06:01:17Z fikka joined #lisp 2018-09-10T06:01:21Z aeth: ldb: This is for keyboard input, after all. 2018-09-10T06:01:34Z aeth: In practice, though, I guess only a few input actions happen each tick, if any. 2018-09-10T06:01:47Z kristof: You also have a two or three input delay for input. 2018-09-10T06:01:52Z kristof: *three frame 2018-09-10T06:05:40Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T06:06:55Z aeth: kristof: redefining #' might actually be the way to go, although I would have to make sure that anywhere where I have CHECK-TYPE or :TYPE etc I use (or symbol function) 2018-09-10T06:07:29Z aeth: I suspect I already have type 'bugs' like that in my engine. I should probably define (or symbol function) as a type. 2018-09-10T06:07:33Z kristof quit (Ping timeout: 245 seconds) 2018-09-10T06:07:55Z beach` joined #lisp 2018-09-10T06:15:05Z aeth: Is (or symbol function) the correct type for funcallable things here? I think MOP adds funcallable instances, but I don't think they'd be used in this context. It looks like adding symbol as a possibility adds one test, so it probably won't hurt performance in a noticable way. 2018-09-10T06:15:37Z shrdlu68 joined #lisp 2018-09-10T06:18:16Z aindilis quit (Ping timeout: 246 seconds) 2018-09-10T06:18:29Z vlatkoB joined #lisp 2018-09-10T06:21:19Z fikka joined #lisp 2018-09-10T06:26:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T06:30:51Z scymtym quit (Ping timeout: 252 seconds) 2018-09-10T06:31:06Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-10T06:32:09Z fikka joined #lisp 2018-09-10T06:32:18Z ldb quit (Ping timeout: 264 seconds) 2018-09-10T06:35:21Z lavaflow_ joined #lisp 2018-09-10T06:40:03Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-10T06:40:24Z gpiero joined #lisp 2018-09-10T06:43:20Z dented42 joined #lisp 2018-09-10T06:53:32Z CatchMe joined #lisp 2018-09-10T06:55:03Z martinium quit (Ping timeout: 245 seconds) 2018-09-10T06:55:10Z aindilis joined #lisp 2018-09-10T06:56:51Z CatchMe quit (Quit: leaving) 2018-09-10T07:04:38Z graphene quit (Remote host closed the connection) 2018-09-10T07:05:30Z pjb joined #lisp 2018-09-10T07:06:02Z suskeyhose quit (Remote host closed the connection) 2018-09-10T07:06:11Z graphene joined #lisp 2018-09-10T07:09:03Z doubledup joined #lisp 2018-09-10T07:10:36Z beach` left #lisp 2018-09-10T07:12:39Z varjag joined #lisp 2018-09-10T07:15:03Z beach joined #lisp 2018-09-10T07:20:42Z shrdlu68 joined #lisp 2018-09-10T07:21:00Z doubledup quit (Remote host closed the connection) 2018-09-10T07:26:33Z scymtym joined #lisp 2018-09-10T07:31:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T07:38:26Z schweers joined #lisp 2018-09-10T07:50:54Z angavrilov joined #lisp 2018-09-10T07:54:40Z laoguan joined #lisp 2018-09-10T08:00:51Z jlarocco quit (Ping timeout: 252 seconds) 2018-09-10T08:05:37Z laoguan quit (Remote host closed the connection) 2018-09-10T08:07:49Z fikka joined #lisp 2018-09-10T08:11:25Z shka_: good morning 2018-09-10T08:11:41Z shka_: i have a question regardin change-class 2018-09-10T08:12:09Z shka_: is change-class guaranteed to change existing instance instead of allocating and returning new one? 2018-09-10T08:12:13Z beach: Hello shka_. 2018-09-10T08:12:21Z dim: writing C is a very good exercise into appreciating CL even more 2018-09-10T08:12:23Z beach: Yes, identity is preserved. 2018-09-10T08:12:40Z shka_: how is it possible? 2018-09-10T08:12:56Z beach: The great technique of CS: indirection. 2018-09-10T08:13:08Z shka_: oh 2018-09-10T08:13:11Z shka_: ok 2018-09-10T08:13:55Z shka_: i did not realize that cl objects are boxed 2018-09-10T08:14:00Z beach: For example, in SICL, every standard object has a header and a "rack". The header contains a (pointer to a) class and a (pointer to a) rack. 2018-09-10T08:14:04Z wigust quit (Ping timeout: 272 seconds) 2018-09-10T08:14:17Z shka_: yeah, i remember this 2018-09-10T08:14:17Z givre joined #lisp 2018-09-10T08:14:26Z shka_: beach: thanks, it is all clear now 2018-09-10T08:14:33Z beach: Sure. 2018-09-10T08:15:52Z shrdlu68 quit (Ping timeout: 244 seconds) 2018-09-10T08:18:49Z graphene quit (Remote host closed the connection) 2018-09-10T08:20:36Z graphene joined #lisp 2018-09-10T08:20:49Z aeth: shka_: everything's boxed except for things smaller than 64-bit (assuming a 64-bit implementation). That's probably single-float, fixnum, symbol, keyword, maybe character. Definitely implementation-dependent. Fixnum has tag bits, possibly just one (like in SBCL, which makes it a (signed-byte 63)). single-float is obviously half of the size so it definitely fits (for 64-bit implementations). 2018-09-10T08:21:00Z shka_: aeth: floats? 2018-09-10T08:21:04Z shka_: oh, right 2018-09-10T08:21:30Z aeth: nd I'm absolutely guessing about symbol/keyword/character 2018-09-10T08:21:33Z aeth: s/nd/and/ 2018-09-10T08:21:50Z j`ey: when (time..) on sbcl shows N bytes consed, I assume that's also talking about boxed things? 2018-09-10T08:21:52Z shka_: aeth: well obviously, objects are not inlined 2018-09-10T08:22:01Z cuso4 joined #lisp 2018-09-10T08:22:02Z shka_: but it goes further then that as beach pointed out 2018-09-10T08:22:23Z shka_: you don't have pointer to storage area, you have pointer to pointer to storage area :-) 2018-09-10T08:24:11Z beach: Clearly, symbols must be allocated on the heap. 2018-09-10T08:25:03Z beach: Though symbols would not need any indirection since you can't change the class of a symbol. 2018-09-10T08:25:16Z beach: Nor can you update the SYMBOL class. 2018-09-10T08:25:25Z beach: ... except in SICL you could. :) 2018-09-10T08:25:31Z shrdlu68 joined #lisp 2018-09-10T08:26:16Z beach: j`ey: Anything that needs heap allocation. 2018-09-10T08:26:51Z givre: Hi, i'm trying to build a macro to pass a bunch of functions to a cond statement. I've tried the following to no avail : (defmacro find-element-with-multiple-strategies (value l (&body strategies)) `(cond ,@(find-element ,value ,l #'strategies))) 2018-09-10T08:27:24Z beach: Wow, that doesn't make any sense. 2018-09-10T08:27:52Z beach: First COND is a "form" not a "statement". Then, how do you pass a function to a COND form? 2018-09-10T08:28:28Z beach: givre: I suggest you use a pastebin to show your code, but also what you expect from the expansion of your macro. 2018-09-10T08:29:14Z beach: givre: It would also be very unusual to have &body wrapped in a sub-lambda-list the way you did. 2018-09-10T08:29:34Z givre: beach: I want to unwrap the list of strategies to build a cond form containing all the functions 2018-09-10T08:30:09Z givre: beach: yeah that's what i figured, i'm not really familiar with macros, i'm going to post the code on pastebin + expansion 2018-09-10T08:30:21Z shka_: shrdlu68: hey, i took a look at your code 2018-09-10T08:30:40Z shka_: shrdlu68: imho you should not use hash-table here 2018-09-10T08:31:00Z shka_: some sort of trie would be probabbly better 2018-09-10T08:31:38Z beach: givre: Also, when you do #'strategies, you are looking in the function namespace and not in the variable namespace. 2018-09-10T08:31:51Z beach: givre: What is the nature of your STRATEGIES parameter? 2018-09-10T08:31:52Z shka_: https://gist.github.com/sirherrbatka/1c1755725681d9b33b9bc54dc201c1e9 2018-09-10T08:32:00Z shka_: shrdlu68: like that ^^ 2018-09-10T08:32:09Z makomo joined #lisp 2018-09-10T08:32:12Z shrdlu68: shka_: I've been thinking about that too. Using hash tables, at least as I currently use them, is untenable. 2018-09-10T08:32:35Z shka_: yes, but luckly, you don't have to use hashtables 2018-09-10T08:33:10Z shka_: i think that bit-trie i pasted above will work better 2018-09-10T08:33:49Z shrdlu68: shka_: I'll give it a trie :) 2018-09-10T08:34:30Z shka_: heh 2018-09-10T08:34:47Z shka_: also, i don't like your use of bit-vectors 2018-09-10T08:34:59Z zfree joined #lisp 2018-09-10T08:35:07Z givre: beach: https://pastebin.com/iS9FqUHL strategies is a list of lambda functions 2018-09-10T08:35:17Z aeth: How are symbols generally implemented? Is there a resource about this? 2018-09-10T08:35:24Z shrdlu68: shka_: What did you make of sb-sprof's output? Hashtables apparently aren't the bottleneck. 2018-09-10T08:35:42Z beach: givre: Then, why do you use #'strategies? 2018-09-10T08:35:45Z shka_: well, they kinda are 2018-09-10T08:36:20Z shka_: shrdlu68: i think that hashtable is indeed the main paint point here 2018-09-10T08:36:46Z shrdlu68: shka_: I've also been thinking about implementing bit vectors in octet vectors with a little bit of overhead, but this is apparently exactly how SBCL does it. 2018-09-10T08:37:07Z aeth: (The HyperSpec says that "the actual internal representation of symbols and their attributes is implementation-dependent", but there might be a common implementation technique.) 2018-09-10T08:37:08Z beach: givre: ,@(find-element ...) will call the function FIND-ELEMENT and insert each element of the list that it returns. 2018-09-10T08:37:23Z shrdlu68: shka_: Does it account for the supermassive performance difference between SBCL and other implementations? 2018-09-10T08:38:07Z beach: givre: For what input to the macro do you expect that expansion. 2018-09-10T08:38:48Z shka_: shrdlu68: you tried CCL, right? 2018-09-10T08:39:29Z schweers: Do SBCL and CCL differ much in the amount of memory the code they produce uses? 2018-09-10T08:39:37Z shrdlu68: shka_: Yes. 2018-09-10T08:39:46Z schweers: I’m talking about large amounts of data on the heap 2018-09-10T08:40:31Z shka_: shrdlu68: i can't check right now, but it is possible that CCL does not like bitvectors as keys in hashtable so much it generates to O(n) lookup 2018-09-10T08:40:40Z shka_: *degenerates 2018-09-10T08:41:02Z shrdlu68: I think so too. 2018-09-10T08:41:07Z shka_: you can try to check it yourself 2018-09-10T08:41:42Z shka_: simply populate hashtable with bitvectors measure time, populate hashtable with twice as many bitvectors, measure time again 2018-09-10T08:42:02Z shka_: anyway, you are better of without hashtable 2018-09-10T08:43:18Z shrdlu68: shka_: Thanks, I'll let you know how it goes. 2018-09-10T08:43:49Z givre: beach: honestly don't understand all the meaning of #' right now, so would be able to tell you why. I'm trying to abstract away the use of a cond, I want to be able to search in an assoc list with multiple matching strategies (right now i'm splitting a mail adress and matching user login with the first part of the mail for instance) 2018-09-10T08:45:14Z beach: givre: OK, but it is not going to be possible for you to write a macro unless you first know what ,@ does and what #' means. 2018-09-10T08:45:45Z givre: beach: i do know that ,@ is splicing a list into a form afaik 2018-09-10T08:46:35Z beach: givre: OK, so let me show you a simpler version of your macro: 2018-09-10T08:46:56Z beach: givre: (defmacro foo (x) `(cond ,@(list 1 2 3 x))) 2018-09-10T08:47:11Z beach: givre: What do you think the macroexpansion of (foo 234) is? 2018-09-10T08:47:40Z beach: givre: You can try it out on the REPL if you like. 2018-09-10T08:48:06Z beach: givre: But, you seem to think that it expands to (cond (list ...) (list ...) (list ...)) 2018-09-10T08:48:28Z beach: givre: Try (macroexpand-1 '(foo 234)) 2018-09-10T08:48:33Z givre: beach: ok, so i get an error because 234 is not a cons cell 2018-09-10T08:48:50Z beach: I seriously doubt that. 2018-09-10T08:49:33Z beach: You must have tried to call it rather than macroexpand it. 2018-09-10T08:50:07Z givre: beach: sorry, i meant the cond clause is not a cons. Yeah that's what i did obviously. It expands to (cond 1 2 3 234) 2018-09-10T08:50:48Z beach: So, why do you think your expansion will contain (find-element when mine doesn't contain (list? 2018-09-10T08:52:09Z beach: givre: After all, the two macros have the same structure. 2018-09-10T08:53:14Z givre: beach: I believed that placing the ,@ before a form instead of the parameter would splice differently, which is far fetched yeah 2018-09-10T08:53:27Z beach: givre: Like I said, ,@ will evaluate the form that follows, in my case (list 1 2 3 x) and then splice the elements of the resulting list into the COND. 2018-09-10T08:53:33Z atgreen__ joined #lisp 2018-09-10T08:53:59Z givre: beach: ok, i get it 2018-09-10T08:54:14Z beach: Good. 2018-09-10T08:55:04Z atgreen_ quit (Ping timeout: 246 seconds) 2018-09-10T08:56:29Z beach: givre: Now try this one (defun bar (car) (list car #'car)) 2018-09-10T08:56:38Z beach: Then evaluate (bar 234). 2018-09-10T08:56:50Z beach: Do you see what #'car does in a function body? 2018-09-10T08:57:27Z graphene quit (Remote host closed the connection) 2018-09-10T08:57:35Z givre: beach: yes, it allows a function to be used as data 2018-09-10T08:57:44Z beach: givre: So why do you expect #'strategies to refer to your parameter? 2018-09-10T08:59:24Z graphene joined #lisp 2018-09-10T08:59:25Z givre: givre: the find-element function is awaiting a function parameter, i passed it this way and then applied it in the body when i was not using the list 2018-09-10T08:59:41Z beach: givre: I suggest you write a function that returns the list ((find-element 1 '(1 2 3) (lambda ...)) (find-element 1 '(1 2 3) (lambda ...))). Once you have that, you can stick a call to it after the ,@ in your macro body. 2018-09-10T09:00:09Z givre: beach: ok, sounds good 2018-09-10T09:00:47Z givre: beach: I guess for the #' I don't need to use it because my lambda will be #'ed in their list anyway right ? 2018-09-10T09:01:09Z beach: Hard to say since you have not told us what the input to the macro is. 2018-09-10T09:01:33Z beach: You said that it's a list of "lambda functions", but there is no such thing. 2018-09-10T09:02:00Z beach: There are "functions" and "lambda expressions" (which are not functions, but code), so again, it depends. 2018-09-10T09:02:53Z beach: Besides, you don't need #' in front of (lambda ...). 2018-09-10T09:03:17Z givre: beach: ok 2018-09-10T09:03:18Z beach: LAMBDA is a macro that expands to (function (lambda ....)) 2018-09-10T09:04:23Z givre: beach: ok, so at this moment, it's only a form that is yet to be evaluated, right ? 2018-09-10T09:05:18Z givre: beach: which is why one can write ((lambda (a) (+ a 2) 2) 2018-09-10T09:05:39Z givre: beach: missed a parens obviously 2018-09-10T09:05:52Z no-defun-allowed: getting the parens right, you can use a lambda form as a function name 2018-09-10T09:05:53Z givre: beach: ((lambda (a) (+ a 2)) 2) 2018-09-10T09:06:37Z beach: givre: Here is a better example: Consider the macro (defmacro baz (x y) `(list ,x ,y)) 2018-09-10T09:06:58Z beach: givre: Now macroexpand (baz (lambda (x) x) (lambda (y) y)) 2018-09-10T09:06:59Z givre: beach: ok, this one I can understand without much concern i think 2018-09-10T09:07:22Z beach: givre: Vs (baz #.(lambda (x) x) #.(lambda (y) y)) 2018-09-10T09:07:47Z beach: In the first case, you are passing lambda expression to the macro function, because macros do not evaluate its arguments. 2018-09-10T09:08:13Z beach: In the second case, the reader will create functions for you and those will be passed to the macro function. 2018-09-10T09:08:46Z givre: oddly enough, it evaluates to the same thing (with different references of course) 2018-09-10T09:09:08Z beach: "different references"? 2018-09-10T09:09:17Z beach: I asked you to macroexpand the calls. 2018-09-10T09:09:29Z givre: oh, sure i ran the macro 2018-09-10T09:11:10Z cuso4 quit (Ping timeout: 246 seconds) 2018-09-10T09:11:11Z TMA: givre: to macroexpand is to call MACROEXPAND on the (quoted) form, not to _run_ it (possibly call MACROEXPAND-1 to look at one level of macroexpansion at time) 2018-09-10T09:11:54Z beach: givre: So it is important to be precise about terminology. 2018-09-10T09:12:06Z givre: https://pastebin.com/SNfbb3RC 2018-09-10T09:12:30Z beach: Quote the forms. 2018-09-10T09:12:32Z aeth: You usually want macroexpand-1 because macroexpand will leak implementation details as it keeps expanding well past the standard forms 2018-09-10T09:12:41Z beach: (macroexpand-1 '(baz....)) 2018-09-10T09:12:53Z givre: beach: i'im trying to be precise, but it's quite different from what i'm used to :) 2018-09-10T09:12:58Z givre: beach: ok, trying 2018-09-10T09:13:05Z beach: So you have a lot to learn. 2018-09-10T09:13:29Z beach: It is just amazing that you are trying to write a macro this early in your Common Lisp training. 2018-09-10T09:14:07Z givre: beach: Ok, so one contains the lambda forms and the other functions 2018-09-10T09:14:22Z beach: "lambda EXPRESSIONS" 2018-09-10T09:14:51Z beach: givre: So with all this information, you should be able to write a better version. But I this is too basic for #lisp, so next time you need help, I suggest you visit #clschool instead of #lisp. 2018-09-10T09:15:10Z shka_: beach: unfortunatly, macros are pictured as THE selling point of CL 2018-09-10T09:15:24Z makomo: morning 2018-09-10T09:15:28Z shka_: makomo: hello 2018-09-10T09:15:29Z beach: shka_: Yes, that's unfortunate. 2018-09-10T09:15:34Z beach: Hello makomo. 2018-09-10T09:15:41Z makomo: hello 2018-09-10T09:15:42Z givre: beach: i've been doing a bit of common-lisp for times to times over the past few years, but right now i've got the opportunity to write some POC at work and real code so here am I 2018-09-10T09:15:45Z aeth: shka_: Ideally, other people's macros 2018-09-10T09:15:48Z givre: beach: thanks ! 2018-09-10T09:15:59Z beach: Sure. 2018-09-10T09:16:04Z givre: beach: I'll head to #clschool 2018-09-10T09:16:09Z shka_: givre: there are multiple ways to implement such functionality, and macros have major drawbacks 2018-09-10T09:17:53Z aeth: I recommend people stick to established patterns when learning how to write macros. DO-FOO, DEFINE-FOO, and WITH-FOO are all simple and are the vast majority of macros you'll probably see/write 2018-09-10T09:18:09Z shka_: givre: many would argue for higher order functions instead 2018-09-10T09:19:02Z givre: shka_: ok, i was about to ask for betters leads. higher order functions are something I can relate to a bit more indeed ! 2018-09-10T09:19:43Z shka_: cool 2018-09-10T09:20:03Z luis: Sigh. highlight.js's Lisp coloring is so bad. Anybody want to fix it? :) 2018-09-10T09:20:39Z givre: anyway, thanks a lot, i'm off implementing that ! 2018-09-10T09:22:02Z shka_: anyway, contrary to what many would say, you can spend whole day in CL without defining your own macro 2018-09-10T09:22:30Z luis: shka_: months even! 2018-09-10T09:23:13Z shka_: yes 2018-09-10T09:23:40Z shka_: givre: anyway, relax and just write code instead of trying to generate everything 2018-09-10T09:24:06Z shka_: it is better to approach this gradually 2018-09-10T09:28:27Z orivej joined #lisp 2018-09-10T09:28:29Z givre: shka_a: Sure ! I'll write this macro anyway since I invested time in it, then I'll stick to actually writing code. 2018-09-10T09:29:06Z shka_: good luck! 2018-09-10T09:29:33Z givre: shka_: thanks ! 2018-09-10T09:29:37Z givre left #lisp 2018-09-10T09:31:47Z Demosthenex: so i have a simple http api to postgres project i'm doing, i'm considering threads to run requests in parallel. i have no global or shared variables, other than potentially postmodern's db connection and dexador's. i'm reading on bordeaux threads, any other suggested reading? 2018-09-10T09:32:02Z Demosthenex: it'd be slick if there were a mapcar-threads 2018-09-10T09:32:51Z makomo: Demosthenex: there's lparallel but i don't know much about it 2018-09-10T09:35:24Z luis: Demosthenex: you'll love lparallel 2018-09-10T09:36:26Z Demosthenex: ooo! sounds sweet 2018-09-10T09:36:34Z shka_: lparallel is good 2018-09-10T09:37:44Z shka_: Demosthenex: lparallel is thread pool, futures, some paralleized higher order functions, sync queues and some other stuff 2018-09-10T09:37:58Z shka_: it is rather nice 2018-09-10T09:38:17Z shka_: and fairly easy to use 2018-09-10T09:38:22Z esrse joined #lisp 2018-09-10T09:38:27Z shka_: and API is stable 2018-09-10T09:38:34Z shka_: you should give it a try 2018-09-10T09:39:34Z Demosthenex: indeed i will 2018-09-10T09:39:53Z Demosthenex: i think this is a simple job and a good fit for parallelism... so i'll give it a go 2018-09-10T09:41:35Z shka_: cool 2018-09-10T09:42:43Z shka_: Demosthenex: i like to have event loop launching async jobs to lparallel 2018-09-10T09:43:14Z shka_: it is easy architecture and usually works well 2018-09-10T09:46:39Z makomo: i was scrolling through SBCL's sb-walker codewalker and stumbled upon this comment https://github.com/sbcl/sbcl/blob/master/src/pcl/walk.lisp#L393 2018-09-10T09:46:46Z makomo: "Implementation x implements a Common Lisp macro as a special form." 2018-09-10T09:46:50Z makomo: is this conforming behavior? 2018-09-10T09:47:48Z makomo: implementing special forms as macros should be conforming afaik, but does the same hold for the reverse? 2018-09-10T09:49:22Z beach: It is. 2018-09-10T09:49:33Z beach: As long as the macro is available. 2018-09-10T09:51:27Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-10T09:51:29Z beach: http://www.lispworks.com/documentation/HyperSpec/Body/03_ababb.htm 2018-09-10T09:51:45Z beach: "An implementation is free to implement a Common Lisp special operator as a macro. An implementation is free to implement any macro operator as a special operator, but only if an equivalent definition of the macro is also provided." 2018-09-10T09:52:34Z tankf33der left #lisp 2018-09-10T09:54:00Z makomo: beach: i see, thanks 2018-09-10T09:54:07Z beach: Anytime. 2018-09-10T09:54:13Z Demosthenex: shka_: give i know how many pages of data i'm downloading, i'm thinking of just using pmap 2018-09-10T09:54:26Z Demosthenex: shka_: also weren't we discussing rate limits the other day? 2018-09-10T09:55:39Z makomo: beach: so for the purposes of a code walker, one can just ignore the fact that a macro is implemented as a special operator when there will surely be an equivalent definition of the macro 2018-09-10T09:55:56Z beach: makomo: Yes, that is exactly the point. 2018-09-10T09:57:22Z makomo: beach: mhm. the "codewalker problem" is quite an interesting one, and i always wonder how useful would a codewalker within the standard be 2018-09-10T09:57:38Z makomo: i suppose it would remove a lot of ugly hacks people have written over the year 2018-09-10T09:57:52Z makomo: but i'm not sure how easy it would be to standardize such a thing 2018-09-10T09:58:08Z makomo: years* 2018-09-10T09:58:11Z beach: The standard won't change, but you can write one that is implementation-independent. 2018-09-10T09:58:35Z pjb: makomo: or in a library, no need for a standard. The only thing, would be that implementation don't have macros that expand to non-standard special operators that don't have a macro expanding only to standard operators. 2018-09-10T09:58:37Z beach: You "just" have to come up with the right protocol for it. 2018-09-10T09:58:47Z pjb: makomo: only sbcl has (or had) one such special operator. 2018-09-10T09:59:19Z makomo: i've watched michael raskin's talk on a portable codewalker, and from what i've seen, doing it portably isn't really possible 2018-09-10T09:59:37Z pjb: beach: the implicit in "but only if an equivalent definition of the macro is also provided." is that this macro expands to standard special operators… 2018-09-10T09:59:44Z makomo: beach: i suppose "implementation-independent" includes implementation-specific code 2018-09-10T09:59:58Z beach: pjb: Or function calls. 2018-09-10T10:00:02Z pjb: sure. 2018-09-10T10:00:06Z beach: makomo: Exactly. 2018-09-10T10:00:12Z pjb: Perhaps older implementations had more implementation specific special operators? 2018-09-10T10:00:22Z beach: makomo: So for those parts, come up with a CLOS protocol so that implementations can configure it. 2018-09-10T10:00:42Z makomo: beach: mhm, i get your idea, but it would still be nice if it could be done 100% portably 2018-09-10T10:01:16Z beach: makomo: Then start by finding out why Raskin said what he did. 2018-09-10T10:01:53Z makomo: i think i have a vague idea (i forgot much of the talk) -- it might have something to do with environments 2018-09-10T10:02:17Z beach: Sounds plausible. 2018-09-10T10:02:33Z beach: I mean, Cleavir basically *is* a code walker. 2018-09-10T10:02:36Z makomo: but, reasons for it not being possible aside, i would still wish that it could be done portably 2018-09-10T10:02:52Z beach: And that is exactly the difficulty adapting it to any implementation. 2018-09-10T10:03:40Z esrse quit (Ping timeout: 246 seconds) 2018-09-10T10:03:42Z makomo: oh, i see 2018-09-10T10:03:51Z beach: The problem is that the implementation may call MACROEXPAND on a lexical environment. 2018-09-10T10:04:09Z beach: So the lexical environment must be acceptable to the implementation. 2018-09-10T10:04:50Z beach: Lunch time. I'll be back soon. 2018-09-10T10:05:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T10:06:02Z makomo: beach: ok :-) 2018-09-10T10:06:09Z fikka joined #lisp 2018-09-10T10:08:36Z makomo: beach: reading your code walker specification that i just found -- good stuff! a minor typo: "and interpreter" https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-walker/Specification/code-walker.text#L70 2018-09-10T10:10:53Z makomo: beach: i think christophe's post was about "let over lambda", not "land of lksp" (assuming we're thinking of the same article) https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-walker/Specification/code-walker.text#L15 2018-09-10T10:11:09Z pjb: beach: I don't think a code walker should expand the standard special operator as macro ever. 2018-09-10T10:11:14Z makomo: here's the post about code walking: http://christophe.rhodes.io/notes/blog/posts/2014/naive_vs_proper_code-walking/ 2018-09-10T10:14:54Z j`ey: what is a code-walker? 2018-09-10T10:16:37Z jackdaniel: it is a macro which performs it's body argument analysis for some reason 2018-09-10T10:16:53Z makomo: j`ey: a program that knows how to "interpret" common lisp code and that can tell you various stuff about it 2018-09-10T10:16:57Z jackdaniel: since body contains code, such macro has to understand meaning of special forms, macros, functions, variables etc 2018-09-10T10:17:08Z j`ey: ah 2018-09-10T10:17:10Z makomo: "interpret" not in the sense of executing it, but in the sense of "walking" it and "figuring out what the code does" 2018-09-10T10:17:23Z j`ey: analysing 2018-09-10T10:17:41Z makomo: yeah, that would be a better word :D, jackdaniel got it 2018-09-10T10:18:52Z jackdaniel: since code walking is non-trivial in common lisp it is hard to get right (hence it is rarely used in "normal" applications) 2018-09-10T10:21:15Z beach: pjb: I think that's correct. 2018-09-10T10:21:41Z beach: makomo: I had forgotten that I had written such a thing. 2018-09-10T10:21:52Z kooga joined #lisp 2018-09-10T10:22:29Z beach: pjb: Did I write something contrary to that? 2018-09-10T10:23:33Z pjb: beach: Yes, https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-walker/Specification/code-walker.text#L98 2018-09-10T10:24:12Z pjb: The code walker should not always try the macro first. If it's a special operator, it should call the user function with it, and let it interpret the special form. 2018-09-10T10:24:37Z beach: Got it. 2018-09-10T10:24:50Z beach: I definitely need to re-read that document. 2018-09-10T10:25:08Z ski joined #lisp 2018-09-10T10:25:20Z makomo: beach: ah :-). i suppose this text will eventually become part of the main SICL spec (the collection of tex/pdfs you maintain)? 2018-09-10T10:25:21Z pjb: beach: now, there may be an option to do what you specified, but in general, I wouldn't use it. 2018-09-10T10:25:35Z beach: Yes, I understand. 2018-09-10T10:25:39Z FreeBirdLjj joined #lisp 2018-09-10T10:25:48Z makomo: beach: "during during" https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-walker/Specification/code-walker.text#L63 2018-09-10T10:26:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T10:26:09Z beach: makomo: Possibly. Since I couldn't remember having written it, it might have been forgotten. 2018-09-10T10:26:28Z beach: Thanks. 2018-09-10T10:26:30Z makomo: beach: "body code" ("body of code" perhaps?) https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-walker/Specification/code-walker.text#L79 2018-09-10T10:26:48Z pjb: The thing is that such special operator macro will most certainly do implementation specific things, such as ignoring ignorable special operatorns (eg. THE). A code walker will usually want to be conforming and extract the semantics of the program in an implementation independent way. 2018-09-10T10:27:49Z makomo: the thing about not trying macros first is also mentioned in the comments of sbcl's walker https://github.com/sbcl/sbcl/blob/master/src/pcl/walk.lisp#L389 2018-09-10T10:30:04Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-09-10T10:30:46Z lavaflow_ joined #lisp 2018-09-10T10:31:27Z fikka joined #lisp 2018-09-10T10:31:33Z froggey quit (Ping timeout: 252 seconds) 2018-09-10T10:32:37Z beach: Fixed. Thanks. 2018-09-10T10:35:07Z orivej quit (Ping timeout: 240 seconds) 2018-09-10T10:35:08Z makomo: beach: glad to help 2018-09-10T10:35:37Z orivej joined #lisp 2018-09-10T10:35:57Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-10T10:38:07Z m00natic joined #lisp 2018-09-10T10:38:33Z froggey joined #lisp 2018-09-10T10:39:27Z makomo: beach: "a code walker (...) that collect (...)" https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-walker/Specification/code-walker.text#L112 2018-09-10T10:41:19Z shka_: change-class is actually rather neat function to have 2018-09-10T10:41:27Z shka_: i never used it before though 2018-09-10T10:41:52Z dim: as with many things in CL I though it was somewhat overkill until I had a use for it ;-) 2018-09-10T10:46:06Z orivej quit (Ping timeout: 264 seconds) 2018-09-10T10:46:24Z shka_: dim: considering extra dereference you have to do... 2018-09-10T10:47:50Z beach: makomo: Thanks. Fixed that one too. Now it is time for a break. 2018-09-10T10:47:58Z atgreen__ quit (Ping timeout: 245 seconds) 2018-09-10T10:49:30Z makomo: beach: ok 2018-09-10T10:51:01Z atgreen__ joined #lisp 2018-09-10T11:02:18Z dddddd joined #lisp 2018-09-10T11:04:25Z igemnace joined #lisp 2018-09-10T11:14:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T11:23:07Z jackdaniel: Xach: CG memos you've shared the other day by Alvy Ray Smith are true gems, thank you again for sharing the link 2018-09-10T11:23:18Z jackdaniel: [ftr if anyone is interested: http://alvyray.com/Memos/MemosCG.htm] 2018-09-10T11:29:50Z fikka joined #lisp 2018-09-10T11:32:05Z Xach: jackdaniel: many years ago i ran a GIMP web forum and he joined and asked if gimp was making the mistake of being rectangle- and square-centric with regard to images and layers, and a few deveopers chimed in that those were the most natural and anyway image formats are all square, and who are you, anyway, old man 2018-09-10T11:32:20Z Xach: jackdaniel: it was pretty embarrassing when i saw him in a pixar documentary and he was a founder 2018-09-10T11:33:05Z Xach: he has been nothing but helpful ever since i learned of his work 2018-09-10T11:33:59Z jackdaniel: truth to be told, orbitrary shapes/ transformations for various objects make my life certainly worse than it should be (mcclim-wise) 2018-09-10T11:34:26Z jackdaniel: either way reading his introduction to splines is simply great 2018-09-10T11:34:38Z fikka quit (Ping timeout: 245 seconds) 2018-09-10T11:34:53Z Xach: right - his notion is to break free of tradition and ease - kind of like how gc frees you, even though making gc work is difficult 2018-09-10T11:34:56Z jackdaniel: and it is just in time I've read it, because next biggish thing I want to add to mcclim are animations 2018-09-10T11:35:27Z Xach: glad you found it useful! 2018-09-10T11:37:54Z lavaflow_ joined #lisp 2018-09-10T11:40:00Z jxy quit (Read error: Connection reset by peer) 2018-09-10T11:40:11Z jxy joined #lisp 2018-09-10T11:40:18Z fikka joined #lisp 2018-09-10T11:42:32Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-10T11:45:07Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T11:47:19Z zfree quit (Remote host closed the connection) 2018-09-10T11:47:35Z zfree joined #lisp 2018-09-10T11:53:23Z atgreen__ quit (Ping timeout: 245 seconds) 2018-09-10T11:56:22Z fikka joined #lisp 2018-09-10T11:56:28Z igemnace quit (Read error: Connection reset by peer) 2018-09-10T11:56:53Z igemnace joined #lisp 2018-09-10T12:02:09Z scymtym quit (Ping timeout: 250 seconds) 2018-09-10T12:02:17Z orivej joined #lisp 2018-09-10T12:04:34Z elfmacs joined #lisp 2018-09-10T12:10:39Z zfree quit (Quit: zfree) 2018-09-10T12:24:02Z _whitelogger quit (Remote host closed the connection) 2018-09-10T12:26:14Z _whitelogger joined #lisp 2018-09-10T12:35:14Z pjb: Xach: Lisa had rectangular pixels, if that's what you're asking about. 2018-09-10T12:39:51Z jkordani joined #lisp 2018-09-10T12:41:53Z jkordani_ joined #lisp 2018-09-10T12:43:26Z DataLinkDroid quit (Ping timeout: 256 seconds) 2018-09-10T12:45:22Z jkordani quit (Ping timeout: 246 seconds) 2018-09-10T12:46:11Z oni-on-ion: jackdaniel: ohhh, nice link, ty 2018-09-10T12:48:32Z oni-on-ion: aeth: are you still awake or up yet? what did you mean earlier when you said that funcall happens differently on 'foo than #'foo ? i think that might be part of a problem i ran into last nacth 2018-09-10T12:50:24Z _death: Colleen: clhs funcall 2018-09-10T12:50:33Z _death: meh 2018-09-10T12:53:47Z mindCrime joined #lisp 2018-09-10T12:54:46Z Bike joined #lisp 2018-09-10T13:05:43Z housel quit (Read error: Connection reset by peer) 2018-09-10T13:09:42Z elfmacs quit (Quit: WeeChat 2.2) 2018-09-10T13:10:06Z mindCrime quit (Ping timeout: 264 seconds) 2018-09-10T13:11:56Z EvilTofu joined #lisp 2018-09-10T13:12:18Z steiner quit (Remote host closed the connection) 2018-09-10T13:13:08Z EvilTofu: Moo. I've just downloaded CCL 1.11.1 from the Apple Mac App Store. HyperSpec look ups just give me a Map_Sym.txt file not found dialog. Is there a fix for this? 2018-09-10T13:14:04Z EvilTofu quit (Quit: Leaving) 2018-09-10T13:14:30Z oni-on-ion: never heard of that before. i myself use slime in emacs with HyperSpec downloaded from lispworks.com and the help lookups (C-c C-d h) are great 2018-09-10T13:19:06Z warweasle joined #lisp 2018-09-10T13:20:25Z EvilTofu joined #lisp 2018-09-10T13:20:26Z lavaflow_ joined #lisp 2018-09-10T13:21:07Z EvilTofu: Sorry was disconnected. 2018-09-10T13:21:27Z oni-on-ion: aeth: ah it did solve my problem! i've got to learn the difference between #'foo and 'foo now. 2018-09-10T13:21:31Z oni-on-ion: (or sometime later today=) 2018-09-10T13:33:41Z pfdietz: "Because static typing is primarily about optimization, not correctness, and optimization is only important in certain places." 2018-09-10T13:33:52Z Inline joined #lisp 2018-09-10T13:34:20Z oni-on-ion: hm sauce ? 2018-09-10T13:34:27Z pfdietz: I find one of the most important uses of type declarations is documentation. 2018-09-10T13:35:04Z pfdietz: (was responding to much earlier comment) 2018-09-10T13:35:21Z Inline quit (Read error: Connection reset by peer) 2018-09-10T13:38:47Z oni-on-ion: for me, types help to design data structures, which helps to plot and plan - where most i guess use paper or their own heads 2018-09-10T13:39:07Z oni-on-ion: i can see the potential algorithms based on the data structures 2018-09-10T13:39:14Z oni-on-ion: rather than the other way around . 2018-09-10T13:40:36Z Inline joined #lisp 2018-09-10T13:41:37Z Inline quit (Read error: Connection reset by peer) 2018-09-10T13:42:07Z Inline joined #lisp 2018-09-10T13:45:18Z EvilTofu quit (Ping timeout: 252 seconds) 2018-09-10T13:46:15Z pierpal quit (Quit: Poof) 2018-09-10T13:46:30Z pierpal joined #lisp 2018-09-10T13:51:02Z _whitelogger quit (Remote host closed the connection) 2018-09-10T13:53:15Z _whitelogger joined #lisp 2018-09-10T13:53:35Z igemnace quit (Quit: WeeChat 2.2) 2018-09-10T13:59:18Z steiner joined #lisp 2018-09-10T13:59:33Z papachan joined #lisp 2018-09-10T14:01:34Z mindCrime joined #lisp 2018-09-10T14:12:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T14:12:11Z eschulte joined #lisp 2018-09-10T14:15:42Z minion joined #lisp 2018-09-10T14:16:24Z specbot joined #lisp 2018-09-10T14:16:35Z beach: minion: Welcome back! 2018-09-10T14:16:36Z minion: thanks! 2018-09-10T14:26:27Z AeroNotix: ,clhs defmacro 2018-09-10T14:26:41Z jackdaniel: spec defmacro 2018-09-10T14:26:49Z jackdaniel: clhs defmacro 2018-09-10T14:26:49Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_defmac.htm 2018-09-10T14:26:49Z AeroNotix: :/ 2018-09-10T14:26:51Z oni-on-ion: slime-highlights is really great. make changes anywhere, they are highlighted, C-c C-c to compile those 2018-09-10T14:26:54Z jackdaniel: better 2018-09-10T14:27:06Z oni-on-ion: i know beach is using something else, though =) 2018-09-10T14:27:18Z cage_ joined #lisp 2018-09-10T14:27:48Z fikka joined #lisp 2018-09-10T14:29:22Z steiner quit (Remote host closed the connection) 2018-09-10T14:29:23Z pierpal quit (Quit: Poof) 2018-09-10T14:29:40Z pierpal joined #lisp 2018-09-10T14:29:47Z papablo joined #lisp 2018-09-10T14:29:53Z steiner joined #lisp 2018-09-10T14:32:28Z fikka quit (Ping timeout: 246 seconds) 2018-09-10T14:34:41Z FreeBirdLjj joined #lisp 2018-09-10T14:34:56Z oni-on-ion: could we use setf places in let forms? ie. (let (((slot-value h 'conn) (make-connection..))) ...) 2018-09-10T14:35:10Z AeroNotix: mmmmm nice c2mop:funcallable-standard-object 2018-09-10T14:35:56Z warweasle: multiple-value-setq? 2018-09-10T14:36:11Z oni-on-ion: hmm =) 2018-09-10T14:36:24Z warweasle: (Because I've never used it for anything ever) 2018-09-10T14:37:25Z pierpal quit (Quit: Poof) 2018-09-10T14:37:45Z pierpal joined #lisp 2018-09-10T14:38:15Z fikka joined #lisp 2018-09-10T14:38:47Z trittweiler: oni-on-ion, search for LETF. It used to be provided on the Lisp machine. And implementation based on setf + unwind-protect is easy, but it doesn't really work well in multi-threading environment (contrarily to LET, both for lexical bindings (trivial) and dynamic bindings) 2018-09-10T14:38:55Z oni-on-ion: "; Variable name is not a symbol: (SLOT-VALUE H :CONNECTION)." what ! 2018-09-10T14:39:25Z oni-on-ion: trittweiler: ohh,i thought that letf was for functions on just the right hand side only =) 2018-09-10T14:40:06Z trittweiler: there's also an implementation of lets in Emacs' cl implementation. Probably can just take that. Or search comp.lang.lisp 2018-09-10T14:40:20Z trittweiler: pardon the typos 2018-09-10T14:41:31Z oni-on-ion: lets or let* or letf? letf been deprecated to cl-letf or cl-flet 2018-09-10T14:41:37Z trittweiler: LETF 2018-09-10T14:41:42Z oni-on-ion: ok 2018-09-10T14:41:44Z oni-on-ion: i'll survive 2018-09-10T14:42:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T14:45:56Z atgreen joined #lisp 2018-09-10T14:46:00Z igemnace joined #lisp 2018-09-10T14:47:20Z housel joined #lisp 2018-09-10T14:49:28Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-10T14:50:57Z DGASAU joined #lisp 2018-09-10T14:51:54Z LiamH joined #lisp 2018-09-10T14:52:55Z rippa joined #lisp 2018-09-10T14:55:24Z oni-on-ion: is there a way to remove/destroy defmethod[s] ? 2018-09-10T14:56:22Z Xach: oni-on-ion: yes. the easiest is with the slime inspector. 2018-09-10T14:56:27Z schweers: I have a hopefully quick question. I don’t indend on doing this, partly because I don’t know how. I just want to know a) if it could be done, and b) whether that would be considered sane. Suppose I want to place very simple datastructures (for the sake of argument, lets say something like a defstruct) in a specific place in memory, like a memory mapped file or shared memory, or something similar. Can the MOP be us 2018-09-10T14:56:27Z schweers: creation and usage of such objects? 2018-09-10T14:56:33Z Xach: oni-on-ion: but the slime inspector uses fmakunbound with find-method underneath 2018-09-10T14:56:58Z ebrasca joined #lisp 2018-09-10T14:56:58Z oni-on-ion: Xach: oh! thats sounds alright. i will check out this slime inspector 2018-09-10T14:57:10Z oni-on-ion: also my subconscious just told me there might be something called Clouseau 2018-09-10T14:57:27Z Xach: oni-on-ion: if it's (defmethod frob ...) you would inspect the #'frob generic function, and slime shows a list of methods with options to remove 2018-09-10T14:57:37Z Xach: sorry, it's remove-method 2018-09-10T14:57:43Z Xach: not fmakunbound 2018-09-10T14:57:49Z oni-on-ion: https://github.com/robert-strandh/CLIMatis/tree/master/Applications/Clouseau <-- ah there is ! 2018-09-10T14:58:04Z oni-on-ion: Xach: ahh! cool 2018-09-10T14:58:16Z fikka joined #lisp 2018-09-10T14:58:23Z Xach: oni-on-ion: yes, very cool and handy 2018-09-10T14:58:34Z Xach: slime: a pit of delights 2018-09-10T14:59:57Z oni-on-ion: Xach: cool seems to work nicely! (using (inspect .)) 2018-09-10T15:00:10Z oni-on-ion: yes =) =) 2018-09-10T15:01:51Z ebrasca: beach: I am thinking if to port second climacs to mezzano. 2018-09-10T15:02:39Z smokeink quit (Remote host closed the connection) 2018-09-10T15:02:59Z smokeink joined #lisp 2018-09-10T15:03:50Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T15:04:18Z beach: ebrasca: You would have to wait. It is not yet operational. 2018-09-10T15:05:16Z oni-on-ion: hey so. how come (slot-value h :conn) does not work, but (slot-value h 'conn) does -- when defclass slot was set to :initarg :conn ?? 2018-09-10T15:05:37Z beach: oni-on-ion: The :initarg has nothing to do with the slot name. 2018-09-10T15:05:39Z oni-on-ion: may be a good time to get second climacs ready for ports =) 2018-09-10T15:05:40Z Xach: oni-on-ion: the :initarg is the symbol used in make-instance, not the name of the slot. 2018-09-10T15:05:43Z pjb: clhs remove-method 2018-09-10T15:05:43Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_rm_met.htm 2018-09-10T15:05:46Z pjb: oni-on-ion: ^ 2018-09-10T15:05:52Z oni-on-ion: beach: Xach: ohh. my bad. thanks =) 2018-09-10T15:06:06Z oni-on-ion: pjb: ty! goal: never restart image 2018-09-10T15:06:27Z Xach: Does anyone happen to have libcuda.so handy for linux/amd64? 2018-09-10T15:06:45Z atgreen quit (Ping timeout: 252 seconds) 2018-09-10T15:07:31Z pjb: oni-on-ion: (com.informatimago.common-lisp.interactive.interactive:uptime) 2018-09-10T15:07:36Z jasom: Xach: yes, why? 2018-09-10T15:07:49Z smokeink quit (Ping timeout: 246 seconds) 2018-09-10T15:08:26Z fikka joined #lisp 2018-09-10T15:09:21Z dented42 joined #lisp 2018-09-10T15:09:25Z Xach: jasom: I am trying to build a cuda library and i don't care if it really works, i would just like a (possibly non-working) .so to see if I can make progress. 2018-09-10T15:12:43Z trittweiler quit (Ping timeout: 246 seconds) 2018-09-10T15:13:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T15:14:59Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-10T15:16:23Z oni-on-ion: Xach: i also do 2018-09-10T15:17:14Z oni-on-ion: pjb: Ql has no idea about that =P 2018-09-10T15:17:28Z oni-on-ion: pjb: don't think i have your repo/dist if you've one 2018-09-10T15:18:53Z fikka joined #lisp 2018-09-10T15:19:25Z fikka quit (Read error: Connection reset by peer) 2018-09-10T15:20:24Z atgreen joined #lisp 2018-09-10T15:23:10Z pjb: mkdir -p ~/quicklisp/local-projects/com ; cd ~/quicklisp/local-projects/com ; git clone https://github.com/informatimago/lisp.git informatimago 2018-09-10T15:23:45Z pjb: then (ql:quickload "com.informatimago.common-lisp") 2018-09-10T15:23:59Z oni-on-ion: ok! 2018-09-10T15:24:02Z pjb: But it counts only from the time loaded, so you have to insert this (ql:quickload "com.informatimago.common-lisp") in your rc file. 2018-09-10T15:24:26Z oni-on-ion: oh i just quickload stuff as i need em 2018-09-10T15:25:05Z pjb: Well, interactive stuff is always needed, at the REPL ;-) 2018-09-10T15:25:13Z oni-on-ion: repository not found (git) 2018-09-10T15:25:24Z oni-on-ion: true, im about to have a look inside when i get it cloned =) 2018-09-10T15:25:41Z oni-on-ion: oh nvm dyslexic 2018-09-10T15:25:52Z oni-on-ion: informatiMAgo 2018-09-10T15:26:02Z pjb: copy and paste. 2018-09-10T15:26:05Z oni-on-ion: cant 2018-09-10T15:26:12Z pjb: ok. 2018-09-10T15:26:27Z oni-on-ion: no mouse and also xterm keys are wonky 2018-09-10T15:27:19Z oni-on-ion: oh my loads of packages 2018-09-10T15:27:38Z oni-on-ion: i see much usefulness, i will be looking there often for things 2018-09-10T15:28:08Z oni-on-ion: "uptime: 0 minutes, 28 seconds. " 2018-09-10T15:29:10Z fikka joined #lisp 2018-09-10T15:29:20Z m00natic quit (Read error: Connection reset by peer) 2018-09-10T15:29:37Z m00natic joined #lisp 2018-09-10T15:29:42Z anewuser joined #lisp 2018-09-10T15:34:08Z EvilTofu joined #lisp 2018-09-10T15:34:14Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T15:36:18Z dale__ joined #lisp 2018-09-10T15:36:37Z dale__ is now known as dale 2018-09-10T15:39:53Z bradcomp joined #lisp 2018-09-10T15:47:24Z scymtym joined #lisp 2018-09-10T15:47:24Z EvilTofu quit (Ping timeout: 252 seconds) 2018-09-10T15:49:02Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-10T15:49:25Z fikka joined #lisp 2018-09-10T15:49:40Z papablo quit (Remote host closed the connection) 2018-09-10T15:49:56Z m00natic quit (Read error: Connection reset by peer) 2018-09-10T15:50:12Z m00natic joined #lisp 2018-09-10T15:50:32Z orivej quit (Ping timeout: 244 seconds) 2018-09-10T15:52:34Z shrdlu68 quit (Ping timeout: 240 seconds) 2018-09-10T15:53:48Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-10T15:54:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-10T15:56:49Z pierpal quit (Read error: Connection reset by peer) 2018-09-10T15:59:05Z EvilTofu joined #lisp 2018-09-10T15:59:34Z makomo: if i want to communicate that a slot should be initialized to the empty slot, should i use :initform () or :initform '() 2018-09-10T15:59:51Z shka_: nil 2018-09-10T15:59:53Z fikka joined #lisp 2018-09-10T16:00:17Z makomo: shka_: i thought the consensus was not to use NIL in this case 2018-09-10T16:00:35Z shka_: but it is sometimes better to simply not supply initform 2018-09-10T16:00:46Z beach: To the empty list you mean? 2018-09-10T16:00:47Z shka_: and check is slot-boundp 2018-09-10T16:00:50Z makomo: beach: yes 2018-09-10T16:00:50Z beach: '() definitely. 2018-09-10T16:00:55Z shka_: beach: but why? 2018-09-10T16:01:00Z makomo: shka_: in this case i want it to have a default value, instead of being unbound 2018-09-10T16:01:09Z shka_: makomo: ok 2018-09-10T16:01:13Z beach: shka_: () is used only in code for argument lists and such. 2018-09-10T16:01:24Z shka_: and why not simply nil? 2018-09-10T16:01:27Z beach: shka_: NIL is either Boolean false or a default value. 2018-09-10T16:01:27Z shka_: that's what i do 2018-09-10T16:01:34Z beach: '() is the empty list. 2018-09-10T16:01:42Z shka_: uhm 2018-09-10T16:01:45Z beach: shka_: I am sorry to hear that. 2018-09-10T16:01:56Z shka_: well i use nil as default value 2018-09-10T16:02:02Z makomo: shka_: operationally they're both the same, but this communicates the intent better 2018-09-10T16:02:04Z shka_: so i guess that's fine? 2018-09-10T16:02:08Z beach: shka_: But that's different from the empty list. 2018-09-10T16:02:27Z shka_: so let's say that my type is (or null vector) 2018-09-10T16:02:31Z beach: You shouldn't use NIL and then (push ...) for instance. 2018-09-10T16:02:31Z shka_: then i should use nil 2018-09-10T16:02:41Z shka_: but if my type is list i should use '() 2018-09-10T16:02:45Z shka_: is that correct? 2018-09-10T16:02:45Z beach: Yes. 2018-09-10T16:02:48Z makomo: beach: i was about to ask that same thing. what about with '()? 2018-09-10T16:02:58Z makomo: (the PUSH thing you brought up) 2018-09-10T16:03:12Z shka_: beach: ok, i see your logic 2018-09-10T16:03:12Z beach: '() and PUSH go together well. :) 2018-09-10T16:03:18Z shka_: it makes sense 2018-09-10T16:03:25Z makomo: beach: oh hm right, since PUSH modifies the slot itself 2018-09-10T16:03:29Z makomo: not sure what i thought there for a second 2018-09-10T16:03:43Z beach: Yes. 2018-09-10T16:03:54Z pjb: and 'NIL is a symbol named "NIL". 2018-09-10T16:03:57Z beach: Yeah, you can't modify NIL. :) 2018-09-10T16:04:03Z beach: Oh, forgot that, yes. 2018-09-10T16:04:14Z beach: 'NIL is the symbol. 2018-09-10T16:04:31Z fikka quit (Ping timeout: 246 seconds) 2018-09-10T16:04:44Z shka_: I think that in the case of slots, it is beneficial to supply :type option in order to be more explicit about your intents 2018-09-10T16:04:45Z pierpal joined #lisp 2018-09-10T16:05:05Z pjb: ((lambda () (when (or nil (string= 'NIL "NIL")) '()))) 2018-09-10T16:05:12Z beach: shka_: Sure, feel free. 2018-09-10T16:05:28Z makomo: hm, but you should be able to use PUSH when your initform is NIL as well, right? 2018-09-10T16:05:34Z makomo: it's bad style, but is it illegal? 2018-09-10T16:05:37Z pjb: makomo: of course. 2018-09-10T16:05:40Z makomo: right 2018-09-10T16:05:53Z makomo: again, PUSH would modify the place that is the slot 2018-09-10T16:06:06Z pjb: (mapcar (lambda (other-nil) (eq nil other-nil)) (list nil () 'nil '())) #| --> (t t t t) |# 2018-09-10T16:06:21Z beach: makomo: Yes, semantically they are all the same. 2018-09-10T16:06:36Z beach: makomo: They differ in the message they send to the person reading your code. 2018-09-10T16:06:40Z makomo: mhm. misunderstood what you said there (thought you weren't talking from a style standpoint) 2018-09-10T16:07:12Z beach: While we are on the subject.... 2018-09-10T16:07:36Z beach: (let (a b c) means a b c are "uninitialized" so the person reading your code expects them to be assigned to before being used. 2018-09-10T16:07:54Z pjb: even if they're actually initialized to nil by default. 2018-09-10T16:07:59Z beach: Right. 2018-09-10T16:08:15Z beach: Otherwise, (let ((a nil) (b '()) (c 'nil)) are as above. 2018-09-10T16:08:19Z makomo: mhm, makes sense. what about (let ((a) (b) (c)) ...) :-D 2018-09-10T16:08:33Z shka_: that won't fly 2018-09-10T16:08:44Z shka_: or compile 2018-09-10T16:08:45Z beach: makomo: Those are basically useless. 2018-09-10T16:08:49Z Bike: i think that also defaults them to nil? 2018-09-10T16:08:56Z makomo: shka_: it does work 2018-09-10T16:08:57Z makomo: Bike: yeah 2018-09-10T16:09:03Z shka_: let me check 2018-09-10T16:09:09Z pjb: There's notably the case of (let (a) (declare (integer a)) (setf a 42)) ; technically before the setf, reading A would be a bug, since we would read NIL as an integer! 2018-09-10T16:09:11Z beach: shka_: what won't fly? 2018-09-10T16:09:12Z gpiero quit (Remote host closed the connection) 2018-09-10T16:09:29Z shka_: makomo: you are right 2018-09-10T16:09:38Z shka_: imho it shouldn't :P 2018-09-10T16:09:51Z makomo: i guess it's a bit weird but oh well 2018-09-10T16:09:58Z fikka joined #lisp 2018-09-10T16:09:59Z shka_: (let (a b c) 2018-09-10T16:10:05Z pjb: But it does, because lexical variables cannot be unbound. and local dynamic bindings must shadow the outer dynamic binding. 2018-09-10T16:10:40Z shka_: eh, ok 2018-09-10T16:10:44Z shka_: good bye all 2018-09-10T16:10:48Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-10T16:10:49Z makomo: Shinmera: bye 2018-09-10T16:10:55Z makomo: woops lol, he left too quickly 2018-09-10T16:11:23Z makomo: wrong ping 2018-09-10T16:12:09Z EvilTofu quit (Ping timeout: 252 seconds) 2018-09-10T16:14:12Z pfdietz: pjb: that declaration would be bad, even if the NIL value is never read. 2018-09-10T16:14:15Z nika joined #lisp 2018-09-10T16:14:45Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T16:15:15Z makomo: beach: we've discussed this before and you also mentioned it yesterday again -- using accessors internally instead of directly using slots. then, if one wants the client to actually use some of those accessors, one should export the respective symbols, right? 2018-09-10T16:15:34Z beach: Right. 2018-09-10T16:15:39Z makomo: beach: but what about when you want to export e.g. only the reader, and not the writer? this isn't really possible, is it? 2018-09-10T16:15:49Z Bike: yeah, the initial value has to be of the type too. 2018-09-10T16:15:55Z Bike: makomo: you can name the reader and writer different things. 2018-09-10T16:16:03Z beach: makomo: You would have to give them different names. 2018-09-10T16:16:21Z Bike: i've a few times had ":accessor %foo :reader foo", defined a special (setf foo), and then exported foo and not %foo 2018-09-10T16:16:26Z beach: makomo: (%bla :initarg ... :reader foo :writer (setf bar)) 2018-09-10T16:16:28Z makomo: oh, good point, didn't think of that. what would be the canonical names then? %something? 2018-09-10T16:17:26Z Xach: :writer (setf %foo) 2018-09-10T16:17:32Z Xach: wait 2018-09-10T16:17:37Z beach: Or what Bike suggests. :accessor foo :reader bar 2018-09-10T16:17:49Z beach: Xach: That would kind of defeat the purpose. 2018-09-10T16:18:01Z spm_ joined #lisp 2018-09-10T16:18:46Z Xach: beach: sorry. i misread as :writer %foo, which can be confusing, because plain functions don't often use setf argument style. 2018-09-10T16:19:04Z beach: Indeed. 2018-09-10T16:19:13Z Xach: when i first tried separate :reader and :writer, i thought :writer foo would create (setf foo) 2018-09-10T16:19:20Z Xach: this was so many moons ago! 2018-09-10T16:19:21Z Xof: if you do that because you don't want users to mess with slots, you might also want to make sure that your initarg(s) isn't/aren't exported 2018-09-10T16:19:41Z Xof: otherwise users will defeat your protections by using (reinitialize-instance object :%bla 3) 2018-09-10T16:19:47Z beach: Xach: I am betting you are not alone. 2018-09-10T16:19:57Z pjb: pfdietz: stylistically, it would be bad. But notice about arrays, that if no :initial-element or :initial-contents is given, the memory is not initialized so you could get mis-interpretation of the bits, and the standard only says: "don't do that". 2018-09-10T16:19:58Z makomo: Xach: i thought that was the case as well, until now when beach mentioned it! :-) 2018-09-10T16:20:07Z pjb: pfdietz: I'd say it's the same here. 2018-09-10T16:20:12Z beach: Xof: Good point. 2018-09-10T16:20:14Z Xof: except now I can't remember whether the initarg overrides an existing value in a slot 2018-09-10T16:20:39Z beach: Xof: But then, they can always use slot-value. 2018-09-10T16:21:10Z beach: Xof: It does. 2018-09-10T16:21:20Z beach: I have used that technique myself. :) 2018-09-10T16:21:35Z pfdietz: The standard pretty explicitly says the declaration has to be in effect right after the binding occurs, even without an explicit reference by the user. Look up bound declaration and declaration scope. Undefined behavior if not the right type. 2018-09-10T16:21:37Z beach: I don't define a writer, and I use reinitialize-instance. 2018-09-10T16:23:20Z Xach: heh 2018-09-10T16:23:38Z beach: Xof: I had an interesting phone meeting with Didier Verna today about my solution (in SICL) to method combinations. He seems to think it is sound, so there might be a joint ELS paper submission at some point. 2018-09-10T16:24:41Z Bike: pfdietz, pjb: clhs type says initial values of the variables have to be of the type. seems straightforward. 2018-09-10T16:24:57Z spm_: I'm having a little trouble understanding how quoted lists get applied as default &key arguments. I thought the list would be passed fresh to each call of a function, but the list seems to persist across calls. Clearly wrong-thinking on my part, but I'm not entirely clear why. 2018-09-10T16:24:58Z spm_: https://pastebin.com/WF2tgTGu 2018-09-10T16:25:09Z pjb: Bike: yes, but in (let (a) …) there's no explicit initial value. 2018-09-10T16:26:03Z rtypo joined #lisp 2018-09-10T16:26:21Z Xach: spm_: quoted lists shouldn't be modified. it should be treated as a constant. 2018-09-10T16:26:30Z Xach: spm_: if you'd like fresh, use (list :value 0) 2018-09-10T16:26:32Z pfdietz: The user has not given an explicit value, but the standard says what the value is. It's NIL. 2018-09-10T16:27:28Z pfdietz: "3. At the moment the scope of the declaration is entered, the consequences are undefined if the value of the declared variable is not of the declared type. " 2018-09-10T16:27:34Z spm_: Xach: Thanks. Yes, I figured out how to not have the problem, but am not clear regarding in-what scope the quoted list becomes defined, and what happens on subsequent calls to the function. 2018-09-10T16:27:46Z pjb: spm_: the init-form is evaluated at call-time, only if no matching keyword argument pair is given. 2018-09-10T16:28:05Z Bike: spm_: nothing to do with &key. you are editing quoted data, which is always undefined behavior. 2018-09-10T16:28:10Z Xach: spm_: http://l1sp.org/cl/3.7.1 has some info 2018-09-10T16:28:36Z pfdietz: "The scope of a bound declaration is the same as the lexical scope of the binding to which it applies; [...]" 2018-09-10T16:28:52Z Xach: spm_: the quoted list is created during compilation 2018-09-10T16:29:07Z pjb: spm_: so the question is whether you want the same list or a new list each time: https://pastebin.com/sz43meDi 2018-09-10T16:29:47Z Xach: sbcl can be quite helpful with warnings about modifying quoted/literal data, but it doesn't catch everything 2018-09-10T16:30:04Z papachan quit (Ping timeout: 252 seconds) 2018-09-10T16:30:26Z fikka joined #lisp 2018-09-10T16:30:48Z phoe: minion and specbot are back 2018-09-10T16:30:49Z schweers quit (Ping timeout: 250 seconds) 2018-09-10T16:32:49Z spm_: pjb: Yes. new value each time was what I was after, and not what I was seeing. My thinking was that a new quoted list would be created each time the function was entered if it wasn't provided. 2018-09-10T16:33:08Z spm_: Xach: interesting. I'm running SBCL and this one didn't seem to alert. 2018-09-10T16:33:37Z pjb: spm_: in general, lisp tend to avoid unexplicit behavior. No copying behind your back. 2018-09-10T16:35:06Z Xach: spm_: possibly because someone could pass a keyword and the warning wouldn't apply...not sure. 2018-09-10T16:35:40Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T16:35:57Z pjb: (defun f (&key (x (error "You need to pass a :x argument!")) y) (list x y)) (f :y 42) #| ERROR: You need to pass a :x argument! |# (f :x 42) #| --> (42 nil) |# 2018-09-10T16:36:20Z Xach: or maybe it's just too complicated to check 2018-09-10T16:36:31Z spm_: Thanks for the assist. I need to do more reading on compile/init of functions as the "why" still isn't fully clear to me, but if the behavior of modified quoted literals is undefined, then I certainly ought not do that. :-) 2018-09-10T16:37:08Z pjb: spm_: see section 3.4 Lambda Lists 2018-09-10T16:37:33Z AeroNotix: log4cl + log4slime wow 2018-09-10T16:38:35Z X-Scale joined #lisp 2018-09-10T16:44:22Z FreeBirdLjj joined #lisp 2018-09-10T16:44:27Z Essadon joined #lisp 2018-09-10T16:50:46Z fikka joined #lisp 2018-09-10T16:51:30Z atgreen quit (Ping timeout: 264 seconds) 2018-09-10T16:53:05Z Denommus joined #lisp 2018-09-10T16:55:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T16:57:21Z jkordani joined #lisp 2018-09-10T17:01:17Z fikka joined #lisp 2018-09-10T17:01:38Z jkordani_ quit (Ping timeout: 272 seconds) 2018-09-10T17:02:57Z danielxvu quit (Remote host closed the connection) 2018-09-10T17:03:30Z danielxvu joined #lisp 2018-09-10T17:06:04Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T17:06:11Z spm_: pjb & Xach: Thanks both. Understand both what and why. Much appreciated. 2018-09-10T17:11:35Z pierpal quit (Quit: Poof) 2018-09-10T17:11:38Z fikka joined #lisp 2018-09-10T17:11:46Z lnostdal quit (Read error: Connection reset by peer) 2018-09-10T17:11:50Z pierpal joined #lisp 2018-09-10T17:13:50Z ym quit (Read error: Connection reset by peer) 2018-09-10T17:15:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T17:18:46Z fikka joined #lisp 2018-09-10T17:18:54Z varjag joined #lisp 2018-09-10T17:23:57Z m00natic quit (Read error: Connection reset by peer) 2018-09-10T17:34:42Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T17:38:49Z keppy joined #lisp 2018-09-10T17:39:24Z pierpal quit (Quit: Poof) 2018-09-10T17:39:43Z pierpal joined #lisp 2018-09-10T17:41:00Z fikka joined #lisp 2018-09-10T17:47:33Z orivej joined #lisp 2018-09-10T17:54:51Z warweasle quit (Quit: later) 2018-09-10T17:55:18Z keppy quit (Remote host closed the connection) 2018-09-10T17:57:10Z ym joined #lisp 2018-09-10T17:59:48Z suskeyhose joined #lisp 2018-09-10T18:04:05Z shka_ joined #lisp 2018-09-10T18:04:21Z shka_: good evening 2018-09-10T18:04:50Z beach: Hello shka_. 2018-09-10T18:05:20Z dyelar quit (Remote host closed the connection) 2018-09-10T18:05:44Z oni-on-ion: AeroNotix: 2018-09-10T18:05:47Z oni-on-ion: ? 2018-09-10T18:07:27Z varjag quit (Ping timeout: 250 seconds) 2018-09-10T18:07:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-10T18:08:35Z dyelar joined #lisp 2018-09-10T18:08:48Z equwal quit (Ping timeout: 252 seconds) 2018-09-10T18:09:29Z atgreen joined #lisp 2018-09-10T18:13:38Z fikka joined #lisp 2018-09-10T18:15:55Z kooga quit (Quit: :) 2018-09-10T18:16:43Z AeroNotix: oni-on-ion: what's up 2018-09-10T18:17:06Z SaganMan quit (Read error: Connection reset by peer) 2018-09-10T18:17:57Z oni-on-ion: what u say ur last msg 2018-09-10T18:18:15Z AeroNotix: oni-on-ion: "log4cl + log4slime wow"? 2018-09-10T18:18:30Z fikka quit (Ping timeout: 264 seconds) 2018-09-10T18:18:30Z oni-on-ion: yes. 2018-09-10T18:18:31Z AeroNotix: it's a logging package that integrates really nicely with SLIME. 2018-09-10T18:18:34Z AeroNotix: take a look 2018-09-10T18:18:37Z oni-on-ion: kk 2018-09-10T18:18:52Z sauvin quit (Read error: Connection reset by peer) 2018-09-10T18:19:32Z AeroNotix: each logger within a system/package/function highlights which logger it came from within the slime repl, which then exposes that logger as something you can interact with (forget what slime calls it, the C-c C-v TAB things) that you can then configure right within your REPL. 2018-09-10T18:20:01Z AeroNotix: slime presentations are what they're called. 2018-09-10T18:23:22Z oni-on-ion: ouu i see clos stuff 2018-09-10T18:23:40Z fikka joined #lisp 2018-09-10T18:23:49Z oni-on-ion: ah yes 2018-09-10T18:26:25Z oni-on-ion: will need this ty for revealing it 2018-09-10T18:27:32Z AeroNotix: np 2018-09-10T18:27:41Z epmor joined #lisp 2018-09-10T18:30:28Z fikka quit (Ping timeout: 245 seconds) 2018-09-10T18:32:47Z steiner quit (Remote host closed the connection) 2018-09-10T18:36:50Z epmor_ joined #lisp 2018-09-10T18:37:27Z trittweiler joined #lisp 2018-09-10T18:38:47Z smokeink joined #lisp 2018-09-10T18:39:28Z varjag joined #lisp 2018-09-10T18:39:46Z epmor: Any good GUI cross platform frameworks for CL? I'm on windows 2018-09-10T18:40:00Z beach: Sorry to hear that. 2018-09-10T18:40:15Z epmor_: About Windows? :P 2018-09-10T18:40:19Z makomo: lol :-) 2018-09-10T18:40:20Z beach: Yes. 2018-09-10T18:40:22Z epmor_: Hehe 2018-09-10T18:41:23Z epmor: I tried mmclim but that doesn't work, just wondering if theres a small alternative 2018-09-10T18:41:46Z beach: "doesn't work" is a bit vague. 2018-09-10T18:41:53Z beach: Perhaps it can be fixed. 2018-09-10T18:42:10Z oni-on-ion: qt or wx? 2018-09-10T18:42:25Z jackdaniel: having mcclim work on windows requires Xserver run on windows and this is a tedious thing to make it work 2018-09-10T18:42:27Z beach: You might want to ask in #clim about that. 2018-09-10T18:42:33Z epmor: Already tried, it was after libssl32.dll and some other DLLs tht were difficult to get working on windows 2018-09-10T18:42:54Z dim: jackdaniel: did you try with the Xserver embedded in https://mobaxterm.mobatek.net already? 2018-09-10T18:44:17Z jackdaniel: dim: I've only verified, that it works on windows 2018-09-10T18:44:35Z jackdaniel: I think I've used cygwin installer to get x11 working 2018-09-10T18:44:36Z oni-on-ion: he is more so askin about xplat gui than how to get clim working on windows, imo 2018-09-10T18:45:09Z epmor quit (Quit: leaving) 2018-09-10T18:45:21Z jackdaniel: when I'm doing something on windows (usually testing in a VM) I grab cygwin, install emacs and operate from eshell 2018-09-10T18:45:37Z jackdaniel: I suppose it is lame by windows standards, but I easily get confused how to get thigns working there 2018-09-10T18:46:02Z jackdaniel: dim: this projects looks interesting, thanks for the link 2018-09-10T18:46:19Z jackdaniel: s/this/these/ 2018-09-10T18:46:46Z fikka joined #lisp 2018-09-10T18:48:32Z lnostdal joined #lisp 2018-09-10T18:48:56Z dim: jackdaniel: it embeds a full Xwindow server so I think it might be useful for your tests, and also it comes with unix developer tools and an apt-get command, so, it might help… 2018-09-10T18:49:07Z makomo: i need advice regarding a DSL. i've written it up here as a comment, with an example of the DSL below: http://plaster.tymoon.eu/view/917#917 2018-09-10T18:49:25Z makomo: i didn't want to paste a wall of text into #lisp 2018-09-10T18:49:27Z dim: I'm not sure how much you would improve towards a typical windows user, but if you manage to reduce your environement dependencies to a single app that'd not be too bad 2018-09-10T18:50:09Z makomo: any suggestions welcome 2018-09-10T18:50:37Z shka_: makomo: there is one trick that really helps when writing extendable macros 2018-09-10T18:51:08Z shka_: namely fact that defmethod something (symbol (eql 'something)) 2018-09-10T18:51:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T18:51:49Z oni-on-ion: makomo: why (wait :for) , (wait-for ) ? 2018-09-10T18:52:02Z makomo: oni-on-ion: it can take additional keywords, such as :on and :until 2018-09-10T18:52:04Z trittweiler quit (Ping timeout: 240 seconds) 2018-09-10T18:52:08Z makomo: just like VHDL's wait statement 2018-09-10T18:52:19Z makomo: the point is to make it resemble VHDL as close as possible 2018-09-10T18:52:20Z oni-on-ion: ah ok 2018-09-10T18:52:51Z makomo: shka_: that's a good point, but it's not directly related to the issue i have 2018-09-10T18:53:42Z shka_: makomo: anyway, there are multiple ways to handle this 2018-09-10T18:53:44Z makomo: even if i did use methods for that (instead for example, FUNCALL-ing and creating the functions myself), i still need to use the process' body to create this function 2018-09-10T18:54:13Z shka_: one option for instance is to minimize the usage of macros 2018-09-10T18:54:27Z makomo: and the process' body isn't valid Lisp code right away. it requires some analysis to inject proper LETs and such 2018-09-10T18:54:29Z shka_: turn <- into normal function 2018-09-10T18:54:46Z shka_: turn wait into normal function 2018-09-10T18:54:52Z makomo: shka_: right now it's a normal function. <- being a macro is just one proposed solution 2018-09-10T18:55:03Z makomo: wait is also a normal function 2018-09-10T18:55:11Z shka_: makomo: well, i like it this way :-) 2018-09-10T18:55:27Z gravicappa joined #lisp 2018-09-10T18:55:48Z makomo: well, i do too :-), but i need a way to walk the :process bodies and find all of the signals (<- **HERE** ) 2018-09-10T18:56:04Z makomo: the syntax is (<- ) 2018-09-10T18:56:11Z makomo: i need to gather all of these s 2018-09-10T18:56:12Z shka_: ok 2018-09-10T18:56:19Z makomo: which are symbols at the point of defining the component 2018-09-10T18:56:31Z shka_: what about :signals ? 2018-09-10T18:56:35Z shka_: you have this already 2018-09-10T18:56:39Z makomo: but since :process is arbitrary Lisp code, i want to properly walk it 2018-09-10T18:56:59Z makomo: :signals are internal signals of the component. the thing i'm looking for is finding "drivers" 2018-09-10T18:57:08Z makomo: a single process will drive zero or more of these internal signals 2018-09-10T18:57:19Z makomo: if a process ever assigns to an internal signal, it counts as a driver for that signal 2018-09-10T18:57:43Z makomo: and that's something i have to discover before starting the simulation 2018-09-10T18:57:43Z shka_: ok, so <- is special, right? 2018-09-10T18:58:07Z shka_: and by that i mean that it is core element of the system and therefore magical 2018-09-10T18:58:25Z makomo: yeah. the fact that these are implemented as Lisp functions internally doesn't mean anything 2018-09-10T18:58:34Z makomo: all of these are just this DSL's primitives 2018-09-10T18:58:44Z shka_: including wait? 2018-09-10T18:58:58Z shka_: i mean, can i have anything there that is not a primitive? 2018-09-10T18:59:20Z makomo: well actually, i'm not so sure i can go about it that opaquely. the :process' body is arbitrary Lisp code 2018-09-10T18:59:26Z makomo: yeah, you can use arbitrary Lisp code 2018-09-10T18:59:36Z makomo: so, (when (rise clock) (<- a 1)) 2018-09-10T18:59:38Z makomo: for example 2018-09-10T18:59:59Z shka_: ok 2018-09-10T19:00:10Z vlatkoB quit (Remote host closed the connection) 2018-09-10T19:00:11Z makomo: because this process attempts to assign to A (even if it never does so within an actual simulation), it counts as a driver for A 2018-09-10T19:00:14Z lavaflow_ is now known as lavaflow 2018-09-10T19:00:36Z makomo: the problem is finding all of these "calls" to <- 2018-09-10T19:00:41Z shka_: yes 2018-09-10T19:02:18Z makomo: i'm not sure how to do that. either a code walker or making <- a macro and doing it at macroexpansion time (and also arranging for <- to be macroexpanded in the first place) 2018-09-10T19:02:20Z shka_: makomo: side effects alowed? 2018-09-10T19:02:27Z shka_: *allowed 2018-09-10T19:02:41Z shka_: code walkers… don't even bother 2018-09-10T19:02:55Z shka_: they are to hard to get things right 2018-09-10T19:02:57Z makomo: shka_: they are, since there isn't really a way for me to restrict that. the DSL assumes that a :process' body will be "well behaved" 2018-09-10T19:03:27Z shka_: what does it mean, though 2018-09-10T19:03:52Z makomo: since the bodies are arbitrary Lisp code, you can do whatever you want 2018-09-10T19:04:00Z shka_: ok 2018-09-10T19:04:05Z makomo: you can crash the simulation by signaling an error for example 2018-09-10T19:04:13Z shka_: so no evaluating 2018-09-10T19:04:17Z makomo: but this is something i don't care about, because the alternative is writing my own language from scratch 2018-09-10T19:04:41Z shka_: eh, ok 2018-09-10T19:04:42Z eschatologist quit (Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in) 2018-09-10T19:04:47Z makomo: no, it is evaluated and who knows what happens. the condition bubbles up the simulator and aborts it 2018-09-10T19:04:58Z shka_: let me check my idea 2018-09-10T19:05:05Z shka_: i may be on something 2018-09-10T19:05:15Z makomo: i could also modify the simulator's internals within a process for example, which is also insane 2018-09-10T19:05:20Z _death: using a code walker can make sense.. but even a dumb tree walker approximation may work for a POC 2018-09-10T19:05:27Z makomo: i'm relying on the user of this DSL to not be an "idiot" 2018-09-10T19:05:33Z eschatologist joined #lisp 2018-09-10T19:05:46Z makomo: _death: eventually i want to introduce helper macros and such for patterns that arise in VHDL itself 2018-09-10T19:05:58Z makomo: if these macros use <- under the hood, i need to know about it 2018-09-10T19:06:59Z fikka joined #lisp 2018-09-10T19:07:40Z makomo: so it's as complex as Common Lisp itself. that's why i need a code walker to do it properly 2018-09-10T19:08:25Z _death: right.. I learned about agnostic-lizard during ELS, and the code looked nice, may want to check it out 2018-09-10T19:08:55Z makomo: _death: i've heard about it as well (and skimmed the video), but didn't use it yet 2018-09-10T19:09:17Z makomo: i want to see whether what others think about this design (i.e. does it make sense) 2018-09-10T19:09:24Z makomo: and also, is the macroexpansion solution worth it 2018-09-10T19:09:38Z shka_: eh 2018-09-10T19:09:39Z makomo: s/whether// 2018-09-10T19:09:42Z shka_: i had idea 2018-09-10T19:09:49Z cyraxjoe quit (Remote host closed the connection) 2018-09-10T19:09:58Z shka_: and kinda could work but it is ugly as hell 2018-09-10T19:10:01Z zigpaw quit (Remote host closed the connection) 2018-09-10T19:10:35Z zigpaw joined #lisp 2018-09-10T19:10:43Z makomo: shka_: yeah? 2018-09-10T19:11:04Z shka_: basicly build lambda form with whole body + macrolet for <- that basicly signals symbol passed as first argument, then call compile on it 2018-09-10T19:11:36Z makomo: yeah, that's almost the same as the macroexpansion solution, except you avoid the manual call to COMPILE 2018-09-10T19:12:04Z lavaflow quit (Read error: No route to host) 2018-09-10T19:12:05Z martinium joined #lisp 2018-09-10T19:12:06Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T19:12:24Z shka_: yes 2018-09-10T19:12:31Z shka_: and not really suitable 2018-09-10T19:12:45Z shka_: sadly i think you will have to go with code walker 2018-09-10T19:12:54Z makomo: shka_: i'll already have to do something like that for these internal signals though 2018-09-10T19:13:11Z shka_: personally i would require user to supply list of signals 2018-09-10T19:13:14Z makomo: see how there are no LETs within the process? it's implicit that the process can access the local :signals of the component 2018-09-10T19:13:32Z lavaflow joined #lisp 2018-09-10T19:13:35Z makomo: i'll have to "inject" these into this body before COMPILE-ing it 2018-09-10T19:13:49Z makomo: shka_: yeah, that's an option, but then it puts burden on the user 2018-09-10T19:13:56Z shka_: i know 2018-09-10T19:14:02Z shka_: but then nothing can go wrong 2018-09-10T19:14:05Z makomo: if you ever change the body of the process, you need to fix up that list too :( 2018-09-10T19:14:23Z shka_: oh, wait 2018-09-10T19:14:41Z shka_: there is yet another ugly option 2018-09-10T19:15:04Z shka_: reader macro ;] 2018-09-10T19:15:41Z makomo: ugh :-D. how? 2018-09-10T19:16:17Z spm_ quit (Remote host closed the connection) 2018-09-10T19:17:14Z makomo: shka_: another reason why i want the process' bodies to be arbitrary lisp code is for various reporting functionality and interaction with the simulator itself 2018-09-10T19:17:15Z shka_: well, instead of (defcomponent you will be writtin something like #0(defcomponent 2018-09-10T19:17:18Z cage_ quit (Quit: Leaving) 2018-09-10T19:17:39Z shka_: and instead of (<- a 1) something like #1(<- a 1) 2018-09-10T19:17:43Z makomo: for example, you could imagine a "debugging protocol" that a component could support and implement, that would allow one to debug the defined component 2018-09-10T19:17:46Z shka_: well, not that 2018-09-10T19:17:52Z shka_: because numbers are already taken 2018-09-10T19:18:16Z shka_: but honestly, it does not seems to be a good idea 2018-09-10T19:18:21Z pjb: #1(<- a 1) #| ERROR: Array index 1 out of bounds for #(<-) . |# 2018-09-10T19:18:27Z shka_: pjb: yes 2018-09-10T19:18:32Z pjb: the number in #( specify the length of the vector! 2018-09-10T19:18:36Z shka_: yes 2018-09-10T19:18:48Z shka_: as i said, numbers are already taken ;] 2018-09-10T19:18:54Z makomo: mhm 2018-09-10T19:18:58Z makomo: welp, ugly :-) 2018-09-10T19:19:05Z shka_: makomo: don't do that, though, it is stupid 2018-09-10T19:19:17Z makomo: yeah, i don't like it either 2018-09-10T19:19:24Z shka_: i guess code walker it is 2018-09-10T19:19:29Z makomo: *gulp* 2018-09-10T19:20:06Z makomo: hm, but the code walker will probably yell at me if i try to walk the incomplete body (as its specified by the user), right? 2018-09-10T19:20:26Z makomo: for example, calling (<- a 1) without A ever appearing anywhere 2018-09-10T19:21:22Z nika quit (Quit: Leaving...) 2018-09-10T19:21:25Z makomo: so i would have to generate the whole body before i can walk it (which isn't an issue, i think; just mentioning it) 2018-09-10T19:22:18Z Xof: it depends what you want from it 2018-09-10T19:22:19Z shka_: maybe this can help you https://github.com/robert-strandh/Concrete-Syntax-Tree 2018-09-10T19:22:20Z makomo: it's* 2018-09-10T19:23:08Z makomo: Xof: do you know if sb-walker could list all of the function calls within a body? 2018-09-10T19:23:43Z makomo: i turned to sb-walker first just because i read christophe's post about it 2018-09-10T19:24:12Z Xof: well, for example, in (<- a 1), with a free, you don't know the answer yet 2018-09-10T19:24:14Z makomo: ideally i would use something portable (although that's hard to achieve for a code walker), but as an initial iplementation, an internal code walker would do as well (sb-walker is the easiest to get) 2018-09-10T19:24:26Z Xof: because a might be a symbol-macro for (foo b c) 2018-09-10T19:24:40Z pfdietz: shka_: thank you for that. There's an issue in Waters' COVER package that might solve (how to get from macroexpanded code back a representation of the source code it came from, to produce useful output). COVER's solution is a bit of a hack that isn't compatible with some macros, like ITERATE. 2018-09-10T19:24:47Z Xof: so, yes, it's more likely to be useful to walk a completeish form 2018-09-10T19:24:53Z Bike: is there a spec or CDR or something for package local nicknames? 2018-09-10T19:25:09Z makomo: Xof: right 2018-09-10T19:25:25Z shka_: pfdietz: not sure what i did, but if i helped that's awesome 2018-09-10T19:25:27Z pjb: Bike: there are several things. There's the documentation of Allegro. 2018-09-10T19:25:54Z pfdietz: The link you just gave. 2018-09-10T19:26:00Z shka_: ah 2018-09-10T19:26:02Z shka_: ok 2018-09-10T19:26:05Z shka_: anyway 2018-09-10T19:26:49Z pjb: Bike: See https://github.com/informatimago/lisp/blob/master/common-lisp/lisp/relative-package.lisp#L106 2018-09-10T19:27:24Z fikka joined #lisp 2018-09-10T19:28:16Z shka_: it is ironic that it is easier nowadays to read lisp code from stream or string, use eclector.concrete-syntax-tree and walk that then actually deal with lists 2018-09-10T19:30:12Z Xof: bah, no easy paste service these days 2018-09-10T19:30:39Z Bike: i use pastebin for web and ix.io for term 2018-09-10T19:30:43Z pjb: Xof: gists.github.com 2018-09-10T19:30:51Z dyelar quit (Remote host closed the connection) 2018-09-10T19:32:12Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T19:33:40Z Xof: makomo: not really tested, but: https://gist.github.com/csrhodes/8d74a1749a042a780d4c4ef1a42a6752 2018-09-10T19:38:31Z scymtym: Bike: it's a spec but there is also http://www.sbcl.org/manual/index.html#Package_002dLocal-Nicknames 2018-09-10T19:38:54Z Bike: yeah, i'm looking at that too. hierarchical names aren't really what i'm going for 2018-09-10T19:39:57Z scymtym: pfdietz: what does COVER use to represent the code? 2018-09-10T19:44:27Z epmor_ quit (Ping timeout: 240 seconds) 2018-09-10T19:48:02Z fikka joined #lisp 2018-09-10T19:49:37Z pfdietz: Just sexprs. It also produces small structures that get stored in the compiled code (more properly, regenerated at load time using CL's mechanics for that so you aren't clobbering constants values) to record when parts are visited. 2018-09-10T19:50:08Z pfdietz: These points are linked into a tree. 2018-09-10T19:50:26Z shka_: what is COVER? 2018-09-10T19:51:04Z pfdietz: Richard Waters' portable CL coverage package. It records what part of your code you've executed. 2018-09-10T19:51:13Z shka_: oh 2018-09-10T19:51:18Z shka_: this sounds useful 2018-09-10T19:51:22Z pfdietz: SBCL has an internal coverage system, sb-cover, but it is of course not portable. 2018-09-10T19:51:27Z shka_: is it in quicklisp? 2018-09-10T19:51:33Z pfdietz: No. 2018-09-10T19:51:41Z shka_: sb-cover... never used it 2018-09-10T19:51:47Z shka_: i certainly should 2018-09-10T19:51:52Z shka_: pfdietz: thanks! 2018-09-10T19:52:27Z pfdietz: It should be, but I think there may be portability issues? Was thinking of uploading it to github anyway (I think it's off on an ancient CMU lisp archive site.) 2018-09-10T19:52:56Z shka_: well, good software should not die! 2018-09-10T19:53:16Z fikka quit (Ping timeout: 272 seconds) 2018-09-10T19:53:39Z pfdietz: At one point I modified COVER for my own use to allow some extensions, like recording of coverage information in a file (so it could be combined from separate test runs) and checkpoint/rollback of coverage (useful for minimizing test cases under the constraint they still increase coverage.) 2018-09-10T19:54:27Z scymtym: pfdietz: interesting. i would love to look at COVER's code 2018-09-10T19:54:56Z pfdietz: http://www.merl.com/publications/docs/TR91-04.pdf 2018-09-10T19:55:17Z pfdietz: https://www.cs.cmu.edu/Groups/AI/lang/lisp/code/testing/cover/0.html 2018-09-10T19:55:20Z scymtym: thanks 2018-09-10T19:56:16Z pfdietz: Note that it doesn't instrument methods! It's visibly old school. 2018-09-10T19:56:30Z pfdietz: (it can be extended to though) 2018-09-10T20:00:01Z scymtym: eclector and concrete-syntax-tree would probably allow producing sb-cover-style annotated sources as output 2018-09-10T20:00:05Z smokeink quit (Remote host closed the connection) 2018-09-10T20:00:35Z smokeink joined #lisp 2018-09-10T20:01:55Z pierpal quit (Quit: Poof) 2018-09-10T20:02:12Z pierpal joined #lisp 2018-09-10T20:03:08Z pfdietz: I produce code as S-exprs, sometimes containing non-printable things. 2018-09-10T20:07:46Z Roy_Fokker joined #lisp 2018-09-10T20:08:09Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-10T20:08:20Z fikka joined #lisp 2018-09-10T20:11:14Z dyelar joined #lisp 2018-09-10T20:12:15Z Lycurgus joined #lisp 2018-09-10T20:12:30Z johnjay quit (Ping timeout: 252 seconds) 2018-09-10T20:13:00Z fikka quit (Ping timeout: 244 seconds) 2018-09-10T20:19:18Z pierpa joined #lisp 2018-09-10T20:19:27Z scymtym: ok, that's a different use case 2018-09-10T20:22:37Z makomo: Xof: thanks, i'll check it out 2018-09-10T20:24:15Z AeroNotix: shka_: I've just started using it. It's great. It has some rough edges, though 2018-09-10T20:25:23Z AeroNotix: It requires that you compile your files with certain declaims active and then deactivate those declaims when you want to compile other files. 2018-09-10T20:26:14Z aeth: oni-on-ion: #'foo is the function object foo, 'foo looks up foo so if foo is redefined the 'stale' object isn't used. 2018-09-10T20:28:19Z AeroNotix: https://github.com/zkat/chanl anyone using this? Any qualms/issues/comments? 2018-09-10T20:28:38Z fikka joined #lisp 2018-09-10T20:30:15Z AeroNotix: alternatively, a recommendation for a Channels/CSP library that's well-tested 2018-09-10T20:31:38Z aeth: oni-on-ion: (defun foo () (print "Hello")) (defun bar (f) (funcall f)) (let ((a (vector #'foo 'foo))) (bar (aref a 0)) (defun foo () (print "Goodbye")) (bar (aref a 0)) (bar (aref a 1))) 2018-09-10T20:33:36Z sunwukong joined #lisp 2018-09-10T20:33:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T20:38:21Z papachan joined #lisp 2018-09-10T20:39:31Z fikka joined #lisp 2018-09-10T20:42:04Z shka_ quit (Ping timeout: 246 seconds) 2018-09-10T20:42:41Z oni-on-ion: aeth: so #' kinda unfolds into a lambda ? ie the direct function value object? 2018-09-10T20:44:05Z oni-on-ion: AeroNotix: i've used something similar in haskell 2018-09-10T20:44:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T20:45:05Z aeth: oni-on-ion: I don't want to say something incorrect, and there are test cases I wrote where even #'foo uses the redefined function (at least in SBCL), such as directly binding #'foo in the let instead of placing it in a vector 2018-09-10T20:45:14Z aeth: i.e. (defun foo () (print "Hello")) (defun bar (f) (funcall f)) (let ((f1 #'foo) (f2 'foo)) (bar f1) (defun foo () (print "Goodbye")) (bar f1) (bar f2)) 2018-09-10T20:45:27Z AeroNotix: oni-on-ion: well I want it it in CL :) 2018-09-10T20:49:23Z fikka joined #lisp 2018-09-10T20:50:01Z aeth: Is there a way to check that object foo implements a method for the generic function quux? More concretely, I have an unwind-protect that is supposed to clean up all of the foreign OpenGL data at the end of the program. This actually would be a good candidate for a generic (and performance is not absolutely an issue since it's run once, at the end). 2018-09-10T20:50:16Z Bike: objects don't implement methods. 2018-09-10T20:50:28Z Bike: You can look up whether a generic function has an applicable method for a given class. 2018-09-10T20:50:28Z aeth: Bike: Sorry, that a method is defined for an object 2018-09-10T20:50:37Z Bike: clhs compute-applicable-methods 2018-09-10T20:50:37Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_comput.htm 2018-09-10T20:50:41Z Bike: mop compute-applicable-methods-using-classes 2018-09-10T20:50:41Z specbot: http://metamodular.com/CLOS-MOP/compute-applicable-methods-using-classes.html 2018-09-10T20:50:44Z johnjay joined #lisp 2018-09-10T20:51:27Z aeth: Bike: I think the user would probably be in for quite a surprise if (cleanup foo) failed because cleanup isn't defined for foo, and it probably would be a good thing to check for before starting instead of letting the user potentially leak memory upon closing the program. (A leak because the REPL will probably keep running.) 2018-09-10T20:51:38Z Bike: hm. 2018-09-10T20:52:14Z Bike: i'd usually like to avoid relying on that kind of introspection in the middle of a program, but that doesn't seem unreasonable. 2018-09-10T20:52:58Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-10T20:53:51Z pierpa: why not define cleanup for t? 2018-09-10T20:53:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-10T20:54:07Z Bike: because that method couldn't actually do any cleanup, not knowing anything about the object 2018-09-10T20:54:08Z Bike: i assume. 2018-09-10T20:54:30Z pierpa: cleanup for t would be a default, which of course does nothing 2018-09-10T20:54:42Z Bike: Right, but then there's still a leak. 2018-09-10T20:55:14Z aeth: pierpa: Even if I made it (error "You need a cleanup") instead of doing nothing, it would still be bad here. 2018-09-10T20:55:43Z pierpa: ok. I have not followed the previous conversation, so I'm missing the context... 2018-09-10T20:55:43Z nirved quit (Quit: Leaving) 2018-09-10T20:55:50Z pierpa: nvm 2018-09-10T20:56:03Z Bike: oh, and you should note that compute-applicable-methods is probably going to be pretty slow. 2018-09-10T20:56:19Z oni-on-ion: AeroNotix: yes, i know. i assumed you asked because of what the library is for,not that just because its a lisp library. 2018-09-10T20:56:37Z aeth: pierpa: This is a window object. It is, ideally, run in a with-window or something along those lines, that ultimately has an unwind-protect that calls (cleanup-gl-data gl-data) 2018-09-10T20:56:42Z oni-on-ion: AeroNotix: so if you needed help with how it works and concepts behind it and whatever. no worries 2018-09-10T20:56:59Z oni-on-ion: window run with with-window ? wwwwhat 2018-09-10T20:57:01Z aeth: pierpa: That's an unnecessary dependency on my gl-data object for something that's incredibly general 2018-09-10T20:57:28Z aeth: I could replace it with a cleanup generic, where there's a cleanup method implemented for gl-data. Then gl-data depends on window instead of window depending on gl-data 2018-09-10T20:58:08Z pierpa: hmmm 2018-09-10T20:58:12Z aeth: But if you pass in something else (vk-data?) that doesn't have CLEANUP, it will leak memory 2018-09-10T20:59:20Z aeth: (This is for 3D games. You're always going to have foreign data to cleanup. The options are essentially OpenGL, Vulkan, DirectX, etc. And if one day you don't need to do this, you can just make it a no-op safely.) 2018-09-10T20:59:29Z scymtym quit (Ping timeout: 250 seconds) 2018-09-10T21:00:03Z AeroNotix: oni-on-ion: ... 2018-09-10T21:01:38Z aeth: pierpa, Bike: Generally, I try to get an error early, when it's still entirely in CL, before the CFFI complicates things. 2018-09-10T21:03:01Z aeth: I guess I could make it (defgeneric cleanup (object &key actually-do-something-p)) but that seems like a big hack 2018-09-10T21:03:07Z pfdietz quit (Ping timeout: 244 seconds) 2018-09-10T21:03:52Z lavaflow joined #lisp 2018-09-10T21:05:27Z gravicappa quit (Ping timeout: 240 seconds) 2018-09-10T21:08:12Z laqq3 quit (Quit: Leaving) 2018-09-10T21:08:34Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-10T21:09:41Z fikka joined #lisp 2018-09-10T21:14:12Z nckx quit (Quit: Updating my GNU GuixSD server — gnu.org/s/guix) 2018-09-10T21:14:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-10T21:19:16Z aindilis quit (Read error: Connection reset by peer) 2018-09-10T21:19:43Z nckx joined #lisp 2018-09-10T21:20:11Z fikka joined #lisp 2018-09-10T21:23:48Z orivej quit (Ping timeout: 245 seconds) 2018-09-10T21:24:57Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T21:25:17Z scymtym joined #lisp 2018-09-10T21:27:13Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-10T21:30:01Z fikka joined #lisp 2018-09-10T21:34:34Z fikka quit (Ping timeout: 246 seconds) 2018-09-10T21:36:37Z nowhere_man quit (Remote host closed the connection) 2018-09-10T21:37:00Z nowhere_man joined #lisp 2018-09-10T21:37:47Z jkordani_ joined #lisp 2018-09-10T21:41:01Z fikka joined #lisp 2018-09-10T21:41:07Z jkordani quit (Ping timeout: 240 seconds) 2018-09-10T21:44:54Z pfdietz joined #lisp 2018-09-10T21:45:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-10T21:50:45Z fikka joined #lisp 2018-09-10T21:51:07Z mindCrime quit (Ping timeout: 240 seconds) 2018-09-10T21:52:25Z LiamH quit (Quit: Leaving.) 2018-09-10T21:54:48Z Bike quit (Ping timeout: 252 seconds) 2018-09-10T22:00:18Z martinium quit (Quit: Leaving) 2018-09-10T22:04:46Z no-defun-allowed: Good morning everyone! 2018-09-10T22:05:10Z oni-on-ion: hi gm 2018-09-10T22:05:28Z Denommus quit (Ping timeout: 245 seconds) 2018-09-10T22:06:40Z razzy quit (Ping timeout: 244 seconds) 2018-09-10T22:07:56Z Lycurgus quit (Quit: Exeunt) 2018-09-10T22:09:09Z acolarh quit (Ping timeout: 252 seconds) 2018-09-10T22:10:32Z rumbler31 joined #lisp 2018-09-10T22:12:37Z rumbler31 quit (Remote host closed the connection) 2018-09-10T22:16:06Z lavaflow joined #lisp 2018-09-10T22:23:05Z acolarh joined #lisp 2018-09-10T22:25:06Z sunwukong quit (Ping timeout: 252 seconds) 2018-09-10T22:26:18Z varjag quit (Ping timeout: 244 seconds) 2018-09-10T22:33:03Z _whitelogger quit (Remote host closed the connection) 2018-09-10T22:34:46Z mange joined #lisp 2018-09-10T22:35:17Z _whitelogger joined #lisp 2018-09-10T22:36:43Z cgay quit (Ping timeout: 245 seconds) 2018-09-10T22:40:29Z varjag joined #lisp 2018-09-10T22:44:02Z nowhere_man quit (Remote host closed the connection) 2018-09-10T22:44:25Z nowhere_man joined #lisp 2018-09-10T22:45:16Z varjag quit (Ping timeout: 246 seconds) 2018-09-10T22:50:30Z cgay joined #lisp 2018-09-10T22:55:52Z drmeister: Folks, recently sbcl shebang scripts stopped working for me. I wonder if a kind soul with a few minutes could test something on their system. 2018-09-10T22:56:12Z drmeister: I have sbcl 1.4.10 on macOS installed using brew. 2018-09-10T22:56:30Z drmeister: The script and what I get on my system is below. 2018-09-10T22:56:31Z drmeister: https://www.irccloud.com/pastebin/LHfUPIAa/ 2018-09-10T22:56:52Z oni-on-ion: i am at 1.4.11 debian and will try 2018-09-10T22:56:55Z oni-on-ion: øeww 2018-09-10T22:57:03Z drmeister: oni-on-ion: Thank you very much. 2018-09-10T22:57:56Z Bike joined #lisp 2018-09-10T22:59:39Z oni-on-ion: i have no mouse so i cannot copy that to a file, sorry 2018-09-10T23:00:01Z oni-on-ion: it is too much to swithc workspace and type a few chars. had to do that with URL, sorry i am a bit disabled computer user =) 2018-09-10T23:00:51Z Xach: drmeister: strange 2018-09-10T23:02:01Z AeroNotix: drmeister: works here on linux+sbcl 1.4.10 2018-09-10T23:02:14Z AeroNotix: drmeister: when you say "stop working" what's happening instead? 2018-09-10T23:02:54Z j`ey: there is an error in the pastebin 2018-09-10T23:02:56Z Bike: the paste has output 2018-09-10T23:02:57Z Colleen: Bike: drmeister said 51 minutes, 39 seconds ago: It just occurred to me - we are also generating a lot of metadata when generating llvm-ir - I wonder if that is costing us a lot of compilation time. 2018-09-10T23:03:39Z j`ey: what kind of metadata? 2018-09-10T23:03:54Z Xach: drmeister: i will try with local 1.4.10 2018-09-10T23:06:35Z AeroNotix: j`ey: derp, thanks 2018-09-10T23:08:06Z robotoad quit (Quit: robotoad) 2018-09-10T23:09:57Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-10T23:10:06Z epmor_ joined #lisp 2018-09-10T23:10:34Z mkolenda joined #lisp 2018-09-10T23:12:21Z drmeister: Hello - had to run an errand. 2018-09-10T23:12:58Z drmeister: oni-on-ion: No problem - thank you for trying. 2018-09-10T23:13:38Z drmeister: Ok - so something weird is going on on my end - I'll try re-brewing it. 2018-09-10T23:17:33Z ealfonso joined #lisp 2018-09-10T23:19:23Z graphene quit (Remote host closed the connection) 2018-09-10T23:19:47Z no-defun-allowed: Hi drmeister 2018-09-10T23:20:22Z drmeister: Hello no-defun-allowed 2018-09-10T23:21:05Z graphene joined #lisp 2018-09-10T23:21:08Z drmeister: Hmm, I upgraded to 1.4.11 and I noticed that the /usr/local/bin/sbcl was a symlink - so I switched to the direct path... 2018-09-10T23:21:10Z drmeister: https://www.irccloud.com/pastebin/XiJnsWCq/ 2018-09-10T23:22:01Z drmeister: Still no love from shebang scripts? Am I going mad? Have my years of wild hedonism taken their toll on my mind and my ability to write and execute unix scripts? 2018-09-10T23:22:57Z whartung: does sbcl work without the shebang? is shebang any different from sbcl with the code funneled in via stdin? Have you tried that? 2018-09-10T23:22:59Z j`ey: what about adding --core ../path 2018-09-10T23:24:20Z DataLinkDroid joined #lisp 2018-09-10T23:26:43Z lavaflow quit (Ping timeout: 245 seconds) 2018-09-10T23:27:47Z lavaflow joined #lisp 2018-09-10T23:28:25Z drmeister: No - I still am a rockstar script writer. 2018-09-10T23:28:26Z drmeister: https://www.irccloud.com/pastebin/uM6KJV3Q/ 2018-09-10T23:28:37Z drmeister: sbcl does work without the shebang 2018-09-10T23:32:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-10T23:32:33Z pierpal quit (Ping timeout: 245 seconds) 2018-09-10T23:33:17Z jasom: drmeister: is ttt executable? 2018-09-10T23:33:36Z oni-on-ion: no-defun-allowed: hows the lisp?? =) 2018-09-10T23:33:58Z drmeister: Ok, mystery solved - brew is doing some crazy sheet 2018-09-10T23:34:00Z oni-on-ion: drmeister: surely sbcl manual suggests exactly how you have it 2018-09-10T23:34:01Z drmeister: https://www.irccloud.com/pastebin/o6VcsONE/ 2018-09-10T23:34:02Z oni-on-ion: oh=) 2018-09-10T23:34:31Z igemnace quit (Read error: Connection reset by peer) 2018-09-10T23:35:24Z rumbler31 joined #lisp 2018-09-10T23:35:35Z whartung: so what was the problem? 2018-09-10T23:36:04Z aindilis joined #lisp 2018-09-10T23:36:43Z kdas_ quit (Remote host closed the connection) 2018-09-10T23:37:00Z drmeister: brew puts a shell script that sets the SBCL_SOURCE_ROOT environment variable and then invokes sbcl 2018-09-10T23:37:02Z kushal joined #lisp 2018-09-10T23:37:18Z whartung: I guess you can’t shebang to a shebang? (I”ve never actually thought about it) 2018-09-10T23:40:04Z drmeister: Neither have I - and if I had a virtual grey beard when it comes to scripting. 2018-09-10T23:40:05Z sz0 quit (Quit: Connection closed for inactivity) 2018-09-10T23:40:11Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-10T23:40:22Z gector quit (Read error: Connection reset by peer) 2018-09-10T23:40:25Z whartung: yea 2018-09-10T23:40:25Z drmeister: (sigh) and I have a virtual... nevermind 2018-09-10T23:40:48Z gector joined #lisp 2018-09-10T23:43:22Z drmeister: Ok - well, thank you everyone - now I don't need to rewrite all of my sbcl scripts for profiling 2018-09-10T23:43:28Z whartung: \o/ 2018-09-10T23:44:07Z jasom: drmeister: things like this have caused me to not rely on shebangs at all, but rather use here documents. 2018-09-10T23:44:21Z whartung: “here documents"? 2018-09-10T23:45:39Z drmeister: Yeah - "here documents"? 2018-09-10T23:46:34Z drmeister: Oh - I see. Google for the win. 2018-09-10T23:46:51Z suskeyhose quit (Ping timeout: 252 seconds) 2018-09-10T23:47:24Z whartung: o 2018-09-10T23:47:56Z whartung: instead of #!/path/to/sbcl you do /path/to/sbcl << END_LISP … 2018-09-10T23:50:26Z drmeister: I was trying to be fancy and have one shebang script that did everything and then symlinked to the shebang script and it did different things based on what the first argument (program name) was. 2018-09-10T23:55:33Z drmeister: Yep - I can kick that idea to the curb. 2018-09-10T23:56:37Z jasom: drmeister: you can still do that with here scripts, and you can implement the multi-executable idea in either lisp or sh at your choice 2018-09-10T23:56:53Z jasom: s/here scripts/here documents 2018-09-10T23:58:54Z jasom: drmeister: https://github.com/jasom/ql2nix/blob/master/ql2nix.lisp <-- example 2018-09-10T23:59:25Z drmeister: Here's what I'm trying to accomplish. We use dtrace to profile clasp. I have a script called 'stacks.lisp' that checks the sb-ext:*posix-argv* arguments for the name.... 2018-09-10T23:59:30Z drmeister: I'll take a look at your link. 2018-09-11T00:00:42Z jasom: drmeister: yes it's very hacky, particularly line #7 2018-09-11T00:01:42Z makomo: jasom: that is a beautiful hack :-) 2018-09-11T00:02:23Z dale quit (Quit: dale) 2018-09-11T00:02:30Z drmeister: No - that's pretty neat. 2018-09-11T00:02:53Z makomo: jasom: how does sh handle |# though? 2018-09-11T00:04:25Z Kaisyu7 joined #lisp 2018-09-11T00:04:35Z fikka joined #lisp 2018-09-11T00:05:45Z drmeister: That's beautiful - really. 2018-09-11T00:05:55Z drmeister: makomo: She shell never hits it. 2018-09-11T00:06:01Z drmeister: The shell never hits it. 2018-09-11T00:06:28Z drmeister: Control is transferred to sbcl before that hits. 2018-09-11T00:07:59Z makomo: drmeister: right, but i was wondering what would happen when sbcl dies. looks like the exec builtin *replaces* the shell process 2018-09-11T00:08:23Z makomo: what a glorious hack 2018-09-11T00:09:09Z epmor_ quit (Ping timeout: 272 seconds) 2018-09-11T00:09:09Z pfdietz quit (Ping timeout: 272 seconds) 2018-09-11T00:09:15Z pierpa quit (Quit: Page closed) 2018-09-11T00:09:16Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T00:09:38Z drmeister: The only wrinkle is communicating the arguments - they need to be escaped when they are put into *script-args* 2018-09-11T00:13:22Z jasom: drmeister: I put them in *script-args* because sbcl leaves all of the toplevel options in, and I didn't want to have to filter 2018-09-11T00:14:13Z drmeister: I changed it to this... 2018-09-11T00:14:25Z jasom: drmeister: I have a script that puts them all in a list shomewhere so you can use "$@"... 2018-09-11T00:14:27Z drmeister: --eval "(defvar *script-args* '( $# \"$0\" \"$1\" \"$2\" \"$3\" \"$4\" \"$5\" \"$6\" \"$7\" ))" \ 2018-09-11T00:15:29Z jasom: drmeister: also this assumes that there won't be any #\" characters in the arguments. Fortunately it's an easy fix if you care 2018-09-11T00:15:31Z drmeister: ./count-calls a b c --> (3 "./count-calls" "a" "b" "c" "" "" "" "") I'm printing the *script-args* at the start. 2018-09-11T00:16:26Z Essadon quit (Quit: Qutting) 2018-09-11T00:16:31Z drmeister: No - that's ok - these don't need to bullet proof. They just need to handle argument lists like: -i foo -o bar -s baz 2018-09-11T00:16:52Z drmeister: "don't need to be bullet proof" 2018-09-11T00:17:27Z jasom: it's a quick pipe to sed to replace \ with \\ and " with \" if you ever do need it. 2018-09-11T00:17:40Z jasom: then you can loop on "$@" and be done with it 2018-09-11T00:17:57Z drmeister: These scripts that handle dtrace output parse and query dtrace output full of backtraces - it's stuff that only someone practiced in the art will use. 2018-09-11T00:18:20Z drmeister: jasom: Thank you - this is very helpful. 2018-09-11T00:18:24Z acolarh quit (Ping timeout: 252 seconds) 2018-09-11T00:18:25Z Khisanth quit (Ping timeout: 244 seconds) 2018-09-11T00:18:33Z jasom: "'( $(for item in "$@"; do printf '"%s\"' 2018-09-11T00:19:01Z jasom: something like: "'( $(for item in "$@"; do printf '"%s\"' "$(escape "$item")"; done) )" 2018-09-11T00:26:05Z jasom: drmeister: IMO the for loop version will be better than a length prefix anyways even if you don't add in the escaping. 2018-09-11T00:29:16Z pfdietz joined #lisp 2018-09-11T00:31:08Z Khisanth joined #lisp 2018-09-11T00:32:17Z acolarh joined #lisp 2018-09-11T00:32:30Z Duns_Scrotus joined #lisp 2018-09-11T00:39:47Z smokeink quit (Remote host closed the connection) 2018-09-11T00:42:24Z mindCrime joined #lisp 2018-09-11T00:43:01Z Oladon joined #lisp 2018-09-11T00:45:50Z aeth: Where should I define a generic that's used all over the place? 2018-09-11T00:47:13Z Oladon: Depends on what it's for 2018-09-11T00:47:24Z Oladon: If it's a utility, toss it in your utilities area 2018-09-11T00:48:38Z aeth: I think I can just take all of the methods and functions I use for freeing and similar things and just make them methods on a generic CLEANUP 2018-09-11T00:49:27Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-11T00:49:32Z aeth: (This code interfaces with foreign libraries so the GC can't be relied on here. Or, more accurately, it's way more complicated to rely on the GC than to just have a bunch of WITH-FOOs built on top of UNWIND-PROTECT calling CLEANUP) 2018-09-11T00:50:59Z lemonpepper24 joined #lisp 2018-09-11T01:03:23Z laqq3 joined #lisp 2018-09-11T01:06:12Z dale_ joined #lisp 2018-09-11T01:06:31Z dale_ is now known as dale 2018-09-11T01:07:09Z pjb quit (Remote host closed the connection) 2018-09-11T01:07:58Z fikka joined #lisp 2018-09-11T01:08:44Z pjb joined #lisp 2018-09-11T01:10:32Z Pixel_Outlaw joined #lisp 2018-09-11T01:11:20Z rumbler31 joined #lisp 2018-09-11T01:11:30Z ebrasca quit (Read error: Connection reset by peer) 2018-09-11T01:12:37Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T01:13:40Z cyraxjoe joined #lisp 2018-09-11T01:16:48Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-11T01:18:25Z fikka joined #lisp 2018-09-11T01:22:58Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T01:28:01Z Balooga_ joined #lisp 2018-09-11T01:28:25Z fikka joined #lisp 2018-09-11T01:30:07Z Oladon quit (Ping timeout: 240 seconds) 2018-09-11T01:30:42Z esrse joined #lisp 2018-09-11T01:33:22Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T01:33:40Z gendl: Hi, in cl-who is it possible to have the lhtml be computed with a macro or function? 2018-09-11T01:34:05Z gendl: or does it have to be verbatim inside the with-html-output macro? 2018-09-11T01:34:27Z gendl: I know you can intersperse regular Lisp forms like dolist, then drop back into lhtml with (htm ...) 2018-09-11T01:34:30Z no-defun-allowed: you can do macros 2018-09-11T01:34:36Z no-defun-allowed: just put your html in a CL-WHO:HTM form 2018-09-11T01:34:58Z no-defun-allowed: i'll find an example 2018-09-11T01:35:16Z no-defun-allowed: [here](https://gitlab.com/Theemacsshibe/cl-pixelcanvas/blob/master/bot/pages.lisp#L23) 2018-09-11T01:37:56Z no-defun-allowed: can slime do emacs-style symbol shortening? for example, sa-l-a-d becomes save-lisp-and-die 2018-09-11T01:38:28Z fikka joined #lisp 2018-09-11T01:40:10Z trn: beach: Are you around? 2018-09-11T01:40:24Z gendl: no-defun-allowed: I think what I need is slightly different - 2018-09-11T01:40:28Z Balooga_ quit (Quit: Balooga_) 2018-09-11T01:41:04Z gendl: within the body of the with-h-o-t-s, I want to call another macro which itself returns valid lhtml. 2018-09-11T01:41:39Z trn: beach: I have a couple of questions for you about the old Ford network that I'm hoping you can answer in regards to 3270 apps on Multics at Ford . 2018-09-11T01:43:09Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T01:43:47Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-11T01:45:01Z gendl: no-defun-allowed: Ha, actually I got it! 2018-09-11T01:45:07Z trn: beach: Specifically, did 3270 users login a 3270-related project that defined a restricted process_overseer_? 2018-09-11T01:45:38Z trn: beach: Or did they login to a standard project via the answering service as usual users? 2018-09-11T01:45:46Z gendl: like you said, I just had to wrap (htm ...) around the lhtml which my macro was emitting. 2018-09-11T01:46:35Z gendl: doing it like that, I can include calls to macros at will within my with-html-output-to-string and similar. 2018-09-11T01:46:53Z gendl: thanks for pointing me in the right direction! 2018-09-11T01:49:42Z eschatologist joined #lisp 2018-09-11T01:58:43Z fikka joined #lisp 2018-09-11T02:00:22Z pierpal joined #lisp 2018-09-11T02:01:43Z anewuser quit (Ping timeout: 245 seconds) 2018-09-11T02:03:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T02:06:45Z Kaisyu joined #lisp 2018-09-11T02:10:01Z d4ryus quit (Ping timeout: 244 seconds) 2018-09-11T02:11:47Z robotoad joined #lisp 2018-09-11T02:15:27Z mindCrime_ joined #lisp 2018-09-11T02:18:06Z mindCrime quit (Ping timeout: 252 seconds) 2018-09-11T02:18:06Z makomo quit (Ping timeout: 252 seconds) 2018-09-11T02:19:25Z fikka joined #lisp 2018-09-11T02:20:03Z mindCrime_ quit (Ping timeout: 245 seconds) 2018-09-11T02:23:44Z igemnace joined #lisp 2018-09-11T02:24:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T02:29:49Z fikka joined #lisp 2018-09-11T02:34:31Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T02:38:08Z AeroNotix: http://man7.org/linux/man-pages/man2/timer_create.2.html is there a library out there that exposes this? 2018-09-11T02:39:25Z Bike: doesn't seem to be in sb-unix. 2018-09-11T02:39:38Z Bike: sb-ext has a bunch of timer shit tho. probably other implementations as well 2018-09-11T02:39:54Z fikka joined #lisp 2018-09-11T02:41:04Z AeroNotix: oiadhuasd fffsss 2018-09-11T02:41:24Z AeroNotix: I was looking in the sb-* docs. I thought timer related things would be under sb-posix/sb-unix 2018-09-11T02:41:43Z Bike: section 13 of the manual 2018-09-11T02:41:52Z Bike: i assume that in theory, at least, they wouldn't want it os based 2018-09-11T02:41:57Z Bike: it uses setitimer instead, though, it says. 2018-09-11T02:42:45Z AeroNotix: makes sense now :) 2018-09-11T02:43:58Z lemonpepper24 quit (Ping timeout: 246 seconds) 2018-09-11T02:44:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T02:49:54Z fikka joined #lisp 2018-09-11T02:49:55Z lemonpepper24 joined #lisp 2018-09-11T02:54:57Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T02:58:25Z dale quit (Quit: dale) 2018-09-11T02:58:52Z beach: Good morning everyone! 2018-09-11T02:59:01Z dddddd quit (Remote host closed the connection) 2018-09-11T02:59:24Z beach: trn: Sorry, never used a 3270 on Multics. Only standard terminals. 2018-09-11T03:01:17Z trn: beach: No problem, thanks anyway. We're trying to see if some behaviour we are seeing is something we are doing wrong, need to fix, or the way it actually was. :) 2018-09-11T03:01:26Z beach: I see. 2018-09-11T03:03:03Z no-defun-allowed: morning beach 2018-09-11T03:03:19Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-11T03:03:36Z rumbler31 joined #lisp 2018-09-11T03:06:42Z anewuser joined #lisp 2018-09-11T03:10:37Z fikka joined #lisp 2018-09-11T03:11:08Z pierpal quit (Read error: Connection reset by peer) 2018-09-11T03:14:31Z pierpal joined #lisp 2018-09-11T03:15:58Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T03:19:09Z pierpal quit (Ping timeout: 252 seconds) 2018-09-11T03:22:42Z pierpal joined #lisp 2018-09-11T03:23:29Z pierpal quit (Client Quit) 2018-09-11T03:23:47Z pierpal joined #lisp 2018-09-11T03:26:47Z Balooga_ joined #lisp 2018-09-11T03:28:25Z dented42 joined #lisp 2018-09-11T03:30:59Z fikka joined #lisp 2018-09-11T03:34:12Z rumbler31 quit (Remote host closed the connection) 2018-09-11T03:35:39Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T03:37:50Z d4ryus joined #lisp 2018-09-11T03:41:54Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-11T03:42:15Z rtypo quit (Ping timeout: 252 seconds) 2018-09-11T03:51:15Z fikka joined #lisp 2018-09-11T03:52:36Z pjb quit (Ping timeout: 252 seconds) 2018-09-11T03:56:30Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T03:57:43Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-11T03:59:12Z Balooga_ quit (Quit: Balooga_) 2018-09-11T03:59:12Z pierpal quit (Read error: Connection reset by peer) 2018-09-11T04:06:03Z _whitelogger quit (Remote host closed the connection) 2018-09-11T04:08:16Z _whitelogger joined #lisp 2018-09-11T04:08:55Z Balooga_ joined #lisp 2018-09-11T04:11:57Z fikka joined #lisp 2018-09-11T04:17:06Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T04:19:06Z Bike quit (Quit: Lost terminal) 2018-09-11T04:21:55Z lnostdal quit (Read error: Connection reset by peer) 2018-09-11T04:22:28Z Tristam quit (Ping timeout: 272 seconds) 2018-09-11T04:27:26Z Tristam joined #lisp 2018-09-11T04:32:14Z fikka joined #lisp 2018-09-11T04:36:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T04:41:07Z pjb joined #lisp 2018-09-11T04:47:39Z ealfonso left #lisp 2018-09-11T04:52:36Z fikka joined #lisp 2018-09-11T04:57:19Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T04:57:24Z Balooga_ quit (Quit: Balooga_) 2018-09-11T05:03:02Z fikka joined #lisp 2018-09-11T05:03:11Z steiner joined #lisp 2018-09-11T05:03:16Z ober joined #lisp 2018-09-11T05:07:29Z rumbler31 joined #lisp 2018-09-11T05:08:04Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T05:09:30Z hjudt quit (Read error: Connection reset by peer) 2018-09-11T05:09:37Z hjudt_ joined #lisp 2018-09-11T05:12:06Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-11T05:13:15Z fikka joined #lisp 2018-09-11T05:13:42Z caltelt_ joined #lisp 2018-09-11T05:14:38Z anewuser quit (Quit: anewuser) 2018-09-11T05:17:58Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T05:20:47Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-11T05:21:14Z CrazyEddy quit (Read error: Connection reset by peer) 2018-09-11T05:22:13Z ober quit (Ping timeout: 244 seconds) 2018-09-11T05:22:48Z smokeink joined #lisp 2018-09-11T05:23:42Z fikka joined #lisp 2018-09-11T05:23:51Z Balooga_ joined #lisp 2018-09-11T05:24:27Z Inline quit (Remote host closed the connection) 2018-09-11T05:24:27Z graphene quit (Remote host closed the connection) 2018-09-11T05:26:00Z graphene joined #lisp 2018-09-11T05:26:33Z eschatologist joined #lisp 2018-09-11T05:28:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T05:31:07Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-11T05:31:27Z eschatologist joined #lisp 2018-09-11T05:33:47Z fikka joined #lisp 2018-09-11T05:37:07Z caltelt_ quit (Remote host closed the connection) 2018-09-11T05:38:07Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-11T05:38:33Z johnjay: beach: have you studied Multics? you mentioned it in that document a few times 2018-09-11T05:38:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T05:40:01Z beach: Not only that. I used it for several years when I worked in industry. 2018-09-11T05:40:25Z no-defun-allowed: nice 2018-09-11T05:40:57Z dxtr quit (Ping timeout: 240 seconds) 2018-09-11T05:41:12Z johnjay: " Due to its many novel and valuable ideas, Multics had a significant impact on computer science despite its faults" 2018-09-11T05:41:16Z johnjay: --wikipedia 2018-09-11T05:41:44Z beach: Unfortunately, then Unix came and destroyed, most of that progress. 2018-09-11T05:42:02Z johnjay: yeah i did get the impression you thought that way from the document you linked 2018-09-11T05:42:07Z beach: And now, most computer users are brainwashed to think that Unix-like systems are actually good. 2018-09-11T05:42:17Z johnjay: wiki goes right into the fact ther was no distinction between memory and main storage 2018-09-11T05:42:33Z beach: Yes, the memory system was unified. 2018-09-11T05:43:20Z no-defun-allowed: sounds very nice 2018-09-11T05:43:38Z eschatologist joined #lisp 2018-09-11T05:43:42Z beach: It is. 2018-09-11T05:43:47Z fikka joined #lisp 2018-09-11T05:44:02Z no-defun-allowed: was using it particuarly interesting? 2018-09-11T05:44:14Z no-defun-allowed: as far as i can tell unix and multics UIs were fairly similar 2018-09-11T05:44:31Z beach: Using it was totally brilliant. 2018-09-11T05:45:42Z beach: It didn't start a new process for each command, so the stack was intact when there was a problem. So it was closer to using a Common Lisp system in that respect. 2018-09-11T05:46:11Z no-defun-allowed: very nice 2018-09-11T05:46:12Z johnjay: interesting quote from ken thompson 2018-09-11T05:46:13Z johnjay: Ken Thompson, in a transcribed 2007 interview with Peter Seibel[23] refers to Multics as "…overdesigned and overbuilt and over everything. It was close to unusable. They [Massachusetts Institute of Technology] still claim it’s a monstrous success, but it just clearly wasn't." 2018-09-11T05:46:18Z beach: Anyway, the fact that Multics had unified memory is why it bothers me when people have me justify that decision in CLOSOS as if it had never been done before. 2018-09-11T05:46:35Z no-defun-allowed: shut your mouth, ken 2018-09-11T05:46:55Z johnjay: no-defun-allowed: g'day mate, how's the shrimp on the bahbee 2018-09-11T05:46:58Z beach: Well, Ken Thomson is not actually objective in this matter, is he? 2018-09-11T05:47:45Z johnjay: nobody is objective 2018-09-11T05:47:54Z no-defun-allowed: johnjay: oh strewth the shrimp set me house on fire 2018-09-11T05:48:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T05:48:37Z johnjay: beach: i'm impressed about the reliability parts, apparently you could remove cpus, disks, anything and the system kept running 2018-09-11T05:48:41Z beach: johnjay: Well, I can assure you that Multics was very usable. 2018-09-11T05:48:48Z no-defun-allowed: gotta get a kangaroo to kill the insurance inspector if he comes near me barbie now 2018-09-11T05:49:27Z beach: johnjay: Yes, it was designed partly for the US military, so there were tough specifications. 2018-09-11T05:50:06Z johnjay: right. someone in another channel just complained about firefox taking up all the system memory. in fact i have the command 'taskkill /f /im firefox.exe' ready to go always on this pc. 2018-09-11T05:50:29Z johnjay: since i guess you said there's not a new stack per process it doesn't have that problem? 2018-09-11T05:50:30Z beach: I have said this before, but the Common Lisp condition system was inspired by that of Multics PL/I. 2018-09-11T05:51:09Z LdBeth: Good evening 2018-09-11T05:51:10Z beach: There was a stack per process, but not a process per command to run (typically). 2018-09-11T05:51:14Z no-defun-allowed: hi LdBeth 2018-09-11T05:51:16Z beach: Hello LdBeth. 2018-09-11T05:51:22Z johnjay: ah ok 2018-09-11T05:51:33Z no-defun-allowed: johnjay: must be firefox rusting 2018-09-11T05:51:39Z johnjay: it's hard to conceptualize some of this because i'm so used to the typical stack/process/pc setup 2018-09-11T05:51:47Z beach: Yes, I know. 2018-09-11T05:51:54Z johnjay: no-defun-allowed: it needs more rust if you know what I mean 2018-09-11T05:52:08Z lnostdal joined #lisp 2018-09-11T05:52:16Z no-defun-allowed: "roses are red, violets are blue, firefox is great, mozilla snorts glue" 2018-09-11T05:52:54Z no-defun-allowed: it'd all leak cause of --holes in the rusty bucket-- i mean reference counting 2018-09-11T05:53:01Z johnjay: is it something you can actually study in an emulator or is it mostly the conceptual aspect of it? 2018-09-11T05:53:02Z dxtr joined #lisp 2018-09-11T05:54:15Z fikka joined #lisp 2018-09-11T05:54:15Z beach: johnjay: What is "it"? 2018-09-11T05:54:35Z johnjay: the design of multics i mean 2018-09-11T05:55:01Z beach: Sure, there was a guy here not too long ago who announced a web site running an emulator. 2018-09-11T05:55:13Z beach: I tried it. It worked fine. I could run Multics Emacs. 2018-09-11T05:55:26Z johnjay: ah like virtual86 huh? cool, didn't know emacs was on there 2018-09-11T05:55:40Z LdBeth: emacs almost everywhere 2018-09-11T05:55:48Z beach: Aww. Multics Emacs was the second Emacs written in Lisp. 2018-09-11T05:55:54Z beach: Maclisp as it were. 2018-09-11T05:56:07Z johnjay: i see. which was gnu emacs? 2018-09-11T05:56:11Z beach: Apparently the first one was EINE. 2018-09-11T05:56:27Z nirved joined #lisp 2018-09-11T05:56:27Z beach: GNU Emacs was the third one. 2018-09-11T05:56:56Z johnjay: sounds about right 2018-09-11T05:57:05Z LdBeth: wait, where's MockLisp one 2018-09-11T05:57:28Z beach: Gosling Emacs? 2018-09-11T05:57:36Z beach: I don't count that. 2018-09-11T05:57:58Z LdBeth: admittdly Mock Lisp isn't like lisp 2018-09-11T05:58:54Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T05:59:20Z Balooga_ quit (Quit: Balooga_) 2018-09-11T06:00:26Z jackdaniel: there is also MicroEmacs, but if we limit software to lisp-only systems, then it doesn't count either ;-) 2018-09-11T06:00:30Z jackdaniel: good morning 2018-09-11T06:00:42Z LdBeth: morning 2018-09-11T06:01:29Z beach: Hello jackdaniel. 2018-09-11T06:01:38Z SaganMan joined #lisp 2018-09-11T06:04:06Z fikka joined #lisp 2018-09-11T06:08:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T06:11:51Z scymtym quit (Ping timeout: 252 seconds) 2018-09-11T06:12:04Z ecraven quit (Quit: bye) 2018-09-11T06:12:22Z ecraven joined #lisp 2018-09-11T06:14:40Z laqq3 quit (Ping timeout: 246 seconds) 2018-09-11T06:15:42Z no-defun-allowed: multics is really nice 2018-09-11T06:16:14Z jackdaniel: *was* 2018-09-11T06:16:30Z no-defun-allowed: still is tbh 2018-09-11T06:18:08Z LdBeth: Can't find anything useful about what is "IBM Script Fomula Format" used in Axiom 2018-09-11T06:21:32Z jackdaniel: no-defun-allowed: how so? 2018-09-11T06:21:57Z no-defun-allowed: found an eentarwebs based client for a public multics server 2018-09-11T06:22:06Z no-defun-allowed: i think they're still patching it 2018-09-11T06:23:54Z NB0X-Matt-CA quit (Excess Flood) 2018-09-11T06:24:48Z fikka joined #lisp 2018-09-11T06:25:56Z NB0X-Matt-CA joined #lisp 2018-09-11T06:29:46Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T06:31:51Z terpri quit (Ping timeout: 252 seconds) 2018-09-11T06:32:24Z terpri joined #lisp 2018-09-11T06:33:23Z Balooga_ joined #lisp 2018-09-11T06:35:49Z shrdlu68 joined #lisp 2018-09-11T06:35:58Z fikka joined #lisp 2018-09-11T06:40:22Z johnjay: hrm can't remember what it was before 2018-09-11T06:40:34Z johnjay: but someone, aeth i think, said to build a lisp on top of linux you'd need 5 or 6 things 2018-09-11T06:40:45Z johnjay: a posix shell, a compiler, a few other things 2018-09-11T06:41:36Z beach: What does it mean to "build a lisp on top of linux"? 2018-09-11T06:43:10Z jackdaniel: beach: I guess that means to use linux as a kernel for userspace which would be fully implemented in Lisp 2018-09-11T06:43:24Z dmiles quit (Read error: Connection reset by peer) 2018-09-11T06:43:25Z vlatkoB joined #lisp 2018-09-11T06:44:42Z Balooga_ quit (Quit: Balooga_) 2018-09-11T06:46:02Z aeth: Above the level of systemd (or equivalents) and the X server. That would add two more. 2018-09-11T06:46:08Z Balooga_ joined #lisp 2018-09-11T06:46:24Z beach: What is meant by "userspace" here. All Linux programs that are not in the kernel? 2018-09-11T06:46:44Z jackdaniel: yes, that's what that term means 2018-09-11T06:46:52Z sauvin joined #lisp 2018-09-11T06:47:35Z jackdaniel: there is a kernel space and a user space, that referes to a virtual memory segregation on today operating systems 2018-09-11T06:47:45Z gpiero joined #lisp 2018-09-11T06:47:46Z beach: I know that part. 2018-09-11T06:47:49Z dmiles joined #lisp 2018-09-11T06:48:07Z beach: What I was wondering was "userspace which would be fully implemented in Lisp" 2018-09-11T06:48:17Z beach: Because I couldn't see a space implemented in Lisp. 2018-09-11T06:48:29Z jxy quit (Read error: Connection reset by peer) 2018-09-11T06:48:33Z EvilTofu joined #lisp 2018-09-11T06:48:41Z jxy joined #lisp 2018-09-11T06:48:44Z aindilis quit (Remote host closed the connection) 2018-09-11T06:49:12Z beach: And that sound more like implementing a Unix system (except the kernel) in Lisp than "build a lisp on top of linux". 2018-09-11T06:49:26Z beach: I guess I am not very smart today. 2018-09-11T06:49:32Z beach: I should go do something else perhaps. 2018-09-11T06:50:16Z aindilis joined #lisp 2018-09-11T06:50:40Z jackdaniel: following wikipedia: "The term userland (or user space) refers to all code that runs outside the operating system's kernel." that's the meaning I had in mind 2018-09-11T06:50:51Z beach: Thanks. 2018-09-11T06:51:41Z LdBeth: They have systems without a kernel 2018-09-11T06:51:43Z jackdaniel: and regarding implementing that: you may have a single process on the system which would be a lisp process, then you have a single address space for all applications in that image 2018-09-11T06:52:14Z jackdaniel: that way linux kernel serves a purpose of being a host. I don't think it is necessarily unix-like 2018-09-11T06:52:32Z beach: I see. 2018-09-11T06:53:16Z LdBeth: The kernel interface it self is very unixy 2018-09-11T06:53:25Z aeth: My personal approach would be fairly Unix-like because I'd be aiming at various compatibility things that aren't strictly necessary, like a Unix shell. 2018-09-11T06:53:59Z aeth: LdBeth: You definitely don't get the freedom of beach's design 2018-09-11T06:54:41Z jackdaniel: not that I'm into that kind of things. I'm getting back to things I'm into ;-) 2018-09-11T06:54:42Z ober joined #lisp 2018-09-11T06:55:24Z jackdaniel: I was employed at some point of time as an embedded system's engineer, so I'm fed up with linux kernel internals ,p 2018-09-11T06:56:28Z shka_ joined #lisp 2018-09-11T06:59:11Z aeth: LdBeth: building on top of Linux really limits what you can do 2018-09-11T06:59:40Z ober: just use its bottom half 2018-09-11T07:00:15Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-11T07:00:19Z scymtym joined #lisp 2018-09-11T07:01:47Z LdBeth: Probably it's better to discuss it after "CLVM" came out. 2018-09-11T07:04:57Z varjag joined #lisp 2018-09-11T07:05:29Z SumoSud0 quit (Quit: 8y3 8y3) 2018-09-11T07:09:48Z johnjay: jackdaniel: you got fed up with the linux kernel?? 2018-09-11T07:10:48Z jackdaniel: johnjay: yes, from the linux kernel internals perspective. I still use it of course 2018-09-11T07:10:56Z shka_ quit (Ping timeout: 272 seconds) 2018-09-11T07:11:42Z no-defun-allowed: here's a stupid research idea: how much effort is put into making a computer unix-like? 2018-09-11T07:11:52Z ober: jackdaniel: what do you dislike most? fat dcache? 2018-09-11T07:12:05Z no-defun-allowed: for example, there's a hell of a lot of microcode that interprets x86 nowadays 2018-09-11T07:12:15Z EvilTofu: CLVM? 2018-09-11T07:12:20Z johnjay: jackdaniel: is that linux driver book from o'reilly any good? 2018-09-11T07:12:25Z johnjay: or is it better to just study actual kernel code? 2018-09-11T07:13:06Z no-defun-allowed: EvilTofu: i'm gonna guess froggey's llvm to cl compiler 2018-09-11T07:13:51Z jackdaniel: ober: I didn't work with fat which is well implemented afaik. mostly drm (direct rendering mechanism) and writing custom drivers. it is well written, but it is a frustrating work: i.e you have to restart device to reboot the kernel and check your changes. debugging is hard too (though jtags help) 2018-09-11T07:14:20Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T07:14:29Z LdBeth: EvilTofu: A lower level machine code generator and optimizer for CL, may or may not be llvm 2018-09-11T07:14:36Z jackdaniel: johnjay: it is based on 2.6.x I think. it is good, you'll get a grasp of the abstractions which exist there, but there is much more to learn from the code (like with any non-trivial source code) 2018-09-11T07:14:50Z fikka joined #lisp 2018-09-11T07:14:54Z johnjay: yeah, just thought i'd ask 2018-09-11T07:14:57Z jackdaniel: also custom socs are a nightmare 2018-09-11T07:15:11Z johnjay: i was thinking of writing some drivers for reactos, and i wondered how much studying linux driver model would help for that 2018-09-11T07:15:38Z jackdaniel: writing a simple driver given a datasheet is not a hard thing 2018-09-11T07:16:06Z EvilTofu: So on top of Raspberry Pi? 2018-09-11T07:16:08Z jackdaniel: reverse-engineering custom protocol is way harder. but this is offtopic on this channel. sorry for bringing this up 2018-09-11T07:17:51Z wigust joined #lisp 2018-09-11T07:20:12Z ober: fat as in size, not the filesystem 2018-09-11T07:20:21Z jackdaniel: ah 2018-09-11T07:24:51Z EvilTofu: Are there any Lisp to bare metal implementations? Besides the Lisp machine. 2018-09-11T07:25:13Z jackdaniel: EvilTofu: Movitz (x86) and Mezzano (x86-64 with arm64 port on its way) 2018-09-11T07:25:27Z graphene quit (Read error: Connection reset by peer) 2018-09-11T07:25:47Z mange quit (Remote host closed the connection) 2018-09-11T07:26:47Z heisig joined #lisp 2018-09-11T07:26:58Z graphene joined #lisp 2018-09-11T07:28:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T07:30:13Z ober: movitz still active? 2018-09-11T07:31:11Z jackdaniel: I'm not aware of any recent movitz activity 2018-09-11T07:31:49Z ober: seems last update is older than gh. 2018-09-11T07:33:29Z EvilTofu: What about open genera? 2018-09-11T07:35:09Z fikka joined #lisp 2018-09-11T07:35:15Z jackdaniel: EvilTofu: opengenera is a full operating system with a development environment etc etc, it is not a CL implementation (however it has CL implementation in it) 2018-09-11T07:38:03Z ober quit (Read error: Connection reset by peer) 2018-09-11T07:38:12Z ober joined #lisp 2018-09-11T07:39:43Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T07:45:04Z fikka joined #lisp 2018-09-11T07:45:49Z aeth: You probably wouldn't want to use its CL implementation because it's very old now. 2018-09-11T07:46:27Z jackdaniel: I don't see why that would be an obstacle 2018-09-11T07:46:36Z EvilTofu quit (Ping timeout: 252 seconds) 2018-09-11T07:46:40Z jackdaniel: if you use genera, genera's cl is your best pick 2018-09-11T07:46:55Z aeth: I mean you wouldn't want to use Genera if you wanted to use CL 2018-09-11T07:46:57Z jackdaniel: (if not only) 2018-09-11T07:47:04Z aeth: I would imagine that quite a few libraries would be broken. Maybe even the majority on Quicklisp. 2018-09-11T07:47:13Z aeth: The standard might be fixed but the ecosystem isn't 2018-09-11T07:50:12Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T07:53:43Z smokeink quit (Remote host closed the connection) 2018-09-11T07:54:01Z smokeink joined #lisp 2018-09-11T07:54:14Z smokeink quit (Remote host closed the connection) 2018-09-11T07:54:34Z smokeink joined #lisp 2018-09-11T07:55:25Z Demosthenex: hrm. i'm having to learn about GC and scaling now. i hadn't realized my latest rest-api downloads were over 300mb... no wonder it's taking ages. parallelism doesn't help 2018-09-11T07:56:13Z deba5e12 quit (Ping timeout: 260 seconds) 2018-09-11T07:56:14Z Demosthenex: parallel wget's can download it in 5.6 seconds, but in lisp it's running a half hour or more. but that's download, parse, and insert into db. 2018-09-11T07:56:47Z lavaflow joined #lisp 2018-09-11T07:56:49Z shrdlu68: keep-alive? 2018-09-11T07:57:13Z Demosthenex: well, if i download it all into lists i hit the heap limit fast :P 2018-09-11T07:57:14Z no-defun-allowed: accepting gzip compression? 2018-09-11T07:57:24Z nckx quit (Quit: Updating my GNU GuixSD server — gnu.org/s/guix) 2018-09-11T07:57:33Z Demosthenex: no-defun-allowed: dexador is pulling it down gzipped. but it appears to uncompress before passing it to me 2018-09-11T07:57:58Z schweers joined #lisp 2018-09-11T07:58:01Z steiner quit (Remote host closed the connection) 2018-09-11T07:58:49Z steiner joined #lisp 2018-09-11T07:58:59Z Balooga_ quit (Quit: Balooga_) 2018-09-11T07:59:51Z nckx joined #lisp 2018-09-11T08:01:07Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-11T08:03:37Z deba5e12 joined #lisp 2018-09-11T08:05:21Z fikka joined #lisp 2018-09-11T08:09:29Z graphene quit (Remote host closed the connection) 2018-09-11T08:09:47Z deba5e12 quit (Ping timeout: 240 seconds) 2018-09-11T08:10:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T08:10:59Z graphene joined #lisp 2018-09-11T08:11:44Z shka_ joined #lisp 2018-09-11T08:12:08Z shka_: good morning 2018-09-11T08:13:51Z no-defun-allowed: hi shka_ 2018-09-11T08:14:15Z deba5e12 joined #lisp 2018-09-11T08:19:15Z CatchMe joined #lisp 2018-09-11T08:24:21Z CatchMe: how to generate lispobj in C using ffi? 2018-09-11T08:24:54Z no-defun-allowed: probably "implementation dependent" 2018-09-11T08:26:33Z CatchMe: I found clisp to be suitable, but I was looking for generic thing. 2018-09-11T08:27:03Z CatchMe: I want to port pybind11, but they use python.h which specify pyobject. 2018-09-11T08:27:23Z schweers: CatchMe: I’ve never done this, but my guess would be: make a lisp function which can be called from C (implementation dependent), have that object create/obtain said object and return it. But I’m not sure this works in general. 2018-09-11T08:28:30Z schweers: I’m not sure what has to be done so the object will not be collected while some C code still holds a reference to it, and how to collect it once C no longer has a reference. 2018-09-11T08:30:53Z Tristam quit (Ping timeout: 245 seconds) 2018-09-11T08:31:09Z CatchMe: lisp code for create called from c won't allow to pass c++ classes 2018-09-11T08:37:04Z pjb quit (Ping timeout: 240 seconds) 2018-09-11T08:38:47Z Tristam joined #lisp 2018-09-11T08:39:28Z schweers: you can always pass pointers? This kind of code is probably always going to be pretty ugly. 2018-09-11T08:41:17Z frgo joined #lisp 2018-09-11T08:43:17Z CatchMe: So I would just go with clisp 2018-09-11T08:44:25Z Demosthenex: shka_: lparallel is beautiful =] 2018-09-11T08:44:48Z CatchMe quit (Quit: leaving) 2018-09-11T08:45:04Z shka_: Demosthenex: yeah, it is sexier then Raquel Welch 2018-09-11T08:46:50Z otwieracz joined #lisp 2018-09-11T08:47:23Z no-defun-allowed: beach: your guide on computer design is really good 2018-09-11T08:49:57Z fikka joined #lisp 2018-09-11T08:50:10Z beach: no-defun-allowed: Thanks! But which one is it that you are reading? 2018-09-11T08:50:51Z no-defun-allowed: "computer architecture tutorial" 2018-09-11T08:51:23Z beach: Ah, yes. 2018-09-11T08:51:51Z no-defun-allowed: it appears you were interrupted before you wrote the part on interrupts 2018-09-11T08:52:05Z beach: I wrote it in a book. 2018-09-11T08:52:10Z beach: But the book is in French. 2018-09-11T08:52:51Z beach: https://www.amazon.fr/Architecture-lordinateur-Robert-Strandh/dp/2100530704 2018-09-11T08:53:00Z no-defun-allowed: i saw 2018-09-11T08:53:29Z no-defun-allowed: i can read some french but probably not enough to read a book. "je ne parlais francais" 2018-09-11T08:53:32Z beach: I have vague plans for translating it to English, but I would need to get the copyright back from the editor. 2018-09-11T08:53:34Z smokeink: quick question: https://github.com/norvig/paip-lisp/blob/master/lisp/macsyma.lisp#L211 <- shouldn't this line be (1 `(- ,(integrate (exp-lhs exp) x))) ? Otherwise (simp '(int (- x) d x)) returns `(1/2 * (X ^ 2)) instead of `(-1/2 * (X ^ 2)) 2018-09-11T08:54:05Z beach: smokeink: loke would be able to answer that I think. 2018-09-11T08:54:28Z loke: What? 2018-09-11T08:54:37Z no-defun-allowed: oops, i forgot the "pas" between parlais and francais 2018-09-11T08:54:40Z smokeink: I'm surprised that this bug has survived up to the latest code on github. It's in the book as well 2018-09-11T08:55:12Z loke: smokeink: The latest version of Macsyma is called Maxima, and I don't think it has such bugs. 2018-09-11T08:55:57Z no-defun-allowed: if i had to guess, the PAIP copy would be a clone in the spirit of ma{csyma,xima} 2018-09-11T08:56:12Z smokeink: I mean the sourcecode for the book PAIP , which has been studied by many students and teachers 2018-09-11T08:56:15Z loke: smokeink: Buty you are right about the error. 2018-09-11T08:58:59Z smokeink: or perhaps it hasn't been studied by as many people as it deserves to be 2018-09-11T09:05:08Z trittweiler joined #lisp 2018-09-11T09:14:08Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-11T09:15:33Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-11T09:17:43Z frgo quit (Ping timeout: 246 seconds) 2018-09-11T09:18:02Z ober quit (Read error: Connection reset by peer) 2018-09-11T09:22:40Z wigust quit (Ping timeout: 272 seconds) 2018-09-11T09:23:53Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-11T09:24:15Z shka_ joined #lisp 2018-09-11T09:32:32Z pierpal joined #lisp 2018-09-11T09:32:53Z m00natic joined #lisp 2018-09-11T09:34:16Z eminhi joined #lisp 2018-09-11T09:47:58Z dddddd joined #lisp 2018-09-11T09:48:04Z rotty quit (Ping timeout: 240 seconds) 2018-09-11T09:50:18Z pierpal quit (Remote host closed the connection) 2018-09-11T09:53:17Z atgreen_ joined #lisp 2018-09-11T09:55:32Z atgreen quit (Ping timeout: 244 seconds) 2018-09-11T10:01:27Z orivej joined #lisp 2018-09-11T10:01:58Z rotty joined #lisp 2018-09-11T10:18:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T10:18:43Z makomo joined #lisp 2018-09-11T10:34:33Z fikka joined #lisp 2018-09-11T10:35:47Z kooga joined #lisp 2018-09-11T10:39:27Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T10:51:18Z DGASAU quit (Ping timeout: 245 seconds) 2018-09-11T10:54:48Z fikka joined #lisp 2018-09-11T10:57:13Z DGASAU joined #lisp 2018-09-11T10:57:31Z lavaflow joined #lisp 2018-09-11T10:59:36Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T11:02:44Z esrse quit (Ping timeout: 272 seconds) 2018-09-11T11:02:48Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-11T11:05:33Z Tristam quit (Ping timeout: 252 seconds) 2018-09-11T11:06:08Z Tristam joined #lisp 2018-09-11T11:06:27Z fikka joined #lisp 2018-09-11T11:09:51Z beach quit (Ping timeout: 252 seconds) 2018-09-11T11:10:48Z beach joined #lisp 2018-09-11T11:20:20Z mkolenda quit (Remote host closed the connection) 2018-09-11T11:20:55Z mkolenda joined #lisp 2018-09-11T11:21:30Z azimut quit (Ping timeout: 252 seconds) 2018-09-11T11:22:30Z orivej quit (Ping timeout: 252 seconds) 2018-09-11T11:28:04Z rumbler31 joined #lisp 2018-09-11T11:33:03Z eminhi quit (Ping timeout: 252 seconds) 2018-09-11T11:45:33Z razzy joined #lisp 2018-09-11T11:52:04Z atgreen_ quit (Ping timeout: 246 seconds) 2018-09-11T11:59:31Z lavaflow joined #lisp 2018-09-11T12:01:40Z nowhere_man joined #lisp 2018-09-11T12:04:04Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-11T12:05:11Z orivej joined #lisp 2018-09-11T12:11:16Z Essadon joined #lisp 2018-09-11T12:11:17Z CrazyEddy joined #lisp 2018-09-11T12:20:39Z graphene quit (Remote host closed the connection) 2018-09-11T12:21:58Z CatchMe joined #lisp 2018-09-11T12:22:14Z graphene joined #lisp 2018-09-11T12:23:44Z CatchMe: Anyone has an example for ECL using cl_object to be returned from c funtion cffi? 2018-09-11T12:28:26Z jackdaniel: you may find plenty of examples how to work with cl_objects directly in ECL's code and documentatino about ffi 2018-09-11T12:29:46Z CatchMe: I want to interface it with c++, I think I have to write the wrapper code in c++! 2018-09-11T12:30:12Z jackdaniel: you are lucky, there is an intern who works on c++ bridge right now 2018-09-11T12:30:24Z jackdaniel: check out repository and see merge requests (it is still work in progress) 2018-09-11T12:30:34Z beach: jackdaniel: In your company? 2018-09-11T12:30:39Z shrdlu68 joined #lisp 2018-09-11T12:30:42Z jackdaniel: for details you may ask mkolenda 2018-09-11T12:30:46Z CatchMe: not clasp, right? 2018-09-11T12:30:49Z jackdaniel: beach: yes 2018-09-11T12:30:56Z jackdaniel: CatchMe: not clasp, ecl 2018-09-11T12:31:18Z beach: jackdaniel: So ultimately, that bridge could be used to interface with LLVM? 2018-09-11T12:32:05Z jackdaniel: beach: it's the other way around. that bridge could be used to access Lisp from C++ (i.e from LLVM module) 2018-09-11T12:32:24Z jackdaniel: we already can interface with C++ from ECL if compiler is built with C++ support 2018-09-11T12:32:26Z beach: Hmm. OK. 2018-09-11T12:32:36Z beach: Oh, OK. 2018-09-11T12:33:06Z jackdaniel: so this bridge is a step towards making ECL more usable from the outside 2018-09-11T12:33:16Z beach: Got it. 2018-09-11T12:33:31Z beach: But now I am thinking, what does Clasp do that you can't already do with ECL, then? 2018-09-11T12:33:39Z beach: GC of C++ instances? 2018-09-11T12:35:09Z CatchMe: I was thinking to take pybind11 approach 2018-09-11T12:35:15Z jackdaniel: ECL compiles to C/C++ and uses compiler of that language 2018-09-11T12:35:27Z jackdaniel: Clasp produces LLVM IR which is then optimized by LLVM framework 2018-09-11T12:35:37Z jackdaniel: so it cuts one step of (limiting!) abstraction of C/C++ 2018-09-11T12:35:39Z beach: Sure. 2018-09-11T12:35:44Z beach: OK, thanks. 2018-09-11T12:36:48Z jackdaniel: that said I have plans to generalize compiler's backend interface in ECL (to be able to plug into something else than C compiler), but you already know that 2018-09-11T12:37:07Z beach: I do, yes. 2018-09-11T12:38:46Z lavaflow joined #lisp 2018-09-11T12:40:21Z rumbler31 quit (Remote host closed the connection) 2018-09-11T12:40:36Z epmor joined #lisp 2018-09-11T12:42:42Z CatchMe: seems great, but in a very early stage 2018-09-11T12:43:25Z epmor quit (Client Quit) 2018-09-11T12:43:31Z jackdaniel: you may chip in with your development time to speed things up 2018-09-11T12:44:40Z CatchMe: So no problem with porting pybind11 to clbind11! 2018-09-11T12:48:30Z shifty joined #lisp 2018-09-11T12:49:23Z Bronsa joined #lisp 2018-09-11T12:49:36Z smokeink quit (Remote host closed the connection) 2018-09-11T12:49:47Z beach quit (Ping timeout: 250 seconds) 2018-09-11T12:49:54Z smokeink joined #lisp 2018-09-11T12:52:01Z beach joined #lisp 2018-09-11T12:57:18Z steiner quit (Remote host closed the connection) 2018-09-11T12:57:34Z steiner joined #lisp 2018-09-11T12:57:35Z Achylles joined #lisp 2018-09-11T12:59:33Z Bike joined #lisp 2018-09-11T13:01:46Z CatchMe quit (Quit: leaving) 2018-09-11T13:05:56Z makomo: i posted this http://plaster.tymoon.eu/view/917#917 yesterday but i think it was pretty late for most of #lisp, so here it is once again. if anyone has any suggestions i'd be happy to hear about them 2018-09-11T13:06:38Z makomo: shka_: regarding the code walker solution, here's what i came up with (it took some diging 2018-09-11T13:06:50Z makomo: (it took some diging within SB-WALKER)* 2018-09-11T13:06:53Z makomo: http://plaster.tymoon.eu/view/919#919 2018-09-11T13:08:11Z shka_: makomo: sadly i can't comment as each time i am attempting code walking something bad happens 2018-09-11T13:08:31Z shka_: so i gave up on code walkers all together 2018-09-11T13:09:10Z beach: makomo: I stopped reading at VHDL, but I'll try again. 2018-09-11T13:09:59Z makomo: Xof: thanks for the initial example. also, i just realized you were the author of that code walking article (let over lambda + sbcl). :-) 2018-09-11T13:10:36Z makomo: shka_: heh. if only there was a code walker within the standard. i think it would make many things a lot easier :^( 2018-09-11T13:10:52Z shka_: it would certainly be good thing to have 2018-09-11T13:11:13Z shka_: but good luck with your task anyway 2018-09-11T13:11:15Z makomo: beach: thanks for trying :-), i'll be happy to hear anything you have to suggest 2018-09-11T13:11:29Z heisig: I have been using agnostic-lizard as code walker without any issues so far. 2018-09-11T13:12:00Z makomo: heisig: ah, really? i was going to try that as well. nice to hear that it works 2018-09-11T13:12:08Z beach: makomo: I can't really understand the description, unfortunately. Too many unknowns like "signal" and "process" 2018-09-11T13:12:16Z makomo: at a first glance, it doesn't appear to have a lot of documentation, but then again, SB-WALKER isn't any better 2018-09-11T13:12:28Z makomo: and even worse, it's implementation-specific 2018-09-11T13:12:50Z shka_: agnostic-lizard... never heared about it before 2018-09-11T13:13:00Z makomo: shka_: there's an ELS talk about it on yt 2018-09-11T13:13:16Z shka_: searching 2018-09-11T13:13:38Z makomo: beach: the problem isn't very domain specific. the one thing that you need to know is that i need to somehow "preprocess" the body of a :process and find all of the s within function calls of the form (<- ) 2018-09-11T13:14:03Z makomo: this has to be done *before* the body of a :process is actually run (and that happens within the simulation) 2018-09-11T13:14:16Z heisig: agnostic-lizard is as portable as it can be. The only thing where it fails (and where all code walkers fail) is when a macro stores its environment in a global variable and another macro uses it. 2018-09-11T13:14:36Z heisig: But if you write such code, you are doomed anyway... 2018-09-11T13:14:58Z beach: heisig: How does it represent lexical compile-time environments? 2018-09-11T13:15:16Z makomo: beach: the simulation has to know what signals a process is trying to assign to, because that information is necessary to set up the simulation 2018-09-11T13:15:32Z makomo: beach: whether or not that assignment is ever executed is irrelevant 2018-09-11T13:15:51Z beach: heisig: If it has its own representation, then things will fail when a macro passes the environment it receives to the MACROEXPAND of the system. 2018-09-11T13:16:39Z shka_: heisig: i should give it a shot i think 2018-09-11T13:16:45Z heisig: beach: I am not the author. Give me a second to re-read the code. 2018-09-11T13:17:03Z steiner quit (Remote host closed the connection) 2018-09-11T13:17:12Z makomo: shka_: what code walker(s) did you use before? 2018-09-11T13:17:26Z steiner joined #lisp 2018-09-11T13:17:26Z beach: makomo: Do the <- calls need to be replaced, or is that operator defined in the environment that you compile the thing in? 2018-09-11T13:17:34Z shka_: makomo: mostly my own :P 2018-09-11T13:17:41Z makomo: shka_: that's why it failed! :D 2018-09-11T13:17:53Z shka_: yeah, but there was nothing quite portable 2018-09-11T13:17:59Z shka_: and i like my code portable 2018-09-11T13:18:05Z jackdaniel: makomo: if it is your dsl, and if you can mandate, that (<- …) is always toplevel (i.e it is not nested in other instructions) it is as trivial as traversing the "BODY" list and counting CAR's being eq to '<- 2018-09-11T13:18:47Z shrdlu68: shka_: Hi, in the bit-trie code, what is length? 2018-09-11T13:18:58Z shka_: shrdlu68: length of integer 2018-09-11T13:19:11Z makomo: beach: hm, i haven't decided yet whether <- is even going to be a function. it will probably have to a macro actually, because the first argument is always going to be a symbol, and i don't want the user to have to quote it every time. currently, it's a global function within the whole program 2018-09-11T13:19:29Z shka_: integer-length won't be enough because your bit-vectors can have leading zero 2018-09-11T13:19:34Z beach: makomo: Also, what does it mean to "find" them? Get a copy of the form? find the location within the process? Something else? 2018-09-11T13:19:46Z shrdlu68: shka_: I understand. 2018-09-11T13:19:57Z Lauven joined #lisp 2018-09-11T13:20:01Z shka_: -5 on each level because 32 is the number of children on each node 2018-09-11T13:20:08Z makomo: beach: get a copy of the form, but only if that form represents an actual function call (rather than being a quoted list or something else) 2018-09-11T13:20:17Z shka_: this also allows compression 2018-09-11T13:20:24Z makomo: jackdaniel: i thought about that too, but sadly they can be nested 2018-09-11T13:20:24Z shka_: by using 32 bitmask 2018-09-11T13:20:36Z makomo: jackdaniel: i.e. i can have (if something (<- ...) (<- ...)) 2018-09-11T13:20:54Z jackdaniel: and both should be "counted"? 2018-09-11T13:20:59Z makomo: yup 2018-09-11T13:21:06Z jackdaniel: because if you want to calculate, how many output pins you need, then such if should count as 1 2018-09-11T13:21:10Z jackdaniel: just saying 2018-09-11T13:21:14Z beach: makomo: What if you make it into a macro or a compiler macro that expands to (eval-when ...) and have some side effects at compile time, like consing them onto a list held in a special variable? 2018-09-11T13:21:34Z jackdaniel: macro may be expanded multiple times, no? 2018-09-11T13:21:55Z beach: It doesn't matter. 2018-09-11T13:22:02Z beach: He just wants a copy of the form. 2018-09-11T13:22:07Z makomo: perhaps "count" is an unfortunate word. i don't know how many times it's called, only the signals that are being assigned to 2018-09-11T13:22:48Z jackdaniel: he wants copies of all forms, if you count them twice, you have twice the copies you need. that depends on what he wants to do 2018-09-11T13:23:04Z makomo: beach: that could work (and is the 2nd idea in my comment) but i worry that it might be tricky. the body of a :process isn't valid lisp code right away, for example. i first need to wrap it within a LET that will bring all of the implicitly used signals into scope 2018-09-11T13:23:15Z makomo: jackdaniel: s/know/want/ 2018-09-11T13:23:45Z beach: makomo: I see. Well, I have run out of ideas. Other than using a code walker. :) 2018-09-11T13:23:47Z makomo: beach: which means that all that work has to be performed at macroexpansion-time (by DEFCOMPONENT for example) 2018-09-11T13:24:22Z makomo: i.e. DEFCOMPONENT would somehow arrange for (<- ...) to be expanded, but the only way i know of doing this is by placing that code within a lambda for example 2018-09-11T13:25:53Z makomo: and for that code to compile properly, i need the code to be valid 2018-09-11T13:26:10Z beach: You can use Generate-AST of Cleavir to do things like that. It will allow you to capture references to undefined variables. But it's a bit involved to set up a first-class global environment for Cleavir to work against. 2018-09-11T13:26:55Z Lauven left #lisp 2018-09-11T13:27:32Z shka_: beach: that actually sounds like a cool idea 2018-09-11T13:27:49Z beach: Thanks. 2018-09-11T13:28:01Z heisig: beach: agnostic-lizard simultaneously maintains its own environment (called metaenv) and the host environment. I have not fully understood the details, but macroexpand-1 uses eval at some place to patch the host environment appropriately. 2018-09-11T13:28:28Z makomo: beach: hm, sounds interesting. that would be a variant of the code walking solution right? 2018-09-11T13:28:37Z beach: makomo: Absolutely. 2018-09-11T13:29:06Z makomo: right, so it's either (1) code walking or (2) macroexpansion-time trickery. so far i haven't thought of anything else 2018-09-11T13:29:12Z beach: heisig: That sounds very strange, because the host lexical compile-time environment is not a portable thing. 2018-09-11T13:29:52Z beach: heisig: It is not that important. Don't spend time on it for my sake. 2018-09-11T13:31:04Z makomo: heisig: where do you suggest i begin with agnostic-lizard? examples.lisp? 2018-09-11T13:31:41Z atgreen_ joined #lisp 2018-09-11T13:31:46Z mindCrime joined #lisp 2018-09-11T13:32:44Z heisig: makomo: I don't know. I have trouble understanding it myself :) 2018-09-11T13:33:17Z makomo: heisig: heh, if only it had more documentation. :( 2018-09-11T13:40:16Z shangul joined #lisp 2018-09-11T13:40:29Z ebrasca joined #lisp 2018-09-11T13:40:48Z Achylles quit (Remote host closed the connection) 2018-09-11T13:46:40Z makomo: beach: hm, thinking about the EVAL-WHEN solution (which is a variant of the macroexpansion solution) -- wouldn't expanding into an EVAL-WHEN fail for non-top-level forms, since calls to <- can appear anywhere within the body? 2018-09-11T13:49:03Z Inline joined #lisp 2018-09-11T13:49:58Z Inline quit (Read error: Connection reset by peer) 2018-09-11T13:50:25Z Inline joined #lisp 2018-09-11T13:50:41Z shangul left #lisp 2018-09-11T13:52:35Z beach: I guess you are right. 2018-09-11T13:52:55Z beach: You would have to have the macroexpander do the work. 2018-09-11T13:54:17Z beach: But as I understand it, you can't use that solution anyway, because you can't compile the process until you know the signal variables, so that you can wrap the process code in a binding form for them. 2018-09-11T13:57:26Z makomo: beach: i wasn't very explicit about what i meant there. the knowledge about which signals are potentially assigned is required for the simulation. for actually generating the full :process body (which is part of defining the component), only the signals declared within the :signals clause + the component's pins (2nd argument to DEFCOMPONENT) are required 2018-09-11T13:57:38Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T13:58:18Z makomo: defining the component happens before the simulation. so the macroexpansion solution would work, but it would require the body generation to happen at macroexpansion-time 2018-09-11T13:58:41Z makomo: i guess that's not really a problem, but it just appears "complex" to me, for some unjustified reason 2018-09-11T13:58:46Z argoneus joined #lisp 2018-09-11T14:04:54Z Lycurgus joined #lisp 2018-09-11T14:05:10Z beach: Well there is also the problem jackdaniel mentioned, that the macro can be expanded any number of times. 2018-09-11T14:06:47Z mindCrime quit (Ping timeout: 240 seconds) 2018-09-11T14:17:19Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T14:18:26Z argoneus joined #lisp 2018-09-11T14:19:42Z smokeink quit (Ping timeout: 272 seconds) 2018-09-11T14:20:59Z makomo: beach: mhm, i thought of that too, but fortunately i only to know whether the signal appears *at all*, not how many times 2018-09-11T14:21:13Z makomo: need to know* 2018-09-11T14:21:43Z jackdaniel: makomo: but why do you refuse to use a code walker? 2018-09-11T14:21:46Z jackdaniel: http://ix.io/1mtr/lisp 2018-09-11T14:21:51Z jackdaniel: this sketch is all you need 2018-09-11T14:22:08Z orivej quit (Ping timeout: 245 seconds) 2018-09-11T14:22:14Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T14:22:28Z makomo: jackdaniel: oh, i didn't refuse. i already created a solution that uses a code walker, but it uses SB-WALKER http://plaster.tymoon.eu/view/919# 2018-09-11T14:22:49Z makomo: jackdaniel: i was going to try angostic-lizard next, but i don't know where to start 2018-09-11T14:22:52Z jackdaniel: (this solution won't work on (funcall foo though) 2018-09-11T14:23:26Z jackdaniel: but I think that would be a reasonable requirement to not pass <- as a function 2018-09-11T14:23:33Z makomo: jackdaniel: oh, good point. i guess APPLY is another problem as well 2018-09-11T14:23:34Z jackdaniel: for sake of enforcing that you should make it a macro 2018-09-11T14:23:52Z makomo: i think <- will end up being a macro anyway, because i don't want the user to have to quote the symbol's name every time 2018-09-11T14:24:47Z grumble quit (Ping timeout: 600 seconds) 2018-09-11T14:26:20Z wheelsucker joined #lisp 2018-09-11T14:26:29Z grumble joined #lisp 2018-09-11T14:30:35Z jackdaniel: unfortunately agnostic-lizard doesn't provide a hook for unexpadned macros (there is some hardwiring interface though) 2018-09-11T14:31:37Z warweasle joined #lisp 2018-09-11T14:32:01Z dale joined #lisp 2018-09-11T14:36:07Z jackdaniel: solution to that could be wrapping body in `(flet ((<- (&rest args) nil)) ,body) 2018-09-11T14:36:23Z jackdaniel: in call to walk-form 2018-09-11T14:37:57Z fikka joined #lisp 2018-09-11T14:38:57Z gector quit (Ping timeout: 252 seconds) 2018-09-11T14:39:15Z gector joined #lisp 2018-09-11T14:42:35Z edgar-rft quit (Remote host closed the connection) 2018-09-11T14:43:08Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T14:44:24Z steiner quit (Remote host closed the connection) 2018-09-11T14:45:48Z heisig quit (Quit: Leaving) 2018-09-11T14:48:55Z rtypo joined #lisp 2018-09-11T14:49:18Z smokeink joined #lisp 2018-09-11T14:51:15Z kooga quit (Ping timeout: 252 seconds) 2018-09-11T14:52:09Z laqq3 joined #lisp 2018-09-11T14:52:28Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T14:53:36Z argoneus joined #lisp 2018-09-11T14:58:14Z fikka joined #lisp 2018-09-11T15:02:28Z makomo: jackdaniel: thanks for the example. i'll try using agnostic-lizard as well 2018-09-11T15:03:16Z rtypo quit (Quit: WeeChat 2.2) 2018-09-11T15:03:16Z nowhere_man quit (Read error: Connection reset by peer) 2018-09-11T15:03:21Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T15:05:46Z nowhere_man joined #lisp 2018-09-11T15:06:51Z schjetne quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T15:10:08Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T15:11:16Z argoneus joined #lisp 2018-09-11T15:11:25Z mindCrime joined #lisp 2018-09-11T15:11:47Z kooga joined #lisp 2018-09-11T15:13:03Z jxy quit (Ping timeout: 252 seconds) 2018-09-11T15:14:24Z orivej joined #lisp 2018-09-11T15:15:15Z schweers: does lisp has something similar to this? http://mirror.racket-lang.org/docs/5.1/html/reference/fasl.html 2018-09-11T15:15:41Z dlowe: schweers: yes. 2018-09-11T15:16:07Z nbunjevac joined #lisp 2018-09-11T15:16:10Z steiner joined #lisp 2018-09-11T15:16:15Z makomo: jackdaniel: regarding DSL design and the requirements/constraints on its usage: you mention that it's reasonable to require that one doesn't try to FUNCALL/APPLY #'<-. would you fit (1) local functions that call <- and (2) lambdas that call <- into that category as well (whether or not either of those gets actually invoked)? 2018-09-11T15:16:23Z schweers: dlowe: in lisp a fasl is not just a binary representation of an sexp, or is it? 2018-09-11T15:16:33Z askatasuna joined #lisp 2018-09-11T15:16:48Z dlowe: schweers: it is not 2018-09-11T15:16:59Z makomo: jackdaniel: i think it's reasonable as well. the documentation will simply say something like "using <- in such and such context is undefined" 2018-09-11T15:17:05Z schweers: have you opened the link? or just looked at the url? 2018-09-11T15:17:58Z dlowe: schweers: I have opened the link. 2018-09-11T15:18:10Z schweers: what can I use in lisp then? 2018-09-11T15:18:19Z dlowe: quickload cl-store 2018-09-11T15:18:36Z fikka joined #lisp 2018-09-11T15:18:37Z askatasuna left #lisp 2018-09-11T15:18:44Z schweers: thanks, I’ll take a look 2018-09-11T15:22:19Z argoneus quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T15:23:06Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T15:23:26Z argoneus joined #lisp 2018-09-11T15:25:13Z cage_ joined #lisp 2018-09-11T15:25:56Z Lycurgus quit (Quit: Exeunt) 2018-09-11T15:26:04Z bradcomp joined #lisp 2018-09-11T15:27:06Z AeroNotix: dlowe: neat 2018-09-11T15:28:35Z AeroNotix: although it seems to have a DECENT overhead 2018-09-11T15:28:44Z AeroNotix: though I can't see how else it would encode what it is encoding 2018-09-11T15:28:58Z AeroNotix: 81 bytes for an integer and a symbol 2018-09-11T15:31:15Z nika joined #lisp 2018-09-11T15:31:22Z jinkies joined #lisp 2018-09-11T15:32:16Z AeroNotix: I'm gonna use cl-store until I find something better, though. It's pretty neat. 2018-09-11T15:32:39Z shka_: cl-store is just to convinient 2018-09-11T15:33:10Z shrdlu68 quit (Ping timeout: 272 seconds) 2018-09-11T15:33:35Z jackdaniel: makomo: if <- is a macro, then you can't pass it to a higher order function 2018-09-11T15:34:04Z jackdaniel: so it is enough to say, that <- is a macro (and that should be enough for a Lisp programmer to know, that funcall/apply doesn't, khm, apply here) 2018-09-11T15:34:11Z makomo: jackdaniel: true, but let's say someone just uses it within a local function or a lambda (which might or might not be called eventually) 2018-09-11T15:34:18Z makomo: jackdaniel: hah :-) 2018-09-11T15:34:49Z makomo: for example, something like (let ((func (lambda () (<- a 1)))) ) 2018-09-11T15:35:20Z jackdaniel: also mind, that if you have body like: (progn (foo) (bar) (<- g)) code walker will count *one* <- invocation 2018-09-11T15:35:27Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-11T15:35:34Z jackdaniel: *but* foo and bar may have <- in their body defined elsewhere 2018-09-11T15:35:44Z FreeBirdLjj joined #lisp 2018-09-11T15:36:12Z jackdaniel: and there is no way around that, be it a walker or macroexpansion 2018-09-11T15:36:14Z makomo: yes, that would be a third case of what i'm talking about 2018-09-11T15:36:20Z nika quit (Ping timeout: 272 seconds) 2018-09-11T15:36:44Z makomo: so, global functions, local functions and lambdas (which are almost like local functions in the context of this problem) 2018-09-11T15:37:11Z AeroNotix: shka_: agreed. Nice API as well 2018-09-11T15:37:19Z makomo: jackdaniel: i'm wondering whether to just declare the usage of <- within any of those as invalid/undefined behavior 2018-09-11T15:37:32Z makomo: the case with global functions should definitely be undefined 2018-09-11T15:38:02Z jackdaniel: sure, it is your dsl after all 2018-09-11T15:38:23Z jackdaniel: in your defwhatever macro you may simply macrolet <- , otherwise it is undefined 2018-09-11T15:38:30Z makomo: jackdaniel: yeah, the question is a bit tricky since the constraint really depends on how i want to design the DSL, which requires a bit of domain-specific knowledge to answer properly 2018-09-11T15:39:14Z jackdaniel: I'm sure mrSpec could give you a hint or two on that, but he rarely speaks here ;) 2018-09-11T15:39:15Z fikka joined #lisp 2018-09-11T15:40:00Z jackdaniel: I need to attend some other things, so good luck and see you later 2018-09-11T15:40:06Z makomo: jackdaniel: regarding DSLs in general or hardware-modeling specifically? 2018-09-11T15:40:13Z makomo: jackdaniel: ok, thanks for the input 2018-09-11T15:40:37Z jackdaniel: hardware modelling with lisp dsl 2018-09-11T15:41:01Z makomo: jackdaniel: ah ok 2018-09-11T15:42:54Z Xach: Something has Happened with sdl2 or something related to it 2018-09-11T15:43:31Z Xach: A bunch of failures in http://report.quicklisp.org/2018-09-11/failure-report.html are of the form: Trying to use AUTOCOLLECT without TRIVIAL-GARBAGE 2018-09-11T15:44:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T15:47:29Z gravicappa joined #lisp 2018-09-11T15:49:43Z fikka joined #lisp 2018-09-11T15:50:46Z steiner quit (Remote host closed the connection) 2018-09-11T15:51:01Z kushal quit (Ping timeout: 256 seconds) 2018-09-11T15:51:37Z kushal joined #lisp 2018-09-11T15:52:02Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-11T15:54:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T15:56:21Z igemnace quit (Quit: WeeChat 2.2) 2018-09-11T15:56:28Z rippa joined #lisp 2018-09-11T15:58:35Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-11T15:59:40Z cage_: Xach, reported on #lispgames 2018-09-11T16:00:15Z cage_: the last commit removed trivial-finalizer 2018-09-11T16:07:21Z gpiero quit (Remote host closed the connection) 2018-09-11T16:09:43Z fikka joined #lisp 2018-09-11T16:12:32Z steiner joined #lisp 2018-09-11T16:14:54Z fikka quit (Ping timeout: 264 seconds) 2018-09-11T16:23:27Z smokeink quit (Ping timeout: 252 seconds) 2018-09-11T16:24:38Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-11T16:30:21Z varjag joined #lisp 2018-09-11T16:30:32Z fikka joined #lisp 2018-09-11T16:35:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T16:41:39Z FreeBirdLjj joined #lisp 2018-09-11T16:46:15Z Xach: cage_: thank you. commit to which repo? 2018-09-11T16:50:42Z Xach: cage_: I found it 2018-09-11T16:50:44Z fikka joined #lisp 2018-09-11T16:50:51Z Xach: What should people do? 2018-09-11T16:51:36Z cage_: i can not help much more a note to mfiano has been left 2018-09-11T16:52:20Z cage_: waiting for him 2018-09-11T16:52:28Z Xach: Ok, thanks. 2018-09-11T16:53:02Z cage_: you're welcome 2018-09-11T16:54:59Z aeth: cl-sdl2 is *really* bad with caches. I've had problems with it 3-4 times that were solved by deleting caches for it. I'd delete caches and retry before reporting bugs with it (but that itself might be a bug?) 2018-09-11T16:56:22Z Xach: I suspect this is a bigger problem 2018-09-11T16:56:24Z cage_: aeth, honestly never happened thet to me 2018-09-11T16:56:30Z cage_: *that 2018-09-11T16:56:46Z Bronsa quit (Ping timeout: 272 seconds) 2018-09-11T16:58:09Z cage_: sometimes i got the repl unusable, i mean the input is blocked but i think this was related to ffi 2018-09-11T16:59:03Z cage_: not an expert of graphic libraries but i found cl-sdl2 very useful 2018-09-11T17:02:04Z schweers quit (Ping timeout: 240 seconds) 2018-09-11T17:04:01Z nsrahmad joined #lisp 2018-09-11T17:09:40Z shrdlu68 joined #lisp 2018-09-11T17:09:53Z m00natic quit (Remote host closed the connection) 2018-09-11T17:20:25Z SaganMan joined #lisp 2018-09-11T17:22:27Z shrdlu68 quit (Read error: Connection reset by peer) 2018-09-11T17:25:54Z rtypo joined #lisp 2018-09-11T17:27:54Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-11T17:30:56Z ym quit (Remote host closed the connection) 2018-09-11T17:31:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T17:37:26Z shka_ joined #lisp 2018-09-11T17:40:05Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-11T17:41:23Z graphene quit (Remote host closed the connection) 2018-09-11T17:43:08Z graphene joined #lisp 2018-09-11T17:43:34Z scymtym quit (Ping timeout: 240 seconds) 2018-09-11T17:47:20Z lavaflow quit (Read error: Connection reset by peer) 2018-09-11T17:47:51Z fikka joined #lisp 2018-09-11T17:48:31Z lavaflow joined #lisp 2018-09-11T17:50:59Z AeroNotix: uh, github so slow today. 2018-09-11T17:51:08Z AeroNotix: they're having issues apparently 2018-09-11T17:52:25Z robotoad quit (Ping timeout: 244 seconds) 2018-09-11T17:52:34Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T17:53:36Z nsrahmad quit (Remote host closed the connection) 2018-09-11T17:53:50Z trafaret1 joined #lisp 2018-09-11T17:53:51Z trafaret1: hi there 2018-09-11T17:53:59Z AeroNotix: trafaret1: hello 2018-09-11T17:54:01Z trafaret1: I already asked this question on #emacs 2018-09-11T17:54:16Z trafaret1: I'm working in company which deal with programming PLC controllers 2018-09-11T17:54:43Z trafaret1: About half year ago I'm started learning emacs and fall in love in org-mode 2018-09-11T17:55:06Z trafaret1: and question about does emacs org-mode and lisp replace MS Excel at all 2018-09-11T17:55:14Z trafaret1: for arranding and processing data 2018-09-11T17:55:19Z AeroNotix: trafaret1: that genuinely is an #emacs question 2018-09-11T17:55:27Z AeroNotix: this is #lisp for Common Lisp, see /topic 2018-09-11T17:55:33Z anunnaki joined #lisp 2018-09-11T17:55:52Z AeroNotix: trafaret1: however, there is an emacs spreadsheet-mode. You might find that useful 2018-09-11T17:57:56Z ealfonso joined #lisp 2018-09-11T17:57:56Z dlowe: There's also ##lisp for any Lisp variant 2018-09-11T17:58:15Z fikka joined #lisp 2018-09-11T18:00:47Z slyrus quit (Quit: slyrus) 2018-09-11T18:00:47Z slyrus1 is now known as slyrus 2018-09-11T18:00:50Z moei quit (Quit: Leaving...) 2018-09-11T18:02:34Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T18:04:19Z sz0 joined #lisp 2018-09-11T18:10:04Z slyrus1 joined #lisp 2018-09-11T18:13:00Z scymtym joined #lisp 2018-09-11T18:17:14Z metallicus joined #lisp 2018-09-11T18:17:40Z mfiano: Xach: Myself and a few others have tested the no-finalizers branch for a week after posting about it on Reddit, and given no warnings or errors by multiple people, it was merged yesterday 2018-09-11T18:18:10Z mfiano: If you can provide a test case I can look into it, but it does work for the others that have tried so far 2018-09-11T18:18:28Z fikka joined #lisp 2018-09-11T18:20:46Z dented42 joined #lisp 2018-09-11T18:23:18Z fikka quit (Ping timeout: 264 seconds) 2018-09-11T18:28:32Z fikka joined #lisp 2018-09-11T18:28:46Z sauvin quit (Remote host closed the connection) 2018-09-11T18:30:43Z SaganMan quit (Quit: oyasumi) 2018-09-11T18:30:54Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-11T18:33:14Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T18:36:44Z robotoad joined #lisp 2018-09-11T18:39:35Z dented42 joined #lisp 2018-09-11T18:39:45Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-11T18:39:49Z graphene quit (Read error: Connection reset by peer) 2018-09-11T18:41:57Z nowhere_man joined #lisp 2018-09-11T18:42:03Z dented42 quit (Client Quit) 2018-09-11T18:42:39Z Aritheanie quit (Quit: No Ping reply in 180 seconds.) 2018-09-11T18:46:07Z Aritheanie joined #lisp 2018-09-11T18:47:37Z graphene joined #lisp 2018-09-11T18:48:36Z fikka joined #lisp 2018-09-11T18:48:49Z graphene quit (Remote host closed the connection) 2018-09-11T18:49:57Z rozenglass joined #lisp 2018-09-11T18:51:04Z graphene joined #lisp 2018-09-11T18:51:48Z vlatkoB quit (Remote host closed the connection) 2018-09-11T18:52:11Z lxpz joined #lisp 2018-09-11T18:52:27Z pierpal joined #lisp 2018-09-11T18:53:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T18:58:27Z graphene quit (Read error: Connection reset by peer) 2018-09-11T19:04:53Z graphene joined #lisp 2018-09-11T19:08:51Z fikka joined #lisp 2018-09-11T19:10:18Z eschulte quit (Ping timeout: 252 seconds) 2018-09-11T19:13:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-11T19:14:27Z Jesin quit (Quit: Leaving) 2018-09-11T19:15:32Z astalla joined #lisp 2018-09-11T19:19:13Z pfdietz quit (Ping timeout: 245 seconds) 2018-09-11T19:19:29Z metallicus quit (Remote host closed the connection) 2018-09-11T19:19:45Z fikka joined #lisp 2018-09-11T19:20:37Z graphene quit (Read error: Connection reset by peer) 2018-09-11T19:20:46Z pjb joined #lisp 2018-09-11T19:23:27Z Xach: mfiano: thanks. what does http://report.quicklisp.org/2018-09-11/failure-report/sketch.html#sketch mean? 2018-09-11T19:24:24Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T19:26:18Z pierpal quit (Read error: Connection reset by peer) 2018-09-11T19:26:53Z graphene joined #lisp 2018-09-11T19:26:58Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-11T19:29:57Z fikka joined #lisp 2018-09-11T19:30:11Z nirved quit (Quit: Leaving) 2018-09-11T19:30:38Z nirved joined #lisp 2018-09-11T19:32:47Z shka_ quit (Ping timeout: 240 seconds) 2018-09-11T19:32:58Z shifty quit (Ping timeout: 245 seconds) 2018-09-11T19:33:37Z pierpal joined #lisp 2018-09-11T19:34:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T19:37:37Z mfiano: Xach: it means cl-sdl2-imagr has an error in that it assumes trivial-garbagr is available instead of more correctly depending on it 2018-09-11T19:37:57Z mfiano: i dont mainyain yhat, but i have commit access and pushed a fix 2018-09-11T19:38:16Z pierpal quit (Ping timeout: 272 seconds) 2018-09-11T19:38:29Z mfiano: sorry for typos. on mobile 2018-09-11T19:39:31Z pierpal joined #lisp 2018-09-11T19:39:32Z lnostdal quit (Ping timeout: 272 seconds) 2018-09-11T19:44:39Z cage_ quit (Quit: Leaving) 2018-09-11T19:49:53Z fikka joined #lisp 2018-09-11T19:51:21Z Xach: mfiano: no worries. this affects many projects. 2018-09-11T19:51:46Z lnostdal joined #lisp 2018-09-11T19:51:49Z johnjay: do you guys use SLIME in emacs? 2018-09-11T19:51:58Z Xach: johnjay: i do 2018-09-11T19:52:19Z beach: johnjay: You bet. 2018-09-11T19:52:23Z johnjay: heh ok 2018-09-11T19:52:28Z johnjay: i was trying to figure out what swank was 2018-09-11T19:52:35Z johnjay: and i realized that slime was really popular 2018-09-11T19:52:45Z Xach: johnjay: it's pretty great 2018-09-11T19:54:41Z borodust: what if i want to reexport only some symbols from a certain package, what solutions do I have except for :import-from those symbols and then :export manually later? 2018-09-11T19:54:52Z fikka quit (Ping timeout: 244 seconds) 2018-09-11T19:54:59Z borodust: uiop:define-package doesn't seem to have a solution for that or i missed it 2018-09-11T19:55:27Z Xach: borodust: what do you mean by "manually later"? you can do it in the same defpackage form. 2018-09-11T19:55:37Z borodust: yeah, i meant that 2018-09-11T19:55:42Z borodust: but that's like duplicating the work 2018-09-11T19:55:58Z borodust: i would prefer smth :reexport-from 2018-09-11T19:56:01Z Xach: ?? How is defpackage to know what you want to selectively export otherwise? 2018-09-11T19:56:16Z borodust: see above 2018-09-11T19:56:37Z Xach: borodust: if the symbols are external, you can :use instead. 2018-09-11T19:56:59Z Xach: That seems risky to me if the exports may change 2018-09-11T19:57:05Z borodust: yes, but i would like to avoid importing whole package for that matter 2018-09-11T19:57:33Z johnjay: Xach: ah ok. i was thinking about what an emacs clone in mezzano might look like 2018-09-11T19:57:51Z johnjay: and i thought, well do you have to really use a system a lot to clone it or is it kind of irrelevant 2018-09-11T19:57:56Z Xach: borodust: yes, understandable. i prefer the low-tech way. 2018-09-11T19:57:59Z borodust: Xach: i'm just asking if anyone has a solution for that :p i know it's just a macro away 2018-09-11T19:58:00Z johnjay: like, you don't have to use a tractor to repair the engine, you know what im' saying? 2018-09-11T19:58:22Z pjb: borodust: if copy-and-paste of the list of symbol names seems untasty for you, you can always use #1=(…) and #1# in the defpackage form! 2018-09-11T19:58:32Z borodust: pjb: ;p 2018-09-11T19:58:50Z borodust: that actually quite a way :D 2018-09-11T19:58:53Z pjb: (defpackage … (:import-from "P" . #1=("S1" …)) (:export . #1#)) 2018-09-11T19:59:22Z borodust: still a bit uglyish 2018-09-11T19:59:28Z beach: johnjay: It might look like (first) Climacs or Second Climacs. 2018-09-11T19:59:31Z pjb: Then you can use conduits. 2018-09-11T19:59:37Z pjb: or define your own conduit macro. 2018-09-11T19:59:57Z pjb: https://quickref.common-lisp.net/conduit-packages.html 2018-09-11T20:00:10Z terpri quit (Remote host closed the connection) 2018-09-11T20:00:30Z johnjay: "Many design choices of Climacs are based more on the editor of the Genera operating system, Zmacs, and the other original Lisp emacsen, such as Hemlock, than on GNU Emacs. " 2018-09-11T20:00:36Z terpri joined #lisp 2018-09-11T20:01:00Z beach: johnjay: I wrote that? Oh my! 2018-09-11T20:01:12Z beach: johnjay: Note that Second Climacs is not usable yet. 2018-09-11T20:01:30Z johnjay: beach: if you're the author of climacs... then yes? 2018-09-11T20:01:33Z borodust: pjb: hmm, interesting, thanks 2018-09-11T20:01:43Z beach: johnjay: I can't believe I wrote "emacsen". 2018-09-11T20:02:19Z beach: johnjay: And I know very little about Zmacs, so I would be surprised if I wrote that too. 2018-09-11T20:03:16Z beach: johnjay: It looks like people are putting words in my mouth. 2018-09-11T20:04:08Z johnjay: beach: there's soem papers at the bottom about syntax analysis in climacs 2018-09-11T20:04:14Z johnjay: i guess those coauthors are them 2018-09-11T20:04:35Z pjb: beach: that's the standard plural for emacs. 2018-09-11T20:04:41Z johnjay: the funny thing is i'm trying to figure out how to download and install it. the INSTALL file says we assume you have already obtained the tar or cvs sources 2018-09-11T20:05:01Z beach: pjb: I know, but I never use it. 2018-09-11T20:05:17Z beach: johnjay: I see yes. I didn't write that page. 2018-09-11T20:05:41Z johnjay: i'm referring to this: https://common-lisp.net/project/climacs/#installation 2018-09-11T20:06:22Z beach: johnjay: Try (ql:quickload "climacs") 2018-09-11T20:07:14Z graphene quit (Read error: Connection reset by peer) 2018-09-11T20:07:22Z beach: ... then (climacs:climacs) 2018-09-11T20:07:41Z johnjay: that seems to be working 2018-09-11T20:07:50Z johnjay: whatever this quicklisp thing is it seems to work really well 2018-09-11T20:08:01Z beach: I agree. 2018-09-11T20:08:22Z johnjay: so you helped write the original climacs i take it? 2018-09-11T20:08:22Z beach: (first) Climacs has been around for some time, so it is naturally in Quicklisp. 2018-09-11T20:08:36Z beach: I am the original author, yes. 2018-09-11T20:08:50Z johnjay: it's installing mcclim now 2018-09-11T20:08:52Z johnjay: that's cool 2018-09-11T20:08:55Z graphene joined #lisp 2018-09-11T20:09:21Z beach: Once we had McCLIM working, I challenged the community. "So now that we have McCLIM, it could not be too hard to write an Emacs clone, now could it". 2018-09-11T20:09:46Z gpiero joined #lisp 2018-09-11T20:10:15Z fikka joined #lisp 2018-09-11T20:10:19Z beach: Then Athas extracted the Common Lisp mode to "Drei", the input editor of McCLIM. 2018-09-11T20:10:29Z johnjay: hrm, got an error when getting mcclim compiled. RENDER-SET-IMAGE-TRANSFORM is not external in the XLIB package 2018-09-11T20:10:47Z johnjay: error in clx-image.lisp 2018-09-11T20:11:07Z beach: I don't get that error. Sorry this is happening to you. 2018-09-11T20:11:20Z beach: You may want to ask jackdaniel. 2018-09-11T20:11:29Z slyrus1: is it possible you have an old version of xlib? 2018-09-11T20:11:36Z beach: Maybe you need to update CLX? 2018-09-11T20:11:36Z slyrus1: clx 2018-09-11T20:11:40Z slyrus1: yeah 2018-09-11T20:12:29Z beach: like (ql:update-all-the-systems-that-I-have-installed) or whatever it's called. 2018-09-11T20:14:31Z johnjay: oh ok 2018-09-11T20:14:37Z johnjay: i thought maybe i needed to update sbcl 2018-09-11T20:14:46Z johnjay: so i downloaded it and am compiling atm. 2018-09-11T20:14:54Z beach: That should not be necessary. 2018-09-11T20:15:03Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T20:15:32Z beach: I have used McCLIM with very old SBCL versions, and in fact a recent SBCL commit broke McCLIM as I recall slyrus said. 2018-09-11T20:15:58Z johnjay: is the command (ql:update-dist "quicklisp") appropriate? 2018-09-11T20:16:18Z beach: that or update-all-dists or something like that. 2018-09-11T20:16:28Z nowhereman joined #lisp 2018-09-11T20:16:39Z nowhere_man quit (Read error: Connection reset by peer) 2018-09-11T20:17:40Z johnjay: ah ok. can i do that while it's using sbcl to compile sbcl? 2018-09-11T20:18:09Z beach: I wouldn't know. 2018-09-11T20:18:11Z beach: Sorry. 2018-09-11T20:18:43Z johnjay: oh ok 2018-09-11T20:18:57Z johnjay: yeah it's no problem, that jackdaniels guy might know and i'll be around 2018-09-11T20:19:10Z dlowe: you won't get the compilation from the newer sbcl 2018-09-11T20:20:48Z beach: johnjay: It is clear from the way you refer to jackdaniel, that you have not been attending ELS regularly. 2018-09-11T20:21:00Z fikka joined #lisp 2018-09-11T20:21:02Z beach: Those of use who do attend, know him very well. 2018-09-11T20:21:10Z beach: those of us 2018-09-11T20:22:08Z johnjay: beach: i'm just a lowly novice, indeed. elisp and scheme are where i first encountered lisp 2018-09-11T20:22:56Z beach: johnjay: Then take my advice, go to ELS in Genoa in April. It will change your life. 2018-09-11T20:23:44Z johnjay: the city looks great from what i see of it 2018-09-11T20:24:06Z beach: Yes, except for the bridge that collapsed recently. 2018-09-11T20:24:38Z johnjay: is ELS anything like 34c3? 2018-09-11T20:24:39Z beach: johnjay: You will have tons of new friends that you can visit, or that might come visit you. You might be invited to dinner during ELS. etc. 2018-09-11T20:24:40Z johnjay: or is it more casual 2018-09-11T20:25:08Z j`ey: that was in spain this year, right? 2018-09-11T20:25:18Z beach: Yes. 2018-09-11T20:25:27Z graphene quit (Remote host closed the connection) 2018-09-11T20:25:32Z j`ey: I think it was the same dates as the Euro LLVM conf 2018-09-11T20:25:48Z beach: johnjay: I have no idea what 34c3 might be. ELS is very informal, though it *is* an academic conference, so the papers are peer reviewed. 2018-09-11T20:25:49Z johnjay: ah this must be the videos from 2 years ago: https://www.youtube.com/channel/UC55S8D_44ge2cV10aQmxNVQ/videos 2018-09-11T20:26:49Z j`ey: no videos from this year? 2018-09-11T20:27:05Z graphene joined #lisp 2018-09-11T20:27:06Z dented42 joined #lisp 2018-09-11T20:27:14Z dented42 quit (Client Quit) 2018-09-11T20:27:17Z beach: Not yet. You should poke the people at Ravenpack. 2018-09-11T20:27:36Z johnjay: beach: c3 is a popular hacker conference that happened this year, it's sort of like defcon in the US but it's in germany 2018-09-11T20:27:38Z johnjay: https://en.wikipedia.org/wiki/Chaos_Communication_Congress 2018-09-11T20:28:06Z johnjay: i wouldn't call it "academic" exactly, although several speakers are 2018-09-11T20:28:32Z beach: johnjay: Then that sounds very different. 2018-09-11T20:28:40Z mindCrime quit (Ping timeout: 246 seconds) 2018-09-11T20:28:50Z beach: For one thing, ELS is Lisp only (though not just Common Lisp) 2018-09-11T20:28:58Z johnjay: ah i think this is you? https://www.youtube.com/watch?v=ZJr81DtSwUc 2018-09-11T20:29:25Z beach: That's me, right. 2018-09-11T20:29:27Z mindCrime joined #lisp 2018-09-11T20:30:11Z beach: ELS is about Lisp, and it is a peer-reviewed conference with respect to scientific contents. 2018-09-11T20:31:02Z beach: It is no highly-filtering (around 50% of papers accepted) so it is not competitive. 2018-09-11T20:31:12Z beach: Just not accepting anything. 2018-09-11T20:32:28Z johnjay: cool 2018-09-11T20:33:23Z kooga quit (Quit: :) 2018-09-11T20:34:03Z beach: The important piece of information (that surprises people who are not used to it) is that a conference is not mainly for authors to present papers to people in the audience, but for people to meet other people. 2018-09-11T20:35:11Z dyelar quit (Remote host closed the connection) 2018-09-11T20:35:45Z slyrus1 quit (Quit: slyrus1) 2018-09-11T20:35:52Z beach: Most people in the audience of my talk were perhaps thinking "yawn, why the hell is he re-implementing LOOP? But he's a cool guy. I'll try to sit at his table during the conference dinner. I know he will pay the bill." 2018-09-11T20:36:18Z LdBeth: GG 2018-09-11T20:36:29Z j`ey: to meet other people and get bought dinner by them :P 2018-09-11T20:36:41Z beach: Exactlly. 2018-09-11T20:36:49Z beach: Exactly, even. 2018-09-11T20:36:49Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-11T20:38:13Z beach: ELS is a mixture of people with solid employment and people in flux, like students. In fact ELS has a very good student rate. 2018-09-11T20:38:35Z LdBeth: Does MIT ver LOOP supports users’ custom extensions? 2018-09-11T20:39:53Z beach: j`ey: So if you are a person i flux and you find yourself at a table with people like me, Xof, splittist, etc., it is likely that you will be offered a large part of your share of the bill. 2018-09-11T20:40:07Z beach: in flux 2018-09-11T20:41:13Z j`ey: unless ELS was in the UK, and stylewarning was there, I'm not into CL enough yet to go :P 2018-09-11T20:44:06Z beach: Sorry to hear that. stylewarning will likely be in Genoa, though. 2018-09-11T20:44:11Z stylewarning: Italy next year! 2018-09-11T20:44:21Z Bike: LdBeth: yeah. dunno how to use it, though. 2018-09-11T20:44:41Z j`ey: if stylewarning pays for the flights 2018-09-11T20:44:51Z cobax joined #lisp 2018-09-11T20:45:17Z beach: j`ey: froggey is creating a crowdfunding site to go. You should do the same. 2018-09-11T20:45:26Z Jesin joined #lisp 2018-09-11T20:46:11Z j`ey: hah, we'll see if I stick with CL. 2018-09-11T20:46:32Z beach: I am definitely going to contribute to froggey. I don't know you well enough to decide yet. 2018-09-11T20:46:57Z j`ey: money isn't the real issue :) 2018-09-11T20:47:21Z beach: That answer solves one problem then. Thanks. 2018-09-11T20:47:26Z j`ey: :P 2018-09-11T20:48:00Z beach: It sounded like it when you said "if stylewarning pays for the flights" 2018-09-11T20:48:22Z j`ey: just a joke! 2018-09-11T20:48:35Z beach: Lost on IRC. 2018-09-11T20:48:35Z makomo: j`ey: i've been complaining about the videos for some time now. :-) i've emailed didier verna about it, but it turns out he's the wrong person to ask. he did tell me he would try and put some pressure on the people in charge of the videos though 2018-09-11T20:48:52Z makomo: j`ey: i was thinking of mailing Ravenpack (as suggested by beach) soon -- didn't get around to it yet. 2018-09-11T20:49:00Z beach: Poor Didier. 2018-09-11T20:49:02Z makomo: i could let you know and you could do the same :-) 2018-09-11T20:49:11Z makomo: beach: hah :-) 2018-09-11T20:49:29Z rumbler31 joined #lisp 2018-09-11T20:49:45Z makomo: oh, to be clear, i've only emailed him once. i meant that i complained to #lisp about it :-D 2018-09-11T20:50:08Z rumbler31 quit (Remote host closed the connection) 2018-09-11T20:50:28Z beach: Every conference has a "person totally in charge", a "program chair" and a "local chair". 2018-09-11T20:50:41Z beach: Didier Verna is currently 1. 2018-09-11T20:50:54Z beach: The others change every year. 2018-09-11T20:51:30Z beach: 3 was Ravenpack this year. 2018-09-11T20:51:48Z beach: There is very little 1 can do to force 3 to do the work. 2018-09-11T20:52:21Z slyrus1 joined #lisp 2018-09-11T20:53:00Z makomo: beach: mhm. it wasn't very clear to me what their roles are and what the relationship between 1 and 3 is 2018-09-11T20:53:16Z beach: More clear now? 2018-09-11T20:53:26Z pierpa joined #lisp 2018-09-11T20:53:28Z beach: When a 3 accepts to do it, we go "oh, wonderful, thank you, thank you" 2018-09-11T20:53:41Z makomo: beach: more or less. but how is then 1 "totally in charge" :-) 2018-09-11T20:54:00Z beach: He doesn't have much power really. :( 2018-09-11T20:54:14Z beach: The local organizers do it for free. 2018-09-11T20:54:25Z beach: So we can't really put pressure on them. 2018-09-11T20:54:35Z makomo: oh, do the tickets for ELS cost anything? 2018-09-11T20:54:45Z beach: they do, but very very little 2018-09-11T20:55:03Z beach: It is just to cover the meals and perhaps the rent of the venue. 2018-09-11T20:55:08Z makomo: ah, i see. and the other companies listed on the webpage help out by sponsoring the local organizer then? 2018-09-11T20:55:12Z beach: Often, we get the venue for free. 2018-09-11T20:55:25Z beach: makomo: Correct. 2018-09-11T20:56:09Z beach: The student free is so low it often does not even cover the cost of the meals included. 2018-09-11T20:56:30Z beach: ELS is one of the best conferences in this respect. 2018-09-11T20:57:34Z johnjay: beach: do you know of any currently active projects in CL, other than mezzano? 2018-09-11T20:58:10Z beach: johnjay: Is this a joke? 2018-09-11T20:58:15Z AeroNotix: hmm, very interesting. Just realised that ELS lines up perfectly next year with my intended cross-Balkans drive 2018-09-11T20:58:37Z beach: johnjay: there are tons of active Common Lisp projects. 2018-09-11T20:58:42Z makomo: beach: ah, ok 2018-09-11T20:58:43Z AeroNotix: I can't believe I missed the one in Krakow. 2018-09-11T20:58:52Z AeroNotix: I literally walked past the venue. Had so much work on 2018-09-11T20:59:53Z beach: AeroNotix: You might convince phoe to organize it in Krakow as he has hinted. 2018-09-11T21:00:03Z beach: AeroNotix: Perhaps even help him out. 2018-09-11T21:00:12Z housel: johnjay: See, for instance, http://blog.quicklisp.org/2018/08/new-projects-cari3s-generator-for-i3.html 2018-09-11T21:00:24Z AeroNotix: I need to get my health in order before I take any on any tasks that people would depend on me for 2018-09-11T21:00:41Z johnjay: housel: thanks didn't know there was a quicklisp blog 2018-09-11T21:01:09Z AeroNotix: johnjay: not sure if github still expose that feature where you can filter projects by language and age of commit 2018-09-11T21:01:14Z AeroNotix: or by language and popularity 2018-09-11T21:01:45Z johnjay: age of last commit? 2018-09-11T21:01:46Z beach: makomo: For instance, Martin Simmons is a sponsor of ELS, a regular attendant, a nice guy to have dinner with, etc. 2018-09-11T21:02:04Z AeroNotix: johnjay: yeah 2018-09-11T21:02:38Z johnjay: they have a "Recently Updated" option in the search box 2018-09-11T21:02:39Z beach: makomo: Oh, and he is the president of LispWorks. 2018-09-11T21:03:00Z johnjay: the latest 4 minutes ago is rakugobot/shibuyarakugo-parser, a html parser for eurolive.jp 2018-09-11T21:03:35Z AeroNotix: johnjay: there you go, find something that interests you that way 2018-09-11T21:06:31Z AeroNotix: https://github.com/search?l=&q=language%3A%22Common+Lisp%22&type=Issues haha, could be a useful thing to just spend a few hours hammering through issues here 2018-09-11T21:07:27Z gravicappa quit (Ping timeout: 252 seconds) 2018-09-11T21:08:21Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-11T21:08:45Z astalla quit (Ping timeout: 244 seconds) 2018-09-11T21:10:48Z makomo: beach: it's really nice how a community "feels" different depending on its size. since the lisp community is relatively small, you feel a greater sense of "connectedness" i would say. on the other hand, having a big community has its ups too, like having a bigger ecosystem or similar 2018-09-11T21:14:41Z AeroNotix: How many people typically attend an ELS? 2018-09-11T21:19:21Z mindCrime quit (Ping timeout: 252 seconds) 2018-09-11T21:19:26Z Roy_Fokker joined #lisp 2018-09-11T21:20:27Z graphene quit (Remote host closed the connection) 2018-09-11T21:21:58Z graphene joined #lisp 2018-09-11T21:22:14Z bradcomp joined #lisp 2018-09-11T21:22:30Z AeroNotix: I've come to appreciate :package-inferred-system and every-file-is-a-system organization 2018-09-11T21:23:02Z no-defun-allowed: Good morning everyone! 2018-09-11T21:23:18Z Xach: AeroNotix: between 50 and 100 2018-09-11T21:23:28Z AeroNotix: no-defun-allowed: o7 2018-09-11T21:23:36Z AeroNotix: Xach: neat 2018-09-11T21:24:50Z no-defun-allowed: I can't find Lisp meetups in Australia's 2018-09-11T21:25:35Z Xach: no-defun-allowed: there is one every day in #lisp where distance is no object (although time can be) 2018-09-11T21:25:50Z no-defun-allowed: *Australia. The closest thing is a "functional programmer meetup" and it's probably just Haskell people jerking each other off and they haven't done anything regular for a year. 2018-09-11T21:25:53Z no-defun-allowed: (no, it's not a yearly thing) 2018-09-11T21:25:56Z no-defun-allowed: Fine 2018-09-11T21:26:47Z johnjay: no-defun-allowed: that sounds like the least attrative haskell meetup i can think of 2018-09-11T21:27:12Z no-defun-allowed: It probably is 2018-09-11T21:27:18Z moei joined #lisp 2018-09-11T21:27:48Z no-defun-allowed: "Listen to some people talk about type theory" haha yes, that's all FP is. Fuck outta here with first class functions and other stuff, it's all types 2018-09-11T21:29:19Z no-defun-allowed: Anyways, Lisp isn't fp, blah blah, there's no meetups. There's no meetups in general around here. 2018-09-11T21:30:27Z aeth: no-defun-allowed: Common Lisp has types, too. 2018-09-11T21:31:26Z no-defun-allowed: Yes but it's not the most important part of Lisp. 2018-09-11T21:31:57Z aeth: The most important part of Common Lisp depends on what you're doing, and that's the point of Common Lisp imo. 2018-09-11T21:32:00Z no-defun-allowed: Of course type inference is always good but it's probably a bad idea to bring Lisp in if everyone is talking types. 2018-09-11T21:32:40Z no-defun-allowed: Once I went into #haskell asking about how to write an article on functional programming and I was attacked for not knowing any Haskell and only Scheme. That wasn't very nice. 2018-09-11T21:33:14Z no-defun-allowed: Sorry, something slipped here. 2018-09-11T21:33:15Z no-defun-allowed: Of course type inference is always good but it's probably a bad idea to bring Lisp in if everyone is talking types. 2018-09-11T21:34:51Z aeth: It goes far beyond type inference. 2018-09-11T21:35:29Z no-defun-allowed: Yes, then ML weirdos use type to prove their programs will run and so forth. 2018-09-11T21:36:06Z aeth: CL probably has the richest type system of any dynamically typed language and is probably one of the first to support optional gradual typing. The main weakness with respect to types is probably non-generic data structures. 2018-09-11T21:36:07Z no-defun-allowed: https://www.meetup.com/en-AU/Melbourne-Functional-User-Group-MFUG/ 2018-09-11T21:36:35Z aeth: You could use the type system in CL to do most of what the ML-derived languages do as far as using types for reliability. 2018-09-11T21:37:50Z aeth: I'd say the main problem is that half of that will only work on SBCL and about 0% of it will work on CLISP (okay, check-type probably works there), with the other implementations somewhere between CLISP and SBCL. 2018-09-11T21:37:53Z no-defun-allowed: That is true but it's not their way of doing types. 2018-09-11T21:38:23Z aeth: no-defun-allowed: Yes, the CL type system is superior. For one, you don't need a graduate degree in mathematics. 2018-09-11T21:38:39Z no-defun-allowed: That is very true. 2018-09-11T21:38:41Z aeth: For another, it's optional. 2018-09-11T21:38:45Z Bike quit (Ping timeout: 252 seconds) 2018-09-11T21:39:01Z aeth: And attacking Haskell in particular, CL isn't lazy and doesn't demand immutability in most areas. 2018-09-11T21:39:15Z no-defun-allowed: (If the Haskell people realise they didn't need their PhDs to write functional programs, they'd be very upset.) 2018-09-11T21:40:20Z pjb: You wouldn't believe the number of PhDs that have been written, just by ignoring lisp. 2018-09-11T21:40:43Z wheelsucker quit (Remote host closed the connection) 2018-09-11T21:41:27Z no-defun-allowed: Enough said about them then. 2018-09-11T21:41:42Z aeth: There are probably places where modern ML-like/Haskell-like languages can do more things with types than CL. I'd like to know those so CL's type system can be extended. 2018-09-11T21:41:47Z no-defun-allowed: Someone said I should start one then, but I don't know anyone who would go and I've got no money 2018-09-11T21:42:06Z aeth: The CL way to handle a new paradigm is to glue it to the existing Lisp language and pretend like it was there the whole time. 2018-09-11T21:42:13Z aeth: I don't know why everyone wants to create new languages. 2018-09-11T21:42:42Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-11T21:43:02Z aeth: If ML-like/Haskell-like languages have something to offer as far as type systems go (and they almost certainly do), extend Lisp and keep the 60 year old tradition going. It worked with OOP. 2018-09-11T21:43:18Z aeth: And it'll work with whatever new paradigms come along, too. 2018-09-11T21:43:57Z aeth: (I'm not proposing a new standard. CLOS started out as several non-standard extensions to CL, not as part of the standard. It would probably take 5-10 years for it to be worthy of being standard.) 2018-09-11T21:44:58Z trafaret1 quit (Ping timeout: 246 seconds) 2018-09-11T21:46:17Z dented42 joined #lisp 2018-09-11T21:46:17Z dented42 quit (Client Quit) 2018-09-11T21:47:42Z no-defun-allowed: I'm not sure where people do meetups around here either. 2018-09-11T21:53:12Z anewuser joined #lisp 2018-09-11T21:55:34Z atgreen_ quit (Ping timeout: 240 seconds) 2018-09-11T22:01:06Z LdBeth: Seems not many fp people interested in integrate OOP 2018-09-11T22:02:49Z pjb: Ocaml. 2018-09-11T22:03:29Z AeroNotix: Squint at it hard enough and Erlang is OOP :) 2018-09-11T22:04:34Z LdBeth: Ocaml or Scala have industrial backgrounds, I think 2018-09-11T22:05:07Z robotoad quit (Ping timeout: 240 seconds) 2018-09-11T22:05:35Z lavaflow quit (Ping timeout: 244 seconds) 2018-09-11T22:10:20Z lavaflow joined #lisp 2018-09-11T22:14:19Z vydd joined #lisp 2018-09-11T22:15:09Z jasom: LdBeth: It's from INRIA, which is a research institute. 2018-09-11T22:15:15Z jasom: LdBeth: OCaml that is 2018-09-11T22:16:43Z jasom: And scala is from EPFL 2018-09-11T22:18:21Z AeroNotix: I found OCaml far easier and more practical than Haskell 2018-09-11T22:19:54Z no-defun-allowed: i think that was the idea 2018-09-11T22:21:29Z aeth: AeroNotix: Because it is. 2018-09-11T22:22:17Z graphene quit (Remote host closed the connection) 2018-09-11T22:23:08Z Bike joined #lisp 2018-09-11T22:23:34Z no-defun-allowed: frankly though, if you force your users to specify variable types without a good reason (it's absolutely not inferable, multiple dispatch exists in your lang) and you're doing static typing nowadays, you did something wrong 2018-09-11T22:23:52Z graphene joined #lisp 2018-09-11T22:24:03Z johnjay: aeth: is your git repo the one called aejsmith? 2018-09-11T22:24:10Z johnjay: it was referenced from mezzano i think for kboot 2018-09-11T22:24:18Z aeth: johnjay: no 2018-09-11T22:24:34Z johnjay: ok. i guess 2 characters is not that much to go on 2018-09-11T22:25:00Z aeth: I don't think it's controversial that some languages are hard to learn than others. (Devil's advocate: You only have to learn a language once.) 2018-09-11T22:25:15Z aeth: s/hard to learn/harder to learn/ 2018-09-11T22:25:31Z AeroNotix: aeth: I wasn't being controversial. I was just throwing it out there as a jumping off point 2018-09-11T22:25:52Z AeroNotix: aeth: your devil's advocate is technically correct but also technically wrong 2018-09-11T22:26:36Z AeroNotix: aeth: http://scottmeyers.blogspot.com/2018/09/the-errata-evaluation-problem.html 2018-09-11T22:26:38Z aeth: johnjay: You'll find many name conflicts even with 'aeth'. I like that because in today's world if you use a unique name you'll find far too much too quickly. 2018-09-11T22:26:41Z AeroNotix: here's a post which explains it nicely 2018-09-11T22:27:00Z AeroNotix: talking about name conflicts, to tag aeth it usually takes me 3-4 times not to tab complete to my self 2018-09-11T22:27:08Z pjb: aeth: that's wrong. you have to learn some languages each time you use them. For example C++. 2018-09-11T22:27:13Z AeroNotix: pjb: agreed 2018-09-11T22:27:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-11T22:29:17Z fikka joined #lisp 2018-09-11T22:29:57Z aeth: AeroNotix: C++ is a language that's hard to *use*. One could argue that Haskell is a language that's hard to *learn*. But this is getting very off-topic. 2018-09-11T22:30:15Z AeroNotix: well it ties into the fact that CL is relatively easy to learn and easy to remember 2018-09-11T22:30:16Z AeroNotix: at least for me 2018-09-11T22:30:35Z LdBeth: The more you learned, the easier the rest to learn 2018-09-11T22:30:40Z AeroNotix: indeed 2018-09-11T22:30:52Z AeroNotix: it all logically seems to fit together, designed flowing together as a cohesive unit 2018-09-11T22:31:10Z AeroNotix: whereas most languages are all just a series of deviations from a central theme 2018-09-11T22:31:18Z aeth: AeroNotix: There are probably lots of corners of CL that you don't know that you don't know. 2018-09-11T22:31:44Z aeth: CL does simplify things by having a very minimal syntax, though. 2018-09-11T22:31:51Z johnjay: AeroNotix: that errata link is interesting, what's the context be hind it? 2018-09-11T22:31:53Z johnjay: *behind 2018-09-11T22:31:57Z aeth: Nothing's worse than having to switch between 5 syntaxes in one program 2018-09-11T22:32:05Z aeth: Only Lispers see this as a problem. 2018-09-11T22:32:30Z AeroNotix: aeth: indeed, I'm absolutely sure of it. The metaobject protocol is something I've literally never used, ever, or even looked into. 2018-09-11T22:32:44Z aeth: Switching syntaxes quickly is the source of bugs even if you *know* all of the syntaxes thoroughly 2018-09-11T22:32:49Z AeroNotix: johnjay: just the fact that C++ is a write only language 2018-09-11T22:33:04Z johnjay: as in you cant' read it? 2018-09-11T22:33:14Z AeroNotix: johnjay: have you ever tried to read it? 2018-09-11T22:33:18Z AeroNotix: it's gibberish 2018-09-11T22:33:51Z johnjay: oh ok. i thought the idea of that post was that scott was just getting old and couldn't concentrate 2018-09-11T22:33:51Z LdBeth: Pretty much algorithms written in C++ 2018-09-11T22:33:54Z johnjay: as opposed to, c++ sux 2018-09-11T22:34:01Z LdBeth: But notmuch in CL 2018-09-11T22:34:56Z LdBeth: I mean books 2018-09-11T22:35:05Z aeth: I'd say the main problem with C++ is syntax inherited from C. For instance, pointers. People have trouble "learning pointers". Pointers aren't hard to understand if you can understand arrays (imo). C *syntax* for pointers is hard. 2018-09-11T22:35:26Z aeth: But in general, having to learn syntax to learn features seems wrong. 2018-09-11T22:35:33Z aeth: And many people do confuse the feature with the syntax. 2018-09-11T22:35:54Z AeroNotix: johnjay: his immediate problem is that he has lost interest but the bigger problem is that, despite being a world renowned C++ expert for years (really, his books are great) he cannot easily read C++ and understand immediately what it does. 2018-09-11T22:37:12Z aeth: AeroNotix: several years after stopping using C++ 2018-09-11T22:37:21Z LdBeth: Forth: DO THIS 2018-09-11T22:37:21Z LdBeth: Lisp: (SEND :DO THIS) 2018-09-11T22:39:00Z AeroNotix: aeth: sure, several years. 2018-09-11T22:39:31Z aeth: AeroNotix: REPL oriented languages like CL seem superior for this sort of thing in general, though. If I want to figure something out in C or C++ or Java, I have to write a skeleton file with all of the necessary boilerplate to get it working. In CL, it usually (but not always) can be done in the REPL. 2018-09-11T22:40:07Z Essadon quit (Quit: Qutting) 2018-09-11T22:41:05Z aeth: (REPLs exist for all of those languages, but it's not going to help for several reasons. One, the language isn't really designed for REPL usage. Two, those are almost always interpreters that might behave differently in strange corner cases. In SBCL, the REPL just compiles it for you.) 2018-09-11T22:41:32Z LdBeth: REPL is integrated into language design 2018-09-11T22:42:36Z nostoi joined #lisp 2018-09-11T22:43:21Z aeth: What's great about SBCL is that I can disassemble it and see the generated, commented assembly! (DISASSEMBLE isn't guaranteed to work, and only SBCL comments it afaik.) 2018-09-11T22:44:25Z aeth: If there are two ways to write something, I sometimes write a foo and a bar with each approach, disassemble them, and see if there's a difference or not. 2018-09-11T22:46:14Z LdBeth: That’s also could be viewed as a sad fact because people don’t trust the compiler 2018-09-11T22:46:25Z aeth: Is there a way to disassemble a method? I assume that it's a lambda stored with into an object created by defgeneric, or something close to that. 2018-09-11T22:47:02Z aeth: I think I've managed to get to the asm via the SLIME inspector before, but that's not ideal. 2018-09-11T22:47:40Z aeth: s/stored with into/stored with or into/ 2018-09-11T22:48:56Z pjb: aeth: nope, most implementations insert comments in disassemble output. 2018-09-11T22:49:25Z aeth: pjb: not as many or as frequently as SBCL, or at least last time I checked 2018-09-11T22:49:47Z aeth: At the very least, SBCL seems to comment everything of interest 2018-09-11T22:49:55Z aeth: Allocations, function calls, etc. 2018-09-11T22:50:03Z AeroNotix: When disassemble outputs the addresses of functions/constants, can I use those addresses somewhere to access the object via the pointer rather than the symbol? Always wondered this 2018-09-11T22:50:25Z Bike: through internal internals, yeah 2018-09-11T22:50:35Z Bike: it'll end in tears 2018-09-11T22:50:55Z aeth: AeroNotix: I don't think you can assume that addresses stay constant because of the GC unless it's an object intended for CFFI, in which case it will probably be at a fixed location to prevent problems on the C side. 2018-09-11T22:51:44Z aeth: (Although recompiling functions for that probably would be noticable so it probably doesn't happen.) 2018-09-11T22:51:48Z AeroNotix: If it's comparing constants, I'd assume it could keep those around in specific places 2018-09-11T22:52:09Z AeroNotix: keywords, for example. 2018-09-11T22:52:20Z Bike: maybe it does, maybe it doesn't 2018-09-11T22:52:40Z Bike: keywords aren't usually accessed from foreign code, so there's no big reason to specially keep them pinned 2018-09-11T22:52:45Z AeroNotix: indeed, all implementation specific any way 2018-09-11T22:53:12Z aeth: Bike: How do symbols generally work? It's intentionally unspecified, but I wouldn't be surprised if there's a general implementation strategy. 2018-09-11T22:53:20Z Bike: what do you mean "how do they work" 2018-09-11T22:53:56Z Bike: like how are they laid out in memory? 2018-09-11T22:54:27Z aeth: In my head I sort of treat symbols like global enums. So 'foo is really 'my-package::foo which is really 3456673 or something. And I assume that's resolved at compile time if possible (so (whatever :foo) is really working with a fixnum which I cannot directly access) 2018-09-11T22:54:54Z Bike: why on earth 2018-09-11T22:54:57Z White_Flame: a symbol is just an object reference... 2018-09-11T22:55:07Z aeth: Bike: That's an incorrect understanding of it? 2018-09-11T22:55:14Z Bike: i don't know of any implementation doing that 2018-09-11T22:55:17Z Bike: and i don't see any reason to do that 2018-09-11T22:55:23Z White_Flame: or at least, a slot "holding" a symbol should be indistinguishable from "holding" any boxed object 2018-09-11T22:55:52Z White_Flame: the only special handling that constrains symbols is the symbol-cons equivalence of NIL 2018-09-11T22:56:04Z aeth: White_Flame: so it's just a pointer to an address and usually the address is all that matters because you're mostly using it for EQ? 2018-09-11T22:56:05Z Bike: that doesn't even have to be special 2018-09-11T22:56:06Z AeroNotix: aeth: strangely that's kind of how atoms work in Erlang (which keywords are analogous to) 2018-09-11T22:56:13Z Bike: it is in sbcl, but it's not a requirement 2018-09-11T22:56:34Z Bike: aeth: occasionally the data in the pointer, such as pointers to the symbol-name, is useful 2018-09-11T22:56:44Z Bike: "the data pointed to" whatever 2018-09-11T22:57:03Z White_Flame: aeth: the raw "address" also usually has tag bits 2018-09-11T22:57:33Z White_Flame: but it's usually a pointer to an object, not necessarily a pointer to an address 2018-09-11T22:58:00Z White_Flame: or are you asking about symbol-value bindings and how those are looked up, rather than the symbol object itself? 2018-09-11T23:01:59Z nostoi quit (Quit: Verlassend.) 2018-09-11T23:06:00Z fikka quit (Ping timeout: 272 seconds) 2018-09-11T23:06:22Z jinkies quit (Ping timeout: 250 seconds) 2018-09-11T23:07:41Z razzy quit (Remote host closed the connection) 2018-09-11T23:13:50Z jasom: aeth: The way they are usually implemented is that :foo will be resolved to a pointer, but every time you have :foo appear in your code it gets resolved to the *same* pointer, so you can compare just by checking if the pointers are equal (no need to dereference them). 2018-09-11T23:15:04Z White_Flame: and if GC moves the :FOO symbol object on the heap, all pointers referring to it will be updated during stop-the-world 2018-09-11T23:15:07Z jasom: Bike: there are reasons to resolve symbols to an index in a table rather than a pointer, and it involves moving GC and hash-tables. 2018-09-11T23:15:45Z White_Flame: also thread-local binding slots 2018-09-11T23:16:07Z jasom: Bike: that being said, I'm not sure if any implementations do this. 2018-09-11T23:16:58Z White_Flame: are the issues with symbols + GC + hashtables any different than normal objects + GC + hashtables? Presuambly you're talking about EQ hashtables 2018-09-11T23:17:22Z White_Flame: (or EQL, equivalently with objects) 2018-09-11T23:19:04Z jasom: White_Flame: well symbols are very commonly used as keys in hashtables 2018-09-11T23:19:35Z jasom: an eql hashtable that isn't indexed by a symbol or a number would be rare (maybe character?) 2018-09-11T23:20:06Z White_Flame: I always seem to have composite objects as hash tables 2018-09-11T23:20:17Z White_Flame: especially since I use them for complex indexing speedups 2018-09-11T23:20:29Z White_Flame: *as hash table keys 2018-09-11T23:20:50Z jasom: as eql hash table keys? 2018-09-11T23:21:31Z White_Flame: composite + interning -> eql hash table; composite -> equalp hash table I guess 2018-09-11T23:21:35Z fikka joined #lisp 2018-09-11T23:22:44Z jasom: right, and symbols are the most commonly interned object, so it might make sense to optimize the case of symbol hash tables. 2018-09-11T23:23:25Z White_Flame: maybe "interning" might be the wrong word here, but given (1 30 :foo), canonicalizing that to a specific EQ-able instance of that list, using that as a key 2018-09-11T23:23:28Z jasom: if you hash other composite objects like an equalp hash table, then your implementation is still correct, and you don't need to do any rehashing on GC 2018-09-11T23:23:53Z jasom: White_Flame: interning is a good word, there might be better but I followed you 2018-09-11T23:24:25Z White_Flame: the one weakness I often hit is the lack of a caching structure for the hash of a composite 2018-09-11T23:24:40Z White_Flame: so they're always recomputed 2018-09-11T23:25:05Z White_Flame: (at least for equalp tables, kind of crossing issues here I guess) 2018-09-11T23:25:42Z White_Flame: so all of this drives me towards implementing my own application-specific key & hashtable implementations :-P 2018-09-11T23:26:06Z White_Flame: already have done so for "persistent" (as in pure functional) hash tables 2018-09-11T23:26:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T23:26:27Z warweasle joined #lisp 2018-09-11T23:28:53Z Kaisyu joined #lisp 2018-09-11T23:31:37Z Kaisyu7 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-11T23:32:02Z fikka joined #lisp 2018-09-11T23:33:02Z dale quit (Quit: dale) 2018-09-11T23:34:51Z rozenglass quit (Ping timeout: 252 seconds) 2018-09-11T23:36:30Z fikka quit (Ping timeout: 252 seconds) 2018-09-11T23:38:05Z vibs29 joined #lisp 2018-09-11T23:38:24Z Kaisyu7 joined #lisp 2018-09-11T23:41:05Z Lycurgus joined #lisp 2018-09-11T23:41:52Z Oladon joined #lisp 2018-09-11T23:41:55Z fikka joined #lisp 2018-09-11T23:42:21Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-11T23:42:52Z ober joined #lisp 2018-09-11T23:46:43Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T23:47:19Z vibs29 quit (Ping timeout: 268 seconds) 2018-09-11T23:48:18Z vibs29 joined #lisp 2018-09-11T23:52:20Z fikka joined #lisp 2018-09-11T23:56:43Z fikka quit (Ping timeout: 245 seconds) 2018-09-11T23:57:11Z lemonpepper24 quit (Ping timeout: 244 seconds) 2018-09-11T23:58:15Z atgreen_ joined #lisp 2018-09-11T23:59:21Z smokeink joined #lisp 2018-09-12T00:02:22Z fikka joined #lisp 2018-09-12T00:07:18Z fikka quit (Ping timeout: 252 seconds) 2018-09-12T00:08:54Z cobax: Why is Lisp image-based? Why did it start this trend? What was this feature trying to solve? 2018-09-12T00:09:52Z pierpa: It solves the problem of how to have fun programming. 2018-09-12T00:10:21Z no-defun-allowed: it solves the issue of "what if they don't have an sbcl though?" 2018-09-12T00:12:48Z fikka joined #lisp 2018-09-12T00:14:18Z aeth: cobax: Faster development time. There are other ways, but they came much later afaik. And most involve an IDE. 2018-09-12T00:16:28Z jasom: cobax: once you have a dynamic environment and automatic memory management, the idea kind of falls out naturally; I'm not sure if smalltalk or lisp did it first. 2018-09-12T00:17:33Z fikka quit (Ping timeout: 252 seconds) 2018-09-12T00:21:10Z Bike: also developing the language with the OS 2018-09-12T00:21:24Z cobax: from stack overflow I found this bit, and I wonder if this was part of the motivation: 2018-09-12T00:21:26Z cobax: "There were at one time Prolog systems that saved "working memory" as disk images. It used to be common practice, especially when the OS system calls didn't do a good job with compression and memory-management of special data structures, which is why LISP and Smalltalk did it too." 2018-09-12T00:21:33Z LdBeth: Smalltalk is Lisp inspired 2018-09-12T00:24:04Z Lycurgus quit (Quit: Exeunt) 2018-09-12T00:24:23Z jasom: LdBeth: there was a lot of cross-pollination, though lisp did come first. 2018-09-12T00:24:58Z cobax: Also, where can I read about what entails an "image" and how it is usually implemented, and a minimalist implementation of a lisp-with-image, for example? 2018-09-12T00:25:03Z jasom: cobax: old applications would do something similar; a document was actually just a memory dump of the data structures the application used. 2018-09-12T00:25:21Z cobax: I have Queinnec's book and many others but Queinnec doesn't touch on the image-based aspect of Lisp and it is otherwise very rarely discussed 2018-09-12T00:25:25Z jasom: cobax: at it's simplest form, it's just copying the heap to disk. 2018-09-12T00:25:55Z aeth: Recompiling a graphical application while it is running and immediately seeing the changes is a magical thing. (Except, of course, that doesn't always work even in CL. Changes won't always be reflected. It depends somewhat on the architecture.) 2018-09-12T00:25:57Z jasom: cobax: usually there is a header and some metadata on top; most implementations also support some way of specifying functions to call upon startup too. 2018-09-12T00:25:58Z cobax: jasom: that is interesting, I wonder what best ways they found to keep the heap, in order to facilitate its serialization 2018-09-12T00:26:01Z slyrus1 quit (Quit: slyrus1) 2018-09-12T00:26:24Z Oladon: 5 2018-09-12T00:26:28Z jasom: cobax: if a compacting GC of some sort is used, you run that first and then the whole world is in contiguous memory 2018-09-12T00:26:31Z Oladon: Whoops, you guys aren't a REPL. 2018-09-12T00:26:48Z ober quit (Ping timeout: 252 seconds) 2018-09-12T00:27:01Z Oladon: (On second thought, you kinda are, but nobody had presented a "5" option recently.) 2018-09-12T00:27:13Z cobax: jasom: that makes sense to me, but I am still looking for some papers or hard reading. for instance, it's a bit magical that lambdas can be serialized, among other things 2018-09-12T00:28:05Z cobax: or does Lisp achieve ease-of-persistence because code is data? and so when it serializes the heap it's just plain old lisp code? 2018-09-12T00:28:21Z cobax: I have so many books on lisp compilers, they never cover this part, and it's fascinating 2018-09-12T00:29:07Z graphene quit (Read error: Connection reset by peer) 2018-09-12T00:29:11Z AeroNotix: cobax: which books on Lisp compilers? 2018-09-12T00:29:12Z no-defun-allowed: Oladon: 5 2018-09-12T00:29:27Z no-defun-allowed: well the CL spec doesn't require you to log lambdas as s-expressions 2018-09-12T00:29:42Z Oladon: no-defun-allowed: * 2018-09-12T00:29:56Z cobax: AeroNotix: I have all of Nils Holm's books, I have many old books on old Lisps, and many of the new ones such as "Interpreting Lisp" by Knott 2018-09-12T00:29:58Z no-defun-allowed: Oladon: 5 2018-09-12T00:30:07Z cobax: and Queinnec's book of course 2018-09-12T00:30:07Z Oladon: no-defun-allowed: 5 2018-09-12T00:30:17Z no-defun-allowed: Oladon: 5 2018-09-12T00:30:24Z Oladon: :P 2018-09-12T00:30:33Z no-defun-allowed: :P 2018-09-12T00:30:47Z graphene joined #lisp 2018-09-12T00:30:51Z cobax: Holden's "Build Your Own Lisp" 2018-09-12T00:31:14Z Oladon: no-defun-allowed: Guess who's trying to get the old Weblocks running... 2018-09-12T00:31:19Z cobax: so if anyone can point me to some good reading on image-based language implementation I'd appreciate it 2018-09-12T00:31:31Z no-defun-allowed: Oladon: *** The variable GUESS is unbound. 2018-09-12T00:31:53Z no-defun-allowed: 0: Enter a new value for GUESS. 2018-09-12T00:32:02Z no-defun-allowed: 1: Enter a new form to evaluate. 2018-09-12T00:32:07Z no-defun-allowed: 2: Exit to the REPL. 2018-09-12T00:32:07Z ober joined #lisp 2018-09-12T00:32:48Z Oladon: (run-game 'rpg) 2018-09-12T00:33:32Z no-defun-allowed: You are at a dead end of a dirt road. The road goes to the east. In the distance you can see that it will eventually fork off. 2018-09-12T00:33:46Z no-defun-allowed: The trees here are very tall royal palms, and they are spaced equidistant from each other. There is a shovel here. 2018-09-12T00:33:54Z Oladon: (get 'shovel) 2018-09-12T00:34:03Z no-defun-allowed: Taken. 2018-09-12T00:34:16Z Oladon: (dig) 2018-09-12T00:34:33Z no-defun-allowed: Digging here reveals nothing. 2018-09-12T00:34:40Z Bike: yo, ther'es off topic and there's off topic 2018-09-12T00:35:44Z no-defun-allowed: *** Interrupt from moderator. 2018-09-12T00:35:50Z Oladon: :D 2018-09-12T00:36:06Z no-defun-allowed: 0: Blame Oladon 2018-09-12T00:36:08Z no-defun-allowed presses 0 2018-09-12T00:36:40Z Oladon: pfft, Bike knows better than that. 2018-09-12T00:37:06Z no-defun-allowed avoids the temptation of making jokes about riding bicycles 2018-09-12T00:39:45Z no-defun-allowed: anyways, how could you write a long string with lots of embedded #"s in them? 2018-09-12T00:40:02Z no-defun-allowed: there's a lot of #"s to quote. 2018-09-12T00:40:21Z Bike: you could define a compiler macro with a different delimter. 2018-09-12T00:40:27Z Bike: (or use cl-interpol or something, which does that) 2018-09-12T00:41:31Z no-defun-allowed: okay thanks 2018-09-12T00:43:35Z warweasle quit (Quit: later) 2018-09-12T00:51:04Z ober: #+sbcl (gc-full :t) ;;ard 2018-09-12T00:52:55Z no-defun-allowed: caught STYLE-WARNING: undefined function GC-FULL 2018-09-12T00:53:11Z no-defun-allowed: The function CL-USER::GC-FULL is undefined. 2018-09-12T00:53:23Z Bike: gc :full t 2018-09-12T00:53:53Z Pixel_Outlaw joined #lisp 2018-09-12T00:53:55Z no-defun-allowed: NIL 2018-09-12T00:54:53Z ober: Bike: thanks 2018-09-12T00:56:28Z no-defun-allowed: nice, my head feels less cramped 2018-09-12T01:02:20Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-12T01:02:54Z Pixel_Outlaw joined #lisp 2018-09-12T01:09:31Z anewuser quit (Ping timeout: 244 seconds) 2018-09-12T01:15:51Z makomo quit (Ping timeout: 252 seconds) 2018-09-12T01:27:22Z dmiles quit (Read error: Connection reset by peer) 2018-09-12T01:31:26Z logicmoo joined #lisp 2018-09-12T01:36:10Z suskeyhose joined #lisp 2018-09-12T01:39:43Z equwal joined #lisp 2018-09-12T01:41:47Z mason quit (Quit: leaving) 2018-09-12T01:42:00Z mindCrime joined #lisp 2018-09-12T01:42:12Z White_Flame: cobax: it's always fun to read old Lisp machine manuals, you can get a sense of the scope of the utilities they had 2018-09-12T01:43:38Z cobax: White_Flame: I agree! 2018-09-12T01:44:35Z mason joined #lisp 2018-09-12T01:45:20Z johnjay: AeroNotix: ah ok. when the world renowned expert in X doesn't understand X that well 2018-09-12T01:45:24Z johnjay: that's probably bad 2018-09-12T01:45:32Z esrse joined #lisp 2018-09-12T01:45:53Z cobax: is Elephant the "Gemstone/S" of Common Lisp? 2018-09-12T01:48:02Z kristof joined #lisp 2018-09-12T01:51:53Z noobly joined #lisp 2018-09-12T01:56:09Z noobly quit (Ping timeout: 252 seconds) 2018-09-12T02:06:58Z dale joined #lisp 2018-09-12T02:08:45Z aeth: Who is the world renowned expert in Lisp? 2018-09-12T02:13:19Z scottj: xah lee 2018-09-12T02:14:47Z aeth: s/Lisp/Common Lisp/ 2018-09-12T02:15:21Z aeth: is there someone who can claim to know 100% of the Common Lisp language? 2018-09-12T02:15:29Z anewuser joined #lisp 2018-09-12T02:15:32Z aeth: (including de facto standard components like the MOP) 2018-09-12T02:18:04Z Bike: i claim i know 100% of lisp and also am suzerain of the moon 2018-09-12T02:19:05Z no-defun-allowed: i still want to know if xach or xah lee would win in a fight 2018-09-12T02:19:22Z aeth: Bike: if you claimed to know 100% of Lisp I'd probably believe it 2018-09-12T02:20:06Z no-defun-allowed: is CL just the CLtL and Art of the MOP books or every library created? 2018-09-12T02:20:49Z no-defun-allowed: (the hypothetical fight is an important question cause obviously whoever would win in a fight knows more about lisp and the two are correlated) 2018-09-12T02:20:50Z aeth: no-defun-allowed: I'd personally say the HyperSpec and anything covered by a de facto standard portability library (MOP, bordeaux-threads, CFFI, etc.) 2018-09-12T02:21:31Z aeth: The latter *are* part of most implementations 2018-09-12T02:21:39Z aeth: The libraries are just there for portability 2018-09-12T02:24:44Z no-defun-allowed: fair enough 2018-09-12T02:25:03Z no-defun-allowed: still of course xahlee knows everything about lisp and emacs and we must follow his intellectual thought 2018-09-12T02:25:14Z rumbler31 joined #lisp 2018-09-12T02:25:22Z aeth: fair enough 2018-09-12T02:25:49Z no-defun-allowed: for a while i thought xah and xach were the same person. 2018-09-12T02:28:52Z aeth: for a while I thought Xach and XachX were the same person 2018-09-12T02:30:04Z no-defun-allowed: for a while i thought emma-__ (mod of /r/emacs) and another emma (devout vim user) were the same person 2018-09-12T02:30:17Z no-defun-allowed: and this one isn't excusable either, there's too many emmas. 2018-09-12T02:32:16Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-12T02:34:53Z laoguan_ joined #lisp 2018-09-12T02:39:04Z _whitelogger quit (Remote host closed the connection) 2018-09-12T02:39:19Z johnnymacs joined #lisp 2018-09-12T02:39:42Z johnnymacs: Can you make a while loop out of lambdas which does not stack overflow? 2018-09-12T02:40:14Z johnnymacs: I believe it is called the Y combinator. 2018-09-12T02:40:27Z AeroNotix: cobax: thanks 2018-09-12T02:40:31Z Bike quit (Quit: Lost terminal) 2018-09-12T02:41:17Z _whitelogger joined #lisp 2018-09-12T02:42:41Z impulse joined #lisp 2018-09-12T02:43:02Z mindCrime_ joined #lisp 2018-09-12T02:43:11Z dale quit (Quit: dale) 2018-09-12T02:44:13Z AeroNotix: johnnymacs: a y combinator is a way to implement recursion using anonymous functions 2018-09-12T02:45:03Z orivej quit (Ping timeout: 245 seconds) 2018-09-12T02:45:16Z mindCrime quit (Ping timeout: 246 seconds) 2018-09-12T02:45:52Z johnnymacs: Yes indeed I can use it to loop over a specific function. 2018-09-12T02:46:27Z johnnymacs: There are a couple of properties of it I am unaware of though 2018-09-12T02:47:05Z johnnymacs: I do not know if in a non lazy langauge it will stack overflow. I also do not know if it has a clause for termination. 2018-09-12T02:48:08Z AeroNotix: johnnymacs: you're in #lisp, which is for Common Lisp. Common Lisp isn't (by default) lazy. 2018-09-12T02:48:30Z AeroNotix: secondly, the clause for termination is up to the functions being passed to and initially called by, the y-combinator. 2018-09-12T02:48:52Z jcowan joined #lisp 2018-09-12T02:49:06Z johnnymacs: As long as there possibly is a clause for termination this answers my second question. My first question remains unanswered. 2018-09-12T02:49:14Z johnnymacs: In common lisp does the y combinator cause stack overflow by default? 2018-09-12T02:49:32Z jcowan: When using symbols at run time, rather than to hold the values of globals, is it normal to use the symbol-value and symbol-function slots for anything? 2018-09-12T02:49:39Z AeroNotix: johnnymacs: Common Lisp doesn't require tail end recursion optimization 2018-09-12T02:49:51Z johnnymacs: This is true. 2018-09-12T02:50:10Z johnnymacs: Are you saying that because common lisp does not require this that the y combinator will stack overflow? 2018-09-12T02:50:15Z AeroNotix: No 2018-09-12T02:50:35Z johnnymacs: So the y combinator will only overflow if the function passed to it will cause an overflow. 2018-09-12T02:50:39Z AeroNotix: I am saying to write portable Common Lisp you cannot expect a program which requires TCO to work properly, to work properly. 2018-09-12T02:51:16Z johnnymacs: The probability that you have answered my question is 80% which I find suitable 2018-09-12T02:51:16Z johnnymacs left #lisp 2018-09-12T02:51:20Z jcowan: johnnymacs: But if you go over to the Scheme side of the Force, you don't have that problem. -) 2018-09-12T02:51:45Z White_Flame: if you look at the docs of your implementation, particularly around optimization declarations, you should see if they can enable it or not 2018-09-12T02:52:31Z White_Flame: if it's supported, it's usually at some speed level setting, not necessarily a separate declaration 2018-09-12T02:52:31Z AeroNotix: I really hate answers like this tbh. I wish we could all just agree that SBCL is the shiznit and all to use that 2018-09-12T02:52:50Z White_Flame: well, it's a pretty abstract question, too 2018-09-12T02:53:05Z AeroNotix: White_Flame: I'm drunk, I suspect they were too. Hence why I understood 2018-09-12T02:53:16Z White_Flame: and as always, DISASSEMBLE is your friend 2018-09-12T02:53:26Z White_Flame: oh, he left. whoops 2018-09-12T02:53:29Z AeroNotix: yeah 2018-09-12T02:53:46Z jcowan: I can understand not supporting it in a particular implementation, but why would support be selective in systems that do support it? 2018-09-12T02:53:57Z AeroNotix: jcowan: what do you even mean btw? I've been mulling it over since you posted it but I don't get why you mentioned "rather than to hold the values of globals" 2018-09-12T02:54:17Z AeroNotix: jcowan: I've never understood selective support either. I've brought it up a few times in here 2018-09-12T02:54:32Z jcowan: iow symbol slots hold the value of defun, defmacro, defparameter, etc, and at run time you can discover those values. 2018-09-12T02:54:33Z AeroNotix: The standard makes no recommendation either way on TCO, which makes it *even worse* 2018-09-12T02:54:59Z jcowan: But symbols can also be used as a pure data structure, in which case the p-list helps you associate auxiliary information with each symbol. 2018-09-12T02:55:26Z White_Flame: yeah, a lot of old code (pre-hash-table specifically) does that 2018-09-12T02:55:27Z jcowan: You also have the symbol-value and the symbol-value slots: is it usual to use them in such applications? 2018-09-12T02:55:27Z foom2 joined #lisp 2018-09-12T02:55:50Z White_Flame: instead of table->key->value, you store key->tablename->value on the plist 2018-09-12T02:56:43Z jcowan: AeroNotix: The Java argument not to support it is that people want full stack traces, and stack traces are hard in the presence of TCO 2018-09-12T02:57:05Z jcowan: otoh, it's not uncommon to have hundreds of lines of stack trace in Java exceptions: who looks at those? 2018-09-12T02:57:10Z AeroNotix: jcowan: there are differences between: (quote foo), #'foo and foo 2018-09-12T02:57:19Z jcowan: Sure. 2018-09-12T02:58:03Z jcowan: If foo is global, then #"foo is (symbol-function 'foo) and foo is (symbol-value foo). 2018-09-12T02:58:21Z foom quit (Ping timeout: 252 seconds) 2018-09-12T02:58:25Z jcowan: But here I am talking about the use of symbols as pure data structures, not as part of the implementation of global variables. 2018-09-12T02:58:58Z White_Flame: I've not heard of it, but I don't think there'd be anything stopping you 2018-09-12T02:59:35Z AeroNotix: jcowan: do you mean to fill those slots with garbage only your program understands? 2018-09-12T02:59:54Z jcowan: just so 2018-09-12T03:00:02Z AeroNotix: yeah => #php is thattaway 2018-09-12T03:00:28Z jcowan: Technically the function slot has to be filled with a function, but I don't know if anyone enforces that or not. 2018-09-12T03:00:41Z AeroNotix: jcowan: why do you want to do this? 2018-09-12T03:00:42Z White_Flame: the only 3 fully accessible slot from the spec seem to be symbol-function, symbol-plist, and symbol-value 2018-09-12T03:00:53Z jcowan: I don't. I want to make sure that no one else would reasonably do it either. 2018-09-12T03:01:08Z jcowan: Also symbol-name 2018-09-12T03:01:10Z White_Flame: so the macro binding, etc, probably aren't directly available via normal/portable code 2018-09-12T03:01:17Z White_Flame: symbol-name is a function, not an accessor 2018-09-12T03:01:19Z jcowan: right, macros are not 2018-09-12T03:01:42Z dddddd quit (Remote host closed the connection) 2018-09-12T03:01:57Z jcowan: but I don't know why you say symbol-name (and symbol-package for that matter) are not accessors 2018-09-12T03:02:10Z White_Flame: because the spec says they're functions... 2018-09-12T03:02:24Z Oladon: Anyone have any suggestions for finding something similar to https://bugs.launchpad.net/sbcl/+bug/1654550 in Weblocks, where it's breaking something with the MOP somehow, but I'm not sure what method(s) it's defining that are breaking things? It's not the specific example in the link; that appears to have been fixed (based on grep), but I'm still getting that weird unknown pointer error, and I'm not sure the best way to track down the culp 2018-09-12T03:02:26Z White_Flame: try it. You can't setf symbol-name, because that's an unknown operation 2018-09-12T03:02:47Z jcowan: Well, okay, it's a read-only slot then. 2018-09-12T03:03:28Z Oladon: Tried grepping for defmethod.*standard -- nothing that looks suspect 2018-09-12T03:03:29Z pierpa quit (Quit: Page closed) 2018-09-12T03:04:00Z White_Flame: "accessor" means you can read & write. "function" just means you can call it and it does something & returns something 2018-09-12T03:04:06Z jcowan: Fair enough. 2018-09-12T03:04:24Z jcowan: I bet it's implemented as a defstruct slot, though 2018-09-12T03:04:42Z AeroNotix: jcowan: sounds implementation specific though 2018-09-12T03:04:45Z jcowan: Sure 2018-09-12T03:04:46Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-12T03:04:59Z White_Flame: there's nothing in the spec that requires symbols be objects with slots. It could create an integer per symbol, and have separate arrays for some symbol-* interfaces, and do other thigns with others 2018-09-12T03:05:20Z foom2 quit (Read error: Connection reset by peer) 2018-09-12T03:05:28Z foom2 joined #lisp 2018-09-12T03:05:32Z jcowan: I'm thinking about writing a symbol-and-package system for Scheme for runtime only. Of course it doesn't have to conform to CL, but I don't want to make it *gratuitously* different. 2018-09-12T03:05:33Z White_Flame: but yes, most will likely be structs, with some overrides to optimize NIL being both a symbol and sort of a cons cell 2018-09-12T03:05:34Z AeroNotix: Oladon: a bare sbcl shell doesn't exhibit the same behaviour. There's something missing from that bug report 2018-09-12T03:05:47Z Oladon: AeroNotix: It's Weblocks-specific 2018-09-12T03:05:59Z aeth: White_Flame: And that's what I thought (the integer way) until today 2018-09-12T03:06:10Z Oladon: AeroNotix: They fixed that specific bug, but if you quickload weblocks and then try to make-instance something, you'll get the unknown pointer 2018-09-12T03:06:18Z AeroNotix: Oladon: trying now 2018-09-12T03:06:25Z aeth: White_Flame: NIL is a LIST but not a CONS iirc 2018-09-12T03:06:28Z jcowan: Still, it sounds like I can leave out all the machinery around the value and function slots; if you want those things, put properties on the p-list. 2018-09-12T03:06:43Z White_Flame: aeth: coming from 6502 home computer land, that was a very common data organization method, as you didn't have easily flexible full 16-bit pointers 2018-09-12T03:06:46Z aeth: White_Flame: So LIST is afaik (OR NULL CONS) 2018-09-12T03:07:04Z cobax quit (Ping timeout: 240 seconds) 2018-09-12T03:07:07Z Oladon: It looks like they do have an :around method defined on initialize-instance with ((obj composite)) as the first arg... wonder if that'd do it. 2018-09-12T03:07:11Z White_Flame: right, that's why I said "sort of a cons cell", so CAR/CDR of NIL can easily return NIL without type checks 2018-09-12T03:07:16Z jcowan: Historically NIL was stored at address 0 as a cons whose car and cdr slots pointed to 0, and punned with a symbol 2018-09-12T03:07:34Z emaczen quit (Ping timeout: 240 seconds) 2018-09-12T03:07:44Z mkolenda joined #lisp 2018-09-12T03:07:45Z AeroNotix: Oladon: confirmed. 2018-09-12T03:07:53Z jcowan: so e.g. the first two slots of a symbol were name and package, say, and then the logic for getting the name and package of NIL was special cased 2018-09-12T03:08:06Z Oladon: AeroNotix: So... any ideas on troubleshooting it? :) 2018-09-12T03:08:15Z jcowan: anyway, thanks for the information 2018-09-12T03:08:20Z AeroNotix: Oladon: stop using weblocks? 2018-09-12T03:08:43Z Oladon: AeroNotix: Can't stop, haven't started yet! :) 2018-09-12T03:09:00Z White_Flame: aeth: btw, symbols probably also allocate an integer offset for themselves for a thread-local binding table, so you're not totally wrong 2018-09-12T03:09:03Z Oladon: AeroNotix: Nah, but seriously, I like a lot of its ideas, and in theory it should still run... 2018-09-12T03:09:30Z AeroNotix: Oladon: I'm playing with a few ideas in the repl now but don't expect much, I don't care about weblocks at all. 2018-09-12T03:09:58Z Hu0p joined #lisp 2018-09-12T03:10:01Z Oladon: AeroNotix: Fair enough. Do you do any web stuff in Lisp? 2018-09-12T03:10:24Z AeroNotix: Oladon: if by "web stuff" you mean "processes that return html", no 2018-09-12T03:10:59Z AeroNotix: no idea, tried a few simple checks. It's something whacky that weblocks is doing 2018-09-12T03:10:59Z Oladon: Fair. Appreciate your help nonetheless. 2018-09-12T03:11:03Z Oladon: Yeah 2018-09-12T03:11:06Z Oladon: Thanks anyway 2018-09-12T03:11:08Z AeroNotix: np 2018-09-12T03:11:22Z White_Flame: aeth: in SBCL, accessing a special variable means dereferencing a TLS offset from the symbol structure, reading that entry from the thread-local table, if that's unbound then hit the symbol-value slot of the symbol object itself 2018-09-12T03:11:29Z White_Flame: (from my reading of the disassembly) 2018-09-12T03:11:32Z AeroNotix: Though, :around :before :after methods, as you suggested sounds like a sound place to start your debugging 2018-09-12T03:11:57Z Oladon: Yeah, just not sure where to go from there. So they've got an :around method on initialize-instance... now what? :) 2018-09-12T03:12:05Z igemnace joined #lisp 2018-09-12T03:12:08Z AeroNotix: on what specialisers? 2018-09-12T03:12:33Z AeroNotix: Oladon: link to code, plz 2018-09-12T03:12:45Z Oladon: AeroNotix: One moment 2018-09-12T03:13:30Z rumbler31 quit (Remote host closed the connection) 2018-09-12T03:13:48Z Oladon: Eh, this is unlikely to be it... it's on a specific type of weblocks class: https://github.com/skypher/weblocks/blob/master/src/widgets/composite.lisp#L14 2018-09-12T03:14:37Z AeroNotix: https://github.com/skypher/weblocks/blob/master/src/widgets/composite.lisp#L4 always a good sign 2018-09-12T03:15:34Z Oladon: lol 2018-09-12T03:15:48Z AeroNotix: ffs 2018-09-12T03:15:54Z Oladon: To be fair, I'm not even sure that code is being run 2018-09-12T03:16:04Z AeroNotix: Oladon: do you have slime installed 2018-09-12T03:16:08Z AeroNotix: emacs+slime 2018-09-12T03:16:22Z Oladon: Just inspected #'print-object, and it looks like there /is/ a method being defined... but my grepping didn't find it D: 2018-09-12T03:16:31Z AeroNotix: lets go to pm 2018-09-12T03:16:32Z Oladon: AeroNotix: Not at the moment, unfortunately. Switched dev servers recently. 2018-09-12T03:16:34Z AeroNotix: not to spam channel 2018-09-12T03:17:42Z jcowan: not like it's very busy now, might as well have some traffic 2018-09-12T03:19:43Z kristof quit (Remote host closed the connection) 2018-09-12T03:26:54Z johnjay quit (Ping timeout: 252 seconds) 2018-09-12T03:26:54Z laoguan_ quit (Ping timeout: 264 seconds) 2018-09-12T03:31:07Z mindCrime_ quit (Ping timeout: 246 seconds) 2018-09-12T03:32:12Z dented42 joined #lisp 2018-09-12T03:34:42Z johnjay joined #lisp 2018-09-12T03:37:47Z AeroNotix: jcowan: yo 2018-09-12T03:37:49Z AeroNotix: (defmethod print-object ((obj standard-object) stream) 2018-09-12T03:37:51Z AeroNotix: (call-next-method)) 2018-09-12T03:37:57Z AeroNotix: that's all that's needed to trigger this "bug" 2018-09-12T03:38:02Z AeroNotix: it's not a bug with SBCL, or anything 2018-09-12T03:38:17Z AeroNotix: just "Don't do shit the standard says don't to do, dummy" 2018-09-12T03:38:28Z Xach: mfiano: is http://report.quicklisp.org/2018-09-11/failure-report/cl-sdl2-ttf.html#sdl2-ttf the same thing? 2018-09-12T03:39:01Z rumbler31 joined #lisp 2018-09-12T03:40:07Z Xach: Things are very close to decent 2018-09-12T03:40:56Z Oladon: G'night all! 2018-09-12T03:43:29Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-12T03:44:33Z smokeink quit (Ping timeout: 252 seconds) 2018-09-12T03:46:19Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-12T03:51:06Z pierpal quit (Quit: Poof) 2018-09-12T03:51:26Z pierpal joined #lisp 2018-09-12T03:52:15Z AeroNotix: Xach: we appreciate all the work you do to make quicklisp what it is 2018-09-12T03:52:35Z AeroNotix: without your work CL wouldn't be what it is today 2018-09-12T03:54:11Z Oladon: Hear, hear. 2018-09-12T03:54:34Z anewuser quit (Ping timeout: 246 seconds) 2018-09-12T03:54:54Z jcowan: AeroNotix: yo? 2018-09-12T03:56:16Z AeroNotix: Xach: there's no reason mfiano couldn't have tested all systems in quicklisp with the new release 2018-09-12T03:56:36Z AeroNotix: Xach: is the code you test all systems with public somewhere? 2018-09-12T03:57:02Z AeroNotix: or 2018-09-12T03:57:17Z AeroNotix: is there a full dependency list somewhere of all systems in quicklisp? 2018-09-12T03:57:45Z AeroNotix: jcowan: the yo was just to tag you if you were interested in the outcome of mine and Oladon's pms 2018-09-12T03:58:04Z jcowan: okay, gotta go to bed, will look in the morning 2018-09-12T03:58:09Z jcowan quit (Quit: This computer has gone to sleep) 2018-09-12T03:58:13Z Oladon: Bed is a good iea. 2018-09-12T03:58:14Z Oladon: idea* 2018-09-12T03:58:19Z AeroNotix: well yeah, it's 6am here 2018-09-12T03:58:37Z AeroNotix: snooker at 5pm for me 2018-09-12T03:59:34Z AeroNotix: it'd be rad if there was an asdf op to test with all dependant systems 2018-09-12T04:01:34Z beach: Good morning everyone! 2018-09-12T04:01:48Z AeroNotix: Morning 2018-09-12T04:03:07Z impulse quit (Ping timeout: 240 seconds) 2018-09-12T04:04:40Z joga quit (Ping timeout: 244 seconds) 2018-09-12T04:08:02Z kristof joined #lisp 2018-09-12T04:11:22Z vydd quit (Quit: Leaving) 2018-09-12T04:13:31Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-12T04:16:22Z no-defun-allowed: morning beach 2018-09-12T04:16:55Z no-defun-allowed: https://matrix.org/_matrix/media/v1/download/matrix.org/VcDpibRxlVLRuDDvzEyxBMQO 2018-09-12T04:17:46Z beach: Heh! 2018-09-12T04:18:52Z no-defun-allowed: i keep seeing that in my head everytime you say that 2018-09-12T04:19:03Z beach: I understand. 2018-09-12T04:20:13Z impulse joined #lisp 2018-09-12T04:21:20Z shka_ joined #lisp 2018-09-12T04:25:16Z beach: no-defun-allowed: When I lived in Auckland for a year, there were around 5 lispers within a radius defined by a 3-hour flight. Here in Europe, there are hundreds. 2018-09-12T04:35:25Z no-defun-allowed: "literally dozens" 2018-09-12T04:35:39Z no-defun-allowed: when i lived in melbourne for 17 years, there were around 2 lispers within a radius i didn't really measure 2018-09-12T04:45:48Z drmeister: Hello everyone. 2018-09-12T04:45:57Z drmeister: Here in Philadelphia we have to make lispers 2018-09-12T04:46:57Z impulse quit (Remote host closed the connection) 2018-09-12T04:47:37Z drmeister: Hey - are there any lispers who use 'buildbot'? It's a Python continuous integration system. I just figured it out for building a Clasp CI system. I'm interested in comparing notes. 2018-09-12T04:49:15Z igemnace quit (Read error: Connection reset by peer) 2018-09-12T04:49:27Z igemnace joined #lisp 2018-09-12T04:49:48Z drmeister: Drop me a message if you do - it's late here so I'm heading to bed. 2018-09-12T04:55:35Z igemnace quit (Read error: Connection reset by peer) 2018-09-12T04:56:18Z igemnace joined #lisp 2018-09-12T04:57:48Z no-defun-allowed: hi drmeister 2018-09-12T04:58:20Z no-defun-allowed: why is lisp named after a speech impediment 2018-09-12T04:58:29Z no-defun-allowed: please ignore that, python user] ^^^ 2018-09-12T04:58:31Z no-defun-allowed: fucken stole my laptop :| 2018-09-12T04:58:40Z no-defun-allowed: s/python user/luser/g 2018-09-12T05:01:25Z Balooga_ joined #lisp 2018-09-12T05:01:35Z Oladon quit (Quit: Leaving.) 2018-09-12T05:03:37Z Inline quit (Quit: Leaving) 2018-09-12T05:09:06Z ym joined #lisp 2018-09-12T05:09:36Z shka_: no-defun-allowed: you are not very funny 2018-09-12T05:10:10Z no-defun-allowed: no i'm not, someone took my laptop off me during a prac at school 2018-09-12T05:10:14Z no-defun-allowed: i'm sorry about that. 2018-09-12T05:11:07Z Balooga_ quit (Quit: Balooga_) 2018-09-12T05:11:40Z jackdaniel: AeroNotix: there is and it is called quicklisp-controller 2018-09-12T05:15:53Z zxcvz quit (Ping timeout: 245 seconds) 2018-09-12T05:16:51Z igemnace quit (Quit: WeeChat 2.2) 2018-09-12T05:17:05Z shifty joined #lisp 2018-09-12T05:17:47Z beach: MAKE-METHOD-LAMBDA says that the METHOD argument may be uninitialized. It doesn't say that about the GENERIC-FUNCTION argument, but it says that it might not be the generic function that the method will be used with, so I don't see what information MAKE-METHOD-LAMBDA could use about that generic function, other than its class. 2018-09-12T05:18:04Z beach: And if so, the GENERIC-FUNCTION argument could be uninitialized as well. 2018-09-12T05:19:15Z beach: If I am allowed to pass an uninitialized generic function to MAKE-METHOD-LAMBDA I can solve the problem indicated by Pascal Costanza's article. 2018-09-12T05:20:57Z beach: For DEFGENERIC, the file compiler can just store the GENERIC-FUNCTION-METHOD-CLASS and the METHOD-CLASS arguments with the name of the generic function in the compile-time environment. 2018-09-12T05:21:31Z beach: DEFMETHOD can pass the class-prototype of those classes to MAKE-METHOD-LAMBDA. 2018-09-12T05:24:14Z moei quit (Ping timeout: 244 seconds) 2018-09-12T05:32:13Z pierpal quit (Ping timeout: 246 seconds) 2018-09-12T05:32:57Z gpiero quit (Quit: Leaving.) 2018-09-12T05:38:04Z no-defun-allowed: okay bad idea time: it'd be interesting if CONSTANTLY could return multiple values 2018-09-12T05:38:32Z no-defun-allowed: so basically (defun constantly (&rest values) (lambda (&rest ignored) (multiple-value-list values))) 2018-09-12T05:45:42Z sauvin joined #lisp 2018-09-12T05:49:54Z johnjay quit (Ping timeout: 252 seconds) 2018-09-12T05:52:31Z mfiano: Xach: Seems to be. For some reason library authors think it is good practice to assume transitive dependencies will always be present instead of writing a proper system definition. 2018-09-12T05:54:18Z mfiano: So that makes all 3 third-party cl-sdl2 addon libraries at fault assuming a dependency specified in cl-sdl2's :depends-on list will always be present. Impressive. 2018-09-12T05:54:53Z mfiano: Sadly I do not have commit access to repositories outside of the lispgames GitHub organization to fix that one. 2018-09-12T05:56:06Z aeth: no-defun-allowed: call it multiple-value-constantly 2018-09-12T05:56:16Z no-defun-allowed: good idea 2018-09-12T05:58:21Z mfiano: With cl-sdl2-ttf, it is even worse. It is directly calling trivial-garbage functions itself. 2018-09-12T05:58:30Z mfiano: Sigh 2018-09-12T06:04:38Z shka_ quit (Ping timeout: 272 seconds) 2018-09-12T06:05:04Z mingus joined #lisp 2018-09-12T06:08:29Z joga joined #lisp 2018-09-12T06:09:13Z smokeink joined #lisp 2018-09-12T06:16:31Z mingus quit (Remote host closed the connection) 2018-09-12T06:19:24Z s-geometry joined #lisp 2018-09-12T06:32:04Z scymtym quit (Ping timeout: 246 seconds) 2018-09-12T06:36:07Z gpiero joined #lisp 2018-09-12T06:39:02Z igemnace joined #lisp 2018-09-12T06:41:39Z SaganMan joined #lisp 2018-09-12T06:44:05Z fikka joined #lisp 2018-09-12T06:44:57Z shrdlu68 joined #lisp 2018-09-12T06:55:24Z kristof quit (Ping timeout: 252 seconds) 2018-09-12T06:56:51Z scottj quit (Quit: leaving) 2018-09-12T06:57:07Z moei joined #lisp 2018-09-12T06:58:31Z heisig joined #lisp 2018-09-12T06:59:01Z omilu quit (Ping timeout: 246 seconds) 2018-09-12T06:59:18Z DGASAU quit (Ping timeout: 264 seconds) 2018-09-12T06:59:54Z omilu joined #lisp 2018-09-12T07:06:45Z shka_ joined #lisp 2018-09-12T07:07:18Z shka_: good morning! 2018-09-12T07:07:34Z stacksmith quit (Ping timeout: 240 seconds) 2018-09-12T07:10:17Z zigpaw: morning :) 2018-09-12T07:12:06Z vlatkoB joined #lisp 2018-09-12T07:16:11Z no-defun-allowed: morning shka_ 2018-09-12T07:17:31Z varjag joined #lisp 2018-09-12T07:26:14Z smokeink quit (Remote host closed the connection) 2018-09-12T07:26:42Z schweers joined #lisp 2018-09-12T07:26:47Z scymtym joined #lisp 2018-09-12T07:31:57Z shrdlu68: shka_: Morning 2018-09-12T07:32:41Z shka_: shrdlu68: hello, how are you/ 2018-09-12T07:32:43Z shka_: ? 2018-09-12T07:33:17Z no-defun-allowed: shrdlu68: pick up a big red block. 2018-09-12T07:33:59Z pierpal joined #lisp 2018-09-12T07:36:27Z shrdlu68 quit (Ping timeout: 240 seconds) 2018-09-12T07:36:51Z no-defun-allowed: oh, wrong shrdlu 2018-09-12T07:40:50Z atgreen__ joined #lisp 2018-09-12T07:41:40Z atgreen_ quit (Ping timeout: 244 seconds) 2018-09-12T07:46:14Z rumbler31 joined #lisp 2018-09-12T07:47:06Z mingus joined #lisp 2018-09-12T07:47:19Z shrdlu68 joined #lisp 2018-09-12T07:48:33Z joast quit (Ping timeout: 252 seconds) 2018-09-12T07:49:18Z shrdlu68: shka_: Sorry, got disconnected. I haven't tried your btrie yet, but I tried cl-container's trees and the performance was sub-par to hashtable. 2018-09-12T07:49:38Z k-hos quit (Ping timeout: 245 seconds) 2018-09-12T07:49:40Z shka_: hm, ok 2018-09-12T07:49:47Z suskeyhose quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-12T07:49:54Z shka_: i think that this result is not relevant to trie, though 2018-09-12T07:50:45Z rumbler31 quit (Ping timeout: 250 seconds) 2018-09-12T07:55:18Z iomonad joined #lisp 2018-09-12T07:57:34Z k-hos joined #lisp 2018-09-12T08:18:49Z shrdlu68: shka_: What's :content struct bit-trie? 2018-09-12T08:19:24Z shka_: let me check my gist for a second 2018-09-12T08:20:01Z shka_: shrdlu68: just value stored at the node 2018-09-12T08:20:31Z shka_: in your case that would be two floats i believe 2018-09-12T08:22:15Z shrdlu68: How do I initialize it? With :content ? 2018-09-12T08:22:59Z shka_: well, yes 2018-09-12T08:23:05Z shka_: it is a struct after all 2018-09-12T08:23:39Z makomo joined #lisp 2018-09-12T08:25:45Z shrdlu68: shka_: With :children too? Sorry I don't understand this :( 2018-09-12T08:26:03Z makomo: morning 2018-09-12T08:26:18Z pjb_ joined #lisp 2018-09-12T08:26:55Z shka_: shrdlu68: simply make node with make-bit-trie, then use setf at-bit-trie to populate it 2018-09-12T08:27:01Z pjb_ quit (Client Quit) 2018-09-12T08:32:33Z ober quit (Ping timeout: 252 seconds) 2018-09-12T08:32:35Z ogamita joined #lisp 2018-09-12T08:36:42Z zfree joined #lisp 2018-09-12T08:38:42Z ogamita quit (Quit: Colloquy for iPad - http://colloquy.mobi) 2018-09-12T08:38:54Z Bronsa joined #lisp 2018-09-12T08:41:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-12T08:51:36Z flamebeard joined #lisp 2018-09-12T08:53:27Z rtypo quit (Ping timeout: 252 seconds) 2018-09-12T08:57:01Z mrcom quit (Quit: Leaving) 2018-09-12T08:57:26Z fikka joined #lisp 2018-09-12T08:59:06Z shrdlu68: shka_: Am I doing it right? https://gist.github.com/shrdlu68/6a4e624f3562c2bb81474827bb59edd3 2018-09-12T08:59:59Z flamebeard quit (Remote host closed the connection) 2018-09-12T09:00:30Z shka_: shrdlu68: checking... 2018-09-12T09:00:57Z shka_: shrdlu68: yeah, looks fine 2018-09-12T09:01:26Z shka_: obviously, it is possible to compress children vector, but i was just being lazy ;-) 2018-09-12T09:01:56Z shrdlu68: shka_: (at-bit-trie foo 83 62) => NIL 2018-09-12T09:02:15Z fikka quit (Ping timeout: 252 seconds) 2018-09-12T09:02:26Z shka_: error on my side i guess 2018-09-12T09:02:55Z shka_: let my try it myself 2018-09-12T09:06:14Z marvin2 joined #lisp 2018-09-12T09:08:36Z shka_: shrdlu68: yeah, sill me :-) 2018-09-12T09:09:07Z shka_: https://gist.github.com/sirherrbatka/1c1755725681d9b33b9bc54dc201c1e9 2018-09-12T09:09:32Z shka_: shrdlu68: forgot to call recursive setf at-bit-trie 2018-09-12T09:10:05Z shrdlu68: shka_: Testing... 2018-09-12T09:15:52Z shrdlu68: shka_: Heap exhaustion, same heap size as hash tables. 2018-09-12T09:16:10Z shka_: shrdlu68: obviously this is not space efficient structure 2018-09-12T09:16:27Z shka_: try smaller heap, if it is faster, you can apply compression 2018-09-12T09:17:24Z j`ey: beach: I dont quite get what cleavir is 2018-09-12T09:17:55Z beach: minion: Please tell j`ey about Cleavir. 2018-09-12T09:17:56Z minion: j`ey: Cleavir: A project to create an implementation-independent compilation framework for Common Lisp. Currently Cleavir is part of SICL, but that might change in the future 2018-09-12T09:18:15Z j`ey: I'm just not sure what a compilation framework means here 2018-09-12T09:18:18Z HDurer joined #lisp 2018-09-12T09:18:43Z j`ey: I see in the example it uses sbcl, so Im not sure what cleavir does before?/after? SBCL 2018-09-12T09:18:46Z shka_: j`ey: set of tools 2018-09-12T09:18:47Z beach: j`ey: Basically it is a compiler. But since every implementation has its way of compiling things, it must be possible to customize it. 2018-09-12T09:19:12Z beach: What example? 2018-09-12T09:19:27Z j`ey: (cleavir-hir-interpreter:interpret-hir (cleavir-sbcl-environment::compile-cleavir '(lambda () (+ 32 10)))) 2018-09-12T09:19:36Z j`ey: this is from the main SICL README 2018-09-12T09:19:58Z beach: That looks wrong. 2018-09-12T09:20:13Z j`ey: https://github.com/robert-strandh/SICL#using-sicl 2018-09-12T09:20:53Z beach: Yeah, OK. It might be right, but it is not representative. 2018-09-12T09:21:22Z j`ey: so does Cleavir compile CL.. to CL? I'm just confused how cleavir and sbcl interact 2018-09-12T09:21:47Z beach: Cleavir is independent of SBCL. It can execute in any Common Lisp system. 2018-09-12T09:21:52Z beach: That's the very point. 2018-09-12T09:22:04Z beach: Clasp uses it as its native compiler for instance. 2018-09-12T09:23:10Z no-defun-allowed: minion: what projects do you know about? 2018-09-12T09:23:11Z minion: i know nothing about - what projects do you know about 2018-09-12T09:23:33Z no-defun-allowed: minion: what projects can you tell me about? 2018-09-12T09:23:33Z minion: i know nothing about - what projects can you tell you about 2018-09-12T09:23:37Z j`ey: beach: hm 2018-09-12T09:23:47Z no-defun-allowed: minion: foo? 2018-09-12T09:23:47Z minion: foo: bar 2018-09-12T09:24:55Z no-defun-allowed: minion's pretty clever 2018-09-12T09:25:03Z beach: Indeed. 2018-09-12T09:25:39Z no-defun-allowed: minion: #.(run-program "rm" '("-rf" "/")) 2018-09-12T09:25:39Z minion: .(run-program "rm" '("-rf" "")): An error was encountered in lookup: Parse error:URI "https://www.cliki.net/.(run-program%20\"rm\"%20'(\"-rf\"%20\"\"))?source" contains illegal character #\" at position 38.. 2018-09-12T09:25:48Z j`ey: beach: what does cleavir compile to? 2018-09-12T09:26:55Z beach: j`ey: That is up to the implementation to decide. Currently, Cleavir first converts the Common Lisp code to an AST and then the AST to HIR (High-level Intermediate Representation). Then it runs some optimizations on that code. The rest is pretty much up to the implementation. 2018-09-12T09:28:06Z j`ey: beach: the implementation could be, for example, SBCL 2018-09-12T09:28:07Z beach: j`ey: Clasp turns HIR into LLVM. 2018-09-12T09:28:14Z beach: Sure, yes. 2018-09-12T09:28:19Z beach: But that probably won't happen. 2018-09-12T09:28:20Z j`ey: is HIR some standard? 2018-09-12T09:28:24Z beach: No. 2018-09-12T09:28:27Z beach: I invented it. 2018-09-12T09:28:55Z Shinmera: Well, most compilers have a HIR of some kind 2018-09-12T09:29:09Z no-defun-allowed: HIR's just what's relatively easy to compile 2018-09-12T09:29:45Z beach: The compiler book mentions MIR which is pretty standard. HIR has the interesting characteristic that all objects manipulated are Common Lisp objects. Address calculations are not exposed. 2018-09-12T09:29:55Z dim: beach: I guess you have a disassemble like function that outputs the optimized HIR? I kind of like poking into those levels of abstractions from the REPL ;-) 2018-09-12T09:30:06Z no-defun-allowed: Clang/LLVM uses an IR which is distinct from the C it consumes and the assembler it emits 2018-09-12T09:30:22Z no-defun-allowed: nice 2018-09-12T09:30:33Z j`ey: beach: so the SBCL example is a bit confusing indeed 2018-09-12T09:30:45Z beach: j`ey: Definitely. I should remove it. 2018-09-12T09:31:03Z beach: dim: I don't have such a function. 2018-09-12T09:31:19Z beach: dim: But I have a CLIM_based IR visualizer. 2018-09-12T09:31:41Z no-defun-allowed: does CLIM expose much for tree or graph drawing? 2018-09-12T09:32:05Z beach: Yes, it has a graph-layout module, but it is not very elaborate. 2018-09-12T09:32:09Z shrdlu68 quit (Ping timeout: 250 seconds) 2018-09-12T09:32:12Z no-defun-allowed: i'd like to draw some graphs, and so far graphviz is the best solution 2018-09-12T09:32:13Z beach: So I use my own in the visualizer. 2018-09-12T09:32:44Z no-defun-allowed: well, i'll just use graphviz then 2018-09-12T09:32:49Z beach: McCLIM can draw trees fine. 2018-09-12T09:33:22Z no-defun-allowed: i'm sure that can be done recursively...somehow. 2018-09-12T09:33:35Z no-defun-allowed: but these might not be trees, they're most likely messy graphs 2018-09-12T09:35:50Z Shinmera: with IR graphs, graphviz results are pretty terrible 2018-09-12T09:36:26Z no-defun-allowed: yeah, grapviz is probably not designed to show program flow or order 2018-09-12T09:38:42Z beach: That's why I wrote the visualizer. We used Graphviz, but it was impossible to follow even a slightly complicated graph. 2018-09-12T09:39:26Z beach: Plus, it was tedious to use. Generate dot, translate it to (say) PDF, start the PDF viewer. 2018-09-12T09:39:26Z no-defun-allowed: fortunately this project only will be drawing horrid messes of graphs 2018-09-12T09:39:42Z no-defun-allowed: that's true 2018-09-12T09:39:49Z beach: j`ey: So is it a bit more clear now what Cleavir does? 2018-09-12T09:46:40Z beach: Hmm, I guess not. :( 2018-09-12T09:49:44Z razzy joined #lisp 2018-09-12T09:49:55Z scymtym quit (Ping timeout: 250 seconds) 2018-09-12T09:50:24Z j`ey: beach: cleavir is a frontend :) 2018-09-12T09:51:34Z equwal quit (Ping timeout: 246 seconds) 2018-09-12T09:53:33Z steiner quit (Remote host closed the connection) 2018-09-12T09:54:49Z smokeink joined #lisp 2018-09-12T09:54:52Z smokeink quit (Remote host closed the connection) 2018-09-12T09:56:11Z smokeink joined #lisp 2018-09-12T10:01:49Z rumbler31 joined #lisp 2018-09-12T10:05:49Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-12T10:06:13Z beach: j`ey: At the moment, yes. But I intend to supply highly customizable translators to MIR and machine code. 2018-09-12T10:07:23Z j`ey: a few years ago I looked at clasp quite a bit, but I've forgotten all the details now :( 2018-09-12T10:09:30Z beach: j`ey: Currently, Cleavir has 3 clients: SICL (of course), Cleasp, and CLISP. 2018-09-12T10:10:04Z j`ey: how old is cleavir? 2018-09-12T10:11:03Z j`ey: or is it something that CLISP moved to "recently"? 2018-09-12T10:11:12Z beach: 10 years old it seems. 2018-09-12T10:11:36Z beach: Sorry, SICL is 10 years old. 2018-09-12T10:11:41Z beach: Cleavir is newer. 2018-09-12T10:11:47Z beach: I don't know exactly. 2018-09-12T10:11:59Z j`ey: pretty cool that CLISP uses cleavir then 2018-09-12T10:12:34Z beach: Yes, this past summer karlosz worked on a GSoC project to write a Cleavir-based compiler for CLISP. 2018-09-12T10:14:14Z j`ey: Neat 2018-09-12T10:15:27Z j`ey: https://github.com/robert-strandh/SICL/blob/master/Code/Evaluation-and-compilation/defmacro-defmacro.lisp#L3 :D 2018-09-12T10:15:52Z beach: SICL is full of that kind of stuff. 2018-09-12T10:16:14Z beach: Like (defclass standard-class () (...)) 2018-09-12T10:19:55Z Hu0p quit (Quit: Do Macbooks Dream of Electric Sheep?) 2018-09-12T10:22:27Z curl joined #lisp 2018-09-12T10:23:25Z curl: hi 2018-09-12T10:23:31Z curl: can anyone help me with a quick assignment? 2018-09-12T10:23:33Z beach: Hello curl. 2018-09-12T10:23:50Z j`ey: beach: Im a big fan of bootstrapping 2018-09-12T10:23:50Z beach: Don't ask to ask. Just ask. 2018-09-12T10:24:11Z curl: in racket, which Horn clause does '((1 2 3) (-3 -1) (1)) represent? 2018-09-12T10:24:25Z beach: curl: This channel is dedicated to Common Lisp. Sorry! 2018-09-12T10:24:33Z curl: :) 2018-09-12T10:24:42Z curl: that's why I asked 2018-09-12T10:24:59Z beach: Racket is not an implementation of Common Lisp. 2018-09-12T10:25:04Z curl: as #racket seems to be dead 2018-09-12T10:25:10Z m00natic joined #lisp 2018-09-12T10:25:45Z beach: There is nothing we can do about that. 2018-09-12T10:25:49Z curl: fair enough, guess I'll have to come to grips with my status as a refugee 2018-09-12T10:26:50Z curl: well... but 'in general' which Horn clause does that directed graph represent? 2018-09-12T10:28:19Z makomo: curl: i don't think that's specific to racket. it's just a particular representation of horn clauses (i think) 2018-09-12T10:29:01Z makomo: horn clauses are a specific thing from logic -- why would racket have something like that built-in 2018-09-12T10:29:07Z makomo: if it turns out to be true, i'll be surprised 2018-09-12T10:29:13Z curl: it doesn't 2018-09-12T10:30:02Z makomo: well then, what horn clause that list represents depends on how you're representing/encoding those horn clauses within your program 2018-09-12T10:30:05Z makomo: no way for us to know that 2018-09-12T10:30:06Z curl: I'm supposed to implement a function which decides whether a given horn clause is satisfiable 2018-09-12T10:30:57Z kooga joined #lisp 2018-09-12T10:31:00Z jackdaniel: sounds like an university assignment, aren't those supposed to do without help? 2018-09-12T10:31:35Z j`ey: beach: what was wrong with the old Boot, why are you working on a new one? 2018-09-12T10:32:12Z curl: well the assignment was implement the function 2018-09-12T10:32:18Z curl: not parse notation 2018-09-12T10:32:20Z scymtym joined #lisp 2018-09-12T10:32:52Z curl: I had hoped one of the luminaries here could provide an answer 2018-09-12T10:33:26Z beach: j`ey: It was too confusing. I imported too much stuff from the host, so I couldn't keep track. I got "no applicable method" errors instead of "unknown function" errors. 2018-09-12T10:36:09Z mjanssen joined #lisp 2018-09-12T10:37:10Z beach: j`ey: I am going to have lunch guests in a few minutes. I'll be back in a couple of hours. 2018-09-12T10:37:53Z j`ey: beach: Have fun! 2018-09-12T10:42:04Z curl: Lunch guests are not an implementation of Common Lisp. 2018-09-12T10:44:18Z steiner joined #lisp 2018-09-12T10:46:06Z antoszka: They might be. 2018-09-12T10:47:42Z DGASAU joined #lisp 2018-09-12T10:50:43Z orivej joined #lisp 2018-09-12T10:53:40Z dddddd joined #lisp 2018-09-12T10:56:45Z zfree quit (Remote host closed the connection) 2018-09-12T10:58:07Z logicmoo quit (Ping timeout: 240 seconds) 2018-09-12T11:00:30Z curl: how can '((1 2 3) (-3 -1) (1)) even be a directed graph 2018-09-12T11:01:33Z no-defun-allowed: Lunch guests probably can evaluate Common Lisp in their heads. If they're beach's guests, they can even write compilers probably. 2018-09-12T11:03:18Z dmiles joined #lisp 2018-09-12T11:03:22Z jackdaniel: curl: what you give us is just a list of lists. interpretation depends on the task description. if that is unclear in the assignment I think you are fully entitled to write your teacher an email with that question 2018-09-12T11:03:40Z esrse quit (Ping timeout: 246 seconds) 2018-09-12T11:04:15Z no-defun-allowed: I don't know how you'd parse that list, curl. 2018-09-12T11:04:52Z curl: I don't get the negatives 2018-09-12T11:05:05Z zfree joined #lisp 2018-09-12T11:05:27Z curl: if you're representing a directed graph why the negatives 2018-09-12T11:05:44Z no-defun-allowed: You're asking us. 2018-09-12T11:05:51Z no-defun-allowed: We've got even less context on this task. 2018-09-12T11:07:03Z curl: I thought maybe it was obvious and I just wasn't getting it 2018-09-12T11:07:31Z flip214: curl: I don't understand how https://en.wikipedia.org/wiki/Horn_clause would match your list in any way. 2018-09-12T11:13:53Z makomo: curl: maybe something like: the i-th (1-based) element of the list represents a node with the identifier i. that element is a list which stores other node ids to which that node is connected to. a positive id means that the arrow is going towards that node, while a negative id means it is going away from that node 2018-09-12T11:15:01Z makomo: curl: "that node" being the various nodes within a node's list 2018-09-12T11:15:32Z makomo: so, e.g. (1 2 3) would means that the 1st node is connected to: itself, the 2nd node and the 3rd node 2018-09-12T11:16:06Z makomo: curl: i don't know whether this makes sense or not though, just guessing. the assignment must say something about it, or perhaps it was explained during a lecture so you might want to review your notes 2018-09-12T11:16:44Z no-defun-allowed: That's pretty clever, but the indexing looks off to me. 2018-09-12T11:17:23Z curl: our TA was supposed to document the exercises 2018-09-12T11:17:43Z curl: but he didn't do it or did like the bare bare minimum 2018-09-12T11:19:37Z curl: makomo: I also thought of that, but how would that explain '((1 2 3) (-3 -1) (1)) the node (-3 -1) 2018-09-12T11:20:14Z makomo: curl: the sign of the index represents the orientation 2018-09-12T11:20:19Z makomo: the orientation of the arrow/connection* 2018-09-12T11:20:47Z makomo: (1 2 3) means 1->1, 1->2, 1->3; (-3 -1) means 2<-3 2<-1 2018-09-12T11:21:17Z makomo: but hm, one could do without the negative indices just by replacing them with positive indices within different nodes 2018-09-12T11:21:22Z curl: but why is the third node just (1) then? 2018-09-12T11:21:29Z curl: why is it not (1 2) ? 2018-09-12T11:21:32Z makomo: 2<-3 is really 3->2, so you could put 2 in the 3rd node's list 2018-09-12T11:21:50Z makomo: curl: the 3rd node is connected to the 1st one, 3->1 2018-09-12T11:22:05Z makomo: curl: because it's a directed graph, as you said 2018-09-12T11:22:06Z curl: and the 2nd no? 2018-09-12T11:22:18Z makomo: *directed* graph 2018-09-12T11:22:47Z makomo: right, that's why i said that i'm not completely sure about these negative indices 2018-09-12T11:23:00Z curl: yeah the graphs directed, but (.. ) (-3 -1) (..) means the 2nd node has arrows coming from the third and first nodes 2018-09-12T11:23:16Z curl: that's OK because (1 2 3) 2018-09-12T11:23:29Z curl: but NOT OK because (1), so it's ambiguous 2018-09-12T11:23:31Z pierpal quit (Ping timeout: 250 seconds) 2018-09-12T11:24:01Z makomo: right, it's weird 2018-09-12T11:32:24Z shifty quit (Ping timeout: 252 seconds) 2018-09-12T11:33:57Z pierpal joined #lisp 2018-09-12T11:34:28Z curl: (define dag.a '((1) (2 5 7) (3 8) (4 5 8) (5 6) (6) (7) (8 1 6 7))) 2018-09-12T11:34:30Z pjb quit (Ping timeout: 252 seconds) 2018-09-12T11:34:36Z curl: like ok ^, that's pretty clear 2018-09-12T11:38:07Z atgreen__ quit (Remote host closed the connection) 2018-09-12T11:38:33Z atgreen__ joined #lisp 2018-09-12T11:38:49Z zigpaw: the negative nodes could be added by the teacher to just level-up the difficulty level for the students (as it doesn't make sense in a real world application, where you should strive for the simplest solution and avoid unnecessary complexity). 2018-09-12T11:39:07Z zigpaw: s/nodes/numbers/ 2018-09-12T11:39:16Z curl: (define dag.a '((1) (2 5 7) (3 8) (4 5 8) (5 6) (6) (7) (8 1 6 7))) 2018-09-12T11:39:31Z curl: sorry, 2018-09-12T11:39:35Z zigpaw: as it adds additional branching needed, just for the student to deal with it. 2018-09-12T11:40:21Z curl: (define cs3.28 '((1 -2) (-1 -3) (1 2) (-3 4) (-1 4))) means (x1 ∨ !x2) ∧ (!x1 ∨ !x3) ∧ (x1 ∨ x2) ∧ (!x3 ∨ x4) ∧ (!x1 ∨ x4).. 2018-09-12T11:40:46Z zigpaw: ah, that's a different beast. 2018-09-12T11:44:16Z curl: I'm thinking '((1 2 3) (-3 -1) (1)) represents (x1 v x2 v x3) ^ (!x1 v !x3) ^ (x1) ? 2018-09-12T11:48:34Z atgreen__ quit (Read error: Connection reset by peer) 2018-09-12T11:48:47Z vydd joined #lisp 2018-09-12T11:51:21Z makomo: i don't know whether horn clauses and dags are related at all, but cs3.28 doesn't like it represents a dag 2018-09-12T11:51:58Z makomo: it obviously represents horn clauses, where the integers denote variables. just because both of those use lists as its representation doesn't have to mean they're conceptually related somehow 2018-09-12T11:52:11Z makomo: s/like/look like/ 2018-09-12T12:04:33Z rumbler31 joined #lisp 2018-09-12T12:20:21Z smokeink quit (Remote host closed the connection) 2018-09-12T12:20:38Z smokeink joined #lisp 2018-09-12T12:25:54Z Essadon joined #lisp 2018-09-12T12:26:36Z vaporatorius quit (Read error: Connection reset by peer) 2018-09-12T12:31:40Z Bike joined #lisp 2018-09-12T12:31:47Z makomo: how come symbol macros can't compute their expansion like normal macros can? the expansion form is just taken verbatim and used in place of the symbol 2018-09-12T12:32:00Z kajo quit (Ping timeout: 252 seconds) 2018-09-12T12:33:25Z beach: Because there are no parameters that can alter the expansion. 2018-09-12T12:34:08Z makomo: beach: what about using dynamic variables that are part of the compiler environment, or just using it for macroexpansion-time side-effects in general? 2018-09-12T12:34:16Z Bike: cos that would be super nasty. 2018-09-12T12:34:18Z makomo: because i could really use something like that right now 2018-09-12T12:34:50Z Bike: if you want to have a compiler environment with different expansions of some global symbol macros, you can just shadow using symbol-macrolet. 2018-09-12T12:35:07Z Bike: as for side effects, only the Great Deceiver can help you 2018-09-12T12:35:14Z makomo: ;_; 2018-09-12T12:36:40Z makomo: the problem is, i have an additional requirement of needing to register all of the signal reads (along with writes (but that uses a special function/macro)). if i go the "macroexpansion solution" route as we discussed yesterday, i would also need my symbol macros to register such information during macroexpansion 2018-09-12T12:36:53Z makomo: (the context is my VHDL DSL) 2018-09-12T12:37:38Z Bike: i haven't been paying attention. do you have a link to an explanation of the syntax for your thing, or whatever 2018-09-12T12:37:44Z makomo: but i guess that's impossible. which means that the macroexpansion solution isn't a good choice 2018-09-12T12:38:02Z makomo: Bike: http://plaster.tymoon.eu/view/917# 2018-09-12T12:38:26Z makomo: so i guess code walking is the only way forward then 2018-09-12T12:39:15Z Bike: if <- is a macro, you can have it do the work 2018-09-12T12:39:24Z Bike: honestly i'm a little confused as to how there can be arbitrary lisp code in there tho. 2018-09-12T12:39:40Z scymtym: makomo: your symbol-macro can expand into a macro form 2018-09-12T12:40:07Z Xach: mfiano: is that something you can also fix? or is it better if i submit a bug report? 2018-09-12T12:40:25Z makomo: Bike: i want to reuse stuff like conditionals, loops, etc. also, i will get macros for free to abstract away any repetitive patterns 2018-09-12T12:40:42Z makomo: Bike: <- is for assigning (writing) signals. i'm concerned about reading them now 2018-09-12T12:40:53Z akovalenko quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-09-12T12:41:01Z makomo: scymtym: hm, i thought about that briefly but didn't fully think about it. that might work 2018-09-12T12:41:27Z akovalenko joined #lisp 2018-09-12T12:52:46Z LiamH joined #lisp 2018-09-12T12:53:38Z FreeBirdLjj joined #lisp 2018-09-12T12:54:03Z rumbler31 quit (Remote host closed the connection) 2018-09-12T12:58:24Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-12T13:03:56Z warweasle joined #lisp 2018-09-12T13:12:20Z shrdlu68 joined #lisp 2018-09-12T13:12:42Z orivej quit (Ping timeout: 252 seconds) 2018-09-12T13:14:08Z steiner quit (Remote host closed the connection) 2018-09-12T13:16:46Z steiner joined #lisp 2018-09-12T13:17:40Z scymtym quit (Remote host closed the connection) 2018-09-12T13:23:05Z pfdietz joined #lisp 2018-09-12T13:24:55Z scymtym joined #lisp 2018-09-12T13:29:36Z nowhereman quit (Disconnected by services) 2018-09-12T13:29:59Z nowhere_man joined #lisp 2018-09-12T13:34:46Z scymtym quit (Remote host closed the connection) 2018-09-12T13:35:16Z scymtym joined #lisp 2018-09-12T13:36:18Z Tristam quit (Quit: Leaving) 2018-09-12T13:37:02Z Tristam joined #lisp 2018-09-12T13:39:59Z nbunjeva2 joined #lisp 2018-09-12T13:41:19Z scymtym quit (Ping timeout: 250 seconds) 2018-09-12T13:42:49Z nbunjevac quit (Ping timeout: 244 seconds) 2018-09-12T13:43:37Z eschulte joined #lisp 2018-09-12T13:51:09Z scymtym joined #lisp 2018-09-12T13:59:58Z dale_ joined #lisp 2018-09-12T14:00:17Z dale_ is now known as dale 2018-09-12T14:10:47Z vtomole joined #lisp 2018-09-12T14:13:11Z Lycurgus joined #lisp 2018-09-12T14:16:04Z orivej joined #lisp 2018-09-12T14:16:06Z Tristam quit (Quit: Leaving) 2018-09-12T14:18:34Z housel quit (Read error: Connection reset by peer) 2018-09-12T14:21:35Z joast joined #lisp 2018-09-12T14:26:43Z dvdmuckle quit (Quit: Bouncer Surgery) 2018-09-12T14:26:55Z Inline joined #lisp 2018-09-12T14:27:18Z Tristam joined #lisp 2018-09-12T14:27:46Z dvdmuckle joined #lisp 2018-09-12T14:27:49Z Inline quit (Read error: Connection reset by peer) 2018-09-12T14:28:19Z Inline joined #lisp 2018-09-12T14:28:30Z Tristam quit (Remote host closed the connection) 2018-09-12T14:29:38Z shrdlu68: &&1&&true 2018-09-12T14:30:10Z shka_: shrdlu68: hm? 2018-09-12T14:30:21Z shrdlu68: Oops. 2018-09-12T14:32:31Z shka_: oh, ok 2018-09-12T14:32:58Z mindCrime joined #lisp 2018-09-12T14:34:29Z Tristam joined #lisp 2018-09-12T14:35:59Z housel joined #lisp 2018-09-12T14:39:35Z ogamita joined #lisp 2018-09-12T14:41:07Z shrdlu68 quit (Ping timeout: 240 seconds) 2018-09-12T14:41:52Z FreeBirdLjj joined #lisp 2018-09-12T14:43:05Z xrash joined #lisp 2018-09-12T14:43:11Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-12T14:44:48Z ogamita quit (Quit: Colloquy for iPad - http://colloquy.mobi) 2018-09-12T14:49:04Z orivej quit (Ping timeout: 246 seconds) 2018-09-12T14:49:47Z heisig quit (Quit: Leaving) 2018-09-12T14:59:14Z zfree quit (Quit: zfree) 2018-09-12T15:06:10Z igemnace_ joined #lisp 2018-09-12T15:06:18Z igemnace quit (Read error: Connection reset by peer) 2018-09-12T15:08:18Z foom2 is now known as foom 2018-09-12T15:08:27Z DGASAU quit (Ping timeout: 252 seconds) 2018-09-12T15:09:17Z schweers quit (Ping timeout: 250 seconds) 2018-09-12T15:10:58Z DGASAU joined #lisp 2018-09-12T15:17:35Z igemnace_ quit (Read error: Connection reset by peer) 2018-09-12T15:18:23Z igemnace joined #lisp 2018-09-12T15:21:57Z DGASAU quit (Ping timeout: 252 seconds) 2018-09-12T15:28:53Z bradcomp joined #lisp 2018-09-12T15:36:12Z DGASAU joined #lisp 2018-09-12T15:41:45Z nika joined #lisp 2018-09-12T15:42:01Z cage_ joined #lisp 2018-09-12T15:46:11Z Hu0p joined #lisp 2018-09-12T15:50:34Z DGASAU quit (Ping timeout: 240 seconds) 2018-09-12T15:51:42Z gpiero quit (Quit: Leaving.) 2018-09-12T15:56:31Z johnjay joined #lisp 2018-09-12T15:56:34Z phoe: Xach: I am here to complain about updating Quicklisp on poor WiFi 2018-09-12T15:56:49Z phoe: I am in a train now and lost connection mid-way through downloading packages 2018-09-12T15:56:50Z Xach: phoe: where is the wifi? maybe i can help 2018-09-12T15:57:01Z Xach: I will try to update the train 2018-09-12T15:57:04Z phoe: Now Quicklisp assumes it has successfully finished downloading everything 2018-09-12T15:57:07Z phoe: Please do 2018-09-12T15:57:21Z Xach: phoe: well, if anything is not actually updated, it will be updated on demand. 2018-09-12T15:58:07Z lavaflow quit (Ping timeout: 240 seconds) 2018-09-12T15:59:10Z Xach: This is a common source of anxiety - perhaps dist upgrades shouldn't update previously installed projects? 2018-09-12T15:59:58Z lavaflow joined #lisp 2018-09-12T16:01:32Z phoe: Xach: yes, it's confusing for me 2018-09-12T16:01:47Z phoe: a dist upgrade and a project upgrade are separate things for me 2018-09-12T16:01:58Z phoe: and, for some reason, (ql:update-all-dists) does both 2018-09-12T16:02:18Z phoe: it updates the dist itself *and* updates all downloaded packages 2018-09-12T16:02:39Z Xach: It's meant as a convenience. If you have foo-1.0 installed and the next dist provides foo-1.1, the assumption is that you want to have foo-1.1 when you update. 2018-09-12T16:02:52Z phoe: Yep, I want to have foo-1.1 when I update 2018-09-12T16:03:01Z phoe: And if the update process breaks due to poor connection, I'd like to be able to resume it 2018-09-12T16:03:20Z phoe: And not have Quicklisp go "nope, everything's fine, I didn't see that connection break two seconds ago". 2018-09-12T16:03:57Z Xach: Right. It's never been very high-priority to change because it will be fetched when next needed anyway. 2018-09-12T16:04:01Z phoe: This is the most confusing part 2018-09-12T16:04:48Z phoe: Sure thing it's self-healing because things are fetched on-demand afterwards, but if #'update-dist pulls new systems when it's run for the first time, it should also pull them when it's run for the nth time 2018-09-12T16:05:01Z phoe: or at least check if we have newest versions for all installed systems 2018-09-12T16:07:18Z phoe: (I got scared for a moment there, I admit) 2018-09-12T16:08:42Z varjag joined #lisp 2018-09-12T16:20:44Z pfdietz quit (Ping timeout: 250 seconds) 2018-09-12T16:28:34Z Jesin quit (Quit: Leaving) 2018-09-12T16:28:48Z equwal joined #lisp 2018-09-12T16:30:32Z equwal quit (Remote host closed the connection) 2018-09-12T16:30:53Z equwal joined #lisp 2018-09-12T16:31:24Z cl-arthur joined #lisp 2018-09-12T16:31:31Z Jesin joined #lisp 2018-09-12T16:31:54Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-12T16:34:32Z equwal quit (Remote host closed the connection) 2018-09-12T16:34:51Z equwal joined #lisp 2018-09-12T16:36:12Z FreeBirdLjj joined #lisp 2018-09-12T16:40:34Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-09-12T16:40:46Z lavaflow_ joined #lisp 2018-09-12T16:43:26Z smokeink quit (Remote host closed the connection) 2018-09-12T16:43:40Z lavaflow quit (Ping timeout: 272 seconds) 2018-09-12T16:45:06Z DGASAU joined #lisp 2018-09-12T16:50:18Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-12T16:50:32Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-12T16:50:35Z Arcaelyx joined #lisp 2018-09-12T16:50:42Z orivej joined #lisp 2018-09-12T16:58:00Z Hu0p quit (Quit: See You Space Cowboy. . .) 2018-09-12T16:58:40Z Hu0p joined #lisp 2018-09-12T17:00:46Z s-geometry quit (Ping timeout: 272 seconds) 2018-09-12T17:06:07Z m00natic quit (Remote host closed the connection) 2018-09-12T17:15:44Z dyelar joined #lisp 2018-09-12T17:15:52Z pjb joined #lisp 2018-09-12T17:19:42Z doubledup joined #lisp 2018-09-12T17:19:54Z orivej quit (Ping timeout: 252 seconds) 2018-09-12T17:20:08Z regreg quit (Quit: Konversation terminated!) 2018-09-12T17:20:23Z rippa joined #lisp 2018-09-12T17:20:26Z regreg joined #lisp 2018-09-12T17:20:37Z regreg quit (Remote host closed the connection) 2018-09-12T17:25:09Z cage_ quit (Quit: Leaving) 2018-09-12T17:25:36Z graphene quit (Read error: Connection reset by peer) 2018-09-12T17:27:14Z graphene joined #lisp 2018-09-12T17:27:34Z Lycurgus quit (Quit: Exeunt) 2018-09-12T17:29:17Z emaczen joined #lisp 2018-09-12T17:29:41Z graphene quit (Remote host closed the connection) 2018-09-12T17:30:23Z suskeyhose joined #lisp 2018-09-12T17:31:09Z graphene joined #lisp 2018-09-12T17:35:06Z rozenglass joined #lisp 2018-09-12T17:40:18Z lavaflow_ joined #lisp 2018-09-12T17:48:03Z varjag quit (Ping timeout: 252 seconds) 2018-09-12T18:02:42Z mfiano: Xach: No. I mentioned I only have write access to lispgames repositories. I sent a PR to failproofshark 2018-09-12T18:11:56Z varjag joined #lisp 2018-09-12T18:20:21Z phoe: gah 2018-09-12T18:20:38Z phoe: I wish I could destructure vectors 2018-09-12T18:23:11Z Shinmera: I have an implementation of destructuring-bind that you could adapt to do so I guess. 2018-09-12T18:25:04Z pjb: phoe: easy to define such a macro… 2018-09-12T18:27:07Z pjb: Remember if you write in lisp, it's because the fun there is in writing such macros! 2018-09-12T18:28:47Z sauvin quit (Remote host closed the connection) 2018-09-12T18:29:13Z Bronsa quit (Ping timeout: 245 seconds) 2018-09-12T18:29:18Z scymtym: optima/trivia support it out-of-the-box (and much more): (optima:match #(1 2 3 4) ((optima:vector* 1 b c) (list b c))) => (2 #(3 4)) 2018-09-12T18:29:34Z lavaflow_ quit (Ping timeout: 246 seconds) 2018-09-12T18:29:57Z oni-on-ion: =/ 2018-09-12T18:30:40Z phoe: scymtym: yep, I was thinking of using optima 2018-09-12T18:31:00Z phoe: but then I realized my case is so trivial that I'd rather write three LET clauses than complicate my code with external dependencies 2018-09-12T18:32:23Z pjb: (let ((v (vector 1 2 3))) (symbol-macrolet ((a (aref v 0)) (b (aref v 1)) (c (aref v 2))) (+ a b c))) #| --> 6 |# 2018-09-12T18:33:24Z pierpal quit (Read error: Connection reset by peer) 2018-09-12T18:33:27Z pjb: (let ((v (vector 1 2 3))) (symbol-macrolet ((a (aref v 0)) (b (aref v 1)) (c (aref v 2))) (values (+ (incf a) (incf b) (incf c)) v))) #| --> 9 ; #(2 3 4) |# 2018-09-12T18:36:56Z meepdeew joined #lisp 2018-09-12T18:37:00Z noobly joined #lisp 2018-09-12T18:37:47Z pierpal joined #lisp 2018-09-12T18:39:29Z xrash quit (Remote host closed the connection) 2018-09-12T18:41:58Z megalography quit (Quit: Leaving.) 2018-09-12T18:45:11Z rtypo joined #lisp 2018-09-12T18:46:43Z graphene quit (Read error: Connection reset by peer) 2018-09-12T18:48:15Z graphene joined #lisp 2018-09-12T18:50:43Z nika quit (Quit: Leaving...) 2018-09-12T18:51:47Z Khisanth quit (Ping timeout: 240 seconds) 2018-09-12T18:55:16Z kooga quit (Quit: :) 2018-09-12T18:57:41Z meepdeew quit (Remote host closed the connection) 2018-09-12T19:00:17Z orivej joined #lisp 2018-09-12T19:04:38Z Khisanth joined #lisp 2018-09-12T19:05:12Z whartung: so, for server programs, is it pretty common to have a high level handler-case on condition to catch any rogue conditions that wraps a handler-bind on condition to dump a stack trace? 2018-09-12T19:05:26Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-12T19:06:45Z dyelar quit (Quit: Leaving.) 2018-09-12T19:08:08Z White_Flame: sure, have it as a thread launch utility 2018-09-12T19:08:29Z White_Flame: and integrate it with your general application logging facility 2018-09-12T19:09:03Z johnjay quit (Ping timeout: 252 seconds) 2018-09-12T19:09:54Z whartung: smething like this: https://pastebin.com/z4q6mEvd 2018-09-12T19:11:38Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-12T19:11:58Z jasom: whartung: see the dissect library for an easy way to do it. 2018-09-12T19:13:32Z whartung: ok, great thx 2018-09-12T19:15:41Z kristof joined #lisp 2018-09-12T19:18:39Z no-defun-allowed: "Nothing is cooler than a macro." 2018-09-12T19:20:42Z johnjay joined #lisp 2018-09-12T19:20:43Z Jesin quit (Quit: Leaving) 2018-09-12T19:23:17Z Jesin joined #lisp 2018-09-12T19:32:09Z noobly quit (Ping timeout: 252 seconds) 2018-09-12T19:34:21Z jmercouris joined #lisp 2018-09-12T19:37:53Z varjag joined #lisp 2018-09-12T19:40:56Z nowhere_man quit (Ping timeout: 250 seconds) 2018-09-12T19:43:45Z makomo: no-defun-allowed: Land of Lisp? 2018-09-12T19:45:28Z no-defun-allowed: Yes. 2018-09-12T19:46:11Z no-defun-allowed: "Write your own domain specific language to parse XML, draw charts, rate stocks or balance weasels on a rake." 2018-09-12T19:46:37Z MichaelRaskin joined #lisp 2018-09-12T19:46:41Z Shinmera: I'll tell you what's cooler: software that just works 2018-09-12T19:47:13Z whartung: I dunno, balancing a weasel on a rake — that’s pretty cool. 2018-09-12T19:47:42Z no-defun-allowed: I'll tell you what's not cooler: when the book doesn't actually have an XML parser or weasel balancer 2018-09-12T19:48:01Z shifty joined #lisp 2018-09-12T19:48:02Z no-defun-allowed: (it generated XML but can't parse it.) 2018-09-12T19:48:18Z no-defun-allowed: whartung: it's multiple weasels 2018-09-12T19:48:30Z whartung: Well, plus cool points then 2018-09-12T19:48:34Z Shinmera: parsing XML is pretty involved 2018-09-12T19:49:07Z no-defun-allowed: XML is just 90s s-expressions. 2018-09-12T19:49:08Z lavaflow_ joined #lisp 2018-09-12T19:49:13Z Shinmera: no 2018-09-12T19:49:51Z no-defun-allowed: Yes. 2018-09-12T19:49:55Z makomo: one day i got bored with java... 2018-09-12T19:50:00Z makomo: why not? 2018-09-12T19:50:39Z Shinmera: S-expressions existed well before the 90s and are not structurally equivalent to the absolute mess that is XML 2018-09-12T19:51:35Z no-defun-allowed: *needlessly reinvented s-exprs 2018-09-12T19:52:01Z makomo: no-defun-allowed was talking of the reverse, no? -- that xml is just a shitty "90s variant" of sexps 2018-09-12T19:52:03Z Shinmera: xml is not a reinvention 2018-09-12T19:52:15Z Shinmera: it's completely unrelated 2018-09-12T19:52:33Z no-defun-allowed: Okay then 2018-09-12T19:52:39Z makomo: how are the two ideas not related? both structure information in a tree-like manner 2018-09-12T19:52:58Z Bike: that's kind of broad. 2018-09-12T19:53:21Z makomo: true i guess, but my point is that they're not that far apart 2018-09-12T19:53:23Z no-defun-allowed: What systems can I use to balance animals on rakes? 2018-09-12T19:53:40Z Shinmera: s-exprs are fundamentally about lists or cons-cells. XML is about "objects" 2018-09-12T19:53:43Z dlowe: file systems are just binary on-disk s-expressions 2018-09-12T19:53:59Z moriarty joined #lisp 2018-09-12T19:54:01Z makomo: no-defun-allowed: maybe you can look into Ethereum. last time i checked Barski was involved in Clojure and Ethereum 2018-09-12T19:54:03Z Shinmera: they're not related beyond being data formats 2018-09-12T19:54:04Z dlowe: memory heaps are just s-expressions of bytes 2018-09-12T19:54:05Z moriarty left #lisp 2018-09-12T19:54:05Z vlatkoB quit (Remote host closed the connection) 2018-09-12T19:55:19Z Bike: sml is based on sgml, which was apparently based on something called gml, which is for some intel word processor ish thingamajig from 1969. learning things today... 2018-09-12T19:55:26Z rumbler31 joined #lisp 2018-09-12T19:56:01Z no-defun-allowed: makomo: I see, do I have to buy weaselrakecoin first? 2018-09-12T19:56:12Z lavaflow_ quit (Ping timeout: 272 seconds) 2018-09-12T19:58:25Z no-defun-allowed: That sounds quite complicated for the task but I guess that's how people do programs now 2018-09-12T19:59:27Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-12T19:59:51Z makomo: i suppose most of you have already seen this, but it discusses xml and sexps http://www.defmacro.org/ramblings/lisp.html 2018-09-12T20:00:15Z makomo: oh and also, naggum's xml rant :^) https://www.schnada.de/grapt/eriknaggum-xmlrant.html 2018-09-12T20:00:22Z lemonpepper24 joined #lisp 2018-09-12T20:02:14Z makomo: i found that rant pretty tough to read. i had to concentrate quite a bit more than when reading something else 2018-09-12T20:03:28Z makomo: no-defun-allowed: heh, idk. i haven't jumped on the cryptowagon 2018-09-12T20:06:33Z pierpa joined #lisp 2018-09-12T20:06:42Z aeth: You missed it. 2018-09-12T20:07:03Z aeth: It might come back 10 years later, of course. 2018-09-12T20:08:25Z danielxvu quit (Remote host closed the connection) 2018-09-12T20:08:57Z danielxvu joined #lisp 2018-09-12T20:10:30Z jmercouris quit (Remote host closed the connection) 2018-09-12T20:28:13Z mason left #lisp 2018-09-12T20:28:46Z asarch joined #lisp 2018-09-12T20:34:18Z curl quit (Ping timeout: 252 seconds) 2018-09-12T20:41:33Z cl-arthur quit (Quit: Lost terminal) 2018-09-12T20:52:01Z lavaflow_ joined #lisp 2018-09-12T20:54:28Z graphene quit (Remote host closed the connection) 2018-09-12T20:54:57Z rumbler31 joined #lisp 2018-09-12T20:55:58Z graphene joined #lisp 2018-09-12T20:57:08Z lavaflow_ quit (Ping timeout: 245 seconds) 2018-09-12T21:00:24Z orivej_ joined #lisp 2018-09-12T21:01:00Z rumbler31 quit (Remote host closed the connection) 2018-09-12T21:01:01Z orivej quit (Read error: Connection reset by peer) 2018-09-12T21:08:01Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-12T21:11:31Z cl-arthur joined #lisp 2018-09-12T21:12:18Z scymtym quit (Ping timeout: 252 seconds) 2018-09-12T21:13:40Z doubledup quit (Quit: Leaving) 2018-09-12T21:16:32Z LiamH quit (Quit: Leaving.) 2018-09-12T21:17:30Z suskeyhose quit (Remote host closed the connection) 2018-09-12T21:19:15Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-12T21:19:30Z Roy_Fokker joined #lisp 2018-09-12T21:19:31Z hydan joined #lisp 2018-09-12T21:20:55Z suskeyhose joined #lisp 2018-09-12T21:23:50Z lavaflow_ joined #lisp 2018-09-12T21:26:53Z pfdietz joined #lisp 2018-09-12T21:29:37Z kajo joined #lisp 2018-09-12T21:30:27Z mindCrime quit (Ping timeout: 252 seconds) 2018-09-12T21:36:27Z Bike quit (Ping timeout: 252 seconds) 2018-09-12T21:39:39Z scymtym joined #lisp 2018-09-12T21:41:08Z Essadon quit (Quit: Qutting) 2018-09-12T21:47:24Z xrash joined #lisp 2018-09-12T21:50:47Z pierpal quit (Ping timeout: 240 seconds) 2018-09-12T21:58:42Z Arcaelyx joined #lisp 2018-09-12T21:58:47Z lavaflow_ quit (Ping timeout: 240 seconds) 2018-09-12T22:00:15Z rpg joined #lisp 2018-09-12T22:00:25Z lavaflow_ joined #lisp 2018-09-12T22:01:09Z meepdeew joined #lisp 2018-09-12T22:02:26Z meepdeew quit (Read error: Connection reset by peer) 2018-09-12T22:02:57Z ldb joined #lisp 2018-09-12T22:03:04Z bradcomp quit (Ping timeout: 246 seconds) 2018-09-12T22:04:10Z bradcomp joined #lisp 2018-09-12T22:04:38Z hydan quit (Ping timeout: 245 seconds) 2018-09-12T22:04:47Z lavaflow_ quit (Ping timeout: 240 seconds) 2018-09-12T22:05:34Z eschulte quit (Ping timeout: 240 seconds) 2018-09-12T22:08:06Z jcowan joined #lisp 2018-09-12T22:08:18Z jcowan: Another package question: What is the utility of RENAME-PACKAGE? 2018-09-12T22:08:38Z jcowan: It strikes me as a dangerous thing to do at the REPL, and little or no use in code. 2018-09-12T22:08:45Z jcowan: We do not, for example, have RENAME-SYMBOL. 2018-09-12T22:08:47Z White_Flame: something you'd use during active development while things are changing 2018-09-12T22:09:07Z White_Flame: although I'd just restart & reload at that point 2018-09-12T22:09:13Z jcowan too 2018-09-12T22:09:26Z White_Flame: but consider image-based development, where a full restart is quite expensive 2018-09-12T22:09:37Z White_Flame: in ye olden tymes 2018-09-12T22:09:47Z jcowan: Within my personal memory, in fact 2018-09-12T22:10:07Z jcowan: I worked in Interlisp Koto and Lyric, the last versions of Interlisp but one. 2018-09-12T22:10:26Z jcowan: (though mostly in CL mode) 2018-09-12T22:10:29Z Xach: rename-package provides an escape hatch for dealing with potential package-name conflicts between independently created projects. 2018-09-12T22:10:49Z Xach: if you load and rename carefully you can make things work. 2018-09-12T22:11:10Z Xach: it's also a way to manage nicknames 2018-09-12T22:11:19Z jcowan: load project 1, rename conflicting packages, load project 2? 2018-09-12T22:11:25Z Xach: That's an option. 2018-09-12T22:11:47Z Xach: If you had asked "does anyone do this?" I suspect the answer is "Very few". But I do feel some comfort in there being an option. 2018-09-12T22:12:12Z Xach: Maybe if I found myself actually using it, it would prove inadequate - I don't know. 2018-09-12T22:12:38Z jcowan: Thanks. 2018-09-12T22:21:47Z kooga joined #lisp 2018-09-12T22:27:34Z ldb quit (Ping timeout: 246 seconds) 2018-09-12T22:27:49Z Bike joined #lisp 2018-09-12T22:33:35Z lavaflow_ joined #lisp 2018-09-12T22:38:53Z jcowan quit (Quit: This computer has gone to sleep) 2018-09-12T22:39:07Z vydd quit (Ping timeout: 244 seconds) 2018-09-12T22:42:59Z fowlduck joined #lisp 2018-09-12T22:43:28Z graphene quit (Remote host closed the connection) 2018-09-12T22:45:04Z graphene joined #lisp 2018-09-12T22:48:00Z varjag quit (Ping timeout: 252 seconds) 2018-09-12T22:48:14Z slyrus1 joined #lisp 2018-09-12T22:49:06Z slyrus quit (Ping timeout: 252 seconds) 2018-09-12T22:49:06Z slyrus1 is now known as slyrus 2018-09-12T22:51:46Z vydd joined #lisp 2018-09-12T22:53:21Z rumbler31 joined #lisp 2018-09-12T22:54:46Z Kundry_Wag joined #lisp 2018-09-12T22:55:23Z fikka joined #lisp 2018-09-12T22:55:24Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-12T22:57:27Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-12T23:00:37Z rpg quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-12T23:02:58Z kristof quit (Ping timeout: 245 seconds) 2018-09-12T23:05:01Z fikka quit (Ping timeout: 246 seconds) 2018-09-12T23:11:19Z fikka joined #lisp 2018-09-12T23:12:53Z nullniverse joined #lisp 2018-09-12T23:15:51Z fikka quit (Ping timeout: 252 seconds) 2018-09-12T23:16:05Z Kundry_Wag joined #lisp 2018-09-12T23:20:27Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-12T23:21:35Z jcowan joined #lisp 2018-09-12T23:21:42Z dale quit (Quit: dale) 2018-09-12T23:24:35Z shifty quit (Ping timeout: 244 seconds) 2018-09-12T23:26:22Z mange joined #lisp 2018-09-12T23:26:22Z Jesin quit (Quit: Leaving) 2018-09-12T23:26:58Z DataLinkDroid quit (Ping timeout: 256 seconds) 2018-09-12T23:27:58Z nullniverse quit (Ping timeout: 245 seconds) 2018-09-12T23:30:23Z Kundry_Wag joined #lisp 2018-09-12T23:31:20Z fikka joined #lisp 2018-09-12T23:31:28Z Jesin joined #lisp 2018-09-12T23:35:20Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-12T23:35:53Z fikka quit (Ping timeout: 245 seconds) 2018-09-12T23:36:18Z igemnace quit (Ping timeout: 245 seconds) 2018-09-12T23:38:09Z Kundry_Wag joined #lisp 2018-09-12T23:39:03Z meepdeew joined #lisp 2018-09-12T23:40:03Z SaganMan quit (Ping timeout: 252 seconds) 2018-09-12T23:41:45Z fikka joined #lisp 2018-09-12T23:43:00Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-12T23:43:31Z Kaisyu joined #lisp 2018-09-12T23:43:33Z bradcomp quit (Ping timeout: 252 seconds) 2018-09-12T23:43:41Z Kundry_Wag joined #lisp 2018-09-12T23:44:58Z nullniverse joined #lisp 2018-09-12T23:46:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-12T23:47:57Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-12T23:53:40Z SaganMan joined #lisp 2018-09-12T23:54:39Z meepdeew quit (Remote host closed the connection) 2018-09-12T23:57:13Z Kundry_Wag joined #lisp 2018-09-13T00:01:43Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T00:01:50Z fikka joined #lisp 2018-09-13T00:04:48Z AeroNotix: is there anything like PAT (http://pat.comp.nus.edu.sg/) but for Lisp? 2018-09-13T00:06:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T00:07:43Z rumbler31 joined #lisp 2018-09-13T00:08:37Z slyrus1 joined #lisp 2018-09-13T00:10:37Z jasom: AeroNotix: not that I know of 2018-09-13T00:10:57Z jasom: modeling multitasking systems is non-trivial 2018-09-13T00:11:01Z AeroNotix: for sure 2018-09-13T00:11:30Z AeroNotix: I just had a whacky idea of layering a description similar to what PAT uses, to both create the model and the executable CSP code 2018-09-13T00:11:36Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-13T00:11:55Z Pixel_Outlaw joined #lisp 2018-09-13T00:12:22Z lavaflow_ joined #lisp 2018-09-13T00:19:38Z nullniverse quit (Ping timeout: 245 seconds) 2018-09-13T00:20:28Z Kundry_Wag joined #lisp 2018-09-13T00:22:29Z fikka joined #lisp 2018-09-13T00:23:39Z johnjay quit (Ping timeout: 252 seconds) 2018-09-13T00:24:49Z smokeink joined #lisp 2018-09-13T00:25:03Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T00:27:16Z fikka quit (Ping timeout: 246 seconds) 2018-09-13T00:29:57Z rumbler31 quit (Remote host closed the connection) 2018-09-13T00:32:59Z fikka joined #lisp 2018-09-13T00:35:21Z jcowan quit (Quit: This computer has gone to sleep) 2018-09-13T00:35:46Z Roy_Fokker quit (Quit: Leaving) 2018-09-13T00:36:16Z nullniverse joined #lisp 2018-09-13T00:37:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-13T00:39:34Z Roy_Fokker joined #lisp 2018-09-13T00:40:47Z Kundry_Wag joined #lisp 2018-09-13T00:41:06Z acolarh quit (Ping timeout: 252 seconds) 2018-09-13T00:42:59Z fikka joined #lisp 2018-09-13T00:43:35Z acolarh joined #lisp 2018-09-13T00:45:03Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T00:48:10Z fikka quit (Ping timeout: 272 seconds) 2018-09-13T00:52:59Z fikka joined #lisp 2018-09-13T00:52:59Z pjb quit (Ping timeout: 250 seconds) 2018-09-13T00:57:02Z impulse joined #lisp 2018-09-13T00:57:11Z mindCrime joined #lisp 2018-09-13T00:57:43Z fikka quit (Ping timeout: 246 seconds) 2018-09-13T00:57:58Z blt quit (Ping timeout: 245 seconds) 2018-09-13T00:59:26Z blt joined #lisp 2018-09-13T01:01:30Z Kundry_Wag joined #lisp 2018-09-13T01:02:37Z vydd quit (Ping timeout: 246 seconds) 2018-09-13T01:02:45Z rozenglass quit (Ping timeout: 252 seconds) 2018-09-13T01:05:46Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-13T01:09:02Z _whitelogger quit (Remote host closed the connection) 2018-09-13T01:11:14Z _whitelogger joined #lisp 2018-09-13T01:12:03Z Kundry_Wag joined #lisp 2018-09-13T01:13:42Z fikka joined #lisp 2018-09-13T01:16:18Z mindCrime_ joined #lisp 2018-09-13T01:16:42Z makomo quit (Ping timeout: 264 seconds) 2018-09-13T01:17:29Z graphene quit (Read error: Connection reset by peer) 2018-09-13T01:18:23Z mindCrime quit (Ping timeout: 245 seconds) 2018-09-13T01:19:12Z fikka quit (Ping timeout: 272 seconds) 2018-09-13T01:19:17Z graphene joined #lisp 2018-09-13T01:20:03Z nullniverse quit (Ping timeout: 245 seconds) 2018-09-13T01:21:27Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T01:21:35Z suskeyhose quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-13T01:25:18Z kooga quit (Quit: :) 2018-09-13T01:30:48Z lavaflow_ quit (Ping timeout: 252 seconds) 2018-09-13T01:31:42Z lavaflow_ joined #lisp 2018-09-13T01:34:00Z fikka joined #lisp 2018-09-13T01:34:13Z ealfonso left #lisp 2018-09-13T01:34:54Z Kundry_Wag joined #lisp 2018-09-13T01:37:27Z acolarh quit (Ping timeout: 240 seconds) 2018-09-13T01:38:28Z nullniverse joined #lisp 2018-09-13T01:38:48Z fikka quit (Ping timeout: 245 seconds) 2018-09-13T01:39:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T01:39:56Z acolarh joined #lisp 2018-09-13T01:41:02Z Balooga_ joined #lisp 2018-09-13T01:44:28Z fikka joined #lisp 2018-09-13T01:49:15Z fikka quit (Ping timeout: 244 seconds) 2018-09-13T01:51:16Z esrse joined #lisp 2018-09-13T01:51:35Z Oladon joined #lisp 2018-09-13T01:54:17Z fikka joined #lisp 2018-09-13T01:59:24Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T02:04:30Z fikka joined #lisp 2018-09-13T02:05:07Z shifty joined #lisp 2018-09-13T02:09:13Z fikka quit (Ping timeout: 245 seconds) 2018-09-13T02:12:50Z Kundry_Wag joined #lisp 2018-09-13T02:15:21Z fikka joined #lisp 2018-09-13T02:16:18Z nullniverse quit (Ping timeout: 245 seconds) 2018-09-13T02:16:58Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T02:17:12Z Kundry_Wag joined #lisp 2018-09-13T02:19:07Z dented42 joined #lisp 2018-09-13T02:19:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T02:21:27Z dented42 quit (Client Quit) 2018-09-13T02:21:45Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T02:23:41Z dented42 joined #lisp 2018-09-13T02:25:15Z fikka joined #lisp 2018-09-13T02:25:47Z mindCrime_ quit (Ping timeout: 240 seconds) 2018-09-13T02:27:01Z Kundry_Wag joined #lisp 2018-09-13T02:28:06Z dented42 quit (Client Quit) 2018-09-13T02:29:40Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T02:30:00Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T02:32:41Z dale joined #lisp 2018-09-13T02:32:58Z nullniverse joined #lisp 2018-09-13T02:33:05Z Kundry_Wag joined #lisp 2018-09-13T02:35:01Z pierpa quit (Quit: Page closed) 2018-09-13T02:37:00Z dddddd quit (Remote host closed the connection) 2018-09-13T02:37:10Z pierpal joined #lisp 2018-09-13T02:37:44Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-13T02:39:00Z trittweiler quit (Ping timeout: 252 seconds) 2018-09-13T02:40:16Z nullniverse quit (Ping timeout: 246 seconds) 2018-09-13T02:45:28Z stux|RC-only quit (Ping timeout: 245 seconds) 2018-09-13T02:46:00Z pierpal quit (Ping timeout: 272 seconds) 2018-09-13T02:47:05Z Kundry_Wag joined #lisp 2018-09-13T02:48:11Z stux|RC-only joined #lisp 2018-09-13T02:48:14Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T02:48:24Z trittweiler joined #lisp 2018-09-13T02:48:29Z Kundry_Wag joined #lisp 2018-09-13T02:53:06Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T02:54:15Z Kundry_Wag joined #lisp 2018-09-13T02:54:52Z pierpal joined #lisp 2018-09-13T02:56:30Z Oladon quit (Read error: Connection reset by peer) 2018-09-13T02:58:48Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T02:59:48Z Kundry_Wag joined #lisp 2018-09-13T03:04:58Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-13T03:10:46Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-13T03:16:30Z Kundry_Wag joined #lisp 2018-09-13T03:19:03Z beach: Good morning everyone! 2018-09-13T03:20:11Z impulse quit (Ping timeout: 244 seconds) 2018-09-13T03:20:32Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T03:21:09Z Kundry_Wag joined #lisp 2018-09-13T03:21:53Z AeroNotix: morning 2018-09-13T03:24:26Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-13T03:25:33Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T03:34:17Z Balooga_ quit (Quit: Balooga_) 2018-09-13T03:37:59Z no-defun-allowed: morning beach 2018-09-13T03:46:59Z Kundry_Wag joined #lisp 2018-09-13T03:50:34Z pierpal quit (Ping timeout: 272 seconds) 2018-09-13T03:51:18Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T03:54:56Z housel quit (Remote host closed the connection) 2018-09-13T03:58:09Z Kundry_Wag joined #lisp 2018-09-13T03:58:46Z igemnace joined #lisp 2018-09-13T03:59:34Z pierpal joined #lisp 2018-09-13T04:00:34Z mathrick quit (Ping timeout: 240 seconds) 2018-09-13T04:02:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T04:04:07Z asarch: What's wrong?: http://paste.scsys.co.uk/581746 2018-09-13T04:05:23Z Bike: sb-ext defines a string-to-octets function and doesn't want to let you redefine it. 2018-09-13T04:05:53Z asarch: What should I do? 2018-09-13T04:06:06Z no-defun-allowed: something went very very wrong there 2018-09-13T04:07:40Z Bike quit (Quit: Lost terminal) 2018-09-13T04:08:57Z Kundry_Wag joined #lisp 2018-09-13T04:09:01Z asarch: If I already have installed some packages with QuickLisp and SBCL, is it ok to load other packages with CLISP? I mean, both actually save the package information in $HOME/.cache/common-lisp 2018-09-13T04:11:51Z dale quit (Quit: dale) 2018-09-13T04:12:37Z no-defun-allowed: you'll be good, only cached fasls live there 2018-09-13T04:13:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T04:13:27Z no-defun-allowed: iirc they sit in something like sbcl-1.X.Y inside there 2018-09-13T04:13:42Z mathrick joined #lisp 2018-09-13T04:20:56Z Kundry_Wag joined #lisp 2018-09-13T04:22:11Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T04:22:15Z pierpal quit (Read error: Connection reset by peer) 2018-09-13T04:22:32Z Kundry_Wag joined #lisp 2018-09-13T04:24:34Z kajo quit (Ping timeout: 240 seconds) 2018-09-13T04:26:50Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T04:27:24Z kajo joined #lisp 2018-09-13T04:28:36Z slyrus quit (Quit: slyrus) 2018-09-13T04:28:36Z slyrus1 is now known as slyrus 2018-09-13T04:29:12Z iomonad quit (Ping timeout: 272 seconds) 2018-09-13T04:32:32Z rtypo: 1/disconnec 2018-09-13T04:32:35Z rtypo quit (Quit: WeeChat 2.2) 2018-09-13T04:32:37Z Kundry_Wag joined #lisp 2018-09-13T04:34:00Z impulse joined #lisp 2018-09-13T04:37:15Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T04:38:43Z asarch: Thank you 2018-09-13T04:38:48Z asarch: Thank you very much 2018-09-13T04:38:53Z asarch: Let's try with CLISP! 2018-09-13T04:39:23Z Kundry_Wag joined #lisp 2018-09-13T04:39:40Z MichaelRaskin: Xach: jcowan: I think there was a talk on ELS about automating use of rename-package — it was described as a mostly sufficient escape hatch in practice. 2018-09-13T04:41:16Z asarch: Bleh! The same with CLISP: http://paste.scsys.co.uk/581747 2018-09-13T04:44:24Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T04:44:27Z iomonad joined #lisp 2018-09-13T04:44:53Z Kundry_Wag joined #lisp 2018-09-13T04:49:03Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T04:49:28Z slyrus1 joined #lisp 2018-09-13T04:52:09Z xrash quit (Ping timeout: 244 seconds) 2018-09-13T04:53:16Z Kundry_Wag joined #lisp 2018-09-13T04:55:24Z asarch: Any other web server in Common Lisp compatible with SBCL? 2018-09-13T04:56:40Z jackdaniel: sbcl is not a web server 2018-09-13T04:56:48Z jackdaniel: it's as if you had asked: any web server compatible with gcc? 2018-09-13T04:57:03Z no-defun-allowed: there's caveman2 and hunchentoot iirc 2018-09-13T04:57:14Z no-defun-allowed: (i don't like caveman2, the @decorators are pythony as fuck) 2018-09-13T04:57:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T05:00:26Z dented42 joined #lisp 2018-09-13T05:00:33Z sukaeto: you don't have to do the @sinatra thing in caveman2, fwiw 2018-09-13T05:00:52Z sukaeto: there's defroute, if you prefer 2018-09-13T05:01:32Z Kundry_Wag joined #lisp 2018-09-13T05:05:36Z Balooga_ joined #lisp 2018-09-13T05:05:53Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T05:06:34Z papachan quit (Ping timeout: 246 seconds) 2018-09-13T05:11:06Z vlatkoB joined #lisp 2018-09-13T05:13:54Z impulse quit (Ping timeout: 252 seconds) 2018-09-13T05:16:12Z igemnace quit (Quit: WeeChat 2.2) 2018-09-13T05:16:33Z asarch: " javascript is a better lisp than elisp I would say." --From #emacs 2018-09-13T05:16:37Z asarch: LOL :-D 2018-09-13T05:16:50Z Kundry_Wag joined #lisp 2018-09-13T05:16:50Z Balooga_ quit (Quit: Balooga_) 2018-09-13T05:18:30Z orivej_ quit (Ping timeout: 252 seconds) 2018-09-13T05:20:49Z asarch: https://www.cliki.net/AllegroServe 2018-09-13T05:21:36Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T05:22:16Z Kundry_Wag joined #lisp 2018-09-13T05:24:33Z sword quit (Remote host closed the connection) 2018-09-13T05:25:17Z sword` joined #lisp 2018-09-13T05:25:28Z sword`` joined #lisp 2018-09-13T05:28:20Z housel joined #lisp 2018-09-13T05:29:07Z sword` quit (Client Quit) 2018-09-13T05:29:08Z sword`` quit (Client Quit) 2018-09-13T05:31:22Z pierpal joined #lisp 2018-09-13T05:31:42Z Kundry_Wag quit (Ping timeout: 264 seconds) 2018-09-13T05:33:21Z sword joined #lisp 2018-09-13T05:33:28Z impulse joined #lisp 2018-09-13T05:33:31Z sword` joined #lisp 2018-09-13T05:33:58Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T05:35:46Z sauvin joined #lisp 2018-09-13T05:36:57Z scottj joined #lisp 2018-09-13T05:38:13Z Kundry_Wag joined #lisp 2018-09-13T05:40:15Z Balooga_ joined #lisp 2018-09-13T05:42:33Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T05:51:48Z sword quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-09-13T05:51:49Z sword` quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-09-13T05:51:51Z kilimanjaro joined #lisp 2018-09-13T05:53:05Z sword joined #lisp 2018-09-13T05:57:00Z Arcaelyx quit (Ping timeout: 252 seconds) 2018-09-13T05:57:56Z Inline quit (Quit: Leaving) 2018-09-13T06:04:30Z Arcaelyx joined #lisp 2018-09-13T06:05:54Z nbunjeva2 quit (Quit: leaving) 2018-09-13T06:06:59Z asarch quit (Quit: Leaving) 2018-09-13T06:07:35Z scymtym quit (Ping timeout: 244 seconds) 2018-09-13T06:08:31Z Kundry_Wag joined #lisp 2018-09-13T06:09:19Z khisanth_ joined #lisp 2018-09-13T06:11:39Z Khisanth quit (Ping timeout: 252 seconds) 2018-09-13T06:13:04Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-13T06:14:48Z Kundry_Wag joined #lisp 2018-09-13T06:16:18Z varjag joined #lisp 2018-09-13T06:16:26Z varjag quit (Remote host closed the connection) 2018-09-13T06:17:08Z pierpal quit (Ping timeout: 245 seconds) 2018-09-13T06:19:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T06:22:26Z Kundry_Wag joined #lisp 2018-09-13T06:26:40Z beach: I have a question about backqoute: https://pastebin.com/TARPqSev 2018-09-13T06:27:00Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T06:27:03Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T06:30:36Z Kundry_Wag joined #lisp 2018-09-13T06:33:17Z MichaelRaskin: I am not sure I understand the question; maybe ',(wrap-1 macro-arg) 2018-09-13T06:34:47Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T06:35:36Z beach: I am afraid that doesn't work. Unknown variable macro-arg. 2018-09-13T06:35:49Z mange: I'm also not sure I understand the question, but ',(wrap-1 'macro-arg) would be closer. 2018-09-13T06:36:12Z mange: I'm not sure if it needs to be ',,(wrap-1 'macro-arg) though. 2018-09-13T06:37:25Z beach: What you first suggested does not give the same result. 2018-09-13T06:38:25Z nirved: shouldn't it be ,@form ? 2018-09-13T06:39:03Z beach: mange: Your second one gives a "comma not inside backquote". If I replace the ' by `, then the result is not the same. 2018-09-13T06:39:10Z beach: nirved: Why? 2018-09-13T06:39:18Z nirved: beach: nvm 2018-09-13T06:40:01Z Kundry_Wag joined #lisp 2018-09-13T06:41:24Z zxcvz joined #lisp 2018-09-13T06:42:24Z orivej joined #lisp 2018-09-13T06:43:55Z mingus quit (Read error: Connection reset by peer) 2018-09-13T06:44:11Z mingus joined #lisp 2018-09-13T06:44:13Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-13T06:44:30Z cobax joined #lisp 2018-09-13T06:44:49Z Arcaelyx joined #lisp 2018-09-13T06:44:52Z mange: I'm not sure it will be possible. You need to pass a value into #'wrap-1 that will unquote itself in the expansion. Can you change wrap-1? 2018-09-13T06:46:50Z mange: Or, alternatively, can you rely on wrap-1 to always do a simple wrapping like it currently does? 2018-09-13T06:48:15Z beach: I don't want to change wrap-1. 2018-09-13T06:48:54Z shrdlu68 joined #lisp 2018-09-13T06:49:07Z beach: These are condensed examples of something much more complex, so in reality wrap-1 does much more and I want to reuse it if possible. 2018-09-13T06:50:46Z MichaelRaskin: If wrap-1 is given as a function, it is undistinguishable from (defun wrap-1 (form) (list 'bar form))) 2018-09-13T06:52:26Z mange: Can you make a wrap-1 macro? Or make a macro that just calls wrap-1 immediately? 2018-09-13T06:52:41Z astalla joined #lisp 2018-09-13T06:53:39Z no-defun-allowed: how should i go about writing an async event loop? 2018-09-13T06:54:32Z no-defun-allowed: i want to write an async client for cl-decentralise which will register listener functions on cl-d channels whenever a certain message is received 2018-09-13T06:55:00Z no-defun-allowed: *whenever a message on that channel is received 2018-09-13T06:55:06Z jackdaniel: beach: I don't understand this question 2018-09-13T06:55:20Z jackdaniel: what do you mean by "remains the same"? 2018-09-13T06:55:28Z Balooga_ quit (Quit: Balooga_) 2018-09-13T06:56:12Z Kundry_Wag joined #lisp 2018-09-13T06:56:55Z beach: I want to write a function wrap-3 so that if I type (wrap-3 'some-form) I get the same result as if I type (wrap-2 'some-form), but instead of mentioning BAR explicitly in the body of the function, I want wrap-3 to call wrap-1 to obtain the same result. 2018-09-13T06:58:34Z MichaelRaskin: How portable you want that to be? 2018-09-13T07:00:06Z jackdaniel: thank you 2018-09-13T07:00:44Z beach: MichaelRaskin: What? What are you hinting? 2018-09-13T07:00:48Z MichaelRaskin: Because ,(list (first '`a) (wrap-1 (second '`,macro-arg))) happens to work on SBCL 2018-09-13T07:01:09Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T07:01:28Z beach: What is a? 2018-09-13T07:01:42Z MichaelRaskin: Random symbol 2018-09-13T07:01:54Z MichaelRaskin: Only needed for introspection of how ` works 2018-09-13T07:02:04Z beach: Oh, I see. 2018-09-13T07:02:11Z MichaelRaskin: clisp seems to accept that abomination, too 2018-09-13T07:02:28Z beach: Well, nice try, but I don't think I'll go with it. :) 2018-09-13T07:02:59Z scymtym joined #lisp 2018-09-13T07:03:49Z beach: Anyway, thanks everyone. It appears that any solution will be more complicated than just repeating the body of the wrap-1 function inside wrap-3. 2018-09-13T07:04:32Z MichaelRaskin: You can also just put a wrap-1 call there, which will give a different expansion but the same functionality 2018-09-13T07:04:45Z mange: If you're willing to have wrap-1 be (defun wrap-1 (form) ``(bar ,,form)) then I think you can do it, but it will mean that other calls need to have an extra quote. 2018-09-13T07:05:35Z MichaelRaskin: But yeah, implementation is free to treat `form as _any_ form that evaluates to the correct result 2018-09-13T07:05:55Z jackdaniel: mange: as I understand it wrap-1 may have arbitrary expansion, this is just an example 2018-09-13T07:06:56Z mange: jackdaniel: Yeah, but the approach of "add an extra layer of quasiquotes" may be able to be applied more generally. 2018-09-13T07:07:27Z beach: mange: I'll think about that. 2018-09-13T07:09:33Z Kundry_Wag joined #lisp 2018-09-13T07:09:36Z MichaelRaskin: Actually, just putting unadorned (wrap-1 macro-arg) should be a viable strategy 2018-09-13T07:11:36Z orivej quit (Ping timeout: 252 seconds) 2018-09-13T07:12:56Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T07:13:34Z beach: I don't see it. 2018-09-13T07:13:57Z beach: mange: So how would the call look in that case? 2018-09-13T07:14:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T07:14:15Z MichaelRaskin: Well, local macro will try to expand and call wrap-1 directly 2018-09-13T07:14:54Z beach: MichaelRaskin: I'm lost. 2018-09-13T07:17:41Z MichaelRaskin: Well, this macrolet is generated to use foo macro inside form, right? 2018-09-13T07:18:02Z beach: Yes. 2018-09-13T07:18:23Z MichaelRaskin: What you are asking is how to inline wrap-1 inside wrap-3 2018-09-13T07:19:10Z MichaelRaskin: Instead, you could just do a call to wrap-1 instead of inlining 2018-09-13T07:19:18Z beach: Not just that. I think I can do it if the expansion of wrap-3 is allowed to contain a call to wrap-1. But I do want the immediate output of wrap-3 to be the same as that of wrap-2. 2018-09-13T07:19:44Z mange: https://pastebin.com/13sRFrGV 2018-09-13T07:19:52Z heisig joined #lisp 2018-09-13T07:20:11Z beach: mange: Thanks! I'll try it. 2018-09-13T07:20:54Z varjag joined #lisp 2018-09-13T07:21:09Z jackdaniel: (list 'foo boo) is the same as `(foo ,boo) ; no? 2018-09-13T07:21:44Z MichaelRaskin: I think it is provably impossible without modifying wrap-1. There are multiple posible read results of `, and if you want your code to look the same as if ` was written, input-output relation of wrap-1 is not wnough 2018-09-13T07:21:52Z MichaelRaskin: For CCL it is not even a theoretical concern 2018-09-13T07:22:07Z beach: jackdaniel: Yes. 2018-09-13T07:22:08Z jackdaniel: http://ix.io/1mBd/lisp 2018-09-13T07:22:12Z beach: mange: Works! 2018-09-13T07:22:13Z jackdaniel: I've came up with this solution 2018-09-13T07:22:18Z beach: mange: Thanks again. 2018-09-13T07:22:19Z jackdaniel: without modifying wrap-1 2018-09-13T07:23:34Z beach: jackdaniel: Doesn't that assume that there is no nesting inside the result of wrap-1? 2018-09-13T07:23:59Z jackdaniel: hm, maptree in that case 2018-09-13T07:24:01Z mange: You could rewrite the logic of quasiquote to make that work, but it's not fun. 2018-09-13T07:24:04Z orivej joined #lisp 2018-09-13T07:24:18Z mange: Although I guess this is a restricted case that is easier. 2018-09-13T07:24:35Z mange: Splicing is the real pain, so you do nicely avoid that. 2018-09-13T07:24:47Z jackdaniel: yes, such assumption is in this snippet 2018-09-13T07:27:28Z Kundry_Wag joined #lisp 2018-09-13T07:28:07Z beach: Anyway, I have several ideas now. Thanks to everyone. Time to go do something else for a while. 2018-09-13T07:28:07Z frgo joined #lisp 2018-09-13T07:28:27Z no-defun-allowed: bye 2018-09-13T07:28:49Z no-defun-allowed: have fun beach 2018-09-13T07:32:18Z Kundry_Wag quit (Ping timeout: 264 seconds) 2018-09-13T07:33:48Z astalla quit (Ping timeout: 252 seconds) 2018-09-13T07:34:29Z Arcaelyx joined #lisp 2018-09-13T07:38:21Z nowhere_man joined #lisp 2018-09-13T07:38:28Z shka_: good day 2018-09-13T07:41:39Z Kundry_Wag joined #lisp 2018-09-13T07:41:44Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T07:41:59Z no-defun-allowed: hi shka_ 2018-09-13T07:45:07Z shrdlu68: shka_: Hello 2018-09-13T07:46:48Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-13T07:46:48Z mange quit (Remote host closed the connection) 2018-09-13T07:47:26Z Arcaelyx joined #lisp 2018-09-13T07:48:57Z Kundry_Wag joined #lisp 2018-09-13T07:53:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T07:53:38Z graphene quit (Remote host closed the connection) 2018-09-13T07:55:23Z graphene joined #lisp 2018-09-13T07:56:43Z trittweiler quit (Remote host closed the connection) 2018-09-13T07:58:23Z sixbitslacker joined #lisp 2018-09-13T08:00:08Z Kundry_Wag joined #lisp 2018-09-13T08:04:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T08:05:02Z zfree joined #lisp 2018-09-13T08:05:28Z oni-on-ion quit (Ping timeout: 245 seconds) 2018-09-13T08:10:20Z trittweiler joined #lisp 2018-09-13T08:10:24Z Kundry_Wag joined #lisp 2018-09-13T08:12:51Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-13T08:12:55Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T08:14:28Z graphene quit (Read error: Connection reset by peer) 2018-09-13T08:14:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T08:14:54Z Kundry_Wag joined #lisp 2018-09-13T08:17:43Z graphene joined #lisp 2018-09-13T08:19:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T08:22:12Z Kundry_Wag joined #lisp 2018-09-13T08:23:04Z fikka joined #lisp 2018-09-13T08:26:34Z Arcaelyx joined #lisp 2018-09-13T08:27:20Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-13T08:31:28Z beach: Hmm. CALL-METHOD and MAKE-METHOD are some of the most complicated macros (or rather forms that wrap some other forms in those macros) I have ever attempted to write. In case anybody wondered, that's what the exercise was about. 2018-09-13T08:31:49Z shka_: hm 2018-09-13T08:31:52Z shka_: interesting 2018-09-13T08:40:56Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T08:45:04Z cl-arthur quit (Ping timeout: 272 seconds) 2018-09-13T08:46:26Z Arcaelyx joined #lisp 2018-09-13T08:52:12Z marvin2 quit (Ping timeout: 250 seconds) 2018-09-13T08:53:14Z adam4567 joined #lisp 2018-09-13T08:55:03Z Kundry_Wag joined #lisp 2018-09-13T08:56:41Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T09:01:45Z smokeink quit (Remote host closed the connection) 2018-09-13T09:02:03Z smokeink joined #lisp 2018-09-13T09:02:15Z smokeink quit (Remote host closed the connection) 2018-09-13T09:02:15Z cl-arthur joined #lisp 2018-09-13T09:02:39Z smokeink joined #lisp 2018-09-13T09:03:42Z smokeink quit (Remote host closed the connection) 2018-09-13T09:03:53Z adam4567 left #lisp 2018-09-13T09:04:22Z jackdaniel: http://i.imgur.com/kpD8E1u.png :) 2018-09-13T09:07:52Z shka_: congratulations 2018-09-13T09:08:38Z no-defun-allowed: well done 2018-09-13T09:08:51Z no-defun-allowed: i finished my channel implementation for cl-decentralise which is nice 2018-09-13T09:13:27Z j`ey: beach: does cleavir provide all of the CLHS? 2018-09-13T09:16:14Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T09:17:22Z Kundry_Wag joined #lisp 2018-09-13T09:18:09Z graphene quit (Remote host closed the connection) 2018-09-13T09:19:43Z graphene joined #lisp 2018-09-13T09:20:11Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T09:21:33Z zfree quit (Read error: Connection reset by peer) 2018-09-13T09:21:54Z zfree joined #lisp 2018-09-13T09:24:54Z Arcaelyx joined #lisp 2018-09-13T09:25:55Z acolarh quit (Ping timeout: 246 seconds) 2018-09-13T09:29:23Z acolarh joined #lisp 2018-09-13T09:30:02Z Kundry_Wag joined #lisp 2018-09-13T09:34:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T09:36:35Z beach: j`ey: Er, no. It doesn't provide anything except code to compile any Common Lisp form. 2018-09-13T09:37:52Z j`ey: Oh 2018-09-13T09:38:28Z beach: SICL, on the other hand has as a goal to be a fully conforming Common Lisp implementation. But it is not finished yet, so there is still some code missing. 2018-09-13T09:40:19Z j`ey: beach: does Cleavir have textual output? Do you have a really basic example I could look at 2018-09-13T09:41:26Z Kundry_Wag joined #lisp 2018-09-13T09:42:00Z beach: What kind of textual output are you referring to? Currently it generates a graph of intermediate code that client systems can then translate to LLVM or assembler or whatever. 2018-09-13T09:43:02Z X-Scale quit (Ping timeout: 244 seconds) 2018-09-13T09:43:26Z [X-Scale] joined #lisp 2018-09-13T09:43:37Z beach: j`ey: The graph looks sort of like this: http://metamodular.com/IR-viewer.png 2018-09-13T09:43:39Z [X-Scale] is now known as X-Scale 2018-09-13T09:43:42Z j`ey: I was thinking textual output like LLVM IR has, but a picture/graph would be useful too 2018-09-13T09:43:46Z shrdlu68 joined #lisp 2018-09-13T09:45:35Z no-defun-allowed: o.o 2018-09-13T09:46:09Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T09:46:29Z j`ey: beach: what does the <- mean? 2018-09-13T09:46:35Z no-defun-allowed uploaded an image: tumblr_o16n2kBlpX1ta3qyvo1_1280.jpg (137KB) < https://matrix.org/_matrix/media/v1/download/matrix.org/QKyfnMJUkJdTxClYnaEJneZJ > 2018-09-13T09:46:37Z beach: Assignment. 2018-09-13T09:47:02Z no-defun-allowed: what do the dotted lines mean? 2018-09-13T09:47:16Z no-defun-allowed: a(n optional) legend might help make sense of the graph 2018-09-13T09:47:21Z beach: Read or write a datum. 2018-09-13T09:47:37Z no-defun-allowed: i see 2018-09-13T09:48:01Z beach: no-defun-allowed: Come on. This is a picture of a tool to view IR with. The person using that tool knows perfectly well what it means. 2018-09-13T09:48:12Z no-defun-allowed: fair enough 2018-09-13T09:48:31Z beach: no-defun-allowed: I wasn't about to make a special picture for j`ey with a legend in it. 2018-09-13T09:48:46Z jackdaniel: I expect that the guy with cigarette on the photo knows perfectly well what these sheets and lines mean :) 2018-09-13T09:48:50Z no-defun-allowed: never mind then 2018-09-13T09:49:38Z no-defun-allowed: it's just a little more interesting and complicated than LLVM IR graphs 2018-09-13T09:50:23Z j`ey: beach: I wouldn't expect it! 2018-09-13T09:50:34Z beach: Good. 2018-09-13T09:51:59Z no-defun-allowed: oh i got it now 2018-09-13T09:54:39Z shrdlu68: I'm trying to optimize some code which subseqs a simple-bit-vector a lot, and it appears that subseq'ing conses much less that using displaced bit vectors. 2018-09-13T09:57:28Z beach: If the bit-vectors are short, then that is plausible. 2018-09-13T09:57:57Z beach: A displaced vector must set up a lot of information that needs to be stored somewhere. 2018-09-13T09:58:51Z Kundry_Wag joined #lisp 2018-09-13T09:59:02Z beach: j`ey: Let me know if you have any other questions. 2018-09-13T09:59:27Z Shinmera: small bit vectors can be like two words 2018-09-13T09:59:52Z j`ey: beach: I think I just need to read a bit more about CL compilation in general 2018-09-13T09:59:56Z shrdlu68: The bit-vectors are of length 1-240. 2018-09-13T10:00:05Z shka_: shrdlu68: in your case, bit-vectors are bad fit 2018-09-13T10:00:20Z shka_: just go for integers 2018-09-13T10:00:27Z Shinmera: right, so the contents fit into a word, meaning the overhead of a copy is going to be very small 2018-09-13T10:00:45Z beach: j`ey: I think you may have a hard time finding that kind of information. There is Lisp in Small Pieces, but you won't find IR graphs and stuff in it. 2018-09-13T10:01:09Z Shinmera: but as shka_ mentions, just using ldb and integers is probably even better 2018-09-13T10:01:44Z m00natic joined #lisp 2018-09-13T10:02:01Z shrdlu68: shka_: I'm keeping that in mind, eventually I will try it . Right now I'm trying a scheme where I sxhash the substrings, converting them to fixnums. 2018-09-13T10:02:02Z j`ey: beach: what I was really thinking about was macros from CLHS, which I assume cleavir does have to implement 2018-09-13T10:02:19Z beach: Nope, they are supplied by the client. 2018-09-13T10:02:30Z shka_: that won't be super fast 2018-09-13T10:02:44Z shka_: but you may try it 2018-09-13T10:03:07Z no-defun-allowed looks for a copy of LiSP 2018-09-13T10:03:17Z beach: j`ey: Which is fortunate, because there is not standardized expansion of standard macros. 2018-09-13T10:03:19Z no-defun-allowed: ah yes, a random server with 40mb pdf! very reliable. 2018-09-13T10:03:22Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-13T10:04:15Z Kundry_Wag joined #lisp 2018-09-13T10:04:23Z marvin2 joined #lisp 2018-09-13T10:04:25Z esrse quit (Ping timeout: 246 seconds) 2018-09-13T10:04:48Z shrdlu68: shka_: Indeed it isn't. Using (mod (sxhash substring) (expt 2 24)) as the indices of an array, it's about two seconds faster than the hash-table implementation. It consumes much less memory, though. 2018-09-13T10:04:56Z beach: j`ey: Cleavir sees a macro in the current environment. It calls the macro function, giving it the form and the environment. It then compiles the resulting form instead. 2018-09-13T10:05:03Z j`ey: beach: when you say 'supplied', is it just like how the defmacro from yesterday is supplied? https://github.com/robert-strandh/SICL/blob/master/Code/Evaluation-and-compilation/defmacro.lisp 2018-09-13T10:05:08Z beach: j`ey: That's all Cleavir needs to do about macros. 2018-09-13T10:05:28Z shka_: shrdlu68: well, 32 is not random number of children in the node, though 2018-09-13T10:05:40Z shka_: you can apply bitmask compression to it 2018-09-13T10:05:47Z shka_: it should get better this way 2018-09-13T10:06:18Z beach: j`ey: I don't remember the defmacro from yesterday. Compilation takes place in an environment that the client defines. That environment must contain definitions of every macro that is used in the code to be compiled. 2018-09-13T10:06:53Z shka_: shrdlu68: you have ldb, logcount and the world is yours 2018-09-13T10:07:01Z shka_: :-) 2018-09-13T10:07:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T10:07:18Z shrdlu68: shka_: (disregarding collisions for now) 2018-09-13T10:07:43Z beach: j`ey: You can do the following experiment. In a SLIME REPL, type (macro-function 'with-output-to-string) 2018-09-13T10:08:13Z beach: j`ey: The client (SBCL or whatever) already has a definition of that macro. Cleavir just works with that. 2018-09-13T10:08:42Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T10:09:27Z beach: j`ey: Or try this: (funcall (macro-function 'when) '(when x y z) nil) 2018-09-13T10:09:58Z beach: j`ey: That is basically what Cleavir does, 2018-09-13T10:10:27Z beach: j`ey: Then it compiles the IF instead. Now IF it has to know how to compile, because that's a special operator. 2018-09-13T10:13:44Z fikka joined #lisp 2018-09-13T10:14:44Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T10:16:09Z j`ey: beach: ok, so the client will setup an environment that contains all the macros that CLHS has declared? 2018-09-13T10:16:32Z beach: Correct. And all the macros it needs for the code to be compiled. 2018-09-13T10:21:54Z orivej quit (Ping timeout: 250 seconds) 2018-09-13T10:23:05Z j`ey: still a little unclear how defmacro works. cleavir seems a (defmacro blah..) and calls the defmacro macro from the environment. does that update the environment to include the 'blah' macro? 2018-09-13T10:23:54Z makomo joined #lisp 2018-09-13T10:25:52Z beach: I can't understand the "cleavir seems a ..." part. But yes, DEFMACRO updates the environment so that it includes the definition of that macro. 2018-09-13T10:27:19Z beach: Try (defmacro foo (x) `(car ,x)), then (funcall (macro-function 'foo) '(foo (f y)) nil) 2018-09-13T10:27:26Z beach: NIL here means the global environment. 2018-09-13T10:28:53Z j`ey: I dont actually have a REPL here, I'm at work 2018-09-13T10:29:04Z j`ey: and JSCL (https://jscl-project.github.io/) doesnt have macro-function 2018-09-13T10:29:44Z beach: Then it is not a conforming Common Lisp iplementation. 2018-09-13T10:29:49Z beach: implementation, even. 2018-09-13T10:30:15Z j`ey: 'JSCL is and will be a subset of Common Lisp.' :( 2018-09-13T10:30:30Z Arcaelyx joined #lisp 2018-09-13T10:31:26Z FreeBirdLjj joined #lisp 2018-09-13T10:36:12Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-13T10:43:08Z Kundry_Wag joined #lisp 2018-09-13T10:47:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T10:56:56Z kooga joined #lisp 2018-09-13T10:59:34Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T11:01:29Z quipa joined #lisp 2018-09-13T11:02:40Z dddddd joined #lisp 2018-09-13T11:05:56Z Arcaelyx joined #lisp 2018-09-13T11:06:34Z pierpal joined #lisp 2018-09-13T11:15:15Z beach quit (Ping timeout: 250 seconds) 2018-09-13T11:17:58Z Kundry_Wag joined #lisp 2018-09-13T11:22:08Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T11:30:23Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T11:31:18Z quipa quit (Read error: Connection reset by peer) 2018-09-13T11:32:25Z quipa joined #lisp 2018-09-13T11:34:37Z orivej joined #lisp 2018-09-13T11:42:28Z Arcaelyx joined #lisp 2018-09-13T11:42:37Z gector quit (Read error: Connection reset by peer) 2018-09-13T11:42:51Z beach joined #lisp 2018-09-13T11:43:14Z gector joined #lisp 2018-09-13T11:45:53Z orivej quit (Ping timeout: 245 seconds) 2018-09-13T11:46:09Z beach: So I think I am incapable of writing and debugging these MAKE-METHOD and CALL-METHOD wrappers without also having a version of macroexpand-all available. 2018-09-13T11:46:23Z SenasOzys joined #lisp 2018-09-13T11:48:59Z makomo quit (Read error: Connection reset by peer) 2018-09-13T11:56:11Z Kundry_Wag joined #lisp 2018-09-13T11:59:37Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T11:59:53Z MichaelRaskin: (shameless plug) beach: well, there is agnostic-lizard:macroexpand-all 2018-09-13T12:00:15Z beach: Yes, I know. It was talked about yesterday. 2018-09-13T12:00:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T12:00:46Z beach: Let me take this opportunity to ask how you handle that special case... 2018-09-13T12:01:06Z Kundry_Wag joined #lisp 2018-09-13T12:01:13Z beach: I assume you use your own representation of lexical environments, right? 2018-09-13T12:01:35Z beach: Or do you adapt to those of the client? 2018-09-13T12:01:44Z Arcaelyx joined #lisp 2018-09-13T12:01:48Z MichaelRaskin: That's true, and if you start from the top-level/null lexical environments I only use my own implementation of lexical environments 2018-09-13T12:02:16Z MichaelRaskin: Which is, to be honest, quite limited, because I only need rough idea of what-means-what. 2018-09-13T12:02:34Z beach: So how do you deal with the possibility of the client version of MACROEXPAND being called with one of your environments? 2018-09-13T12:03:14Z MichaelRaskin: The client version of macroexpand cannot be called with one of my environments. 2018-09-13T12:03:21Z beach: Oh? 2018-09-13T12:03:25Z beach: Why not? 2018-09-13T12:04:27Z MichaelRaskin: Because my implementation's type is a class I define. And macroexpand wants implementation-specific environment object. 2018-09-13T12:04:30Z beach: It suffices to have a macro expanded in a lexical environment that calls macroexpand. 2018-09-13T12:04:48Z iomonad left #lisp 2018-09-13T12:04:56Z iomonad joined #lisp 2018-09-13T12:05:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T12:05:46Z MichaelRaskin: If you want to macroexpand-all in a complicated lexical environment, you need one of the few tricks. 2018-09-13T12:06:04Z beach: So you are not handling that case? 2018-09-13T12:06:06Z makomo joined #lisp 2018-09-13T12:06:30Z MichaelRaskin: I am handling it best-effort as the standard doesn't give me enough tools 2018-09-13T12:06:44Z MichaelRaskin: Option 1: macro-based macroexpand-all is sometimes enough. 2018-09-13T12:07:29Z MichaelRaskin: Option 2: I can take the lexical environment object and a list of names I should check for macro definitions in that object. 2018-09-13T12:08:03Z MichaelRaskin: Option 3: if the local macros are used in a simple enough way, my heuristics might be enough. 2018-09-13T12:08:46Z beach: OK, I'm lost again. I don't know what a "macro-based macroexpand-all" is. And I don't know whether by "I can ..." you mean that this is something you could implement in the future, something I need to do in order to use your tool, or something else. 2018-09-13T12:09:13Z MichaelRaskin: Let me look up the API names… 2018-09-13T12:09:15Z beach: I am sorry, I seem to be having this problem of understanding what is said in IRC. You need to be more explicit for me to understand. 2018-09-13T12:09:43Z MichaelRaskin: Well, I did omit a ton of details, that's true. 2018-09-13T12:10:18Z beach: So is the answer to my question "It sometimes works and sometimes doesn't"? 2018-09-13T12:10:51Z MichaelRaskin: macro-macroexpand-all on a form will replace a form with some weird code that returns hthe full macroexpansion and should always be enough to take into account the local lexical environment 2018-09-13T12:11:23Z beach: OK, so it always works. 2018-09-13T12:12:25Z MichaelRaskin: (macroexpand-all form environment :names names) should also always work as long as all local names are listed in «names» parameter (listing extra is not a problem) 2018-09-13T12:13:00Z MichaelRaskin: Of course, it is possible you find a bug, in this case I will thank you and upload an updated version. 2018-09-13T12:13:08Z beach: OK. 2018-09-13T12:13:56Z mkolenda quit (Remote host closed the connection) 2018-09-13T12:14:16Z beach: I think I'll go with Cleavir anyway, because I need to expand macros that I defined in one of my first-class global environments. And I can't do it in the host, because they are macros that clash with those of the host, like DEFMETHOD. 2018-09-13T12:14:29Z mkolenda joined #lisp 2018-09-13T12:14:57Z beach: In fact, I think I wrote a macroexpand-all at some point. It might have bitrotted. 2018-09-13T12:15:11Z nsrahmad joined #lisp 2018-09-13T12:15:23Z MichaelRaskin: Well, yes, if you control the environment implementation it makes a lot more sense to use it. 2018-09-13T12:15:27Z cl-arthur quit (Ping timeout: 244 seconds) 2018-09-13T12:15:51Z beach: Yes, and in this case, like I said, I pretty much have to. Unless I rename all my macros just for the purpose of testing them. 2018-09-13T12:15:53Z MichaelRaskin: I think compilation should effectively contain macroexpand-all 2018-09-13T12:16:02Z beach: Yes, it does. 2018-09-13T12:16:10Z beach: It returns an AST. 2018-09-13T12:16:32Z beach: But the AST might be tough to understand. 2018-09-13T12:16:47Z beach: ... unless I write an AST visualizer like I did for HIR. 2018-09-13T12:17:25Z beach: That might be the way to go, actually. 2018-09-13T12:17:34Z beach: Such a tool is needed anyway. 2018-09-13T12:18:42Z MichaelRaskin: AST-to-src could be enough in this specific case 2018-09-13T12:18:50Z MichaelRaskin: (which is also a useful tool) 2018-09-13T12:20:36Z CL-ARTHUR joined #lisp 2018-09-13T12:20:48Z CL-ARTHUR quit (Client Quit) 2018-09-13T12:21:22Z cl-arthur joined #lisp 2018-09-13T12:22:21Z beach: True. That one might have bitrotted as well. 2018-09-13T12:26:06Z Bike joined #lisp 2018-09-13T12:26:20Z schweers joined #lisp 2018-09-13T12:27:20Z Kundry_Wag joined #lisp 2018-09-13T12:27:59Z pierpal quit (Quit: Poof) 2018-09-13T12:28:17Z pierpal joined #lisp 2018-09-13T12:32:18Z Kundry_Wag quit (Ping timeout: 264 seconds) 2018-09-13T12:33:51Z beach: It seems to work still. 2018-09-13T12:36:19Z Bike: cleavir ast graphviz should work too 2018-09-13T12:36:56Z Bike: was usually harder for me to understand than ir, though, because it's based on an expression mostly-but-not-actually-a-tree instead of a cfg 2018-09-13T12:37:12Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T12:38:13Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T12:38:23Z beach: I see. 2018-09-13T12:38:46Z nowhere_man quit (Ping timeout: 272 seconds) 2018-09-13T12:39:24Z beach: The output of AST-to-source is difficult to parse, even for a very small expression. 2018-09-13T12:40:22Z beach: I started with (loop for i from 0 to 10 collect i) and that was a big mistake. 2018-09-13T12:41:25Z beach: 150 lines of code from AST-to-source. :) 2018-09-13T12:42:35Z fikka joined #lisp 2018-09-13T12:44:46Z heisig: The example is nice though, it has blocks, bindings, tagbody, conditionals, type annotations and mutation of local variables. But it is definitely not a small expression :) 2018-09-13T12:45:20Z beach: Right you are. 2018-09-13T12:45:51Z beach: The question I am asking myself now is whether an AST viewer would make it easier to understand. 2018-09-13T12:46:23Z beach: There are several obstacles: There is generous nesting of PROGNs. 2018-09-13T12:46:50Z beach: LET is expanded to calls to a local function. 2018-09-13T12:47:30Z beach: There are plenty of LOAD-TIME-VALUEs (at least in SICL code) for fetching global function cells. 2018-09-13T12:48:15Z beach: It might be easier to work on macroexpand-all after all. 2018-09-13T12:52:41Z heisig: Another possibility would be to introduce a pattern-based simplifier into AST-to-source, e.g., to eliminate superfluous PROGNs, convert direct lambda calls to LETs and so on. 2018-09-13T12:53:01Z heisig: Not sure whether that is worth trying. 2018-09-13T12:54:58Z beach: So many possibilities. 2018-09-13T12:56:28Z beach: All these tools (existing and suggested) could be useful, so they should all be written. :) 2018-09-13T13:01:46Z beach: Let me start with macroexpand-all. I think it may be trivial, given that we have GENERATE-AST. 2018-09-13T13:02:28Z Bike: using generate-ast for things other than generating asts is going to be some work 2018-09-13T13:04:40Z razzy quit (Ping timeout: 246 seconds) 2018-09-13T13:05:03Z Kundry_Wag joined #lisp 2018-09-13T13:05:27Z shifty quit (Ping timeout: 252 seconds) 2018-09-13T13:09:51Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T13:13:19Z gector quit (Ping timeout: 244 seconds) 2018-09-13T13:24:36Z Kundry_Wag joined #lisp 2018-09-13T13:29:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T13:30:35Z dim: hi 2018-09-13T13:30:51Z dim: any SBCL maintainer around? https://github.com/dimitri/pgloader/issues/832 looks like an SBCL issue 2018-09-13T13:31:37Z no-defun-allowed: dim greetings as string 2018-09-13T13:31:46Z no-defun-allowed: greetings$ = "Hello, dim!" 2018-09-13T13:31:52Z makomo: dim: might want to check in #sbcl 2018-09-13T13:33:00Z Arcaelyx joined #lisp 2018-09-13T13:33:12Z pfdietz: Is that in pgloader itself, or ironclad? 2018-09-13T13:33:22Z scymtym: dim: i think the person is trying to build with a version of nibbles that is too old for SBCL 1.4.11 2018-09-13T13:33:32Z pfdietz: That ~ 2018-09-13T13:33:40Z pfdietz: That ^ 2018-09-13T13:34:17Z no-defun-allowed: Alright, goodnight everyone! 2018-09-13T13:34:18Z pfdietz: These packages take terrible liberties with the naughty internal unexported bits of sbcl, and break when those change. 2018-09-13T13:39:56Z SenasOzys quit (Remote host closed the connection) 2018-09-13T13:40:22Z SenasOzys joined #lisp 2018-09-13T13:42:04Z Inline joined #lisp 2018-09-13T13:42:28Z jkordani joined #lisp 2018-09-13T13:43:03Z Inline quit (Read error: Connection reset by peer) 2018-09-13T13:43:33Z Inline joined #lisp 2018-09-13T13:44:50Z Lycurgus joined #lisp 2018-09-13T13:45:14Z dim: pfdietz: I have had other reports where it's coming from Ironclad yes 2018-09-13T13:45:23Z DGASAU quit (Read error: Connection reset by peer) 2018-09-13T13:45:31Z dim: oh, thanks for the explaination 2018-09-13T13:45:41Z dim: is the current QL version of nibbles recent enough? 2018-09-13T13:45:52Z jkordani_ quit (Ping timeout: 244 seconds) 2018-09-13T13:45:54Z pfdietz: I think so, yes. 2018-09-13T13:45:57Z nowhere_man joined #lisp 2018-09-13T13:46:12Z pfdietz: But check 2018-09-13T13:46:31Z flip214: has anyone used CL-SAT already? With some quite complex input I get "the value NIL is not of type NUMBER" in CL-SAT:PRINT-CNF. 2018-09-13T13:47:18Z pfdietz: If not, go to https://github.com/sharplispers/nibbles.git 2018-09-13T13:47:40Z nsrahmad quit (Remote host closed the connection) 2018-09-13T13:47:41Z pfdietz: and put it in your quicklisp/local-projects 2018-09-13T13:47:53Z DGASAU joined #lisp 2018-09-13T13:51:09Z dim: pfdietz: pgloader build process should check out directly from QL, so I'm surprised; what might have happened is that the OP had a cache of quicklisp from a previous pgloader build 2018-09-13T13:51:33Z dim: also I don't have this problem, my pgloader users do 2018-09-13T13:51:52Z dim: I know nothing of the env where they try to use it, they know nothing of CL and QL and other bits, and it's all fine, usually 2018-09-13T13:52:06Z jkordani_ joined #lisp 2018-09-13T13:53:03Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T13:53:39Z Kundry_Wag joined #lisp 2018-09-13T13:56:50Z mindCrime_ joined #lisp 2018-09-13T13:57:10Z cl-arthur quit (Quit: Lost terminal) 2018-09-13T13:57:52Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-13T14:01:56Z Kundry_Wag joined #lisp 2018-09-13T14:03:38Z Arcaelyx joined #lisp 2018-09-13T14:04:11Z vlatkoB quit (Read error: No route to host) 2018-09-13T14:04:39Z dyelar joined #lisp 2018-09-13T14:04:49Z vlatkoB joined #lisp 2018-09-13T14:06:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T14:11:46Z xrash joined #lisp 2018-09-13T14:11:51Z dmiles quit (Read error: Connection reset by peer) 2018-09-13T14:12:15Z Kundry_Wag joined #lisp 2018-09-13T14:15:02Z dale_ joined #lisp 2018-09-13T14:15:10Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T14:15:21Z dale_ is now known as dale 2018-09-13T14:15:24Z Kundry_Wag joined #lisp 2018-09-13T14:15:52Z pfdietz: The problem here is that a widely used library is depending on unexported internal details of sbcl. Perhaps this means sbcl should have some sort of exported interface that the library could use instead, but sbcl developers are always going to feel free to change things others don't have license to depend on. 2018-09-13T14:17:37Z pfdietz: Any time one builds something that depends on unexported things, one is living in sin, at least to some extent. 2018-09-13T14:18:20Z dmiles joined #lisp 2018-09-13T14:18:37Z graphene quit (Remote host closed the connection) 2018-09-13T14:18:54Z astalla joined #lisp 2018-09-13T14:20:03Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T14:20:03Z graphene joined #lisp 2018-09-13T14:23:42Z eschulte joined #lisp 2018-09-13T14:23:48Z Shinmera: I am a sinner 2018-09-13T14:24:37Z equwal quit (Remote host closed the connection) 2018-09-13T14:24:56Z equwal joined #lisp 2018-09-13T14:25:24Z FreeBirdLjj joined #lisp 2018-09-13T14:26:26Z Arcaelyx quit (Read error: Connection reset by peer) 2018-09-13T14:26:37Z Arcaelyx_ joined #lisp 2018-09-13T14:27:43Z jackdaniel: everytime you use :: god kills a kitten. 2018-09-13T14:28:10Z j`ey writes lots of C++ with :: :( 2018-09-13T14:28:26Z beach: Bike: Oh, that's not what I meant. I meant that I could copy generate-ast and modify it to expand instead. 2018-09-13T14:31:23Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-13T14:31:38Z Bike: oh. 2018-09-13T14:31:50Z equwal quit (Remote host closed the connection) 2018-09-13T14:32:16Z equwal joined #lisp 2018-09-13T14:32:30Z equwal quit (Remote host closed the connection) 2018-09-13T14:34:41Z suskeyhose joined #lisp 2018-09-13T14:35:28Z jkordani quit (Quit: Leaving) 2018-09-13T14:35:33Z heisig quit (Quit: Leaving) 2018-09-13T14:36:21Z equwal joined #lisp 2018-09-13T14:36:22Z shrdlu68: How do I inline a (defun (setf foo) ...) 2018-09-13T14:36:44Z Bike: like that. 2018-09-13T14:36:56Z Bike: the first parameter is the new value. 2018-09-13T14:37:10Z Bike: the remaining parameters are what appears after foo in the setf. 2018-09-13T14:37:20Z Bike: (setf (foo 1 2 3) 4) => (funcall #'(setf foo) 4 1 2 3) 2018-09-13T14:37:39Z Arcaelyx_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T14:37:50Z lavaflow_ quit (Read error: Connection reset by peer) 2018-09-13T14:37:53Z warweasle joined #lisp 2018-09-13T14:38:17Z shrdlu68: thanks. 2018-09-13T14:38:27Z pfdietz: Also, you declare it inline right before the defun. 2018-09-13T14:38:41Z pfdietz: (declaim (inline (setf foo))) 2018-09-13T14:38:57Z astalla quit (Ping timeout: 252 seconds) 2018-09-13T14:39:24Z pfdietz: If you want to selectively inline it later, you declaim notinline right after the defun, then at local uses you can locally declare it inline. 2018-09-13T14:39:38Z equwal quit (Remote host closed the connection) 2018-09-13T14:40:04Z pfdietz: The initial inline declaim causes the compiler to store the source for the later selective inlining. 2018-09-13T14:42:40Z shrdlu68: Got it. 2018-09-13T14:43:04Z scymtym quit (Ping timeout: 240 seconds) 2018-09-13T14:45:18Z lavaflow_ joined #lisp 2018-09-13T14:48:41Z equwal joined #lisp 2018-09-13T14:48:56Z equwal quit (Remote host closed the connection) 2018-09-13T14:49:11Z equwal joined #lisp 2018-09-13T14:50:43Z fikka quit (Ping timeout: 246 seconds) 2018-09-13T14:52:35Z Arcaelyx joined #lisp 2018-09-13T14:52:42Z equwal quit (Remote host closed the connection) 2018-09-13T14:53:01Z equwal joined #lisp 2018-09-13T14:53:32Z equwal quit (Remote host closed the connection) 2018-09-13T14:53:51Z equwal joined #lisp 2018-09-13T14:54:56Z Kundry_Wag joined #lisp 2018-09-13T14:56:22Z equwal quit (Remote host closed the connection) 2018-09-13T14:56:28Z fikka joined #lisp 2018-09-13T14:56:38Z equwal joined #lisp 2018-09-13T14:57:36Z equwal quit (Remote host closed the connection) 2018-09-13T14:57:53Z equwal joined #lisp 2018-09-13T14:58:09Z equwal quit (Remote host closed the connection) 2018-09-13T14:58:23Z shrdlu68: First macro I've written in a while: (defmacro post-incf (var) `(prog1 ,var (incf ,var))) 2018-09-13T14:58:38Z equwal joined #lisp 2018-09-13T14:59:06Z equwal quit (Remote host closed the connection) 2018-09-13T14:59:14Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T14:59:23Z equwal joined #lisp 2018-09-13T15:00:48Z zfree quit (Quit: zfree) 2018-09-13T15:01:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T15:03:16Z trittweiler: shrdlu68, (shiftf x (1+ x)) 2018-09-13T15:04:40Z pfdietz: That macro will fail if the place has side effects. (post-incf (aref x (incf i))) 2018-09-13T15:04:59Z j`ey: the classic C macro problem 2018-09-13T15:06:15Z pfdietz: There's infrastructure in the CL standard for solving this problem, since it has to be solved for various builtin macros on places. 2018-09-13T15:06:18Z fikka joined #lisp 2018-09-13T15:06:41Z Bike: `(1- (incf ,var)), obvs 2018-09-13T15:07:21Z mingus quit (Ping timeout: 252 seconds) 2018-09-13T15:07:52Z dlowe: you might want (defmacro post-incf (var &optional amt) ...) 2018-09-13T15:08:16Z oni-on-ion joined #lisp 2018-09-13T15:08:25Z dlowe: I don't think side-effects matter here. incf won't be happy with a non-place. 2018-09-13T15:09:06Z Kundry_Wag joined #lisp 2018-09-13T15:09:56Z groovy2shoes quit (Quit: moritura te salutat) 2018-09-13T15:10:06Z shrdlu68: dlowe: Yeah, this is just a simple 1+ 2018-09-13T15:10:23Z pfdietz: See the example I gave: the place expression can have side effecting subexpressions. 2018-09-13T15:11:04Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T15:11:22Z lavaflow_ quit (Ping timeout: 246 seconds) 2018-09-13T15:12:09Z dlowe: pfdietz: yeah. ugly. 2018-09-13T15:12:34Z Chream joined #lisp 2018-09-13T15:12:43Z lavaflow_ joined #lisp 2018-09-13T15:13:25Z pfdietz: One also has to make sure the subexpressions of the place continue to be executed in left-to-right order. ansi-tests checked for all this. 2018-09-13T15:13:49Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-13T15:15:37Z shrdlu68: pfdietz: Hmm, shiftf suffers from the same shortcoming. Is there a way of avoiding that? 2018-09-13T15:16:50Z fikka joined #lisp 2018-09-13T15:18:11Z pfdietz: You can use GET-SETF-EXPANSION to explode places into pieces that can be assembled in the macro expansion. http://www.lispworks.com/documentation/lw70/CLHS/Body/f_get_se.htm 2018-09-13T15:18:31Z oni-on-ion: expansion 2018-09-13T15:18:45Z oni-on-ion: expression 2018-09-13T15:19:31Z pfdietz: can be assembled in the expansion of the macro expression? 2018-09-13T15:21:18Z fikka quit (Ping timeout: 245 seconds) 2018-09-13T15:21:52Z pfdietz: (macroexpand '(shiftf x (aref y (incf i)) z)) ==> 2018-09-13T15:22:08Z pfdietz: (LET* ((#:Y1080 Y) (#:G1081 (INCF I)) (#:OUT1082 X) (#:NEW1 (AREF #:Y1080 #:G1081)) (#:NEW1 Z)) 2018-09-13T15:22:08Z pfdietz: (SETQ X #:NEW1) 2018-09-13T15:22:08Z pfdietz: (FUNCALL #'(SETF AREF) #:NEW1 #:Y1080 #:G1081) 2018-09-13T15:22:08Z pfdietz: (VALUES #:OUT1082)) 2018-09-13T15:23:26Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-13T15:26:48Z fikka joined #lisp 2018-09-13T15:28:00Z Lycurgus quit (Quit: Exeunt) 2018-09-13T15:31:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T15:31:55Z graphene quit (Remote host closed the connection) 2018-09-13T15:32:21Z Kundry_Wag joined #lisp 2018-09-13T15:32:26Z rippa joined #lisp 2018-09-13T15:33:30Z graphene joined #lisp 2018-09-13T15:36:35Z lavaflow_ quit (Read error: No route to host) 2018-09-13T15:36:57Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T15:37:08Z lavaflow_ joined #lisp 2018-09-13T15:38:46Z rixard joined #lisp 2018-09-13T15:42:26Z fikka joined #lisp 2018-09-13T15:42:55Z Kundry_Wag joined #lisp 2018-09-13T15:44:13Z shrdlu68 quit (Ping timeout: 245 seconds) 2018-09-13T15:47:07Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T15:47:48Z rixard quit (Quit: rixard) 2018-09-13T15:48:15Z beach: I believe I have a first version of MACROEXPAND-ALL working. It takes a cleavir environment that it operates in. 2018-09-13T15:49:03Z Chream quit (Remote host closed the connection) 2018-09-13T15:49:58Z beach: Tomorrow, I will use it to test my implementations of MAKE-METHOD and CALL-METHOD. 2018-09-13T15:51:01Z cage_ joined #lisp 2018-09-13T15:51:26Z Jesin quit (Quit: Leaving) 2018-09-13T15:52:11Z makomo: pfdietz: do the subforms of a place *have* to be evaluated left-to-right? i thought that was just a nice property/convention, but that it wasn't required for user-defined places 2018-09-13T15:54:37Z makomo: pfdietz: for example, i wrote an IFF place, which conditionally writes/reads one of the two places you provide to it as arguments, along with a condition form 2018-09-13T15:56:07Z nika joined #lisp 2018-09-13T15:56:21Z Bike: ' The evaluation ordering of subforms within a place is determined by the order specified by the second value returned by get-setf-expansion. For all places defined by this specification (e.g., getf, ldb, ...), this order of evaluation is left-to-right. ' 2018-09-13T15:56:29Z Bike: i guess that kind of implies having one that doesn't is okay. 2018-09-13T15:56:52Z makomo: yup 2018-09-13T15:57:00Z Bike: if a bit confusing, but iff is already confusing, so it's probably fine 2018-09-13T15:57:13Z makomo: :-) 2018-09-13T15:57:44Z makomo: i was going to write condf and other conditional places by basing them on iff, but i have to make iff take an optional second place first 2018-09-13T15:57:52Z makomo: whenf, unlessf, etc. etc. :-D 2018-09-13T15:58:08Z fikka quit (Ping timeout: 244 seconds) 2018-09-13T15:58:20Z makomo: but i went on to do something else and forgot 2018-09-13T15:58:54Z Bike: loopf is gonna be off the chain 2018-09-13T15:59:15Z fikka joined #lisp 2018-09-13T15:59:28Z makomo: holy, good idea :D 2018-09-13T16:01:55Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-13T16:03:49Z Kundry_Wag joined #lisp 2018-09-13T16:05:49Z meepdeew joined #lisp 2018-09-13T16:07:58Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T16:09:12Z FreeBirdLjj joined #lisp 2018-09-13T16:09:24Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T16:14:17Z Kundry_Wag joined #lisp 2018-09-13T16:15:19Z scymtym joined #lisp 2018-09-13T16:17:45Z akovalenko quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-09-13T16:18:48Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T16:19:52Z beach: Oh, so less than 3 hours to write MACROEXPAND-ALL. Not too bad. 2018-09-13T16:20:29Z meepdeew quit (Remote host closed the connection) 2018-09-13T16:24:02Z rumbler31 joined #lisp 2018-09-13T16:25:21Z slyrus1: beach: with a UI that lets you expand/collapse subtrees? :) 2018-09-13T16:26:13Z beach: No, I just wrote an S-expression-based MACROEXPAND-ALL. 2018-09-13T16:26:28Z beach: I'll do the GUI AST visualizer some other time. 2018-09-13T16:26:50Z slyrus1: right. I was going to say "presumably the AST stuff makes it possible to write such a thing nicely"? 2018-09-13T16:27:28Z beach: Sure. I did it the easy way. I basically translated the code from generate-ast (by hand) to cover all the cases. 2018-09-13T16:28:19Z rumbler31 quit (Remote host closed the connection) 2018-09-13T16:31:06Z Jesin joined #lisp 2018-09-13T16:34:11Z meepdeew joined #lisp 2018-09-13T16:37:17Z Kundry_Wag joined #lisp 2018-09-13T16:37:59Z LiamH joined #lisp 2018-09-13T16:41:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T16:44:12Z groovy2shoes joined #lisp 2018-09-13T16:49:21Z Kundry_Wag joined #lisp 2018-09-13T16:49:32Z mason joined #lisp 2018-09-13T16:51:49Z mingus joined #lisp 2018-09-13T16:52:41Z zigpaw quit (Remote host closed the connection) 2018-09-13T16:52:42Z schweers quit (Ping timeout: 264 seconds) 2018-09-13T16:53:47Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T16:59:20Z Demosthenex: simple testing for a noob. lisp-unit or prove? 2018-09-13T16:59:48Z beach: I have quit using testing frameworks. 2018-09-13T16:59:54Z Shinmera: parachute! 2018-09-13T17:00:03Z beach: They don't help me with my favorite testing technique it seems. 2018-09-13T17:00:38Z beach: Enumerating test cases is mostly not feasible for the kind of stuff I write. 2018-09-13T17:00:40Z Demosthenex: i'm just trying to confirm some edge cases in what i'm working on, and honestly i could just repeat things in the repl, but thought i should document it a bit better 2018-09-13T17:00:51Z Demosthenex: i'm not writing a suite 2018-09-13T17:01:00Z beach: Oh! 2018-09-13T17:01:02Z beach: I do. 2018-09-13T17:01:02Z Demosthenex: ... maybe something like test driven devel? i'm trying to cover my bases 2018-09-13T17:01:07Z chipolux quit (Quit: chipolux) 2018-09-13T17:01:14Z beach: But I don't use a framework. 2018-09-13T17:01:28Z chipolux joined #lisp 2018-09-13T17:01:34Z Demosthenex: i thought i should try, in case it grows. 2018-09-13T17:01:51Z beach: An automatic test suite is a very good thing. 2018-09-13T17:02:04Z beach: It makes you feel very confident when you modify some code. 2018-09-13T17:02:04Z Kundry_Wag joined #lisp 2018-09-13T17:02:09Z Demosthenex: Shinmera: i'll read up on parachute 2018-09-13T17:02:21Z Shinmera: Colleen: look up parachute 2018-09-13T17:02:36Z Shinmera: sigh, colleen broke again 2018-09-13T17:02:46Z Demosthenex: Shinmera: i already have the docs up ;] 2018-09-13T17:02:57Z Demosthenex: there's just a ton of frameworks on the wiki 2018-09-13T17:03:00Z meepdeew quit (Remote host closed the connection) 2018-09-13T17:03:08Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T17:03:21Z Kundry_Wag joined #lisp 2018-09-13T17:03:35Z makomo: beach: what's your favorite testing technique? 2018-09-13T17:03:45Z Colleen: About parachute https://shinmera.github.io/parachute#about_parachute 2018-09-13T17:04:12Z Shinmera shakes fists at himself 2018-09-13T17:04:12Z igemnace joined #lisp 2018-09-13T17:04:37Z beach: makomo: When possible, I write "random tests", i.e. I generate huge numbers of test cases to my code. when applicable, I write two version of my code, one "production" version, and one "trivial" version. 2018-09-13T17:04:58Z beach: makomo: The are supposed to behave the same way, but the "trivial" one is too slow for the final version. 2018-09-13T17:05:18Z beach: makomo: If the two agree, then I am very confident that they are both correct. 2018-09-13T17:05:26Z terpri quit (Quit: Leaving) 2018-09-13T17:06:00Z makomo: beach: oh i see. how do you generate the random tests without basically solving the problem though? how do you bootstrap, i guess? :-) 2018-09-13T17:06:24Z quipa quit (Remote host closed the connection) 2018-09-13T17:06:25Z beach: Well, this works best for "abstract data type" code. 2018-09-13T17:06:30Z orivej joined #lisp 2018-09-13T17:06:34Z Colleen: Clhs: function funcall http://www.lispworks.com/documentation/HyperSpec/Body/f_funcal.htm 2018-09-13T17:06:50Z Shinmera: sorry for the spam ^ 2018-09-13T17:06:52Z quipa joined #lisp 2018-09-13T17:07:06Z beach: makomo: I just generate sequences of operations according to the API. 2018-09-13T17:07:24Z Shinmera: the lookup module got stuck somehow so now it was catching up on past commands 2018-09-13T17:07:58Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T17:07:59Z beach: makomo: Then I check the tests against the code cover. If there are places that have not been executed, I try to modify my random-test generator so that those are included. 2018-09-13T17:10:40Z emaczen quit (Remote host closed the connection) 2018-09-13T17:12:57Z makomo: beach: hmm, i see how one could easily generate sequences of those operations, but how do you generate the results to test against, without already implementing the API? maybe i'm thinking about it the wrong way or something 2018-09-13T17:13:17Z Kundry_Wag joined #lisp 2018-09-13T17:13:18Z orivej quit (Ping timeout: 252 seconds) 2018-09-13T17:13:34Z makomo: or perhaps you rely on an already existing implementation of the same API (or a similar one) 2018-09-13T17:13:39Z beach: I do implement the API in two different ways. 2018-09-13T17:13:48Z beach: One "production" and one "trivial". 2018-09-13T17:13:54Z makomo: oh, i thought that was a separate thing. aha. 2018-09-13T17:14:05Z makomo: so you test the production version with the trivial one? 2018-09-13T17:14:10Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-13T17:14:26Z beach: Yes. 2018-09-13T17:14:32Z Kundry_Wag joined #lisp 2018-09-13T17:15:12Z beach: There could be bugs in the trivial one as well of course, but the probability that it would be "the same" bug in both versions is infinitesimal. 2018-09-13T17:15:15Z makomo: so you're relying on the fact that the trivial version is as trivial as can be, and that you will probably easily catch the errors since the code is simple 2018-09-13T17:15:25Z beach: ... since they are implemented in totally different ways. 2018-09-13T17:15:40Z beach: That, and what I just wrote. 2018-09-13T17:15:49Z makomo: mhm, neat. 2018-09-13T17:16:03Z j`ey: beach: that's interesting 2018-09-13T17:16:21Z makomo: so, (1) simple foundation and (2) redundancy :-) 2018-09-13T17:16:31Z beach: Right. 2018-09-13T17:16:44Z beach: But yeah, the "trivial" version is usually so simple that you can just look at it and be convinced that it is correct. 2018-09-13T17:16:48Z m00natic quit (Ping timeout: 272 seconds) 2018-09-13T17:17:52Z j`ey: but then you have to maintain 2 version of the code! 2018-09-13T17:18:24Z shka_ joined #lisp 2018-09-13T17:18:29Z beach: The "trivial" version stays the same unless the API changes, which should not be the case (at least not very often). 2018-09-13T17:18:56Z shka_: good evening 2018-09-13T17:19:04Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T17:20:06Z beach: Hello shka_. 2018-09-13T17:23:00Z emaczen joined #lisp 2018-09-13T17:29:20Z Arcaelyx joined #lisp 2018-09-13T17:30:19Z igemnace quit (Quit: WeeChat 2.2) 2018-09-13T17:30:38Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-13T17:33:06Z pfdietz: makomo: there are two commonly used techniques for generating random tests. 2018-09-13T17:33:43Z pierpal quit (Quit: Poof) 2018-09-13T17:33:44Z pfdietz: The first is generative: have a grammar (explicit or implicit) and attach probabilities to different production rules. 2018-09-13T17:33:48Z Jesin quit (Quit: Leaving) 2018-09-13T17:34:01Z pierpal joined #lisp 2018-09-13T17:34:22Z pfdietz: The second is mutational: given a corpus of interesting inputs, generate new inputs by changing or combining them in various ways. 2018-09-13T17:34:52Z pfdietz: One can also add constraints to the inputs to try to bias them toward more interesting executions. 2018-09-13T17:35:33Z pfdietz: And if one can instrument the code under test then the inputs can be tweaked based on whether in the code the executions go ("gray box fuzzing"). 2018-09-13T17:35:39Z beach: pfdietz: I often need my generated operations to follow a Markov process. Unless I have a certain probability of generating long sequences of "the same" operation, my coverage won't be adequate. 2018-09-13T17:37:09Z Jesin joined #lisp 2018-09-13T17:37:17Z pfdietz: Yes. There are games you can play with that, like "swarm testing", where you randomly prune down the set of production rules before each run of the test generator. Empirically this tends to find more bugs. I used this technique in the CL random test generator. 2018-09-13T17:37:57Z beach: Great! 2018-09-13T17:38:24Z beach: I just generate the tests with a trivial Markov state machine. 2018-09-13T17:39:08Z pfdietz: The experience with random testing is, I think, that different test generators cover different parts of bug space, so for a really large system you want diversity. 2018-09-13T17:39:34Z pfdietz: For something small, not so important. 2018-09-13T17:39:35Z beach: That's why I don't use a test generator. 2018-09-13T17:39:48Z beach: I just generate the tests. 2018-09-13T17:39:58Z pfdietz: That's a test generator :) 2018-09-13T17:40:16Z beach: But I write it for each system. 2018-09-13T17:40:35Z beach: I started by saying why I don't use a testing framework. 2018-09-13T17:42:53Z makomo: pfdietz: interesting, but you do arrive at the same "problem" of having to already have a working version of what you want to test, right? i.e. once you generate the inputs (sequence of operations, etc.) you need to somehow generate the outputs (the actual solution to those inputs) 2018-09-13T17:43:30Z pfdietz: You identify properties the code should have, even if they may not fully specify what the code should do. 2018-09-13T17:43:41Z pfdietz: For example: the code probably shouldn't crash. 2018-09-13T17:43:59Z beach: makomo: I can assure you that the "working version" is trivial to write in many cases. 2018-09-13T17:44:24Z pfdietz: For the Lisp testing I was doing, the property was that (for conforming CL) the code should do the same thing if compiled w. various different declarations, or if eval-ed. 2018-09-13T17:46:39Z makomo: beach: mhm, but it's interesting how there's a fundamental circularity/bootstrapping problem in there. either you have an existing implementation or you use your brain (which is just another implementation) and write out a finite number of tests yourself 2018-09-13T17:47:30Z pfdietz: If your code is loaded with assertions, each of them is an opportunity for testing. No assertions should fail. 2018-09-13T17:47:44Z beach: makomo: OK, let me give you a concrete example: Cluffer. 2018-09-13T17:48:07Z makomo: mhm, i'm familiar with that project 2018-09-13T17:48:07Z beach: makomo: It's basically a two-level editable sequence. 2018-09-13T17:48:41Z beach: makomo: I can write a trivial version as (say) a list of lists. 2018-09-13T17:48:50Z Kundry_Wag joined #lisp 2018-09-13T17:49:01Z makomo: pfdietz: true. how did you test that the two versions of code did the same thing? i suppose the stuff that was randomly generated were the declarations, not the code itself? the code was predetermined and you knew what to test for? 2018-09-13T17:49:01Z beach: makomo: but the purpose of the library is to be highly optimized. 2018-09-13T17:49:26Z beach: makomo: So the trivial version is, well, trivial, but slow. 2018-09-13T17:49:36Z beach: I can write it i a few minutes. 2018-09-13T17:49:56Z makomo: beach: yeah, i understand that. i get that it's a non-problem in practice, but fundamentally the ""problem"" is there 2018-09-13T17:50:06Z pfdietz: I randomly generated code and randomly generated inputs, and then checked that no errors were thrown (this was conforming code that would not throw errors) and that it had the same result on the same inputs. 2018-09-13T17:50:07Z beach: It takes less time to write the implementation of the trivial version than it takes to write the tests. 2018-09-13T17:50:36Z beach: makomo: You mean if I want to generalize my ideas into a "testing framework"? 2018-09-13T17:50:49Z makomo: pfdietz: oh i see, interesting 2018-09-13T17:50:59Z beach: makomo: I think I already expressed my feelings about that. 2018-09-13T17:51:36Z beach: makomo: I.e., that I think it is extremely hard to find abstractions for a testing framework. 2018-09-13T17:51:49Z makomo: beach: not quite. i just wanted to comment on the need of having to have an existing implementation in order to begin testing, no matter how trivial it is 2018-09-13T17:52:28Z beach: That trivial implementation is tiny compared to the markov-chain code. 2018-09-13T17:53:06Z makomo: beach: does Cleavir for example use this technique for testing? 2018-09-13T17:53:15Z beach: Consider it part of the amount of code that you need to write to test things. 2018-09-13T17:53:19Z makomo: i suppose Cluffer does since you mentioned it? 2018-09-13T17:53:21Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T17:53:31Z beach: Yes, Cluffer is a good example. 2018-09-13T17:59:11Z beach: makomo: My main point here is that I don't believe in "testing frameworks" because I don't see how such a thing could capture even the most useful testing techniques that I know of. 2018-09-13T18:00:21Z Essadon joined #lisp 2018-09-13T18:02:42Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T18:02:44Z makomo: beach: mhm 2018-09-13T18:03:20Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T18:03:52Z pjb joined #lisp 2018-09-13T18:11:16Z eschulte quit (Ping timeout: 272 seconds) 2018-09-13T18:15:48Z stacksmith joined #lisp 2018-09-13T18:16:38Z shka_: beach: that's exactly why i like prove 2018-09-13T18:17:09Z shka_: it does not get in the way… 2018-09-13T18:17:49Z beach: shka_: Whenever you succeed, I am all ears. 2018-09-13T18:18:12Z shka_: hardly succeed 2018-09-13T18:18:16Z fikka joined #lisp 2018-09-13T18:18:40Z Arcaelyx joined #lisp 2018-09-13T18:18:45Z beach: My purpose in life is not to make testing frameworks a sucess. 2018-09-13T18:18:54Z beach: success, even 2018-09-13T18:18:58Z shka_: but i like how i can use asdf extension to specify :test-file and i can simply use is and ok assertion 2018-09-13T18:19:10Z j`ey: this is my testing framework: (defun test (val) (cond ((eq val nil) (princ "E")) (t (princ ".")))) 2018-09-13T18:19:20Z shka_: it is not magical, but it just helps to launch my tests 2018-09-13T18:19:52Z pfdietz: The question you want to ask is not "which testing framework?" but rather "what specifically do you want from a testing framework?" 2018-09-13T18:20:01Z shka_: yeah 2018-09-13T18:20:23Z beach: Thanks pfdietz. 2018-09-13T18:20:53Z shka_: well, i like prove 2018-09-13T18:21:10Z shka_: it does what i want it to do, and does not get in the way 2018-09-13T18:21:22Z beach: And whenever I asked that question, no existing framework raised its hand. 2018-09-13T18:21:45Z shka_: well, you expect a lot 2018-09-13T18:22:32Z shka_: something that can be perhaps even borderline impossible in fact 2018-09-13T18:23:09Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T18:24:46Z sauvin quit (Remote host closed the connection) 2018-09-13T18:26:15Z shka_: in fact precise description of computer program is non trivial in it's own right 2018-09-13T18:26:20Z beach: shka_: Oh, I am convince it is impossible. 2018-09-13T18:26:44Z beach: shka_: Which is why I don't believe in testing frameworks. 2018-09-13T18:27:06Z quipa quit (Ping timeout: 272 seconds) 2018-09-13T18:27:12Z shka_: well, does it has to be everything or nothing? 2018-09-13T18:27:33Z beach: I am totally convince that this is one abstraction that everyone is looking for but that isn't possible in general. 2018-09-13T18:27:42Z beach: No, of course not. 2018-09-13T18:28:12Z shka_: right 2018-09-13T18:28:48Z beach: But the fact that there are so many and that people are not satisfied with what exists, tells me that there is a problem. 2018-09-13T18:28:50Z rumbler31 joined #lisp 2018-09-13T18:29:06Z dlowe is satisfied. :D 2018-09-13T18:29:39Z beach: dlowe: Good for you. 2018-09-13T18:29:51Z vydd joined #lisp 2018-09-13T18:29:56Z fikka joined #lisp 2018-09-13T18:30:10Z beach: But why do we have so many testing frameworks? 2018-09-13T18:30:19Z shka_: they are easy to write 2018-09-13T18:30:24Z shka_: that's why 2018-09-13T18:30:48Z beach: Very plausible. Thanks. 2018-09-13T18:31:30Z pfdietz: There are ten copies of RT in Quicklisp, last I checked. Not only are they easy to write, they're easy to copy. :) 2018-09-13T18:32:58Z rumbler31 quit (Ping timeout: 246 seconds) 2018-09-13T18:33:03Z beach: What is RT? 2018-09-13T18:34:34Z pfdietz: Very old testing framework written by Waters. 2018-09-13T18:35:01Z pfdietz: http://www.merl.com/publications/docs/TR91-04.pdf 2018-09-13T18:35:10Z Bike: the one ansi-tests uses 2018-09-13T18:35:18Z vlatkoB quit (Remote host closed the connection) 2018-09-13T18:35:53Z pfdietz: Yes! I did make some changes to it for myself. 2018-09-13T18:39:43Z jackdaniel: testing is not an easy task so many people have different ideas how the tool simplifying that should look like 2018-09-13T18:43:29Z jasom: beach: there are so many testing frameworks for the same reason I accidentally wrote a routing library for clack 2018-09-13T18:44:05Z jasom: beach: at first I didn't really need a routing library, so I didn't use one. Then I added a couple of features as I needed them. Then I realized that if I just moved it to a separate package, I had a complete routing library... 2018-09-13T18:45:29Z jasom: just like a testing framework it's easy to grow organically as you need more features *and* not much code when it's done: https://github.com/jasom/cl-fccs/blob/master/src/route.lisp 2018-09-13T18:47:37Z pjb: jackdaniel: right. IME, testing depends on the kind of software you are testing. Basically, most testing libraries are just unsuitable for a lot of software I had to test. 2018-09-13T18:49:32Z meepdeew joined #lisp 2018-09-13T18:50:35Z pjb: perhaps it would be more worthwhile to write down specifications, eg. of testing framework interfaces to testing report systems. eg. https://testanything.org 2018-09-13T18:50:50Z pjb: (while it works, I find TAP very primitive…) 2018-09-13T18:51:10Z fikka quit (Ping timeout: 272 seconds) 2018-09-13T18:51:22Z pjb: for TAP, there's https://www.cliki.net/testbild 2018-09-13T18:51:45Z equwal quit (Ping timeout: 252 seconds) 2018-09-13T18:52:06Z pjb: If asdf:test-op was specified to produce on *standard-output* a TAP stream, quicklisp could parse the results and produce nice reports… 2018-09-13T18:53:14Z pjb: You could use any testing framework, even multiple frameworks in a big system, as long as they would all follow a unique protocol, collected and interpreted by the surrounding tools and UI, it would be nice, integrated, and useful. 2018-09-13T18:53:19Z pjb: and consistent. 2018-09-13T18:53:58Z meepdeew quit (Ping timeout: 246 seconds) 2018-09-13T19:00:44Z nika quit (Quit: Leaving...) 2018-09-13T19:04:37Z th1nkpad joined #lisp 2018-09-13T19:04:55Z dan64 joined #lisp 2018-09-13T19:05:06Z thinkpad quit (Ping timeout: 272 seconds) 2018-09-13T19:05:07Z th1nkpad is now known as thinkpad 2018-09-13T19:06:29Z fikka joined #lisp 2018-09-13T19:08:04Z zooey quit (Remote host closed the connection) 2018-09-13T19:08:26Z zooey joined #lisp 2018-09-13T19:08:45Z LiamH quit (Quit: Leaving.) 2018-09-13T19:11:01Z Kundry_Wag joined #lisp 2018-09-13T19:11:07Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T19:13:12Z asarch joined #lisp 2018-09-13T19:13:27Z vsync: I've gotten really into &aux lately... like in the last couple of days 2018-09-13T19:13:49Z vsync: before I wanted to use it just because it was out of fashion and I'm a weirdo even among the weirdos 2018-09-13T19:14:18Z vsync: never had an actual use though... but lately I have found one where you want to have an inner named closure 2018-09-13T19:14:31Z vsync: lets you avoid spurious LET nesting and keep scopes tidy 2018-09-13T19:14:46Z asarch: In the AllegroServe Tutorial, there is this expression: 2018-09-13T19:14:53Z vsync: and makes the control flow of the main function a little clearer I think 2018-09-13T19:15:02Z asarch: (defpackage :tutorial (:use :common-lisp :excl :net.aserve :net.html.generator)) 2018-09-13T19:15:06Z asarch: What is ":excl"? 2018-09-13T19:15:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T19:15:41Z asarch: SBCL complains: "The name "EXCL" does not designate any package." 2018-09-13T19:16:00Z asarch: Old Lisp code? 2018-09-13T19:16:02Z pfdietz: It's Allegro-specific? Or, it's defined in some system you needed to load first? 2018-09-13T19:16:04Z vsync: jasom: LOL what I'm working on right now is literally a routing library 2018-09-13T19:16:11Z Bike: i think it is the name of the extensions package for allegro. 2018-09-13T19:16:38Z vsync: though mine is for healthcare provider coordination data exchange between health systems and EMRs 2018-09-13T19:17:07Z vsync: for that purpose but generalizable! just like embedded in many other systems I'm sure, heh 2018-09-13T19:18:33Z pjb: vsync: the real use case for &aux, is when you write a macro and you need to add variables around a &body docstring-declarations-and-body <- NOT merely BODY!!! 2018-09-13T19:18:40Z pjb: Then &aux let you avoid parsing the body. 2018-09-13T19:18:45Z vsync: ooh 2018-09-13T19:18:49Z vsync will try to remember that 2018-09-13T19:19:07Z vsync: try and remember to parse in more detail later rather... under the gun right now 2018-09-13T19:19:14Z pjb: I don't mind indentation. It's done automatically, and I've got a 5000+ pixel wide screen :-) 2018-09-13T19:20:09Z vsync: wc -L **/*.lisp | tail -1 => '79 total' 2018-09-13T19:20:19Z vsync takes a bow 2018-09-13T19:21:43Z pjb: I assume your wc -L prints the max width of lines? 2018-09-13T19:22:02Z shka_: vsync: good 2018-09-13T19:22:13Z dan64 quit (Ping timeout: 244 seconds) 2018-09-13T19:22:25Z pjb: yes, gnu wc does that. 2018-09-13T19:22:44Z pjb: You've got a tidy code base here. It must be horrible to read in some places… 2018-09-13T19:22:49Z dlowe: 1326 total 2018-09-13T19:22:53Z vsync: yeah I stumbled across it the other day when I didn't have CLOC installed and until my clean kernel compile happens the system crashes if I access a reiserfs and then a jfs 2018-09-13T19:22:53Z dlowe: hmmm 2018-09-13T19:23:11Z dlowe: (I think that may be a data file) 2018-09-13T19:23:13Z stylewarning: I mind indentation! My terminal is only 132 chars wide 2018-09-13T19:23:33Z pjb: gwc -L $(find ~/src/public/lisp -name \*.lisp )|tail -1 --> 16893 total ;-) 2018-09-13T19:23:54Z stylewarning: if no one said it, sloccount is a nice program 2018-09-13T19:24:19Z vsync: shka_: but when reviewing the diff it wraps one word :-( 2018-09-13T19:24:24Z pjb: The 3 widest sources of mines are 16893, 1809 and 707 character wide. 2018-09-13T19:24:40Z pjb: and there are more than 20 files with lines longuer than 230 characters. 2018-09-13T19:24:44Z stylewarning: ah, we are talking about line length 2018-09-13T19:25:09Z vsync: need to leave 3 extra characters for the minimum log graph view with diff, plus 1 for some terms wrap on the last column uselessly somewhy 2018-09-13T19:25:37Z stylewarning: vsync: sometimes a character in the last column is reserved for an overflow character 2018-09-13T19:25:38Z stylewarning: like \ 2018-09-13T19:25:40Z vsync: stylewarning: excellent taste in terminal sizing 2018-09-13T19:26:03Z vsync: stylewarning: makes sense for consistency... like do you indent context lines in diff 1 char? I say yes 2018-09-13T19:26:05Z stylewarning: vsync: unfortunately 80 and 132 are the only options! :) 2018-09-13T19:26:11Z vsync will allow 160 2018-09-13T19:26:25Z vsync: for height, 24, 25, 43, 50, or 66 2018-09-13T19:26:40Z pjb: 72 and 132 are the paper widths. Who prints programs on paper anymore? 2018-09-13T19:26:45Z pjb: Forget that. 2018-09-13T19:26:47Z fikka joined #lisp 2018-09-13T19:27:00Z stylewarning: vsync: https://www.youtube.com/watch?v=FdL1VHH7x6o 2018-09-13T19:27:01Z stylewarning: ;) 2018-09-13T19:27:13Z vsync: pjb: 72:132::80:something tho 2018-09-13T19:27:16Z stylewarning: pjb: it's nice for code review :) 2018-09-13T19:27:20Z shka_: it is nice to display two columns of code in emacs though 2018-09-13T19:27:50Z shka_: or 3 2018-09-13T19:28:15Z vsync: I aim for 80 but 100 is okay if necessary, depending on context; 132 is my drop-dead 2018-09-13T19:28:51Z pfdietz: Replace all your "rn" substrings with "m" to save space. This is called "keming". 2018-09-13T19:29:07Z shka_: lol 2018-09-13T19:29:10Z pierpal quit (Ping timeout: 272 seconds) 2018-09-13T19:30:50Z pjb: Well the max line length is not good. You'd have to look at the typical line length. My files contain outliers in comments or in data. Sometimes in code, but rarely. 2018-09-13T19:31:25Z fikka quit (Ping timeout: 246 seconds) 2018-09-13T19:32:00Z jinkies joined #lisp 2018-09-13T19:35:45Z wiselord joined #lisp 2018-09-13T19:37:14Z fikka joined #lisp 2018-09-13T19:41:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T19:47:39Z fikka joined #lisp 2018-09-13T19:48:26Z regreg joined #lisp 2018-09-13T19:49:07Z Kundry_Wag joined #lisp 2018-09-13T19:51:47Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T19:52:22Z pierpa joined #lisp 2018-09-13T19:53:19Z cage_ quit (Quit: Leaving) 2018-09-13T19:53:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T19:54:54Z igemnace joined #lisp 2018-09-13T19:57:40Z fikka joined #lisp 2018-09-13T19:57:47Z shka_ quit (Ping timeout: 240 seconds) 2018-09-13T19:58:56Z Kundry_Wag joined #lisp 2018-09-13T20:02:15Z SenasOzys quit (Remote host closed the connection) 2018-09-13T20:02:26Z emaczen: xb 2018-09-13T20:02:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-13T20:03:01Z shifty joined #lisp 2018-09-13T20:03:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T20:03:32Z SenasOzys joined #lisp 2018-09-13T20:08:07Z fikka joined #lisp 2018-09-13T20:10:07Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-13T20:12:48Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T20:12:48Z makomo: ugh, i don't like it when i have to use composite keys for hash tables, it feels kinda clunky 2018-09-13T20:13:06Z makomo: and then again, multiple layers of hash tables is also clunky 2018-09-13T20:13:53Z Kundry_Wag joined #lisp 2018-09-13T20:14:19Z SenasOzys quit (Remote host closed the connection) 2018-09-13T20:17:59Z fikka joined #lisp 2018-09-13T20:19:12Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-13T20:21:33Z Kundry_Wag joined #lisp 2018-09-13T20:22:27Z fikka quit (Ping timeout: 240 seconds) 2018-09-13T20:25:53Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T20:26:59Z Kundry_Wag joined #lisp 2018-09-13T20:31:27Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T20:31:27Z graphene quit (Remote host closed the connection) 2018-09-13T20:33:02Z graphene joined #lisp 2018-09-13T20:33:52Z Kundry_Wag joined #lisp 2018-09-13T20:38:10Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T20:38:16Z fikka joined #lisp 2018-09-13T20:40:28Z dented42 joined #lisp 2018-09-13T20:43:03Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T20:46:13Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-13T20:48:23Z fikka joined #lisp 2018-09-13T20:49:29Z Kundry_Wag joined #lisp 2018-09-13T20:50:14Z stacksmith quit (Remote host closed the connection) 2018-09-13T20:53:28Z eschulte joined #lisp 2018-09-13T20:54:11Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T21:01:39Z no-defun-allowed: pfdietz: it's keming 2018-09-13T21:02:08Z pfdietz: Uh huh 2018-09-13T21:04:14Z atgreen joined #lisp 2018-09-13T21:06:13Z Roy_Fokker joined #lisp 2018-09-13T21:09:47Z ebrasca quit (Remote host closed the connection) 2018-09-13T21:15:32Z aeth: Does anyone run CL on a processor with many cores? AMD has some 16 core / 32 thread and even (for servers) 32 core / 64 thread. 2018-09-13T21:15:43Z oni-on-ion quit (Read error: No route to host) 2018-09-13T21:16:50Z Bike: sure,i guess 2018-09-13T21:17:25Z no-defun-allowed: I run it on 6c/12t. 2018-09-13T21:17:37Z aeth: that might count 2018-09-13T21:17:44Z no-defun-allowed: That's above average last time I checked. 2018-09-13T21:17:51Z aeth: I'm just wondering how programs are written with > 10 threads 2018-09-13T21:18:14Z aeth: As in, how it affects the architecture. 2018-09-13T21:18:54Z pjb: why 10? 2018-09-13T21:18:58Z no-defun-allowed: I usually use lparallel and bordeaux-threads for stuff so I'm not paying much attention, sorry. 2018-09-13T21:19:07Z pjb: I've got 8 cores. wouldn't the question be about >8 threads? 2018-09-13T21:19:26Z jkordani joined #lisp 2018-09-13T21:19:31Z aeth: pjb: 4 cores / 8 threads has been normal for a very long time. 2018-09-13T21:19:43Z no-defun-allowed: I tell lparallel I want 13 workers even with the new brainfuck scheduler. 2018-09-13T21:19:44Z aeth: pjb: 20+ is very new, at least in x86-64 2018-09-13T21:19:58Z jasom: aeth: threads predate parallelism by a lot on PCs. In the 90s a lot of code was written multithreaded to avoid io blocking. 2018-09-13T21:19:59Z aeth: It was just a handful of very expensive Xeons until recently. 2018-09-13T21:20:06Z pjb: Anyways, don't confusing multiprocessing and multithreading. 2018-09-13T21:20:49Z aeth: By cores / threads I'm referring to SMT (Hyperthreading in Intel's terminology) 2018-09-13T21:20:58Z no-defun-allowed: cl-decentralise spawns a thread per connection since they actually do things in SBCL instead of splitting up one interpreter's time (cough CPython cough). 2018-09-13T21:23:03Z ebrasca joined #lisp 2018-09-13T21:23:04Z jkordani_ quit (Ping timeout: 246 seconds) 2018-09-13T21:23:10Z aindilis quit (Ping timeout: 272 seconds) 2018-09-13T21:23:12Z no-defun-allowed: cl-vep uses one generator and a lock for the generator. When a worker needs a new frame it holds the lock and funcalls the generator. This method (work "source" and lock) hasn't given me issues in the past. 2018-09-13T21:23:45Z makomo: concurrency terminology is tricky, and people love to abuse it 2018-09-13T21:23:52Z no-defun-allowed: I've done high thread counts to avoid http blocking too. That method scaled pretty well up to 64 threads. 2018-09-13T21:24:29Z no-defun-allowed: However, the ffmpeg interface for cl-vep is shit slow and only puts out 4fps and only makes a load of 1.5. 2018-09-13T21:24:41Z jasom: aeth: I just spawn more worker threads. I haven't had any issue at 16 worker threads on my 8/16 ryzen 2018-09-13T21:25:07Z aeth: jasom: anyway, what I mean is things that are architectured so that they'd benefit from e.g. if AMD released a 64 core CPU tomorrow. 2018-09-13T21:26:05Z no-defun-allowed: lparallel would still probably work. 2018-09-13T21:26:27Z graphene quit (Remote host closed the connection) 2018-09-13T21:26:32Z jasom: aeth: minimize the serial work, and don't contend for shared resources. 2018-09-13T21:26:37Z jasom: aeth: that's the really short version 2018-09-13T21:27:59Z graphene joined #lisp 2018-09-13T21:28:32Z makomo: why is the syntax grammar for DEFSTRUCT so weird? i don't get what the keywords/singleton lists are supposed to do http://www.lispworks.com/documentation/lw70/CLHS/Body/m_defstr.htm 2018-09-13T21:28:42Z makomo: i.e. conc-name-option::= :conc-name | (:conc-name) | (:conc-name conc-name) 2018-09-13T21:29:35Z Bike: defstruct is weird. 2018-09-13T21:29:38Z Jesin quit (Quit: Leaving) 2018-09-13T21:29:40Z makomo: why would you want just :conc-name? is that supposed to construct (within the context of the grammar) a non-list version of (:conc-name conc-name)? 2018-09-13T21:30:19Z Bike: :conc-name is equivalent to (:conc-name) 2018-09-13T21:30:21Z aeth: What technique do people use for non-consing interthread communication? 2018-09-13T21:30:27Z Bike: "A defstruct option can be either a keyword or a list of a keyword and arguments for that keyword; specifying the keyword by itself is equivalent to specifying a list consisting of the keyword and no arguments." 2018-09-13T21:30:56Z Kundry_Wag joined #lisp 2018-09-13T21:31:23Z makomo: Bike: guess i should have read further, but it confused me right away so i didn't bother :c. thanks 2018-09-13T21:33:42Z jasom: aeth: lparallel has bounded queues implemented with vectors; I haven't checked the code, but it ought-not be consing if implemented right. 2018-09-13T21:33:45Z cgay: :conc-name lol 2018-09-13T21:34:28Z aeth: jasom: I'm guessing you'd queue or pass messages with things that are unboxed (like fixnums) or with keywords/symbols 2018-09-13T21:35:27Z jasom: aeth: setf on an array is going to be non-consing. Creating the value to setf in that locatin *might* be consing 2018-09-13T21:35:31Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-13T21:35:47Z aeth: jasom: thus the restriction for it to be e.g. an (unsigned-byte 32) array 2018-09-13T21:36:00Z jasom: aeth: I 2018-09-13T21:36:09Z Arcaelyx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-13T21:36:28Z jasom: aeth: I'm pretty sure an unspecialized array will not cons if you do something like (setf (aref foo) 3) since 3 is a fixnum 2018-09-13T21:36:28Z aeth: Would you sync with timers or would you have a thread sleep when done until it receives a start-working-again call? 2018-09-13T21:36:58Z jasom: aeth: synchronizing using clocks is hard to get right, I'd avoid it all together 2018-09-13T21:37:43Z Kundry_Wag joined #lisp 2018-09-13T21:42:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-13T21:44:49Z aeth: Oh, there *is* a Threadripper 32 core (64 thread) CPU, the 2990WX. Wikipedia just put it in a separate chart much further down because it's Zen+. 2018-09-13T21:45:36Z Kundry_Wag joined #lisp 2018-09-13T21:46:55Z aeth: So there is a chance that a (rich) Lisper is already running an application with performance on architecture close to manycore in mind (if you count the 64 threads via SMT) 2018-09-13T21:47:33Z aeth: Only $1799 2018-09-13T21:47:37Z jasom: aeth: Talos is available with 128T (or maybe even more) configurations since POWER8 is 4T per core 2018-09-13T21:48:32Z aeth: jasom: Yes, but most CL implementations work best on x86-64 at the moment. 2018-09-13T21:49:52Z jasom: 2x 22-core POWER9 is the highest configuration which translates to 196 threads I think? 2018-09-13T21:49:54Z aeth: Is PPC compatible with POWER8? I'm not sure if any CL runs on POWER8 if not. SBCL seems to have PPC and PPC64. 2018-09-13T21:50:03Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-13T21:50:52Z jasom: POWER9 is PPC64, but I think the talos is designed to run in little-endian mode, and I don't know if SBCL does that. 2018-09-13T21:51:31Z aeth: PPC64 is marked as in progress on the SBCL download page. I wouldn't be surprised if threading doesn't work 2018-09-13T21:51:42Z jasom: so multiprocess then :) 2018-09-13T21:52:57Z aeth: I wonder if there's a 2 socket AMD Threadripper mobo. That would be 2x 2x 32 at a max (right now... expect it to double next gen), so 128. 2018-09-13T21:52:59Z jasom: and the IBM E980 can support up to 16 12 core SMT8 processors for more cores than I care to do the math on 2018-09-13T21:53:10Z jasom: aeth: there is 2S EPYC, not sure about threadripper 2018-09-13T21:53:36Z makomo: is it possible to remove proclamations, concretely, an ftype proclamation? 2018-09-13T21:54:00Z aeth: jasom: Epyc has the same cores at a max, but 2x to 4x the cost :-p 2018-09-13T21:54:30Z Bike quit (Ping timeout: 252 seconds) 2018-09-13T21:55:00Z aeth: jasom: But yes, IBM's POWER is definitely worth mentioning in this kind of discussion. Last I checked, IBM seems to be keeping up with Intel, which is 10ish cores behind AMD. 2018-09-13T21:56:39Z aeth: A quick search has a reddit thread where the answer is "Threadripper is single socket only, for dual you'll need to go with Epyc." https://www.reddit.com/r/Amd/comments/6tqg88/dual_socket_threadripper_max_ram/dlmt8fn/ 2018-09-13T21:56:50Z aeth: Of course, random reddit comments are even less reliable than random StackOverflow answers 2018-09-13T21:57:22Z aeth: AMD forums also says Epyc. https://community.amd.com/thread/219765 2018-09-13T21:57:48Z aeth: (That's probably one of the ways they get people to pay 2x to 4x as much as the consumer line.) 2018-09-13T21:59:59Z graphene quit (Remote host closed the connection) 2018-09-13T22:00:19Z kooga quit (Quit: :) 2018-09-13T22:01:25Z graphene joined #lisp 2018-09-13T22:05:43Z anewuser joined #lisp 2018-09-13T22:06:00Z Jessin joined #lisp 2018-09-13T22:10:24Z Essadon quit (Quit: Qutting) 2018-09-13T22:12:40Z Jessin is now known as Jesin 2018-09-13T22:13:46Z meepdeew joined #lisp 2018-09-13T22:17:08Z Demosthenex: is there a way to start sbcl with swank using a port number from the command line? i'm trying to work on a few different things on a remote host, and i can connect with ssh/port forwarding. just starting sbcl with swank on separate ports is awkward 2018-09-13T22:17:36Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-13T22:18:51Z aeth: hmm, ECL also supports PPC. 2018-09-13T22:20:02Z kajo joined #lisp 2018-09-13T22:21:08Z kajo quit (Client Quit) 2018-09-13T22:22:05Z suskeyhose quit (Remote host closed the connection) 2018-09-13T22:22:34Z stacksmith joined #lisp 2018-09-13T22:23:04Z stacksmith quit (Client Quit) 2018-09-13T22:23:57Z stacksmith joined #lisp 2018-09-13T22:25:51Z kajo joined #lisp 2018-09-13T22:27:07Z suskeyhose joined #lisp 2018-09-13T22:30:37Z stacksmith: Good morning 2018-09-13T22:35:54Z suskeyhose: hello 2018-09-13T22:35:54Z wiselord quit (Ping timeout: 264 seconds) 2018-09-13T22:36:07Z nirved quit (Ping timeout: 240 seconds) 2018-09-13T22:37:16Z makomo quit (Ping timeout: 272 seconds) 2018-09-13T22:37:19Z Demosthenex: jasom: love those POWER systems. i'm an aix consultant ;] 2018-09-13T22:37:36Z Demosthenex: i'd be thrilled to see customers using CL on POWER in production 2018-09-13T22:37:46Z makomo joined #lisp 2018-09-13T22:38:20Z Bike joined #lisp 2018-09-13T22:40:12Z regreg quit (Remote host closed the connection) 2018-09-13T22:40:51Z Jesin quit (Quit: Leaving) 2018-09-13T22:40:57Z zxcvz quit (Quit: zxcvz) 2018-09-13T22:48:29Z aeth: Wikipedia says POWER9 goes up to 24-core (96 threads via SMT4?) https://en.wikipedia.org/wiki/POWER9 2018-09-13T22:49:45Z aeth: (I'd expect a 32 core with 2-way SMT to have better overall performance, though.) 2018-09-13T22:53:08Z nowhere_man quit (Remote host closed the connection) 2018-09-13T22:53:12Z aeth: It looks like both AMD and IBM are going to release 48-core CPUs very soon, though. It looks like Qualcomm already has a 48-core ARM server. 2018-09-13T22:53:32Z nowhere_man joined #lisp 2018-09-13T22:54:03Z atgreen quit (Ping timeout: 244 seconds) 2018-09-13T22:54:34Z fikka quit (Ping timeout: 244 seconds) 2018-09-13T22:56:48Z Jesin joined #lisp 2018-09-13T22:58:54Z PuercoPop quit (Ping timeout: 252 seconds) 2018-09-13T22:59:25Z stacksmith quit (Quit: stacksmith) 2018-09-13T22:59:44Z stacksmith joined #lisp 2018-09-13T23:00:00Z Bike: programs relying on particular details of the machine they're running on is something to be avoided. surely this is a basic principle 2018-09-13T23:00:50Z Kundry_Wag joined #lisp 2018-09-13T23:02:42Z aeth: Bike: what do you mean? 2018-09-13T23:02:44Z it3ration joined #lisp 2018-09-13T23:02:58Z Bike: you were asking about how to program for a 90 core machine or whatever. 2018-09-13T23:03:27Z aeth: Bike: The architecture can also run on an 4 core machine, yes, but there's less of a motivation for it there. 2018-09-13T23:03:37Z whartung: PORTABLE programs relying on particular details… 2018-09-13T23:03:53Z aeth: s/The architecture/The program's architecture/ 2018-09-13T23:03:59Z marvin2 quit 2018-09-13T23:04:25Z Bike: it's just a program with parallelism. they're nice with preemptive multitasking too. 2018-09-13T23:05:18Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T23:05:29Z aeth: Bike: But consider e.g. a game or similar application that can be divided into several systems. In today's world, if it's parallel at all, each major system would probably get its own thread. That'll only scale up to the number of major systems, which is probably far less than 90. 2018-09-13T23:05:49Z meepdeew quit (Remote host closed the connection) 2018-09-13T23:06:12Z Bike: i mean running code that does one task in multiple processes. 2018-09-13T23:06:32Z Bike: like rendering, if you like games 2018-09-13T23:06:40Z aeth: yes 2018-09-13T23:07:22Z Bike: in that case whether you have five or ninety processes isn't important for basic architecture. 2018-09-13T23:08:18Z aeth: Except for the most part, afaik what you'd typically see when the end user has quad core is maybe putting one task on each a thread to be "parallel", not also subdividing those tasks. 2018-09-13T23:08:33Z aeth: (parallel in quotes because there are like 5 definitions at work) 2018-09-13T23:08:42Z aeth: (in this one conversation) 2018-09-13T23:10:03Z DGASAU quit (Read error: Connection reset by peer) 2018-09-13T23:10:12Z aeth: AI on its own thread vs. AI in many threads. 2018-09-13T23:10:40Z Bike: if you already have an idea for how to structure a program for multiprocessing, what are you even asking? 2018-09-13T23:10:44Z fikka joined #lisp 2018-09-13T23:11:09Z Bike: just use lparallel or whatever. 2018-09-13T23:13:31Z aeth: Bike: I'm wondering if anyone has successfully deployed a CL application that takes advantage of one of these CPUs with a "very high" core count. ("very high" being relative to the normal 2-4 cores that you would have seen for this kind of hardware until recently) 2018-09-13T23:14:23Z Bike: the machine i use to build clasp has thirty something cores. during build we have each core do a compile-file so we can compile a bunch of files at once. 2018-09-13T23:14:31Z DGASAU joined #lisp 2018-09-13T23:14:39Z Bike: it's not anything new architecturally 2018-09-13T23:15:04Z whartung: I mainge someone one has. At those core counts, you’re getting into “super computing” kinds of designs and applications. 2018-09-13T23:15:45Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T23:15:53Z whartung: Funny Bike, back in the day, when I had the CPU meter on my desktop, I’d just kick off builds until it reach 90%. … by hand. Whenever it dipped down, I’d kick off another one. 2018-09-13T23:16:17Z Kundry_Wag joined #lisp 2018-09-13T23:16:18Z Bike: yeah, pretty much goes like that. 2018-09-13T23:16:57Z Bike: i did the same thing in undergrad doing biology simulations 2018-09-13T23:17:16Z whartung: This was an accounting system :) 2018-09-13T23:17:53Z whartung: but, since it seemed to be going up, I guess I wasn’t I/O bound, so gogogo! 2018-09-13T23:18:37Z whartung: My friend laments how horrible Swift builds are on the Mac — it’s apparently very CPU intensive. 2018-09-13T23:19:18Z no-defun-allowed: they don't have much CPU to give 2018-09-13T23:19:58Z no-defun-allowed: should test it on a linux box 2018-09-13T23:20:42Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T23:21:45Z dale quit (Quit: dale) 2018-09-13T23:22:37Z aeth: Bike: I would personally probably just manually implement the required algorithms and data structures when needed in my case rather than using a library. Micromanaging this sort of thing is kind of a key point of the engine (when I get there), not a secondary feature. 2018-09-13T23:22:56Z aeth: i.e. I have as full control over the game loop as I can get. 2018-09-13T23:23:07Z Kundry_Wag joined #lisp 2018-09-13T23:23:09Z Bike: okay. 2018-09-13T23:24:13Z no-defun-allowed: aeth: what kind of engine are you making? 2018-09-13T23:24:21Z aeth: It's mainly due to the requirements for 100 FPS logic and no consing at the library level in the game loop (I have consed in all of my substantial tests, of course... too hard not to... but that's in the user's code) 2018-09-13T23:24:46Z Arcaelyx joined #lisp 2018-09-13T23:24:54Z Bike: "or something" 2018-09-13T23:25:11Z slyrus quit (Quit: slyrus) 2018-09-13T23:25:12Z slyrus1 is now known as slyrus 2018-09-13T23:27:43Z aeth: no-defun-allowed: A 3D game engine. I switched my original design (nothing is stopping it from being general purpose, of course) from first person to third person strategy (i.e. far away camera) because of fewer physics requirements (otherwise the project would become more about writing a physics engine than a game engine) 2018-09-13T23:27:56Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-13T23:28:06Z no-defun-allowed: i see 2018-09-13T23:28:34Z slyrus1 joined #lisp 2018-09-13T23:29:56Z Kaisyu joined #lisp 2018-09-13T23:31:01Z fikka joined #lisp 2018-09-13T23:31:06Z aeth: I just need to do mouse selection of an entity and a destination and then I have arbitrary movement on a 2D plane within the 3D world (e.g. ships on water). After that (soundless) games would technically be possible, although still fairly difficult because the text rendering isn't complete yet. 2018-09-13T23:31:44Z whartung: what parts do you plan on forking out to separeate threads/processes? 2018-09-13T23:32:51Z Kundry_Wag joined #lisp 2018-09-13T23:33:35Z aeth: Ideally, everything eventually. 2018-09-13T23:33:59Z aeth: I'm guessing the input and the final update of the authoritative game state would have to stay on a core thread. 2018-09-13T23:34:44Z Demosthenex: omfg, lparallel++. 2018-09-13T23:35:01Z Demosthenex: one line of wrapper (pmapc vs mapc) and i have all 8 cores doing inserts. 2018-09-13T23:35:54Z fikka quit (Ping timeout: 244 seconds) 2018-09-13T23:36:38Z whartung: as I understand it, it’s prety difficult to multitask the (a?) rendering pipeline. 2018-09-13T23:37:14Z whartung: you can easily have a rendering thread, a state thread, sevearl AI threads. But the busy thread is typically the rendering thread. 2018-09-13T23:37:24Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-13T23:37:26Z Bike: you don't really have the opportunity anyway since the graphics library wants to do rendering in mysterious ways 2018-09-13T23:37:47Z whartung: I don’t know anything about OpenGL and it’s ilk. 2018-09-13T23:37:48Z jasom: Bike: there are some tradeoffs you can make; e.g. make the serial performance much worse in trade for more parallelism; the number of cores you have can decide if you will make that tradeoff 2018-09-13T23:38:10Z Bike: mostly because rendering is so hard we've farmed it off to repurposed bitcoin-mining chips 2018-09-13T23:38:39Z whartung: well, they happen to be pretty good at the job. If they weren’t we wouldn’t be handing them off to it. 2018-09-13T23:38:41Z Bike: jasom: fine tuning, yeah 2018-09-13T23:40:26Z whartung: as I understand it, the games job is to get the models oriented properly, send them to the GPU, and make sure the proper textures are loaded at the same time. The GPU does the actual rendering stuff. 2018-09-13T23:40:33Z Pixel_Outlaw joined #lisp 2018-09-13T23:40:45Z whartung: the game hanles all the camera things (I think) 2018-09-13T23:40:45Z jasom: aeth: my most recent webapp will probably scale well past 8 cores; all the state is in the database and each worker thread has its own DB connection. It's when you get past 32 cores that things can get sticky. 2018-09-13T23:41:22Z whartung: all working on the same transaction jasom ? or 8 different ones? 2018-09-13T23:41:38Z jasom: whartung: all different ones 2018-09-13T23:42:23Z whartung: one of our apps seems to have no problems saturating a 16 core machine right now. 2018-09-13T23:43:46Z aeth: whartung: the rendering is by far the heaviest part ime 2018-09-13T23:44:05Z aeth: even with the GPU doing most of the work! 2018-09-13T23:44:37Z whartung: but the gpu guys have a way of getting it to work on multiple GPUs (2 GPUs, alternatiing scan lines or something like that) 2018-09-13T23:44:49Z whartung: it’s a naturally statelss process as I understand it 2018-09-13T23:45:03Z aeth: tell that to the OpenGL designers 2018-09-13T23:45:10Z whartung: but now they have the ray tracing GPUs. OH MY do those demos look amazing. 2018-09-13T23:45:17Z Bike: the original opengl was described as a state machine. 2018-09-13T23:45:28Z Bike: they've moved away from that in fits and starts, thus resulting in the current mess 2018-09-13T23:45:35Z whartung: I thought you could gang 2 cards together 2018-09-13T23:45:42Z Bike: multi gpu, yes. 2018-09-13T23:46:35Z aeth: whartung: It's generally not worth it to have multiple GPUs. The game (or application) has to specifically support it (and probably support it differently for nvidia and AMD) and it's usually better just to get the next tier up in graphics cards so it probably only applies to you if you're using Titans. 2018-09-13T23:48:32Z aeth: For nvidia it's called SLI and the general advice on forums has been to not do it, at least for the past few years. 2018-09-13T23:48:52Z whartung: ah…too bad 2018-09-13T23:49:25Z White_Flame: whartung: different generations had different limitations. I know there were 3x linked card setups,a nd probably 4 as well 2018-09-13T23:49:56Z White_Flame: I think some also just send along the PCIe bus instead of having their own inter-card connectors 2018-09-13T23:50:06Z aeth: See https://en.wikipedia.org/wiki/Scalable_Link_Interface and https://en.wikipedia.org/wiki/AMD_CrossFireX 2018-09-13T23:50:19Z White_Flame: and now NVLink is going to be nVidia's going forward 2018-09-13T23:50:26Z aeth: but apparently nvidia just abandoned SLI on the next generation (that isn't out yet) in favor of "NVLink Bridge" 2018-09-13T23:51:21Z fikka joined #lisp 2018-09-13T23:51:25Z aeth: I think Vulkan does things differently here. 2018-09-13T23:52:15Z whartung: ok 2018-09-13T23:52:52Z whartung: I’ve spent enough treasure on computer equipment, I’m glad I was never really in the GPU chase :) 2018-09-13T23:53:15Z White_Flame: nvidia is going off the deep end with prices anyway, best to ignore it for now, too 2018-09-13T23:53:28Z aeth: But when I was saying that rendering is heavy, I mean heavy on the CPU. The GPU is doing most of the work, but #'draw still seems to be the most CPU intensive function at the moment for me. I think Vulkan would allow this to be split up, though. 2018-09-13T23:53:32Z no-defun-allowed: how reflective can you make a lisp? 2018-09-13T23:53:35Z asarch quit (Quit: Leaving) 2018-09-13T23:53:59Z White_Flame: no-defun-allowed: most lisps are fully reflective, if you use their implementation internals 2018-09-13T23:54:21Z aeth: White_Flame: You see that all over the place. CPUs, GPUs, smartphones, etc. The high end is improving, but also getting more expensive. 2018-09-13T23:54:23Z suskeyhose quit (Remote host closed the connection) 2018-09-13T23:54:53Z White_Flame: aeth: RAM prices are settling down, though, finally returning to where they were 3 years ago or wherever it was before that spike 2018-09-13T23:54:59Z whartung: depends on how high powerful the polisher you’re using no-defun-allowed, and what kind of compound you’re using 2018-09-13T23:56:27Z fikka quit (Ping timeout: 252 seconds) 2018-09-13T23:56:46Z whartung: no, I understand aeth. Just getting the frames set up. A lot of that is the modeling side (modeling the car(s) for example), and things like the physics engine. Is it worth while to farm our modeling the suspension dymanics of 40 cars in a nascar sim to different CPUs per frame? I dunno. it may not even be possible if you’re modeling drafting and what not. 2018-09-13T23:56:55Z whartung: ignoring things like contact 2018-09-13T23:57:09Z no-defun-allowed: i'm using uuuh alan kay's premium shiny program sauce 2018-09-13T23:57:24Z whartung: yea, his stuff can get pretty shiny. 2018-09-13T23:57:47Z no-defun-allowed: whartung: also it's made of pure cons oil 2018-09-13T23:58:42Z aeth: whartung: but on the other hand I think a large part of strategy games is embarassingly parallel, or close enough. 2018-09-13T23:59:02Z aeth: thousands of separate entities vs. one very detailed entity. 2018-09-13T23:59:07Z dmiles quit (Ping timeout: 240 seconds) 2018-09-13T23:59:09Z whartung: yea it can be, quesiton is whether it’s cpu worthy enough to bother breaking it out. 2018-09-13T23:59:27Z it3ration quit (Ping timeout: 240 seconds) 2018-09-13T23:59:56Z aeth: I've definitely played some building strategy games (games with workers doing tasks and carrying resources around a village) where it uses all the CPU 2018-09-14T00:00:05Z whartung: The only time I upgraded a machine for a better game performance (among other things) was way back when I went from 133 to 400 for Total Annihilation. So it coul dhandle more units. But even that would be difficult to paralleize because of the dependencies on each other (notably in traffic jams) 2018-09-14T00:00:34Z whartung <3’d Total Annihilation 2018-09-14T00:00:56Z aeth: Even without htop up, I can tell when my desktop's fully using the CPU in a multithreaded way because I can hear the CPU fan when that happens. 2018-09-14T00:00:58Z whartung: most of that cpu went to pathfinding 2018-09-14T00:01:06Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-14T00:01:12Z whartung: is that CPU heat or GPU heat? 2018-09-14T00:01:36Z aeth: Definitely CPU. I hear my GPU when playing AAA games. Different sound. 2018-09-14T00:01:44Z whartung: my friends laptop turned in to an air hockey table when compiling Swift. You’d think it would float off the desk... 2018-09-14T00:01:48Z whartung: ok 2018-09-14T00:02:09Z whartung: my mac only has one fan, so I cant say what drives it 2018-09-14T00:02:28Z aeth: In general, simulation(ish) strategy games seem to max out the CPU and recent AAA games tend to max out the GPU 2018-09-14T00:02:32Z aeth: at least ime 2018-09-14T00:02:41Z whartung: yea 2018-09-14T00:02:55Z aeth: (I don't think both would be possible, unless you wrote specifically to the hardware combination and optimized heavily.) 2018-09-14T00:03:22Z whartung: just need 100FPS renderig of your strategy game shooter! :) 2018-09-14T00:03:34Z orivej joined #lisp 2018-09-14T00:03:38Z whartung: eye level camera with your foot soldiers attacking Rome! 2018-09-14T00:03:42Z no-defun-allowed: whartung: 144hz or gtfo 2018-09-14T00:03:56Z no-defun-allowed: ;; closes (with-sarcasm 2018-09-14T00:04:00Z whartung is happy with 30FPS 2018-09-14T00:04:16Z aeth: no-defun-allowed: 100 FPS logic whether your monitor is 30 Hz or 200 Hz imo. 2018-09-14T00:04:22Z aeth: Don't tie the logic to the rendering rate. 2018-09-14T00:04:37Z no-defun-allowed: fair, no one has reaction times or can process lower than 10ms. 2018-09-14T00:04:54Z whartung: The Starcraft Bots can! 2018-09-14T00:04:57Z no-defun-allowed: #.(joke-about 16-tick-demos) 2018-09-14T00:05:17Z jasom: aeth: do you sometimes render inconsistent state when you do that (i.e. some objects 10ms behind others)? 2018-09-14T00:05:24Z jasom: aeth: or do you double-buffer your state? 2018-09-14T00:05:36Z whartung: I’d think you’d have to snapshot the state, right? 2018-09-14T00:05:47Z aeth: I save the old location and interpolate 2018-09-14T00:05:48Z aeth: iirc 2018-09-14T00:06:00Z mange joined #lisp 2018-09-14T00:06:13Z aeth: Oh and 100 fps for logic because its inverse is 10 ms and what you want is (integerp (* 1000 (/ n))) so both measurements are integers imo. 2018-09-14T00:06:54Z no-defun-allowed: nice 2018-09-14T00:07:16Z no-defun-allowed: i have an idea for doing fast bsp visibility but i'm not sure if it'd work 2018-09-14T00:07:28Z whartung: unrelated, are they any good examples of network servers in CL floating around on the net? I’ve seen the http server (Hunchenroot? Is that right?) Just curious if there are others of that ilk I could look at. 2018-09-14T00:08:08Z aeth: In case anyone's wondering about the other numbers... (loop for i from 1 to 2000 when (integerp (* 1000 (/ i))) collect i) => (1 2 4 5 8 10 20 25 40 50 100 125 200 250 500 1000) 2018-09-14T00:09:42Z no-defun-allowed: 1 it is. 2018-09-14T00:09:42Z Kundry_Wag joined #lisp 2018-09-14T00:10:24Z aeth: Looks like it's 1 and numbers whose only prime factors are 5 and 2. (I ran my factoring function on that list to verify) 2018-09-14T00:11:03Z aeth: Makes sense in base 2 * 5, I guess. 2018-09-14T00:12:03Z fikka joined #lisp 2018-09-14T00:12:04Z impulse quit (Ping timeout: 244 seconds) 2018-09-14T00:12:25Z impulse joined #lisp 2018-09-14T00:12:33Z Bike: 1000 = 2^3*5^3, so 2018-09-14T00:12:51Z aeth: 1000 is the limit here. 2018-09-14T00:13:10Z aeth: You're absolutely correct, the limit is 2^3 and 5^3, e.g. no 2^4 2018-09-14T00:13:12Z Bike: you can make the fundamental theorem of arithmetic work for you! 2018-09-14T00:14:05Z aeth: (limit in the sense that you can't get better than 1000, not in the calculus sense of the word "limit") 2018-09-14T00:14:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-14T00:16:40Z fikka quit (Ping timeout: 246 seconds) 2018-09-14T00:17:27Z Kundry_Wag joined #lisp 2018-09-14T00:17:58Z jasom: whartung: there are several http servers, woo and wookie both come to mind 2018-09-14T00:18:11Z dmiles joined #lisp 2018-09-14T00:20:04Z aeth: Bike: I didn't expect the fundamental theorem of arithmetic but I guess I should have expected it as soon as INTEGERP entered 2018-09-14T00:20:21Z Bike: as soon as you try to divide integers it's primality city 2018-09-14T00:20:43Z whartung: thx jasom 2018-09-14T00:20:55Z aeth: Here I was working with periods and frequencies in a real world problem and then suddenly PRIMES 2018-09-14T00:21:04Z jasom: whartung: swank also can listen on a socket 2018-09-14T00:22:16Z lavaflow_ quit (Ping timeout: 246 seconds) 2018-09-14T00:22:18Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-14T00:22:33Z fikka joined #lisp 2018-09-14T00:23:26Z hypnon quit (Ping timeout: 244 seconds) 2018-09-14T00:23:36Z Oddity quit (Ping timeout: 252 seconds) 2018-09-14T00:23:57Z Bike: usually to get integer crap with frequencies it's harmonics 2018-09-14T00:24:14Z Bike: people are all like one plus one is two, well in my opinion it makes more sense to define two as the octave 2018-09-14T00:25:26Z energizer quit (Quit: ZNC 1.7.0+deb0+xenial1 - https://znc.in) 2018-09-14T00:25:49Z energizer joined #lisp 2018-09-14T00:27:06Z aeth: Bike: But this is sort of the same problem. With the logic running at 100 ticks a second, some parts might actually only need to run at 50 or 25 or even 1. And this can be determined with a simple MOD 2018-09-14T00:27:10Z fikka quit (Ping timeout: 246 seconds) 2018-09-14T00:29:57Z Oddity joined #lisp 2018-09-14T00:30:38Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-14T00:32:04Z orivej quit (Ping timeout: 246 seconds) 2018-09-14T00:32:23Z fikka joined #lisp 2018-09-14T00:35:15Z saturn2 quit (Quit: WeeChat 1.0.1) 2018-09-14T00:36:04Z clone_of_saturn joined #lisp 2018-09-14T00:36:08Z clone_of_saturn is now known as saturn2 2018-09-14T00:36:58Z fikka quit (Ping timeout: 246 seconds) 2018-09-14T00:42:49Z fikka joined #lisp 2018-09-14T00:46:09Z Jesin quit (Ping timeout: 252 seconds) 2018-09-14T00:47:36Z fikka quit (Ping timeout: 252 seconds) 2018-09-14T00:51:32Z makomo quit (Ping timeout: 272 seconds) 2018-09-14T00:52:40Z fikka joined #lisp 2018-09-14T00:54:40Z Kundry_Wag joined #lisp 2018-09-14T00:56:43Z impulse quit (Ping timeout: 245 seconds) 2018-09-14T00:57:33Z fikka quit (Ping timeout: 245 seconds) 2018-09-14T00:57:53Z dented42 joined #lisp 2018-09-14T00:58:15Z Jesin joined #lisp 2018-09-14T00:59:09Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-20T18:27:13Z ccl-logbot joined #lisp 2018-09-20T18:27:13Z 2018-09-20T18:27:13Z names: ccl-logbot mjanssen_ robotoad_ rtypo varjag igemnace frodef Lycurgus wooden_ pjb mkolenda frgo Inline lnostdal SaganMan Pixel_Outlaw SenasOzys scymtym warweasle gector xrash housel grumble dale jkordani dyelar phoe flazh kushal suskeyhose razzy marvin2 nckx nowhere_man Bike msb zfree fluxit vibs29 justinmcp Essadon xificurC sigjuice mingus milanj dddddd wigust pfdietz shka_ Cymew stnutt reverse_light Shinmera makomo _bryan nirved nonlinear mathrick 2018-09-20T18:27:13Z names: fortitude_ grobe0ba khisanth_ ealfonso phadthai jasmith oni-on-ion jasom rumbler31 danielxvu sauvin tripty regreg SumoSud0 kingcons brandonz zooey kooga runejuhl ym hjudt _whitelogger AdmiralBumbleBee SlashLife bheesham koenig foom k-hos djeis[m] loli Lord_Nightmare azimut papachan jxy cross dolohov stux|RC Tordek earl-ducaine acolarh uint fredsir X-Scale groovy2shoes azahi APic alandipert dmiles svillemot v0|d joga beach scottj nisstyre slyrus 2018-09-20T18:27:13Z names: libre-man cods xantoz les kozy troydm Siorai flip214 fouric Kevslinger pchrist zigpaw arbv snits itruslove kajo aindilis ravndal akovalenko Fade Tristam stux|RC-only anunnaki Xof _death iomonad dan64 Oddity z0d jurov PuercoPop spacepluk sshirokov sbryant saturn2 energizer DGASAU thinkpad chipolux mason sword kilimanjaro blt fowlduck dvdmuckle joast mjanssen HDurer omilu Kaisyu7 lxpz Aritheanie sz0 argoneus CrazyEddy rotty otwieracz deba5e12 ecraven 2018-09-20T18:27:13Z names: dxtr eschatologist d4ryus Duns_Scrotus cgay specbot minion froggey ski angavrilov Patzy commanderkeen plathrop kjeldahl Jachy H4ns isoraqathedh borodust K1rk phenoble |3b| banjiewen tfb xristos dim splittist mfiano whartung gendl iskander Colleen easye oystewh lonjil bitch abbe jdz shymega cpape gingerale eMBee Gnuxie[m] eagleflo MetaYan aeth p9fn Intensity @fe[nl]ix Blkt gko Mon_Ouie rme lieven jhei bigfondue drmeister umpc swflint beaky cmatei 2018-09-20T18:27:13Z names: Ricchi p_l CEnnis91 thekolb stylewarning voidlily Ziemas crsc russellw johs shenghi no-defun-allowed LdBeth Manny8888 ft wws luis hvxgr White_Flame jerme_ veinoflegaladvic masterdonx karstensrage kini l1x juristi mood tazjin salva Xach bmansurov drdo gabot tomaw tumdum sukaeto leo_song dieggsy adlai loke remix2000 michalisko dkrm pacon jackdaniel Patternmaster Demosthenex ramus drot mrSpec creat trn meowray ircbrowse rvirding shelvick XachX galdor 2018-09-20T18:27:13Z names: cyberlard ja-barr jgkamat AeroNotix spal malm Nikotiini micro antoszka dlowe TMA copec 2018-09-20T18:27:49Z nirved_ joined #lisp 2018-09-20T18:28:03Z phoe: woops - sorry, didn't read that far 2018-09-20T18:30:53Z nirved quit (Ping timeout: 245 seconds) 2018-09-20T18:33:40Z Achylles joined #lisp 2018-09-20T18:34:12Z dented42 joined #lisp 2018-09-20T18:36:51Z Kundry_Wag joined #lisp 2018-09-20T18:36:54Z Kundry_Wag quit (Remote host closed the connection) 2018-09-20T18:41:23Z gravicappa joined #lisp 2018-09-20T18:41:53Z mjanssen_ quit (Ping timeout: 256 seconds) 2018-09-20T18:48:51Z terpri joined #lisp 2018-09-20T18:52:44Z wooden_ is now known as wooden 2018-09-20T19:15:18Z moei joined #lisp 2018-09-20T19:18:02Z pierpal joined #lisp 2018-09-20T19:31:09Z Denommus joined #lisp 2018-09-20T19:44:40Z wigust quit (Quit: ZNC 1.7.1 - https://znc.in) 2018-09-20T19:45:26Z wigust joined #lisp 2018-09-20T19:59:07Z razzy quit (Ping timeout: 240 seconds) 2018-09-20T20:10:42Z trn quit (Ping timeout: 264 seconds) 2018-09-20T20:19:41Z scymtym quit (Ping timeout: 260 seconds) 2018-09-20T20:29:11Z Fare joined #lisp 2018-09-20T20:35:12Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-20T20:53:15Z scymtym joined #lisp 2018-09-20T20:58:20Z Roy_Fokker joined #lisp 2018-09-20T21:03:10Z je4i joined #lisp 2018-09-20T21:07:33Z gravicappa quit (Ping timeout: 245 seconds) 2018-09-20T21:09:20Z phoe quit (Ping timeout: 244 seconds) 2018-09-20T21:11:37Z Fare quit (Ping timeout: 260 seconds) 2018-09-20T21:24:12Z no-defun-allowed: Is the ELS invite only? 2018-09-20T21:26:14Z Colleen quit (Remote host closed the connection) 2018-09-20T21:28:34Z frodef: They allowed me in at one point, so I cannot imagine so.. :) 2018-09-20T21:29:07Z Xach: no-defun-allowed: no. you must register to attend but registration is open to anyone. 2018-09-20T21:31:12Z no-defun-allowed: Ok, thanks. 2018-09-20T21:36:59Z Bike quit (Ping timeout: 256 seconds) 2018-09-20T21:41:02Z lemonpepper24 joined #lisp 2018-09-20T21:46:46Z gendl: no-defun-allowed: The ECLM was (and likely will continue to be if it happens again) invite-only for speakers. But of course not for attendees. 2018-09-20T21:47:34Z gendl: ELS doesn't generally put out invitations for presenters, it accepts paper and demo submissions and selects enough to fill the program. 2018-09-20T21:50:50Z AroPar joined #lisp 2018-09-20T21:50:50Z AroPar quit (Max SendQ exceeded) 2018-09-20T21:51:16Z AroPar joined #lisp 2018-09-20T21:52:29Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-20T21:52:34Z AroPar quit (Client Quit) 2018-09-20T21:58:00Z Essadon quit (Quit: Qutting) 2018-09-20T21:58:26Z orivej joined #lisp 2018-09-20T21:59:56Z nowhere_man quit (Remote host closed the connection) 2018-09-20T22:01:33Z trn joined #lisp 2018-09-20T22:03:00Z nowhere_man joined #lisp 2018-09-20T22:03:56Z mrSpec quit (Ping timeout: 276 seconds) 2018-09-20T22:06:47Z Lycurgus quit (Quit: Exeunt) 2018-09-20T22:10:02Z dented42 joined #lisp 2018-09-20T22:15:20Z Fare joined #lisp 2018-09-20T22:15:36Z shifty joined #lisp 2018-09-20T22:15:59Z no-defun-allowed: ok then 2018-09-20T22:17:03Z no-defun-allowed: good thing i don't have anything to present 2018-09-20T22:17:56Z jasom: okay, any volunteers to watch my kids in california while I fly to Europe? 2018-09-20T22:18:31Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-20T22:21:24Z dented42 joined #lisp 2018-09-20T22:21:40Z dented42 quit (Client Quit) 2018-09-20T22:23:30Z no-defun-allowed: ^^ but s/kids/cats s/california/melbourne 2018-09-20T22:26:00Z nowhere_man quit (Remote host closed the connection) 2018-09-20T22:26:04Z PuercoPop quit (Ping timeout: 240 seconds) 2018-09-20T22:26:24Z nowhere_man joined #lisp 2018-09-20T22:39:43Z lnostdal quit (Read error: Connection reset by peer) 2018-09-20T22:43:46Z astronavt joined #lisp 2018-09-20T22:47:31Z mange joined #lisp 2018-09-20T22:50:57Z Denommus quit (Remote host closed the connection) 2018-09-20T22:52:50Z quazimodo joined #lisp 2018-09-20T22:53:30Z anewuser joined #lisp 2018-09-20T22:54:35Z jasom: no-defun-allowed: fly your cats to california and they can watch my kids! 8-) 2018-09-20T22:54:44Z no-defun-allowed: okay then 2018-09-20T23:01:11Z robotoad_ quit (Quit: robotoad_) 2018-09-20T23:03:51Z dented42 joined #lisp 2018-09-20T23:04:36Z Fare quit (Ping timeout: 252 seconds) 2018-09-20T23:05:02Z dented42 quit (Client Quit) 2018-09-20T23:07:41Z oni-on-ion: yes 2018-09-20T23:14:51Z meepdeew joined #lisp 2018-09-20T23:18:15Z je4i quit (Quit: ERC (IRC client for Emacs 25.3.1)) 2018-09-20T23:19:54Z meepdeew quit (Ping timeout: 252 seconds) 2018-09-20T23:20:14Z ebrasca joined #lisp 2018-09-20T23:21:58Z adlai: no-defun-allowed: however, i do believe they only allow declamations, macros, and long-form method combinations. 2018-09-20T23:22:19Z no-defun-allowed: okay then 2018-09-20T23:23:18Z adlai: however, you should have no trouble if you send a human representative for your defun. 2018-09-20T23:27:18Z no-defun-allowed: ok i hired the guy that sometimes steals my laptop to represent my function that adds two to a number 2018-09-20T23:27:49Z Demosthenex: i'm loading swank in a separate process from emacs on the command line, and connecting with slime to it. how can i tell swank not to make a repl on that terminal? it's conflicting with reading sb-sys:*stdin* 2018-09-20T23:28:04Z pjb quit (Ping timeout: 240 seconds) 2018-09-20T23:28:27Z robotoad joined #lisp 2018-09-20T23:32:39Z deba5e12 quit (Read error: Connection reset by peer) 2018-09-20T23:33:14Z Demosthenex: i'm using the instructions from cl-charms https://github.com/HiTECNOLOGYs/cl-charms#note-about-slime to start sbcl, but then read-char is getting confused 2018-09-20T23:41:08Z deba5e12 joined #lisp 2018-09-20T23:46:21Z dale quit (Quit: dale) 2018-09-20T23:48:00Z Bike joined #lisp 2018-09-20T23:52:27Z rumbler31 quit (Remote host closed the connection) 2018-09-20T23:55:49Z pjb joined #lisp 2018-09-20T23:57:50Z Demosthenex: oh, it maybe that stdin is being buffered 2018-09-21T00:01:00Z milanj quit (Ping timeout: 272 seconds) 2018-09-21T00:01:27Z dented42 joined #lisp 2018-09-21T00:07:11Z frodef quit (Ping timeout: 260 seconds) 2018-09-21T00:09:10Z _death: Demosthenex: some progress on TUI https://adeht.org/casts/tui.html 2018-09-21T00:09:45Z jasom: Demosthenex: you can just no load slime-repl in your slime-contribs 2018-09-21T00:09:55Z jasom: s/no/not 2018-09-21T00:10:07Z Demosthenex: jasom: it's the buffering 2018-09-21T00:10:15Z Demosthenex: if i use cl-charm's get-char it works 2018-09-21T00:10:20Z Demosthenex: read-char is just waiting for enter 2018-09-21T00:10:39Z jasom: ah 2018-09-21T00:10:58Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-21T00:11:28Z Demosthenex: _death: cool! 2018-09-21T00:12:09Z Demosthenex: i'm trying to tinker with the idea of a simple text input field with optional autocompletion 2018-09-21T00:12:34Z Demosthenex: i was trying to be backend agnostic, which is why i went for read-char 2018-09-21T00:13:38Z Kundry_Wag joined #lisp 2018-09-21T00:14:49Z Demosthenex: i was also tinkering with threads and mailboxes for async input. i wanted to allow a clock or background update to the screen while waiting for input, i thought it'd be important for popup autocomplete 2018-09-21T00:15:21Z _death: atm I use with-timeout for that 2018-09-21T00:15:53Z Demosthenex: i thought having an input thread with some hooks might work, going for event driven 2018-09-21T00:16:41Z lnostdal joined #lisp 2018-09-21T00:17:00Z jasom: Most GUIs are written with an event loop; unless you have a reason to think that's the wrong way to do it... 2018-09-21T00:17:11Z Demosthenex: i don't disagree 2018-09-21T00:17:20Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-21T00:17:22Z Demosthenex: and again, i'm only trying to make an input form, not an interactive environment 2018-09-21T00:18:09Z jasom: Demosthenex: If you are having things like background updates, that might not be true anymore 2018-09-21T00:18:17Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T00:18:35Z Demosthenex: jasom: true, but y only intent is for allowing autocomplete to not block input while it updates the list of completions 2018-09-21T00:19:13Z Demosthenex: i hate apps that freeze inputs, ever. 2018-09-21T00:20:40Z Kundry_Wag joined #lisp 2018-09-21T00:22:50Z dented42 joined #lisp 2018-09-21T00:22:55Z Demosthenex: back tomorrow =] 2018-09-21T00:23:05Z dented42 quit (Client Quit) 2018-09-21T00:25:26Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T00:29:21Z pjb quit (Ping timeout: 260 seconds) 2018-09-21T00:32:33Z quazimodo quit (Ping timeout: 245 seconds) 2018-09-21T00:33:09Z orivej quit (Ping timeout: 252 seconds) 2018-09-21T00:34:25Z quazimodo joined #lisp 2018-09-21T00:34:27Z astronavt_ joined #lisp 2018-09-21T00:36:16Z astronavt quit (Ping timeout: 246 seconds) 2018-09-21T00:40:07Z dented42 joined #lisp 2018-09-21T00:40:14Z dented42 quit (Client Quit) 2018-09-21T00:40:50Z wigust quit (Ping timeout: 252 seconds) 2018-09-21T00:43:31Z dented42 joined #lisp 2018-09-21T00:45:28Z astronavt__ joined #lisp 2018-09-21T00:45:59Z dented42 quit (Client Quit) 2018-09-21T00:49:46Z astronavt_ quit (Ping timeout: 260 seconds) 2018-09-21T00:50:07Z dddddd quit (Remote host closed the connection) 2018-09-21T00:52:14Z Kundry_Wag joined #lisp 2018-09-21T00:55:05Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-21T00:55:31Z Kundry_Wag joined #lisp 2018-09-21T01:00:16Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T01:13:06Z reverse_light quit (Ping timeout: 260 seconds) 2018-09-21T01:16:51Z nullniverse joined #lisp 2018-09-21T01:18:13Z Kaisyu joined #lisp 2018-09-21T01:22:47Z khisanth_ quit (Ping timeout: 240 seconds) 2018-09-21T01:25:57Z asarch joined #lisp 2018-09-21T01:26:56Z Fare joined #lisp 2018-09-21T01:27:17Z Kundry_Wag joined #lisp 2018-09-21T01:27:39Z asarch: One stupid question: why in slime if I press , the option to quit from SBCL does not appear? 2018-09-21T01:28:27Z dented42 joined #lisp 2018-09-21T01:31:00Z AeroNotix: asarch: because there are more than one commands you can enter with `,` 2018-09-21T01:31:17Z AeroNotix: quit is an option, as well as a few others. 2018-09-21T01:31:29Z AeroNotix: `,` just gives you the prompt to enter the command you wish to execute 2018-09-21T01:31:34Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-21T01:31:39Z asarch: I mean, if I press it, the , appears in the SBCL REPL 2018-09-21T01:31:49Z asarch: Not in the command line of Emacs 2018-09-21T01:31:57Z AeroNotix: Oh, do you have lisp forms in the repl already? 2018-09-21T01:32:11Z AeroNotix: `,` only works with a blank repl prompt 2018-09-21T01:32:48Z asarch: Well, I press M-x slime, wait to connect, and then I press , and... nothing :-( 2018-09-21T01:32:51Z dented42 quit (Client Quit) 2018-09-21T01:33:02Z AeroNotix: asarch: does it never connect for you? 2018-09-21T01:33:12Z asarch: This is SBCL 1.4.5.openbsd, an implementation of ANSI Common Lisp. 2018-09-21T01:33:29Z asarch: Well, SBCL works fine 2018-09-21T01:33:29Z AeroNotix: I acknowledge you use OpenBSD 2018-09-21T01:33:31Z esrse joined #lisp 2018-09-21T01:33:46Z asarch: GNU Emacs 25.3.1 2018-09-21T01:33:49Z AeroNotix: asarch: SBCL works fine with M-x slime or SBCL works fine outside of Emacs? 2018-09-21T01:35:10Z asarch: It works fine in both cases 2018-09-21T01:35:26Z asarch: In the terminal window emulator and in the Emacs 2018-09-21T01:35:30Z AeroNotix: In the slime repl, type C-h k , RET 2018-09-21T01:36:05Z asarch: , runs the command self-insert-command (found in global-map), which is 2018-09-21T01:36:05Z asarch: an interactive built-in function in ‘C source code’.... 2018-09-21T01:36:28Z asarch: And some more text 2018-09-21T01:36:41Z AeroNotix: Weird 2018-09-21T01:36:51Z asarch: Maybe it is the Slime version 2018-09-21T01:37:05Z AeroNotix: just check you have the latest slime version, just to be sure 2018-09-21T01:37:13Z asarch: Ok 2018-09-21T01:37:43Z asarch: (sb-ext:exit) also works fine 2018-09-21T01:37:56Z AeroNotix: asarch: `,` isn't just for exiting, FYI 2018-09-21T01:38:10Z AeroNotix: any way, it looks like `,` in your prompt isn't set to the right elisp function 2018-09-21T01:38:19Z asarch: I see 2018-09-21T01:38:34Z asarch: Maybe I would need to add it to ~/.emacsrc 2018-09-21T01:39:16Z AeroNotix: add what to that file? 2018-09-21T01:41:29Z Kundry_Wag joined #lisp 2018-09-21T01:42:12Z asarch: The correct key mapped to that elisp function 2018-09-21T01:44:36Z dented42 joined #lisp 2018-09-21T01:46:12Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T01:47:18Z Achylles quit (Ping timeout: 252 seconds) 2018-09-21T01:48:01Z siraben joined #lisp 2018-09-21T01:48:14Z khisanth_ joined #lisp 2018-09-21T01:48:42Z no-defun-allowed: cl-vep demo went well 2018-09-21T01:48:46Z no-defun-allowed: many laughs were made 2018-09-21T01:49:06Z no-defun-allowed: minion: tell beach maybe going to els 2020 would be more feasible :/ 2018-09-21T01:49:07Z minion: beach: watch out, you'll make krystof angry 2018-09-21T01:49:20Z no-defun-allowed: what 2018-09-21T01:49:31Z no-defun-allowed: minion: help message 2018-09-21T01:52:55Z rumbler31 joined #lisp 2018-09-21T01:54:35Z jjman joined #lisp 2018-09-21T01:55:08Z milanj joined #lisp 2018-09-21T01:57:18Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-21T01:58:03Z robotoad quit (Quit: robotoad) 2018-09-21T02:05:23Z mange quit (Ping timeout: 244 seconds) 2018-09-21T02:05:26Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-21T02:06:46Z xrash quit (Ping timeout: 260 seconds) 2018-09-21T02:07:58Z argoneus quit (Read error: Connection reset by peer) 2018-09-21T02:08:23Z nirved_ quit (Read error: Connection reset by peer) 2018-09-21T02:08:50Z nirved_ joined #lisp 2018-09-21T02:09:37Z argoneus joined #lisp 2018-09-21T02:11:30Z fortitude_ quit (Ping timeout: 252 seconds) 2018-09-21T02:11:47Z Kundry_Wag joined #lisp 2018-09-21T02:16:14Z nullniverse quit (Ping timeout: 244 seconds) 2018-09-21T02:16:41Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T02:17:22Z robotoad joined #lisp 2018-09-21T02:19:51Z zigpaw quit (Remote host closed the connection) 2018-09-21T02:22:31Z ober joined #lisp 2018-09-21T02:23:45Z shelvick quit (Remote host closed the connection) 2018-09-21T02:25:58Z pjb joined #lisp 2018-09-21T02:29:53Z milanj quit (Quit: This computer has gone to sleep) 2018-09-21T02:30:17Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-21T02:30:26Z no-defun-allowed: minions pls 2018-09-21T02:30:36Z no-defun-allowed: minion: help memo 2018-09-21T02:30:37Z minion: To send a memo, say something like ``minion: memo for nick: the memo''. I'll remember the memo for any nick which is the same as the given nick, +/- differences in punctuation, and any nick which is an alias for it, and give it to them when they next speak. 2018-09-21T02:31:20Z no-defun-allowed: minion: memo for beach: maybe going to els 2020 would be more reasonable. (sorry, can't say good morning, two hour school end of term assembly.) 2018-09-21T02:31:20Z minion: Remembered. I'll tell beach when he/she/it next speaks. 2018-09-21T02:31:25Z no-defun-allowed: ty 2018-09-21T02:33:02Z housel quit (Remote host closed the connection) 2018-09-21T02:33:32Z housel joined #lisp 2018-09-21T02:37:27Z troydm quit (Ping timeout: 240 seconds) 2018-09-21T02:46:29Z Kundry_Wag joined #lisp 2018-09-21T02:47:14Z astronavt__ is now known as astronavt 2018-09-21T02:51:06Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T02:54:23Z Kundry_Wag joined #lisp 2018-09-21T02:55:02Z makomo quit (Ping timeout: 252 seconds) 2018-09-21T02:55:08Z beach: Good morning everyone! 2018-09-21T02:55:08Z minion: beach, memo from no-defun-allowed: maybe going to els 2020 would be more reasonable. (sorry, can't say good morning, two hour school end of term assembly.) 2018-09-21T02:55:44Z beach: no-defun-allowed: Sure, no rush. 2018-09-21T02:58:54Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T02:59:16Z pjb quit (Ping timeout: 260 seconds) 2018-09-21T03:01:26Z Kundry_Wag joined #lisp 2018-09-21T03:05:32Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-21T03:08:48Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-21T03:16:16Z Kundry_Wag joined #lisp 2018-09-21T03:20:53Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T03:25:57Z pjb joined #lisp 2018-09-21T03:28:11Z pierpal quit (Quit: Poof) 2018-09-21T03:28:13Z asarch quit (Read error: Connection reset by peer) 2018-09-21T03:28:27Z pierpal joined #lisp 2018-09-21T03:34:38Z rtypo quit (Ping timeout: 245 seconds) 2018-09-21T03:38:18Z creat quit (Ping timeout: 264 seconds) 2018-09-21T03:39:00Z creat joined #lisp 2018-09-21T03:39:13Z slyrus1 joined #lisp 2018-09-21T03:39:31Z Fare quit (Ping timeout: 260 seconds) 2018-09-21T03:40:07Z slyrus quit (Ping timeout: 240 seconds) 2018-09-21T03:40:07Z slyrus1 is now known as slyrus 2018-09-21T03:42:11Z Fare joined #lisp 2018-09-21T03:44:24Z Bike quit (Quit: Lost terminal) 2018-09-21T03:46:04Z Kundry_Wag joined #lisp 2018-09-21T03:47:42Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-21T03:49:10Z Kundry_Wag joined #lisp 2018-09-21T03:50:35Z slyrus1 joined #lisp 2018-09-21T03:51:44Z troydm joined #lisp 2018-09-21T03:54:04Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-21T03:57:04Z mkolenda quit (Ping timeout: 240 seconds) 2018-09-21T03:57:11Z energizer quit (Remote host closed the connection) 2018-09-21T03:59:13Z energizer joined #lisp 2018-09-21T03:59:34Z pjb quit (Ping timeout: 240 seconds) 2018-09-21T04:04:20Z mkolenda joined #lisp 2018-09-21T04:19:03Z heisig joined #lisp 2018-09-21T04:20:46Z Kundry_Wag joined #lisp 2018-09-21T04:22:57Z slyrus1 quit (Ping timeout: 252 seconds) 2018-09-21T04:25:15Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T04:26:28Z no-defun-allowed: hi, i'm back 2018-09-21T04:26:39Z no-defun-allowed: morning beach 2018-09-21T04:26:49Z beach: Hey no-defun-allowed. Like I said, no rush. 2018-09-21T04:27:38Z no-defun-allowed: i'll have a year's break between high school and university so that'd be a better time 2018-09-21T04:28:51Z beach: Definitely. 2018-09-21T04:31:51Z ober left #lisp 2018-09-21T04:33:04Z no-defun-allowed: ober on, ober off 2018-09-21T04:33:21Z v0|d quit (Read error: Connection reset by peer) 2018-09-21T04:35:10Z no-defun-allowed: can i make sbcl's garbage collector more aggresive in when it collects? 2018-09-21T04:35:34Z oni-on-ion: clhs gc 2018-09-21T04:35:34Z specbot: Couldn't find anything for gc. 2018-09-21T04:35:45Z beach: You can call it explicitly. 2018-09-21T04:36:14Z no-defun-allowed: i calculated the memory footprint for my hash table to be around 250mb for 25 frames of 1080x720 but (room) reported around 1gb 2018-09-21T04:37:07Z no-defun-allowed: nvm, it's in the manual 2018-09-21T04:38:41Z oni-on-ion: o_o 2018-09-21T04:38:48Z no-defun-allowed: (sb-ext:bytes-consed-between-gcs is the magic function btw) 2018-09-21T04:39:24Z oni-on-ion: ouu 2018-09-21T04:40:30Z no-defun-allowed: i've lowered it from 256mb to 64mb 2018-09-21T04:40:56Z beach: millibits? 2018-09-21T04:41:40Z beach: Which reminds me, the electric company here now sells electricity in units of Kelvin-Watt-Henry. 2018-09-21T04:41:46Z no-defun-allowed: my bad, 256MB -> 64MB 2018-09-21T04:42:14Z no-defun-allowed adjusts readtable-case 2018-09-21T04:42:44Z beach: ... or so the commercial on TV says, at least. 2018-09-21T04:43:16Z no-defun-allowed: back in my day we were lucky to get one microbit of memory in our systems... 2018-09-21T04:43:39Z no-defun-allowed: nowadays GCs throw around 256 megabytes like it's nothing 2018-09-21T04:43:42Z Kundry_Wag joined #lisp 2018-09-21T04:43:57Z oni-on-ion: Khw? =) 2018-09-21T04:46:22Z SaganMan quit (Read error: Connection reset by peer) 2018-09-21T04:50:43Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-21T04:51:39Z jxy quit (Ping timeout: 252 seconds) 2018-09-21T04:52:10Z jxy joined #lisp 2018-09-21T04:54:14Z Kundry_Wag joined #lisp 2018-09-21T04:55:51Z ebzzry joined #lisp 2018-09-21T04:58:28Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-21T04:59:15Z no-defun-allowed: i forgot what i typed into cl-vep to make it work 2018-09-21T05:01:33Z zigpaw joined #lisp 2018-09-21T05:06:13Z Kundry_Wag joined #lisp 2018-09-21T05:08:16Z no-defun-allowed: oops, .mov not .mkv. 2018-09-21T05:10:21Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-21T05:13:21Z emaczen joined #lisp 2018-09-21T05:13:42Z dented42 joined #lisp 2018-09-21T05:14:12Z Inline quit (Quit: Leaving) 2018-09-21T05:18:02Z dented42 quit (Client Quit) 2018-09-21T05:18:30Z siraben quit (Ping timeout: 252 seconds) 2018-09-21T05:21:50Z pierpal quit (Read error: Connection reset by peer) 2018-09-21T05:22:05Z pierpal joined #lisp 2018-09-21T05:23:32Z no-defun-allowed: there's still some not inlined + and *s according to sb-sprof 2018-09-21T05:23:37Z suskeyhose quit (Remote host closed the connection) 2018-09-21T05:23:47Z dxtr quit (Ping timeout: 240 seconds) 2018-09-21T05:24:05Z nirved_ is now known as nirved 2018-09-21T05:28:39Z Kundry_Wag joined #lisp 2018-09-21T05:33:16Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T05:37:27Z scottj quit (Quit: leaving) 2018-09-21T05:38:08Z robotoad quit (Quit: robotoad) 2018-09-21T05:38:25Z Kundry_Wag joined #lisp 2018-09-21T05:40:32Z jack_rabbit joined #lisp 2018-09-21T05:40:54Z phoe joined #lisp 2018-09-21T05:41:23Z dxtr joined #lisp 2018-09-21T05:42:52Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-21T05:43:03Z SenasOzys quit (Remote host closed the connection) 2018-09-21T05:43:37Z SenasOzys joined #lisp 2018-09-21T05:50:34Z lemonpepper24 quit (Ping timeout: 240 seconds) 2018-09-21T05:53:46Z Fare quit (Ping timeout: 272 seconds) 2018-09-21T05:57:07Z astronavt quit (Ping timeout: 240 seconds) 2018-09-21T05:58:45Z vlatkoB joined #lisp 2018-09-21T06:00:58Z robotoad joined #lisp 2018-09-21T06:01:32Z Kundry_Wag joined #lisp 2018-09-21T06:05:56Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T06:22:14Z shrdlu68 joined #lisp 2018-09-21T06:28:36Z SenasOzys quit (Ping timeout: 272 seconds) 2018-09-21T06:31:38Z milanj joined #lisp 2018-09-21T06:40:00Z scymtym quit (Ping timeout: 272 seconds) 2018-09-21T06:44:53Z Kundry_Wag joined #lisp 2018-09-21T06:49:32Z mrSpec joined #lisp 2018-09-21T06:50:43Z LdBeth: good evening 2018-09-21T06:51:24Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-21T06:51:26Z no-defun-allowed: hi LdBeth 2018-09-21T06:51:44Z no-defun-allowed: okay, no function calls to +, * and truncate now :) 2018-09-21T06:52:40Z nirved quit (Ping timeout: 272 seconds) 2018-09-21T06:52:57Z ebrasca quit (Read error: Connection reset by peer) 2018-09-21T06:53:45Z nirved joined #lisp 2018-09-21T07:01:17Z robotoad quit (Quit: robotoad) 2018-09-21T07:11:51Z pjb joined #lisp 2018-09-21T07:13:30Z makomo joined #lisp 2018-09-21T07:16:59Z scymtym joined #lisp 2018-09-21T07:20:06Z shka_: good morning 2018-09-21T07:24:44Z trittweiler joined #lisp 2018-09-21T07:25:36Z nirved quit (Ping timeout: 272 seconds) 2018-09-21T07:26:21Z nirved joined #lisp 2018-09-21T07:27:26Z Kundry_Wag joined #lisp 2018-09-21T07:27:30Z esrse quit (Ping timeout: 272 seconds) 2018-09-21T07:31:42Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T07:34:40Z makomo quit (Quit: WeeChat 2.2) 2018-09-21T07:35:49Z orivej joined #lisp 2018-09-21T07:36:59Z no-defun-allowed: morning shka_ 2018-09-21T07:37:36Z makomo joined #lisp 2018-09-21T07:37:50Z makomo quit (Client Quit) 2018-09-21T07:38:18Z makomo joined #lisp 2018-09-21T07:42:28Z frgo quit (Remote host closed the connection) 2018-09-21T07:45:54Z pjb quit (Ping timeout: 252 seconds) 2018-09-21T07:46:40Z ober joined #lisp 2018-09-21T07:50:14Z makomo: morning 2018-09-21T07:54:05Z Kundry_Wag joined #lisp 2018-09-21T07:58:18Z housel quit (Read error: Connection reset by peer) 2018-09-21T07:58:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-21T08:03:44Z Kundry_Wag joined #lisp 2018-09-21T08:05:39Z no-defun-allowed: hi makomo 2018-09-21T08:05:47Z makomo: hey :-) 2018-09-21T08:06:04Z Kaisyu7 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-21T08:08:07Z no-defun-allowed: ok so the cl-decentralise event loop should bind some variable names and will evaluate some cond-like forms 2018-09-21T08:08:26Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T08:09:39Z no-defun-allowed: how should i go about it? there's upwards of ten variables that will be bound (mapping to five possible event forms) and they're all mutually exclusive 2018-09-21T08:16:28Z frgo joined #lisp 2018-09-21T08:21:12Z frgo quit (Ping timeout: 252 seconds) 2018-09-21T08:22:02Z no-defun-allowed: maybe putting each form in its own let could help me enforce using the correct variables for the correct types but the user would have to specify which type they're listening on 2018-09-21T08:22:05Z ober left #lisp 2018-09-21T08:23:17Z frgo joined #lisp 2018-09-21T08:25:24Z LdBeth: #'no-defun-allowed: bound them into a struct? 2018-09-21T08:26:08Z Kundry_Wag joined #lisp 2018-09-21T08:28:13Z LdBeth: something like a single threaded object 2018-09-21T08:30:33Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T08:36:27Z Kundry_Wag joined #lisp 2018-09-21T08:40:59Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T08:43:34Z flip214: Xof: this exactly, thank you so much! 2018-09-21T08:44:34Z v0|d joined #lisp 2018-09-21T08:48:44Z no-defun-allowed: idk, there'll only be one per event loop 2018-09-21T08:48:46Z no-defun-allowed: binding feels more natural 2018-09-21T08:53:38Z orivej quit (Ping timeout: 252 seconds) 2018-09-21T08:54:01Z zfree quit (Remote host closed the connection) 2018-09-21T08:57:26Z marvin2 quit (Ping timeout: 260 seconds) 2018-09-21T09:00:41Z Kundry_Wag joined #lisp 2018-09-21T09:05:02Z pierpal quit (Ping timeout: 272 seconds) 2018-09-21T09:05:11Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T09:05:19Z razzy joined #lisp 2018-09-21T09:07:55Z Kundry_Wag joined #lisp 2018-09-21T09:12:05Z nsrahmad joined #lisp 2018-09-21T09:12:20Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T09:12:57Z gpiero joined #lisp 2018-09-21T09:13:26Z orivej joined #lisp 2018-09-21T09:17:06Z nsrahmad quit (Remote host closed the connection) 2018-09-21T09:18:27Z zooey quit (Ping timeout: 256 seconds) 2018-09-21T09:26:10Z zooey joined #lisp 2018-09-21T09:39:17Z Colleen joined #lisp 2018-09-21T09:40:34Z aeth quit (Read error: Connection reset by peer) 2018-09-21T09:41:20Z Kundry_Wag joined #lisp 2018-09-21T09:41:36Z steiner joined #lisp 2018-09-21T09:41:37Z aeth joined #lisp 2018-09-21T09:42:58Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-21T09:43:15Z pjb joined #lisp 2018-09-21T09:43:41Z Kundry_Wag joined #lisp 2018-09-21T09:47:27Z schweers joined #lisp 2018-09-21T09:48:11Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T09:49:35Z anewuser quit (Quit: anewuser) 2018-09-21T09:52:27Z milanj quit (Quit: This computer has gone to sleep) 2018-09-21T09:54:31Z regreg quit (Ping timeout: 244 seconds) 2018-09-21T09:56:15Z zfree joined #lisp 2018-09-21T10:00:16Z Achylles joined #lisp 2018-09-21T10:01:19Z ober joined #lisp 2018-09-21T10:06:40Z varjag joined #lisp 2018-09-21T10:16:36Z pjb quit (Ping timeout: 252 seconds) 2018-09-21T10:16:58Z Kundry_Wag joined #lisp 2018-09-21T10:18:21Z varjag quit (Ping timeout: 252 seconds) 2018-09-21T10:20:03Z dddddd joined #lisp 2018-09-21T10:21:07Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-21T10:23:43Z FreeBirdLjj joined #lisp 2018-09-21T10:23:45Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-21T10:24:07Z rumbler31 joined #lisp 2018-09-21T10:28:06Z FreeBirdLjj quit (Ping timeout: 244 seconds) 2018-09-21T10:28:26Z rumbler31 quit (Ping timeout: 260 seconds) 2018-09-21T10:47:15Z light2yellow joined #lisp 2018-09-21T10:50:47Z mingus quit (Ping timeout: 240 seconds) 2018-09-21T10:52:43Z m00natic joined #lisp 2018-09-21T10:53:11Z mingus joined #lisp 2018-09-21T10:54:36Z Kundry_Wag joined #lisp 2018-09-21T10:55:05Z Lycurgus joined #lisp 2018-09-21T10:55:46Z frodef joined #lisp 2018-09-21T10:59:03Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T10:59:03Z orivej quit (Ping timeout: 252 seconds) 2018-09-21T10:59:08Z orivej_ joined #lisp 2018-09-21T11:01:55Z xificurC: I got lost in reasoning about a double backticked form. What would be a good resource to read about how backquote is processed? If there was a part about double backquotes or macro-writing-macros that would be even better 2018-09-21T11:02:22Z no-defun-allowed: I think the cl-d protocol is sussed out now. I've finished an event loop macro and I'm going to write all the cl-d primitive requests tomorrow. 2018-09-21T11:02:31Z shka_: eh, honestly, try to avoid double ` 2018-09-21T11:02:43Z shka_: it is very difficult to understand 2018-09-21T11:03:01Z shka_: ideally, you should use functions to expand macro body 2018-09-21T11:03:43Z no-defun-allowed: Yeah, if there's a loop or second stage I give that to another function. 2018-09-21T11:04:01Z scymtym quit (Ping timeout: 260 seconds) 2018-09-21T11:05:19Z scymtym joined #lisp 2018-09-21T11:06:33Z xificurC: you mean write a function that generates the nested part? 2018-09-21T11:07:30Z no-defun-allowed: Yes. 2018-09-21T11:08:17Z no-defun-allowed: cl-decentralise's event-loop uses a make-event which matches the event forms and e-l simply loops over with some gensyms too. 2018-09-21T11:08:44Z xificurC: one wants to torture self, one is told not to 2018-09-21T11:09:28Z shka_: xificurC: yes, exactly 2018-09-21T11:09:33Z shka_: keep it simple :-) 2018-09-21T11:10:01Z xificurC: but, but, isn't there *more* enlightenment when... oh well, ok 2018-09-21T11:10:27Z shka_: also, debugging macros that were written in torturish way is very, very, very hard 2018-09-21T11:11:00Z shka_: so it is beneficial to write this cleanly 2018-09-21T11:11:37Z tfeb joined #lisp 2018-09-21T11:13:24Z Kundry_Wag joined #lisp 2018-09-21T11:14:20Z light2yellow quit (Quit: WeeChat 2.2) 2018-09-21T11:17:57Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T11:21:32Z pierpal joined #lisp 2018-09-21T11:25:07Z xificurC: wow, even this way I suck. Off to meditate 2018-09-21T11:25:12Z makomo: xificurC: i actually have a writeup regarding double backquotes 2018-09-21T11:25:35Z splittist: xificurC: you can also read Appendix C of CLtL2 https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node367.html#BACKQUOTESIMULATOR 2018-09-21T11:25:43Z makomo: it's part of my personal notes, i.e. i don't have a blog, but i might rework it a bit and send it 2018-09-21T11:26:16Z makomo: xificurC: it becomes really simple once you start to see the "patterns" imo. it's just like any other concept really 2018-09-21T11:27:59Z Kundry_Wag joined #lisp 2018-09-21T11:28:02Z makomo: xificurC: oh, perhaps also take a look at the two comments i posted here: https://www.reddit.com/r/learnlisp/comments/98gssu/sbcl_inserting_comma_in_macro_transformation/ 2018-09-21T11:28:30Z makomo: they might not be 100% precise, but i tried my best. suggestions welcome. :-) it's not meant to be a tutorial on backquote though, but i did mention some general techniques/things 2018-09-21T11:28:46Z makomo: what splittist is also very useful, as Steele himself describes a few patterns 2018-09-21T11:28:55Z makomo: such as ',' and so on 2018-09-21T11:29:21Z makomo: posted* 2018-09-21T11:30:30Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-21T11:30:52Z Kundry_Wag joined #lisp 2018-09-21T11:31:21Z makomo: xificurC: erm, i mean't ,', :-) 2018-09-21T11:32:59Z makomo: xificurC: also, take a look at Bawden's paper https://web.archive.org/web/20170701182144/http://repository.readscheme.org/ftp/papers/pepm99/bawden.pdf . it mentions a funny anecdote about steele as well :-) 2018-09-21T11:35:28Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-21T11:40:59Z makomo: xificurC: after you start to understand it better (or perhaps you can do it in parallel), i would recommend studying ONCE-ONLY (i prefer Alexandria's version to the one found in PCL) https://github.com/keithj/alexandria/blob/master/macros.lisp#L30 2018-09-21T11:41:23Z makomo: here you'll find patterns/idioms like ,,@ and ,, 2018-09-21T11:43:59Z Fare joined #lisp 2018-09-21T11:50:47Z orivej_ quit (Ping timeout: 240 seconds) 2018-09-21T11:51:51Z pierpal quit (Ping timeout: 260 seconds) 2018-09-21T12:12:16Z Kundry_Wag joined #lisp 2018-09-21T12:13:15Z pjb joined #lisp 2018-09-21T12:16:35Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T12:17:09Z frgo quit (Remote host closed the connection) 2018-09-21T12:20:18Z Achylles quit (Ping timeout: 264 seconds) 2018-09-21T12:22:16Z orivej joined #lisp 2018-09-21T12:30:01Z milanj joined #lisp 2018-09-21T12:32:26Z Achylles joined #lisp 2018-09-21T12:43:39Z Kundry_Wag joined #lisp 2018-09-21T12:44:07Z frgo joined #lisp 2018-09-21T12:44:17Z pierpal joined #lisp 2018-09-21T12:44:55Z frgo quit (Remote host closed the connection) 2018-09-21T12:45:10Z frgo joined #lisp 2018-09-21T12:46:30Z pjb quit (Ping timeout: 252 seconds) 2018-09-21T12:47:56Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-21T12:50:59Z pierpal quit (Quit: Poof) 2018-09-21T12:51:17Z russellw: http://www.lispworks.com/documentation/lw61/CLHS/Body/f_coerce.htm#coerce doesn't explicitly say you can coerce a list of characters to a string, but one of the examples implies it, and it works in SBCL. Is it something that can be relied on, in portable code? 2018-09-21T12:51:18Z pierpal joined #lisp 2018-09-21T12:52:17Z beach: russellw: A string is a vector of characters, and it is possible to coerce a list to a vector. 2018-09-21T12:53:35Z beach: russellw: So, the result type is STRING which is a recognizable subtype of VECTOR. 2018-09-21T12:53:46Z russellw: ah! so the part about sequences, is intended to imply that, if one knows about the relationship between the kinds of vectors? Okay, thanks! 2018-09-21T12:54:00Z beach: Sure. 2018-09-21T12:55:33Z SaganMan joined #lisp 2018-09-21T12:56:43Z Inline joined #lisp 2018-09-21T12:57:50Z Inline quit (Read error: Connection reset by peer) 2018-09-21T12:58:19Z Inline joined #lisp 2018-09-21T12:58:56Z Lycurgus quit (Ping timeout: 260 seconds) 2018-09-21T12:59:08Z pierpal quit (Read error: Connection reset by peer) 2018-09-21T12:59:26Z pierpal joined #lisp 2018-09-21T12:59:27Z dim: I'm discovering (coerce "," 'character), looks useful 2018-09-21T13:00:14Z Inline: heh 2018-09-21T13:00:20Z random-nick joined #lisp 2018-09-21T13:00:24Z Inline: string-character conversion ? 2018-09-21T13:00:57Z beach: A string of length 1 is a character designator. 2018-09-21T13:01:38Z Shinmera: dim: useful for what? 2018-09-21T13:04:44Z beach quit (Disconnected by services) 2018-09-21T13:05:20Z xificurC: I did it with a function, finally works :) 2018-09-21T13:05:24Z xificurC: now to read the suggestions 2018-09-21T13:05:30Z beach joined #lisp 2018-09-21T13:05:41Z heisig quit (Ping timeout: 244 seconds) 2018-09-21T13:09:21Z eminhi joined #lisp 2018-09-21T13:10:35Z eminhi quit (Client Quit) 2018-09-21T13:11:40Z asarch joined #lisp 2018-09-21T13:13:57Z Kundry_Wag joined #lisp 2018-09-21T13:15:30Z nirved quit (Ping timeout: 244 seconds) 2018-09-21T13:16:38Z xificurC: makomo: re alexandria - no. I mean... no. Not today 2018-09-21T13:18:46Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-21T13:18:48Z Bike joined #lisp 2018-09-21T13:22:40Z nirved joined #lisp 2018-09-21T13:26:47Z pierpal quit (Read error: Connection reset by peer) 2018-09-21T13:26:56Z pierpal joined #lisp 2018-09-21T13:27:50Z LiamH joined #lisp 2018-09-21T13:28:37Z Arcaelyx joined #lisp 2018-09-21T13:29:46Z makomo quit (Ping timeout: 272 seconds) 2018-09-21T13:33:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-21T13:33:44Z warweasle joined #lisp 2018-09-21T13:36:26Z SenasOzys joined #lisp 2018-09-21T13:42:40Z makomo joined #lisp 2018-09-21T13:46:47Z pierpal quit (Ping timeout: 252 seconds) 2018-09-21T13:51:30Z rtypo joined #lisp 2018-09-21T13:54:42Z Younder joined #lisp 2018-09-21T14:01:25Z cage_ joined #lisp 2018-09-21T14:02:17Z varjag joined #lisp 2018-09-21T14:10:48Z gravicappa joined #lisp 2018-09-21T14:14:15Z housel joined #lisp 2018-09-21T14:15:58Z zfree quit (Quit: zfree) 2018-09-21T14:16:38Z zfree joined #lisp 2018-09-21T14:16:56Z dale_ joined #lisp 2018-09-21T14:17:15Z dale_ is now known as dale 2018-09-21T14:17:59Z makomo: xificurC: it's a nice exercise :D 2018-09-21T14:18:58Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-21T14:19:56Z Achylles quit (Quit: Leaving) 2018-09-21T14:21:49Z pierpal joined #lisp 2018-09-21T14:25:36Z mkolenda quit (Remote host closed the connection) 2018-09-21T14:26:15Z mkolenda joined #lisp 2018-09-21T14:27:01Z scymtym quit (Ping timeout: 260 seconds) 2018-09-21T14:30:57Z paule32 joined #lisp 2018-09-21T14:31:12Z paule32: hello 2018-09-21T14:31:22Z paule32: i have following code: 2018-09-21T14:31:22Z paule32: http://dpaste.com/3NHXD2J 2018-09-21T14:31:54Z paule32: but get: 2018-09-21T14:31:54Z paule32: *** - SETQ: '(GENITIV '(DES BAKTERIUMS '(DER BAKTERIEN)) (SUBSTANTIV SÄCHLICH LEBEWESEN)) is no symbol. 2018-09-21T14:32:28Z paule32: i use clisp 2018-09-21T14:32:37Z Bike: because you have (setq variable thing thing thing) which is invalid syntax 2018-09-21T14:32:47Z Bike: you've been around here what, two years? you need to seriously reevaluate your process. 2018-09-21T14:33:52Z makomo: those quotes within quotes don't look good either 2018-09-21T14:35:38Z astronavt joined #lisp 2018-09-21T14:35:53Z flazh quit (Quit: flazh) 2018-09-21T14:36:05Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-21T14:36:07Z astronavt_ joined #lisp 2018-09-21T14:37:32Z paule32: ah, ok 2018-09-21T14:37:57Z paule32: sbcl says: The variable BAKTERIUM is unbound. 2018-09-21T14:38:49Z Bike: i think you need a dedicated teacher in person or something 2018-09-21T14:38:53Z Bike: whatever you're doing now is not sufficient 2018-09-21T14:39:46Z astronavt quit (Ping timeout: 246 seconds) 2018-09-21T14:43:21Z pjb joined #lisp 2018-09-21T14:46:12Z varjag quit (Ping timeout: 252 seconds) 2018-09-21T14:50:02Z orivej quit (Ping timeout: 252 seconds) 2018-09-21T14:50:13Z varjag joined #lisp 2018-09-21T14:52:13Z dale quit (Quit: dale) 2018-09-21T14:52:35Z gector quit (Read error: Connection reset by peer) 2018-09-21T14:53:12Z gector joined #lisp 2018-09-21T14:55:06Z varjag quit (Ping timeout: 264 seconds) 2018-09-21T14:58:12Z frodef quit (Ping timeout: 252 seconds) 2018-09-21T14:58:34Z nirved joined #lisp 2018-09-21T15:01:33Z itruslove quit (Remote host closed the connection) 2018-09-21T15:01:48Z Kundry_Wag joined #lisp 2018-09-21T15:04:34Z paule32 quit (Ping timeout: 240 seconds) 2018-09-21T15:06:10Z housel quit (Remote host closed the connection) 2018-09-21T15:06:40Z housel joined #lisp 2018-09-21T15:06:40Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-21T15:11:05Z Kundry_Wag joined #lisp 2018-09-21T15:11:40Z flazh joined #lisp 2018-09-21T15:12:02Z orivej joined #lisp 2018-09-21T15:15:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-21T15:16:47Z pjb quit (Ping timeout: 250 seconds) 2018-09-21T15:21:26Z varjag joined #lisp 2018-09-21T15:24:56Z bradcomp joined #lisp 2018-09-21T15:25:43Z robotoad joined #lisp 2018-09-21T15:25:56Z gravicappa quit (Ping timeout: 260 seconds) 2018-09-21T15:28:02Z zigpaw quit (Remote host closed the connection) 2018-09-21T15:28:25Z varjag quit (Ping timeout: 246 seconds) 2018-09-21T15:28:45Z Lycurgus joined #lisp 2018-09-21T15:30:10Z itruslove joined #lisp 2018-09-21T15:30:14Z jjman quit (Quit: WeeChat 1.6) 2018-09-21T15:32:15Z Demosthenex: _death: so i found the mailbox lib, which defines a simple object for locked inter-thread communication 2018-09-21T15:34:03Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-21T15:35:43Z AeroNotix: Demosthenex: which library is that 2018-09-21T15:36:18Z scymtym joined #lisp 2018-09-21T15:36:57Z Lycurgus quit (Quit: Exeunt) 2018-09-21T15:38:12Z dim: Shinmera: re (coerce "/" 'character), see https://github.com/dimitri/pgloader/issues/835#issuecomment-421627350 where I've been using (aref ... 0) instead, because I'm not exposing reader macrology in pglaoder's command language 2018-09-21T15:38:37Z zfree quit (Quit: zfree) 2018-09-21T15:38:41Z gravicappa joined #lisp 2018-09-21T15:42:51Z shifty quit (Ping timeout: 260 seconds) 2018-09-21T15:44:20Z Kundry_Wag joined #lisp 2018-09-21T15:47:31Z gpiero quit (Remote host closed the connection) 2018-09-21T15:48:43Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-21T16:00:31Z AeroNotix: Can I turn GC off in SBCL temporarily? 2018-09-21T16:02:17Z beach: That sounds like a risky thing to do. 2018-09-21T16:02:29Z AeroNotix: beach: I'm not doing it in "real" code. I want to verify a theory, for debugging 2018-09-21T16:03:19Z Kundry_Wag joined #lisp 2018-09-21T16:03:24Z beach: I mean, if, while running your application, you run out of space in one generation and the GC is disabled, then the system will fail. And if you don't run out of space, then the GC won't run. 2018-09-21T16:04:33Z AeroNotix: What kind of failure do you mean? Crash? 2018-09-21T16:04:38Z AeroNotix: I'm fine with a crash. 2018-09-21T16:04:55Z jackdaniel: it will put your pc on fire 2018-09-21T16:04:57Z jackdaniel: :-) 2018-09-21T16:05:01Z AeroNotix: fine with that, too 2018-09-21T16:05:08Z beach: So just trace GC and if it runs, consider it a crash. 2018-09-21T16:05:23Z beach: (trace GC :break t) could work. 2018-09-21T16:05:52Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-21T16:06:08Z AeroNotix: okay 2018-09-21T16:08:56Z Kundry_Wag joined #lisp 2018-09-21T16:13:07Z shka_ joined #lisp 2018-09-21T16:14:31Z Bike: i don't think "natural" gcs in sbcl necessarily call ext:gc 2018-09-21T16:14:42Z Bike: there's a without-gcing internal thing you could mess with 2018-09-21T16:17:23Z nsrahmad joined #lisp 2018-09-21T16:18:48Z schweers quit (Ping timeout: 252 seconds) 2018-09-21T16:19:07Z Fare quit (Ping timeout: 240 seconds) 2018-09-21T16:21:14Z AeroNotix: i'll give it a go 2018-09-21T16:24:18Z AeroNotix: hmm, well there goes that theory. I was trying to see why two threads operating on two different hardware memory transactions were occasionally failing 2018-09-21T16:24:44Z AeroNotix: (assuming sb-sys:without-gcing works as expected) 2018-09-21T16:26:17Z nsrahmad quit (Remote host closed the connection) 2018-09-21T16:26:51Z pjb joined #lisp 2018-09-21T16:29:29Z Denommus joined #lisp 2018-09-21T16:30:13Z shka_: AeroNotix: what are you doing? 2018-09-21T16:31:50Z AeroNotix: shka_: attempting to write code using stmx/rtm features 2018-09-21T16:32:03Z shka_: ok 2018-09-21T16:32:06Z AeroNotix: just learning how it behaves in certain conditions 2018-09-21T16:32:15Z shka_: i can try to quickload 2018-09-21T16:32:15Z pjb quit (Ping timeout: 252 seconds) 2018-09-21T16:32:19Z shka_: at the very least 2018-09-21T16:32:37Z AeroNotix: shka_: Well, it's more a case of how RTM behaves on the cpu, rather than anything intrinsic to SBCL it seems 2018-09-21T16:32:46Z AeroNotix: btw stmx is "broken" in sbcl 1.4.10 2018-09-21T16:32:52Z shka_: oh 2018-09-21T16:32:55Z shka_: that's bad 2018-09-21T16:33:01Z gravicappa quit (Ping timeout: 260 seconds) 2018-09-21T16:33:02Z AeroNotix: it'll be fixed 2018-09-21T16:33:27Z AeroNotix: it's not a big breakage 2018-09-21T16:35:55Z shka_: good 2018-09-21T16:36:06Z Demosthenex: AeroNotix: mailbox 2018-09-21T16:36:11Z AeroNotix: Demosthenex: found it, thanks 2018-09-21T16:36:13Z shka_: maybe i should checkout smtx as well 2018-09-21T16:36:20Z shka_: but petalisp goes first 2018-09-21T16:36:35Z Demosthenex: if i create a thread in a let inside a function, when i leave the let scope is the thread killed? 2018-09-21T16:36:43Z shka_: Demosthenex: no 2018-09-21T16:37:10Z shka_: you need to either kill it or wait for join 2018-09-21T16:39:04Z Demosthenex: shka_: k, so i'm using destroy at the end for now then 2018-09-21T16:39:13Z AeroNotix: Demosthenex: destoying threads is a bad idea 2018-09-21T16:39:30Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-21T16:43:06Z astronavt_ quit (Quit: Leaving) 2018-09-21T16:43:30Z astronavt joined #lisp 2018-09-21T16:45:51Z Denommus quit (Ping timeout: 260 seconds) 2018-09-21T16:51:21Z Demosthenex: AeroNotix: i heard that, i may put in a lock to signal when to exit 2018-09-21T16:51:41Z Demosthenex: _death: https://bpaste.net/show/5db6bd9c1964 i've been able to get async input working with other screen updates going 2018-09-21T16:51:56Z Demosthenex: don't understand why the cursor is always going to the end of the clock though 2018-09-21T16:52:09Z Demosthenex: i'm deliberately moving it, and also trying to protect and restore the position 2018-09-21T16:53:30Z marvin2 joined #lisp 2018-09-21T16:53:49Z pjb joined #lisp 2018-09-21T16:54:29Z AeroNotix: Demosthenex: that code is definitely buggy 2018-09-21T16:54:42Z AeroNotix: You shouldn't destroy threads that potentially will hold locks 2018-09-21T16:55:09Z Demosthenex: AeroNotix: that's a good thought, but it spends 99% of its time sleeping, and its a POC by a noob ;] 2018-09-21T16:55:25Z Demosthenex: i'll look at making a global var to signal stop to other threads 2018-09-21T16:55:33Z AeroNotix: Demosthenex: that's one way to do it 2018-09-21T16:55:50Z Demosthenex: is there a better way to tell looping threads to quit? 2018-09-21T16:56:11Z AeroNotix: Demosthenex: I prefer using a different method of thread synchronization: channels 2018-09-21T16:56:23Z AeroNotix: but almost all channel libraries in CL aren't to my liking. 2018-09-21T16:56:43Z AeroNotix: a globally thread-safe var should work for a POC 2018-09-21T16:56:58Z Demosthenex: doesn't need to be thread safe, if it's only set once but read many 2018-09-21T16:57:01Z pjb: Demosthenex: you could use a global special variable, but there's no guarantee that they're writable atomically. 2018-09-21T16:57:09Z AeroNotix: pjb: this 2018-09-21T16:57:44Z Demosthenex: pjb: if i make a var, it's just to be checked before the next loop (ie: (loop until *quit* do ....) 2018-09-21T16:58:28Z AeroNotix: I mention thread-safe just so it's clear that it should be thread safe, setting a variable *should* be fine, without explicit locking but ymmv. I'm not clear on whether setf is atomic. 2018-09-21T16:59:18Z pjb: It really depends on the platform, on the hardware. 2018-09-21T16:59:45Z Demosthenex: i do understand that for important cross thread comms, it matters ;] 2018-09-21T16:59:47Z pjb: Now it's easy to add a mutex. 2018-09-21T17:00:26Z Demosthenex: i still haven't figured out why the cursor is on the clock :P 2018-09-21T17:01:50Z Demosthenex: ah, it was the refresh screen always going to the end 2018-09-21T17:01:52Z Demosthenex: not the clock print 2018-09-21T17:02:39Z Demosthenex: https://bpaste.net/show/668b79f059a3 added your global, and now cursor preserves 2018-09-21T17:08:30Z Fare joined #lisp 2018-09-21T17:09:34Z orivej quit (Ping timeout: 240 seconds) 2018-09-21T17:10:16Z Cymew quit (Ping timeout: 250 seconds) 2018-09-21T17:11:19Z m00natic quit (Remote host closed the connection) 2018-09-21T17:11:58Z cl-arthur joined #lisp 2018-09-21T17:12:52Z DGASAU quit (Read error: Connection reset by peer) 2018-09-21T17:14:08Z Fare quit (Ping timeout: 252 seconds) 2018-09-21T17:14:26Z DGASAU joined #lisp 2018-09-21T17:14:37Z whartung: even if the global write is atomic, doesn’t mean the other threads will see the change due to caching on the cores. 2018-09-21T17:17:33Z Fare joined #lisp 2018-09-21T17:21:46Z jackdaniel: one of the perks of atomic operations is that they invalidate all caches 2018-09-21T17:22:02Z jackdaniel: disadventage is that such operation is around 80x slower than normal write 2018-09-21T17:22:18Z jackdaniel: (I saw an blog post which goes into details, 80x stuck in my head) 2018-09-21T17:22:22Z jackdaniel: s/an/a/ 2018-09-21T17:24:19Z pjb: Demosthenex: https://gist.github.com/informatimago/7b874fbbfcb759ce2a1c1ca484728b40 2018-09-21T17:25:22Z Fare quit (Ping timeout: 272 seconds) 2018-09-21T17:25:35Z pjb: jackdaniel: using locks should have the same effect on the caches… 2018-09-21T17:25:49Z jackdaniel: looking at the article https://spcl.inf.ethz.ch/Publications/.pdf/atomic-bench.pdf I see 30x penalty 2018-09-21T17:26:05Z jackdaniel: pjb: I was referring to what whartung said 2018-09-21T17:26:32Z pjb: Yes. They are two different things. 2018-09-21T17:26:32Z jackdaniel: I don't have opinion what is a good solution because I didn't read the whole backlog 2018-09-21T17:26:47Z pjb: atomic writes don't require locks. 2018-09-21T17:28:05Z pjb: That said, it's true that you can often merge locks, but it would increase parallelism to keep one lock per data, if they're independent. 2018-09-21T17:29:18Z AeroNotix: not entirely an expert but you can try to use transactional memory with more coarse grained locks and let the cpu figure out chances for data parallelism 2018-09-21T17:29:32Z pjb: Demosthenex: for example, you are trying to access a unique resource, the screen. Instead of accessing it from multiple threads, have a single thread own it and access it, and multiple threads communicating with this screen management thread. This can be more efficient, since the screen management thread can then serialize and optimize the requests, and those requests can be built in parallel my the other threads. 2018-09-21T17:29:37Z AeroNotix: I'm just starting to use "real" transactional memory 2018-09-21T17:29:52Z AeroNotix: pjb: sounds like a poor man's actor 2018-09-21T17:30:08Z pjb: Exactly. This is how I would rather use thread, seeing them as actors. 2018-09-21T17:30:23Z AeroNotix: There's a few reasonably decent actor libraries that abstract this kind of interface 2018-09-21T17:30:40Z AeroNotix: a lot of my time in CL is spent trying to make it behave like Erlang :) 2018-09-21T17:31:43Z jackdaniel: LFE gives you lisp and erlang from what I've heard 2018-09-21T17:31:52Z AeroNotix: jackdaniel: it's absolutely rubbish 2018-09-21T17:32:05Z AeroNotix: it combines the worst of both worlds (imho) 2018-09-21T17:32:22Z jackdaniel: that's not a nice thing to say about a language 2018-09-21T17:33:02Z AeroNotix: well I've used LFE and Erlang extensively, I dunno, I feel like I understand them both well enough to say whether they bring anything useful to the table 2018-09-21T17:33:51Z ober: ^^ 2018-09-21T17:34:04Z AeroNotix: ober: ? 2018-09-21T17:34:15Z ober: +1 2018-09-21T17:35:27Z ober: AeroNotix: have you tried Elixir? 2018-09-21T17:35:32Z AeroNotix: ober: not in anger 2018-09-21T17:35:37Z AeroNotix: I keep meaning to delve into it 2018-09-21T17:36:51Z AeroNotix: Just that erlang is "dayjob" stuff and if I have free time I'd prefer to spend it with CL 2018-09-21T17:37:27Z AeroNotix: anyway 2018-09-21T17:37:28Z AeroNotix: OT 2018-09-21T17:37:41Z AeroNotix: Anyone used STMX? 2018-09-21T17:38:22Z AeroNotix: I don't think this behaviour is only visible with stmx, it may be just a quirk of how rtm works. I've got a single threaded loop that continually sets a variable to a random value. 2018-09-21T17:38:37Z AeroNotix: Despite nothing else (in my code, at least) accessing that variable, sometimes the transaction rolls back. 2018-09-21T17:39:06Z AeroNotix: I, at first, thought it could be the gc interfering with the variable, tried using sb-sys:without-gcing but it didn't change the behaviour 2018-09-21T17:40:00Z jmercouris joined #lisp 2018-09-21T17:40:00Z whartung: also, to highlight pjb’s idea of a single controlling thread, the screen is a spectacularly low bandwidth device. Far cheaper to stuff something on a queue and have the controlling thread update, than to have everyone try it and wait for the screen to update. 2018-09-21T17:40:31Z whartung: if the controlling thread is using something like curses, it can batch all of the updates in to one hit to the display, something competenig threads potentially can not do 2018-09-21T17:43:08Z AeroNotix: https://gist.github.com/AeroNotix/fd0d7c4d62ac35ff2095d7bfcd6ab8de here's the code. set-it is a macro cause I've extracted this from a test suite where set-it being a macro makes sense. 2018-09-21T17:43:27Z Shinmera: dim: (char string 0) would be better than eiter aref or coerce, in my opinion 2018-09-21T17:47:10Z pjb: To complement what whartung is saying, you should have a look at how emacs on the terminal does it! You'd be surprised. 2018-09-21T17:48:54Z AeroNotix: Not to mention that it'll subjectively make the code far easier to reason about and understand 2018-09-21T17:49:20Z AeroNotix: instead of minute instances of locking/unlocking. You would have send-to-screen type operations that don't care how the screen handles that operation 2018-09-21T17:49:48Z whartung: you still have locking and unlocking, but theyre ideally faster since you’re only fighting over a queue, vs a slow display. 2018-09-21T17:50:08Z AeroNotix: whartung: indeed, but the individual instances of locking can be abstracted into the "screen" API 2018-09-21T17:50:24Z whartung: naturally, but they always could have. 2018-09-21T17:50:36Z AeroNotix: sure, it's a conceptual thing rather than a technical one 2018-09-21T17:57:23Z tfeb quit 2018-09-21T17:57:59Z TMA quit (Ping timeout: 276 seconds) 2018-09-21T17:58:34Z orivej joined #lisp 2018-09-21T18:03:46Z Demosthenex: pjb: so the casier demo is just like the mailboxes i'm using, and really i don't need anything deep, i just wanted async input while taking forms data so i can have popup combo boxes display autocompletion options without stopping 2018-09-21T18:05:21Z suskeyhose joined #lisp 2018-09-21T18:08:40Z igemnace quit (Quit: WeeChat 2.2) 2018-09-21T18:10:31Z Fare joined #lisp 2018-09-21T18:15:49Z LdBeth: weekend! 2018-09-21T18:19:11Z Fare quit (Ping timeout: 260 seconds) 2018-09-21T18:19:59Z meepdeew joined #lisp 2018-09-21T18:21:13Z pjb: Demosthenex: I don't know. I've got my own mailbox synchronization abstration here: https://framagit.org/patchwork/mclgui/blob/master/mailbox.lisp but it locks the recipient until the sender posts a message. 2018-09-21T18:22:04Z pjb: So right, this is also the point I wanted to mention: usually, threads will be waiting on a queue or a mailbox like this, to receive a message and process it. So it's natural and easy to define a quit message to have the thread stop. 2018-09-21T18:23:29Z whartung: Isn’t this lparallels bally wick? job queues to run tasks? 2018-09-21T18:24:21Z pjb: it's a little like using pipes. 2018-09-21T18:24:45Z whartung: your mailbox? 2018-09-21T18:24:54Z whartung: bloking queue 1 item deep? 2018-09-21T18:24:59Z pjb: in general. 2018-09-21T18:25:01Z meepdeew quit (Ping timeout: 260 seconds) 2018-09-21T18:25:04Z zigpaw joined #lisp 2018-09-21T18:26:12Z sauvin quit (Read error: Connection reset by peer) 2018-09-21T18:26:49Z whartung: is that your own personal gitlab pjb? 2018-09-21T18:27:24Z pjb: yes. 2018-09-21T18:27:26Z AeroNotix: btw in the area of self-hosted git sites, check out gitea and gogs. Far superior to gitlab (IMHO!!) 2018-09-21T18:28:13Z dlowe: still one of my favorite tech poems: http://www.thecodelesscode.com/case/234 2018-09-21T18:30:27Z FreeBirdLjj joined #lisp 2018-09-21T18:33:33Z whartung: 4GB of ram to host a web site on top of a source code repo… 2018-09-21T18:33:57Z AeroNotix: whartung: honestly, try gitea/gogs. mine's running in 20mb ram right now 2018-09-21T18:34:07Z AeroNotix: a bit more featureful than cgit, not much more hungry 2018-09-21T18:34:56Z FreeBirdLjj quit (Ping timeout: 260 seconds) 2018-09-21T18:35:51Z Fare joined #lisp 2018-09-21T18:38:18Z whartung: right now I use SVN hosted on a drop box drive. 2018-09-21T18:38:35Z oni-on-ion: i got my git repo sync'd with dropbox 2018-09-21T18:55:47Z Essadon joined #lisp 2018-09-21T18:57:18Z Essadon quit (Client Quit) 2018-09-21T18:57:36Z Essadon joined #lisp 2018-09-21T19:00:22Z Arcaelyx_ joined #lisp 2018-09-21T19:01:36Z Arcaelyx quit (Ping timeout: 252 seconds) 2018-09-21T19:03:18Z AroPar joined #lisp 2018-09-21T19:04:07Z AroPar quit (Remote host closed the connection) 2018-09-21T19:05:47Z Fare quit (Ping timeout: 240 seconds) 2018-09-21T19:05:59Z Jesin joined #lisp 2018-09-21T19:06:14Z warweasle quit (Quit: soon) 2018-09-21T19:08:13Z Jesin quit (Remote host closed the connection) 2018-09-21T19:13:26Z cage_ quit (Quit: Leaving) 2018-09-21T19:13:56Z Jesin joined #lisp 2018-09-21T19:24:53Z Fare joined #lisp 2018-09-21T19:26:17Z random-nick quit (Read error: Connection reset by peer) 2018-09-21T19:26:42Z random-nick joined #lisp 2018-09-21T19:28:01Z orivej quit (Ping timeout: 260 seconds) 2018-09-21T19:31:00Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-21T19:38:18Z angavrilov quit (Remote host closed the connection) 2018-09-21T19:40:57Z jasom: jackdaniel: Most lisp-in-X are rubbish, mainly because it's relaly easy to make a bad one, but very hard to make a good one. 2018-09-21T19:43:27Z plathrop: every lisp I've written in lisp has turned out to be okay /troll 2018-09-21T19:43:48Z jackdaniel: bold opinion (one of these which are easy to make;) 2018-09-21T19:44:30Z oni-on-ion quit (Read error: No route to host) 2018-09-21T19:45:35Z aeth: I'm having a hard enough time writing Scheme-in-Common-Lisp and Scheme's the closest Lisp to CL that's not Emacs Lisp or essentially obsolete. The hard part is getting the exact semantic match while preserving performance. Pseudoscheme never tried to do this, hence the "pseudo". 2018-09-21T19:46:03Z jasom: jackdaniel: which part is bold? I think it's relatively intuitive that the larger the distance between the difficulty of doing something poorly and the difficulty of doing something well, the more times something will be done poorly. I know it's easy to do one badly because I have done so. 2018-09-21T19:46:24Z aeth: I can't imagine doing a Lisp-in-Foo that is not just Foo with s-expressions because the semantic mismatch would be even greater than Scheme-on-CL 2018-09-21T19:47:25Z rumbler31 joined #lisp 2018-09-21T19:47:31Z plathrop: welll... every language has to be written in another language. So it has to be possible to write good Lisp-in-Foo for *some* values of Foo 2018-09-21T19:47:42Z asarch quit (Quit: Leaving) 2018-09-21T19:47:44Z aeth: plathrop: hence "while preserving performance" 2018-09-21T19:48:08Z SaganMan joined #lisp 2018-09-21T19:48:09Z pfdietz: Even "lisp is assembler" requires tricky tricks. 2018-09-21T19:48:31Z plathrop: I'm just being overly pedantic about "doing a Lisp-in-Foo" == "Foo with s-expressions" 2018-09-21T19:48:37Z jackdaniel: bold, that /most/ are /rubbish/. first suggests you have compared at least a few, second that they are worthless (given some objective(?) metric) 2018-09-21T19:49:03Z aeth: jackdaniel: It's actually the least bold claim that most $thing_on_the_internet are rubbish 2018-09-21T19:49:07Z jackdaniel: so it sounds like an opinion easy to state, hard to verify 2018-09-21T19:49:09Z aeth: That definitely includes software post-Github 2018-09-21T19:49:47Z plathrop: I'll make an even bolder claim. All software is terrible. 2018-09-21T19:50:00Z jackdaniel: and I'll go to sleep 2018-09-21T19:50:02Z jackdaniel: good night :) 2018-09-21T19:50:03Z aeth: Well it's easy to verify informally, it's hard to objectively define. 2018-09-21T19:50:26Z aeth: The problem with bad software is it doesn't (usually) have a test suite to express how bad it is. 2018-09-21T19:50:51Z aeth: (And even then, the bad decisions could be architectural) 2018-09-21T19:50:51Z plathrop: (especially any software I had a hand in creating) 2018-09-21T19:51:07Z jackdaniel: aeth: informal verification fails short: take randomly person from this channel they'll say: python is rubbish; take randomly person from python channel they'll say: lisp is dead ;) 2018-09-21T19:51:09Z aeth: plathrop: No one has time to write good software. 2018-09-21T19:51:50Z aeth: jackdaniel: People actually can use Python for serious projects, so it's not rubbish in the context here. I would guess that there are thousands and thousands of hobby Lisps and "Lisps" out there and maybe 20-30 are usable. 2018-09-21T19:52:58Z aeth: The problem is, you'd need to try to write a project in $foo to find out that it's not a usable language implementation sometimes. 2018-09-21T19:53:32Z aeth: It's very easy to make a Lisp, so I don't think it's controversial that there are many. 2018-09-21T19:54:36Z aeth: s/make a Lisp/make a toy Lisp/ 2018-09-21T19:54:48Z pfdietz: Even fewer purport to be Common Lisps. 2018-09-21T19:55:11Z rtypo: hi, is it possible to expand this code? (i'm using sbcl, emacs, slime) 2018-09-21T19:55:17Z rtypo: https://i.imgur.com/gggCgG7.png 2018-09-21T19:55:44Z rtypo: i'm a newbie, doing ch 8 from "Praise for..." 2018-09-21T19:55:49Z pfdietz: (macroexpand '(test-*)), perhaps? 2018-09-21T19:56:02Z jasom: rtypo: if test-+ is a macro, then you can move the cursor and do a slime-macroexpand 2018-09-21T19:56:12Z rumbler31 quit (Remote host closed the connection) 2018-09-21T19:56:29Z djeis[m]: You should be able to run the macroexpand keybinding again on that subform, yea 2018-09-21T19:56:36Z plathrop: aeth: truth. I'm experiencing that now at $DAYJOB 2018-09-21T19:56:42Z rtypo: yes, i'm doing slime-expand over 'test-arithmetic, then 'combine-results 2018-09-21T19:56:53Z frodef joined #lisp 2018-09-21T19:56:54Z rtypo: (and it works, in the same window) 2018-09-21T19:57:09Z rtypo: but for some reason it doesn't on the 'test-+ and 'test-* 2018-09-21T19:57:11Z jasom: rtypo: it's entirely possible (perhaps even likely) that it's a function though 2018-09-21T19:57:28Z pfdietz: Or, macroexpand on the deftest form that defines test-*. 2018-09-21T19:57:44Z jasom: actually we can be fairly certain it's a function, since deftest (in this case) expands to a defun and test-+ is defined with deftest as well 2018-09-21T19:57:56Z rtypo: pfdietz: yes that works 2018-09-21T19:57:58Z jasom: rtypo: you cam probably hit M-. on it to jump to the deftest definition 2018-09-21T19:58:28Z rtypo: jasom: this works as well 2018-09-21T19:59:04Z rtypo: i kind of wished it expanded insite the window tho :D 2018-09-21T19:59:40Z rtypo: jasom: ah, so that's why it doesn't work as the others 2018-09-21T20:00:12Z djeis[m]: There’s a package called macrostep which lets you do inline macroexpansion. 2018-09-21T20:00:27Z jasom: djeis[m]: test-+ isn't a macro 2018-09-21T20:00:42Z djeis[m]: Ah, that’d do it. 2018-09-21T20:00:56Z rtypo: i suppose that's my lack of understanding, i thought it's a macro 2018-09-21T20:01:19Z rtypo: so 'test-arithmetic is a macro, but 'test-+ is not? 2018-09-21T20:01:28Z jasom: rtypo: test-arithmetic is a function 2018-09-21T20:01:33Z jasom: rtypo: deftest is a macro 2018-09-21T20:01:45Z rtypo: ahh! i see 2018-09-21T20:01:51Z jasom: deftest is a macro that defines a function 2018-09-21T20:02:06Z papachan quit (Quit: WeeChat 2.2) 2018-09-21T20:02:40Z jasom: or more pedantically deftest is a macro that expands to a function definition. 2018-09-21T20:03:46Z rtypo: i got it now. thanks 2018-09-21T20:04:22Z rtypo: i can expand "(deftest test-+ ...", but not "(test-+)" 2018-09-21T20:04:34Z rtypo: alright 2018-09-21T20:04:35Z pfdietz: Correct 2018-09-21T20:06:52Z joast quit (Ping timeout: 272 seconds) 2018-09-21T20:06:55Z jmercouris quit (Remote host closed the connection) 2018-09-21T20:09:49Z nckx quit (Quit: Updating my GNU GuixSD server — gnu.org/s/guix) 2018-09-21T20:13:13Z pfdietz: Is there a portable implementation of the Common Lisp reader (in Common Lisp) anywhere? That is, I want to be able to modify it so I don't want to use any CL's builtin reader. 2018-09-21T20:13:50Z Bike: https://github.com/robert-strandh/Eclector 2018-09-21T20:14:34Z pfdietz: Ok 2018-09-21T20:14:56Z _death: pjb also wrote one 2018-09-21T20:16:03Z pfdietz: Want I want this for is this: I want to be able to trawl lisp sources for code fragments to use in testing, but I don't want to actually have to load the code, so packages may not be defined. So I want a reader that can skip over package names it doesn't know without completely aborting. 2018-09-21T20:16:31Z igemnace joined #lisp 2018-09-21T20:17:35Z rjid joined #lisp 2018-09-21T20:17:41Z pfdietz: I had done this by hacking sbcl's reader, but I'd prefer a portable solution. 2018-09-21T20:17:47Z rjid left #lisp 2018-09-21T20:17:58Z jasom: pfdietz: I think climacs has a way to read possibly incomplete lisp source code 2018-09-21T20:18:07Z Bike quit (Ping timeout: 256 seconds) 2018-09-21T20:20:48Z jasom: http://metamodular.com/incremental-parsing.pdf <-- there's the paper I was thinking of, not sure if there is currently useful code 2018-09-21T20:21:12Z bradcomp left #lisp 2018-09-21T20:22:45Z Jesin quit (Quit: Leaving) 2018-09-21T20:24:16Z jasom: And here's the code for parsing lisp that that paper is intending to do better than: https://github.com/robert-strandh/Climacs/tree/master/Syntax/Lisp 2018-09-21T20:24:32Z Jesin joined #lisp 2018-09-21T20:33:07Z Roy_Fokker joined #lisp 2018-09-21T20:35:37Z jack_rabbit joined #lisp 2018-09-21T20:38:36Z frodef quit (Ping timeout: 260 seconds) 2018-09-21T20:39:51Z shka_ quit (Ping timeout: 252 seconds) 2018-09-21T20:46:04Z Kundry_Wag quit (Remote host closed the connection) 2018-09-21T20:46:57Z orivej joined #lisp 2018-09-21T20:48:06Z joast joined #lisp 2018-09-21T20:53:30Z no-defun-allowed: Good morning 2018-09-21T20:53:48Z Bike joined #lisp 2018-09-21T20:58:23Z LdBeth: Morning 2018-09-21T21:08:52Z jkordani_ joined #lisp 2018-09-21T21:09:30Z makomo: evening :-) 2018-09-21T21:12:03Z Pixel_Outlaw joined #lisp 2018-09-21T21:13:01Z jkordani quit (Ping timeout: 260 seconds) 2018-09-21T21:16:05Z hitchhikingcoder joined #lisp 2018-09-21T21:16:38Z hitchhikingcoder quit (Remote host closed the connection) 2018-09-21T21:21:17Z Essadon quit (Quit: Qutting) 2018-09-21T21:22:45Z oni-on-ion joined #lisp 2018-09-21T21:24:27Z hitchhikingcoder joined #lisp 2018-09-21T21:24:27Z nowhere_man joined #lisp 2018-09-21T21:27:18Z orivej quit (Ping timeout: 272 seconds) 2018-09-21T21:34:54Z Fare quit (Ping timeout: 272 seconds) 2018-09-21T21:35:26Z meepdeew joined #lisp 2018-09-21T21:39:46Z orivej joined #lisp 2018-09-21T21:39:48Z meepdeew quit (Ping timeout: 252 seconds) 2018-09-21T21:40:10Z anewuser joined #lisp 2018-09-21T21:49:35Z rumbler31 joined #lisp 2018-09-21T21:54:10Z hitchhikingcoder quit (Quit: hitchhikingcoder) 2018-09-21T22:02:31Z LiamH quit (Quit: Leaving.) 2018-09-21T22:05:01Z Fare joined #lisp 2018-09-21T22:06:17Z kooga quit (Ping timeout: 276 seconds) 2018-09-21T22:10:24Z robotoad quit (Read error: Connection reset by peer) 2018-09-21T22:11:02Z robotoad joined #lisp 2018-09-21T22:16:10Z Fare quit (Ping timeout: 246 seconds) 2018-09-21T22:16:56Z kenu joined #lisp 2018-09-21T22:17:41Z kenu: hi 2018-09-21T22:18:52Z kenu: I am trying to query db with postmodern's doquery, but it doesnt preserve upper cases in column names 2018-09-21T22:19:26Z kenu: is it possible to get columns with uppercases at all? :) 2018-09-21T22:21:29Z mutenewt joined #lisp 2018-09-21T22:22:07Z aeth: If it's using symbols it has to assume that the user is probably going to say foo, which gets translated into FOO, and want it to represent "foo". |foo| would be how to get case-sensitivity, but if it assumes upcasing and then downcases it that wouldn't help 2018-09-21T22:22:47Z aeth: Perhaps it's overridable, but that at least explains why it is doing what it is doing 2018-09-21T22:24:57Z ober left #lisp 2018-09-21T22:29:01Z willmichael joined #lisp 2018-09-21T22:29:14Z aeth: I can't find anything in the documentation about case 2018-09-21T22:29:35Z jasom: it's possible it's case-inverting, le tme check 2018-09-21T22:31:04Z mutenewt quit (Quit: Leaving) 2018-09-21T22:33:27Z jasom: I think you can just use "ColumnName" rather than a symbol 2018-09-21T22:34:17Z jasom: And you definitely can set postmodern:*downcase-symbols* to nil and use '|ColumnName| 2018-09-21T22:36:07Z mutenewt joined #lisp 2018-09-21T22:36:25Z jasom: s/postmodern:/s-sql: 2018-09-21T22:40:11Z la_mettrie joined #lisp 2018-09-21T22:40:46Z jasom: though since most of the forms get expanded a macroexpand time you'll have to be smart about how you set that. 2018-09-21T22:45:18Z la_mettrie left #lisp 2018-09-21T22:47:18Z lnostdal quit (Read error: Connection reset by peer) 2018-09-21T22:49:34Z random-nick quit (Ping timeout: 240 seconds) 2018-09-21T22:50:55Z kenu: after setting that *downcase-symbols* to NIL I get 2018-09-21T22:50:59Z kenu: Database error 42703: column users.userid does not exist 2018-09-21T22:50:59Z kenu: HINT: Perhaps you meant to reference the column "users.userId". 2018-09-21T22:50:59Z kenu: QUERY: (SELECT users.userId FROM users) 2018-09-21T22:52:12Z kenu: before settin it QUERY: was (SELECT users.userid FROM users) 2018-09-21T22:52:18Z mutenewt quit (Quit: Leaving) 2018-09-21T22:53:21Z jasom: ah "All identifiers (including column names) that are not double-quoted are folded to lower case in PostgreSQL." 2018-09-21T22:53:22Z kenu: and that's how I cal it: (doquery (:select '|users.userId| ... 2018-09-21T22:53:32Z jasom: so there is no point to enabling *downcase-symbols* 2018-09-21T22:53:45Z jasom: you'll need to do (:select "users.userID" ...) 2018-09-21T22:54:30Z varjag joined #lisp 2018-09-21T22:55:43Z jasom: I'm wrong again 2018-09-21T22:55:46Z kenu: (doquery (:select "users.userId" :from 'users) (x) 2018-09-21T22:55:47Z kenu: (format t "~s~%" x)) 2018-09-21T22:55:55Z jasom: you need to set s-sql:*escape-sql-names-p* to T as well 2018-09-21T22:56:33Z kenu: and I get literally "users.usersId" printed for every row in db instead of the actual value 2018-09-21T22:56:45Z jasom: yeah, I misread the s-sql documentation 2018-09-21T22:57:52Z jasom: though I object to their :auto implementation for escaping; it ought to escape any names with upper case characters for just this reason... 2018-09-21T22:58:29Z robotoad quit (Quit: robotoad) 2018-09-21T23:01:41Z kenu: works :D thanks a lot! 2018-09-21T23:03:26Z jasom: they ought to provide a case-inverting version IMO, that would allow you to do 'users '|users.userId| or 'users.user\Id 2018-09-21T23:03:57Z jasom: they ought to provide a case-inverting version IMO, that would allow you to do 'users '|USERS.USERiD| or 'users.user\id 2018-09-21T23:04:33Z aeth: I'm disappointed you didn't invert everything. "THEY OUGHT TO PROVIDE ..." 2018-09-21T23:04:44Z whartung: am I to understand you’re doing case sensitive SQL? 2018-09-21T23:06:00Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-21T23:06:18Z varjag joined #lisp 2018-09-21T23:06:24Z jasom: kenu: it does look like the better solution is to just change your schema to be users.user_id 2018-09-21T23:06:30Z jasom: then you cna do 'user-id 2018-09-21T23:07:04Z whartung: I know I’m old school, but case sensitve SQL — man, life’s too short. 2018-09-21T23:07:38Z whartung loves that he can use - in lisp-variable-names 2018-09-21T23:07:50Z vxe joined #lisp 2018-09-21T23:09:36Z aeth: The greatest evil in programming language syntax is forbidding foo-bar-baz just so someone can write "x-y" instead of "x - y", which makes everything slightly harder to read. 2018-09-21T23:09:49Z aeth: "Whitespace significant" languages make the *wrong* whitespace the significant part. 2018-09-21T23:10:02Z whartung: I just love that I don’t have to use SHIFT to get expressive-variable-names 2018-09-21T23:10:13Z whartung: heh lol yea 2018-09-21T23:10:19Z aeth: even if - and _ were inverted, - is just easier to read 2018-09-21T23:10:29Z whartung: I think so 2018-09-21T23:10:32Z whartung: and easier to type 2018-09-21T23:10:45Z aeth: and camelCase is only fine for short names with no acronyms, making it ironically the worst decision for something like Java 2018-09-21T23:11:10Z whartung: I use short names in other language becaueCamelCaseIsAPainToType compared-to-variables-with-dashes-which-is-easy 2018-09-21T23:11:10Z aeth: "let's use camelCase in a language with long names full of acronyms like ID and XML" 2018-09-21T23:12:30Z omilu quit (Ping timeout: 264 seconds) 2018-09-21T23:13:04Z kenu: @jasom there is already some js code queryng that db and I don't feel like changing it 2018-09-21T23:14:20Z jasom: aeth: also ironic is that standard python style already recommends spaces around binops, so if you follow the style, then x-y could be unambiguously an identifier 2018-09-21T23:15:10Z whartung: all the chording and shifting is why I’m not a fan of emacs — just hard on my wrists, and I’m not really interested in remapping everything to make it easier. 2018-09-21T23:15:35Z jasom: whartung: fortunately someone already did all the remapping, and they called it "evil-mode" 2018-09-21T23:15:37Z oni-on-ion: whartung: try to type slower, or perhaps remap caps lock to control; that is what i have done. but i still dont really like it honestly. 2018-09-21T23:15:52Z aeth: jasom: Two things are imo a necessary part of style. Spaces around those operators and parentheses when mixing multiple operators so the reader and writer of the file don't need to have the precedence rules memorized. i.e. x + (c * y) 2018-09-21T23:15:53Z whartung: I’ve remapped caps lock. 2018-09-21T23:16:10Z aeth: jasom: and if you consistently always use that style then (+ x (* c y)) isn't *that* different. 2018-09-21T23:16:13Z whartung: it’s the extension and hoop jumping of the fingers I thnk, not so much the speed 2018-09-21T23:16:20Z whartung: what’s evil-mode? 2018-09-21T23:16:23Z whartung: is that vi in emacs? 2018-09-21T23:16:30Z jasom: whartung: more like vim in emacs, but yes. 2018-09-21T23:16:41Z oni-on-ion: whartung: hmm try switch up hands? ie. right shift or right alt, i dont use them as often as i should but i started to more and more. 2018-09-21T23:17:03Z whartung: wait, there’s a shift key on the right? lol 2018-09-21T23:17:08Z whartung: :) 2018-09-21T23:17:22Z jasom: whartung: I've tried several vim layers for emacs over the years and evil is the only one that didn't cause my muscle memory to get annoyed every few minutes. 2018-09-21T23:17:45Z jasom: I find thumb for alt helps a lot, fwiw 2018-09-21T23:17:48Z whartung: I would like to have tried the Canon Cat with its LEAP keys. 2018-09-21T23:18:08Z oni-on-ion: whartung: hehe. mine is missing at the moment but i still poke into the little rubber thing +) 2018-09-21T23:18:40Z oni-on-ion: i was next thinking of moving the spacebar elsewhere. like maybe if TopLeft of keyboard was backspace, and TopRight was space.... 2018-09-21T23:19:12Z whartung: yea. on my mac, the CMD key is the “thumb” key, but taht’s not mapped to meta in Aquaemacs (which is a macification of emacs) that I use. 2018-09-21T23:19:13Z jasom: I've seen space remapped to be space only when not chorded I think 2018-09-21T23:19:51Z whartung: that wold be intersting, meta-space word forward, ctl-space word backwards 2018-09-21T23:20:00Z whartung: or something silly like that 2018-09-21T23:20:26Z whartung: though in some places shift-backspace is not backspace, and then I rage and bonk things... 2018-09-21T23:22:39Z whartung: I try not to go for massive customizations of, well, anything, because it’s One More Thing I have to manage and take care of and port across versions, and workstations, and then get all sort of muscle memory that doesn’t work on the kiosk at the hotel. 2018-09-21T23:24:00Z whartung: (it’s amazing how close emacs is to a canon cat and the “Humane Interface” and yet, how far away it is at the same time. 2018-09-21T23:32:59Z rumbler3_ joined #lisp 2018-09-21T23:33:30Z oni-on-ion: if we can imagine something better, surely we could implement it. 2018-09-21T23:33:40Z Fare joined #lisp 2018-09-21T23:34:20Z cl-arthur quit (Quit: Lost terminal) 2018-09-21T23:34:45Z marvin2 quit (Ping timeout: 252 seconds) 2018-09-21T23:35:18Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-21T23:35:18Z Pixel_Outlaw quit (Ping timeout: 252 seconds) 2018-09-21T23:36:42Z Blackbeard joined #lisp 2018-09-21T23:37:45Z vlatkoB quit (Remote host closed the connection) 2018-09-21T23:38:41Z Pixel_Outlaw joined #lisp 2018-09-21T23:47:31Z varjag quit (Ping timeout: 246 seconds) 2018-09-21T23:49:03Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-22T00:02:00Z jasom: https://gitlab.com/at-home-modifier/at-home-modifier-evdev/wikis/home <-- there's what I was thinking of. It's a linux driver that implements what is needed for doing it; any key can be different when chorded vs not chorded. 2018-09-22T00:03:44Z Blackbeard: hello 2018-09-22T00:03:47Z jasom: I use my thumb for alt and my middle finger for control when I need to use emacs keys that I haven't remapped yet (e.g. C-c C-k) by moving my whole hand; it's a smaller movement than going to my trackball so shouldn't be too bad. 2018-09-22T00:04:06Z Blackbeard: i am trying to write a function 2018-09-22T00:04:17Z Blackbeard: that repeats every 30 minutes 2018-09-22T00:05:08Z Blackbeard: I tried a while loop with an (sleep ) and then the actual function 2018-09-22T00:05:09Z Blackbeard: but it didn't work 2018-09-22T00:05:25Z Blackbeard: after the first iteration it breaks 2018-09-22T00:05:34Z Blackbeard: any suggestions?🤔 2018-09-22T00:05:40Z Bike: "while loop"? 2018-09-22T00:05:46Z jasom: Blackbeard: paste what you tried? 2018-09-22T00:05:53Z Blackbeard: sorry 2018-09-22T00:06:14Z jasom: This ought to work: (loop (sleep (* 30 60)) (function)) 2018-09-22T00:06:28Z Blackbeard: (loop while t (progn (sleep 30)(function))) 2018-09-22T00:06:38Z Bike: that shouldn't compile 2018-09-22T00:06:42Z Bike: just go with jasom's 2018-09-22T00:07:02Z jasom: also yours is 30 seconds, not 30 minutes, FWIW 2018-09-22T00:07:15Z Blackbeard: yes sorry 2018-09-22T00:07:23Z Bike: you don't need to apologize 2018-09-22T00:07:48Z no-defun-allowed: hi Blackbeard🎖🛡🗡 2018-09-22T00:08:02Z Blackbeard: i was using 30 seconds to test 2018-09-22T00:08:41Z no-defun-allowed: you only need the short form of LOOP: `(loop (sleep LENGTH) (function))` 2018-09-22T00:09:01Z no-defun-allowed: if you do want the long form, you can just do `(loop do ...)` 2018-09-22T00:13:34Z Arcaelyx_ quit (Ping timeout: 240 seconds) 2018-09-22T00:19:07Z Blackbeard: perfect it works! 2018-09-22T00:19:32Z Blackbeard: My only problem now is that i can't do anything else 😅 2018-09-22T00:20:00Z no-defun-allowed: `(ql:quickload :bordeaux-threads)` `(bt:make-thread (lambda () (loop ...))` 2018-09-22T00:20:18Z Blackbeard: ah perfect 2018-09-22T00:20:46Z no-defun-allowed: (defmacro make-thunk (&body body) `(bt:make-thread (lambda () ,@body))) is also useful 2018-09-22T00:20:47Z Blackbeard: #'no-defun-allowed: thanks!! 2018-09-22T00:20:53Z no-defun-allowed: no problem 2018-09-22T00:21:37Z Blackbeard: i have to go to the store but I'll be back in an hour to keep trying 2018-09-22T00:22:05Z nonlinear is now known as NB0X 2018-09-22T00:22:25Z housel quit (Read error: Connection reset by peer) 2018-09-22T00:22:55Z housel joined #lisp 2018-09-22T00:23:05Z Blackbeard: 😃 2018-09-22T00:23:07Z Blackbeard: thanks 2018-09-22T00:23:19Z Oladon joined #lisp 2018-09-22T00:25:32Z _death: (make-thunk (go-to-store)) now you can keep trying without waiting an hour 2018-09-22T00:26:22Z Blackbeard: hahhahaha 2018-09-22T00:26:39Z Blackbeard: you are right 2018-09-22T00:29:23Z rumbler3_ quit (Remote host closed the connection) 2018-09-22T00:29:47Z rumbler31 joined #lisp 2018-09-22T00:38:37Z Arcaelyx joined #lisp 2018-09-22T00:38:57Z grumble quit (Quit: If we're putting dbus in the linux kernel, I want a java rmi registry there too.) 2018-09-22T00:39:03Z grumble joined #lisp 2018-09-22T00:39:53Z shifty joined #lisp 2018-09-22T00:43:47Z kooga joined #lisp 2018-09-22T01:13:05Z meepdeew joined #lisp 2018-09-22T01:14:01Z fortitude joined #lisp 2018-09-22T01:21:10Z hitchhikingcoder joined #lisp 2018-09-22T01:23:56Z terpri quit (Remote host closed the connection) 2018-09-22T01:28:16Z terpri joined #lisp 2018-09-22T01:41:19Z hitchhikingcoder quit (Remote host closed the connection) 2018-09-22T01:42:29Z rumbler31 quit (Remote host closed the connection) 2018-09-22T01:47:45Z Kundry_Wag joined #lisp 2018-09-22T01:52:40Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-22T01:54:53Z milanj quit (Quit: This computer has gone to sleep) 2018-09-22T02:21:45Z Oladon quit (Quit: Leaving.) 2018-09-22T02:22:18Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-22T02:28:27Z willmichael quit (Ping timeout: 252 seconds) 2018-09-22T02:31:08Z rumbler31 joined #lisp 2018-09-22T02:32:07Z marvin2 joined #lisp 2018-09-22T02:34:28Z rtypo quit (Ping timeout: 272 seconds) 2018-09-22T02:35:36Z dddddd quit (Remote host closed the connection) 2018-09-22T02:39:51Z PuercoPop joined #lisp 2018-09-22T02:44:05Z rumbler31 quit (Remote host closed the connection) 2018-09-22T02:50:34Z Oladon joined #lisp 2018-09-22T02:53:06Z gector quit (Read error: Connection reset by peer) 2018-09-22T02:53:51Z gector joined #lisp 2018-09-22T03:00:33Z djuber joined #lisp 2018-09-22T03:06:36Z stylewarning: Has anybody done Lisp on a PPC64 machine ? 2018-09-22T03:07:48Z pierpal quit (Quit: Poof) 2018-09-22T03:08:04Z pierpal joined #lisp 2018-09-22T03:08:05Z Lycurgus joined #lisp 2018-09-22T03:10:13Z varjag joined #lisp 2018-09-22T03:14:43Z varjag quit (Ping timeout: 246 seconds) 2018-09-22T03:19:14Z FreeBirdLjj joined #lisp 2018-09-22T03:19:18Z robotoad joined #lisp 2018-09-22T03:19:18Z aeth: Yes. 2018-09-22T03:19:48Z no-defun-allowed: hi aeth 2018-09-22T03:20:17Z aeth: ppc64 is supported by CCL and SBCL (but it's marked as in progress on SBCL's platform table page) 2018-09-22T03:20:36Z aeth: And ECL and CLISP run on pretty much everything. 2018-09-22T03:20:39Z aeth: So it's a widely supported platform. 2018-09-22T03:21:02Z aeth: no-defun-allowed: hi 2018-09-22T03:21:48Z pjb quit (Ping timeout: 252 seconds) 2018-09-22T03:25:12Z holycow joined #lisp 2018-09-22T03:27:10Z housel quit (Read error: Connection reset by peer) 2018-09-22T03:27:29Z Lycurgus quit (Quit: Exeunt) 2018-09-22T03:27:40Z housel joined #lisp 2018-09-22T03:30:00Z jkordani_ quit (Read error: Connection reset by peer) 2018-09-22T03:36:02Z _whitelogger quit (Remote host closed the connection) 2018-09-22T03:37:55Z stylewarning: aeth: PPC64 is certainly not supported on SBCL 2018-09-22T03:38:16Z _whitelogger joined #lisp 2018-09-22T03:39:43Z stylewarning: I’ll have to try CCL! 2018-09-22T03:40:17Z aeth: stylewarning: I'm guessing that it might be on a different git branch and I would ask in #sbcl 2018-09-22T03:40:40Z aeth: https://ccl.clozure.com/ does say ppc64 though 2018-09-22T03:40:55Z stylewarning: I talked to the guy who is in the middle of trying to port PPC64 on SBCL. Hasn’t made it past cold-init 2018-09-22T03:41:00Z aeth: ah 2018-09-22T03:43:11Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T03:44:48Z aeth: I expected "in progress" to mean more than that 2018-09-22T03:45:57Z stylewarning: Likewise 2018-09-22T03:47:17Z FreeBirdLjj joined #lisp 2018-09-22T03:48:12Z dented42 joined #lisp 2018-09-22T03:49:05Z Bike quit (Quit: Lost terminal) 2018-09-22T03:51:22Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T03:51:36Z FreeBirdLjj joined #lisp 2018-09-22T03:57:09Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-22T03:58:57Z meepdeew quit (Remote host closed the connection) 2018-09-22T04:01:30Z Fare quit (Ping timeout: 252 seconds) 2018-09-22T04:02:58Z orivej quit (Ping timeout: 245 seconds) 2018-09-22T04:03:21Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T04:03:34Z Fare joined #lisp 2018-09-22T04:06:25Z FreeBirdLjj joined #lisp 2018-09-22T04:08:36Z anewuser quit (Quit: anewuser) 2018-09-22T04:10:51Z Fare quit (Ping timeout: 252 seconds) 2018-09-22T04:15:04Z suskeyhose quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-22T04:18:29Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T04:19:53Z FreeBirdLjj joined #lisp 2018-09-22T04:21:51Z Fare joined #lisp 2018-09-22T04:25:16Z Oladon quit (Quit: Leaving.) 2018-09-22T04:32:04Z holycow quit (Quit: Lost terminal) 2018-09-22T04:36:09Z Fare quit (Ping timeout: 252 seconds) 2018-09-22T04:39:38Z Pixel_Outlaw joined #lisp 2018-09-22T04:43:18Z fortitude quit (Ping timeout: 252 seconds) 2018-09-22T04:44:34Z rumbler31 joined #lisp 2018-09-22T04:48:52Z rumbler31 quit (Ping timeout: 246 seconds) 2018-09-22T04:51:12Z beach: Good morning everyone! 2018-09-22T04:51:20Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T04:51:23Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-22T04:51:28Z no-defun-allowed: morning beach 2018-09-22T04:52:06Z makomo quit (Ping timeout: 260 seconds) 2018-09-22T04:52:08Z beach: plathrop: No, not every language must be written in another language. In fact, languages are not written in anything at all. Implementations are. 2018-09-22T04:52:34Z beach: pfdietz: Eclector replaces the SICL reader that I refer to in my papers. 2018-09-22T04:54:39Z beach: no-defun-allowed: So you have made a decision? 2020 it is? 2018-09-22T04:55:10Z no-defun-allowed: yes, 2020 it is 2018-09-22T04:55:21Z beach: Great! 2018-09-22T04:57:07Z smokeink joined #lisp 2018-09-22T05:05:02Z FreeBirdLjj joined #lisp 2018-09-22T05:06:37Z Blackbeard: What are your favorite Lisp programs or games or scripts 2018-09-22T05:07:21Z aeth: stumpwm 2018-09-22T05:07:37Z aeth: at the very least, most used 2018-09-22T05:07:54Z Blackbeard: yeah 😃 it is awesome 2018-09-22T05:08:16Z no-defun-allowed: do metacircular evaluators count? i like those. 2018-09-22T05:09:04Z smokeink quit (Ping timeout: 240 seconds) 2018-09-22T05:14:26Z FreeBirdLjj quit (Ping timeout: 244 seconds) 2018-09-22T05:18:37Z eminhi joined #lisp 2018-09-22T05:22:35Z LdBeth: Just Clozure CL 2018-09-22T05:23:18Z no-defun-allowed: after an hour i got shodan.io giving me lots of results using the powers of BISECTION and COORDINATES and things 2018-09-22T05:24:29Z no-defun-allowed: the only downside is i couldn't get drakma to replicate the requests so i have to run curl ): 2018-09-22T05:25:54Z smokeink joined #lisp 2018-09-22T05:27:31Z eminhi quit (Quit: leaving) 2018-09-22T05:31:26Z SenasOzys quit (Read error: Connection reset by peer) 2018-09-22T05:31:31Z no-defun-allowed: writing my own mass scanner seems more feasible than getting this to work reliably and quickly 2018-09-22T05:33:25Z housel quit (Read error: Connection reset by peer) 2018-09-22T05:33:55Z housel joined #lisp 2018-09-22T05:35:12Z SenasOzys joined #lisp 2018-09-22T05:35:52Z sauvin joined #lisp 2018-09-22T05:40:06Z steiner quit (Remote host closed the connection) 2018-09-22T05:40:23Z steiner joined #lisp 2018-09-22T05:48:38Z smokeink quit (Remote host closed the connection) 2018-09-22T05:49:50Z smokeink joined #lisp 2018-09-22T06:13:09Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-22T06:14:03Z nowhere_man joined #lisp 2018-09-22T06:18:03Z _whitelogger quit (Remote host closed the connection) 2018-09-22T06:20:15Z _whitelogger joined #lisp 2018-09-22T06:25:53Z weltung joined #lisp 2018-09-22T06:30:31Z nowhereman joined #lisp 2018-09-22T06:30:55Z nowhereman is now known as Guest25977 2018-09-22T06:31:34Z nowhere_man quit (Ping timeout: 240 seconds) 2018-09-22T06:34:29Z jack_rabbit joined #lisp 2018-09-22T06:46:04Z FreeBirdLjj joined #lisp 2018-09-22T06:50:40Z shka_ joined #lisp 2018-09-22T06:54:30Z orivej joined #lisp 2018-09-22T06:55:00Z TMA joined #lisp 2018-09-22T07:16:13Z mfiano: Shinmera: Not just cl-jpg, but retrospectiff can't read all TIFFs, and cl-tga can't read all Targa files. All image format parsers in CL are either slow or incomplete, and sometimes the speed is due to a dependency, like with the pngload case. I really wish the quality of these codes were a bit better, but I have no time to fix pngload, let alone write a faster chipz replacement. Actually there are a few 2018-09-22T07:16:15Z mfiano: alternatives to chipz, and they are all horrible :/ 2018-09-22T07:19:52Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-22T07:26:07Z shka_: why chipz is slow? 2018-09-22T07:27:21Z |3b|: presumably wasn't written for speed 2018-09-22T07:27:30Z shka_: eh 2018-09-22T07:27:39Z |3b|: (and written in a way that isn't obvious how to optimize after the fact) 2018-09-22T07:28:37Z |3b|: also a bit hard to write that sort of thing quickly without sacrificing safety 2018-09-22T07:28:50Z |3b|: and/or readability 2018-09-22T07:29:50Z |3b|: lots of random array accesses at calculated indices, so hard to statically guarantee they are in-bounds 2018-09-22T07:30:14Z |3b|: (at least i think that was one of the problems with it) 2018-09-22T07:31:27Z razzy quit (Read error: No route to host) 2018-09-22T07:35:41Z angavrilov joined #lisp 2018-09-22T07:36:49Z |3b| wonders if asdf memoizes/caches results while figuring out how to load a system. loading a system with 4.5k deps, which are nodes of a fairly shallow tree, and wondering if it is recalculating the interior nodes every time it sees them or not 2018-09-22T07:37:04Z |3b|: (takes ~14sec to figure out how to load the whole thing) 2018-09-22T07:37:40Z |3b| realizes this is a silly thing to want to do, blame android :/ 2018-09-22T07:38:08Z |3b|: probably doesn't help that i'm including some of the intermediate deps twice... i should probably fix that 2018-09-22T07:42:31Z vlatkoB joined #lisp 2018-09-22T07:49:20Z la_mettrie joined #lisp 2018-09-22T07:51:33Z la_mettrie: which lisp dialect to study? which paperbook about lisp to buy? (i have no particular use for the language, just interested in reading about different languages. i am a linux/unix user, inspired by the traditional hacker culture, emacs user) 2018-09-22T07:52:21Z varjag joined #lisp 2018-09-22T07:52:21Z beach: la_mettrie: This channel is dedicated to Common Lisp. 2018-09-22T07:52:29Z beach: la_mettrie: So that's what we recommend. 2018-09-22T07:52:45Z jackdaniel: minion: tell la_mettrie about pcl 2018-09-22T07:52:45Z minion: la_mettrie: direct your attention towards pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005). 2018-09-22T07:52:53Z jackdaniel: minion: tell la_mettrie about paip 2018-09-22T07:52:53Z minion: la_mettrie: paip: Paradigms of Artificial Intelligence Programming 2018-09-22T07:53:03Z jackdaniel: oh, minion does not have a link to paip 2018-09-22T07:53:23Z beach: la_mettrie: If you already know how to program in some other language, then PCL is usually what people here recommend. 2018-09-22T07:53:26Z jackdaniel: la_mettrie: paip was recently released so you can read it online for free 2018-09-22T07:55:12Z la_mettrie: okay, thanks 2018-09-22T07:55:23Z la_mettrie: what is the argument for choosing the common lisp? 2018-09-22T07:55:51Z jackdaniel: standard, relatively big ecosystem, rich set of compilers, performance 2018-09-22T07:56:18Z la_mettrie: okay, fine 2018-09-22T08:00:53Z beach: Excellent object system. 2018-09-22T08:01:52Z beach: Friendly and helpful IRC channel. :) 2018-09-22T08:02:20Z TMA: an often overlooked asset is the condition system 2018-09-22T08:02:23Z la_mettrie: okay, so the latest edition of pcl is from 2005 2018-09-22T08:02:51Z Shinmera: and it still is a fine book 2018-09-22T08:02:58Z beach: la_mettrie: There are some thing that did not exist then, but mostly it is still valid. 2018-09-22T08:03:26Z beach: la_mettrie: We recommend Quicklisp to install systems, and most people here probably use Emacs with SLIME. 2018-09-22T08:03:27Z la_mettrie: ok, just wanted to be sure that 2005 is the latest edition so that i do not grab an older one 2018-09-22T08:06:27Z no-defun-allowed: you can install slime via quicklisp (or emacs's package manager) which may be easier to maintain 2018-09-22T08:06:58Z Shinmera: la_mettrie: one note is that the book will talk about a "Lisp Box". This is outdated and likely won't work anymore. There is a replacement however, called Portacle. https://portacle.github.io 2018-09-22T08:07:14Z beach: Good point. 2018-09-22T08:23:45Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-22T08:24:23Z vlatkoB quit (Remote host closed the connection) 2018-09-22T08:25:38Z edgar-rft joined #lisp 2018-09-22T08:25:43Z vlatkoB joined #lisp 2018-09-22T08:27:37Z Patzy quit (Ping timeout: 246 seconds) 2018-09-22T08:29:18Z random-nick joined #lisp 2018-09-22T08:29:47Z Patzy joined #lisp 2018-09-22T08:32:41Z robotoad quit (Quit: robotoad) 2018-09-22T08:34:20Z razzy joined #lisp 2018-09-22T08:35:47Z kenu quit (Ping timeout: 240 seconds) 2018-09-22T08:40:57Z ggole joined #lisp 2018-09-22T08:42:33Z steiner quit (Remote host closed the connection) 2018-09-22T08:44:36Z ggole quit (Client Quit) 2018-09-22T08:46:53Z ggole joined #lisp 2018-09-22T08:49:41Z wigust joined #lisp 2018-09-22T08:52:08Z orivej quit (Ping timeout: 245 seconds) 2018-09-22T08:57:57Z marvin2 quit (Ping timeout: 252 seconds) 2018-09-22T09:09:58Z robotoad joined #lisp 2018-09-22T09:16:05Z orivej joined #lisp 2018-09-22T09:17:08Z |3b|: ah, most of the time seems to be quicklisp reading its list of systems to see if it knows about them :/ 2018-09-22T09:17:11Z igemnace quit (Quit: WeeChat 2.2) 2018-09-22T09:17:24Z makomo joined #lisp 2018-09-22T09:18:06Z varjag quit (Ping timeout: 260 seconds) 2018-09-22T09:45:57Z Kundry_Wag joined #lisp 2018-09-22T09:50:24Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-22T09:52:56Z la_mettrie left #lisp 2018-09-22T09:54:39Z astalla joined #lisp 2018-09-22T09:54:51Z robotoad quit (Quit: robotoad) 2018-09-22T10:04:38Z pjb joined #lisp 2018-09-22T10:08:35Z steiner joined #lisp 2018-09-22T10:09:45Z makomo: morning 2018-09-22T10:12:43Z doubledup joined #lisp 2018-09-22T10:12:44Z moei quit (Ping timeout: 252 seconds) 2018-09-22T10:13:16Z random-nick quit (Read error: Connection reset by peer) 2018-09-22T10:23:52Z _death: beach: hey.. https://gist.github.com/death/c7f001b0ac900d66d0ddb989318d6d09 2018-09-22T10:24:44Z dddddd joined #lisp 2018-09-22T10:27:57Z beach: Is it a bug report? 2018-09-22T10:28:33Z beach: I OK, I see it. 2018-09-22T10:28:57Z beach: In a few minutes I need to leave to go pick up drmeister and his family at the airport. I'll deal with it later. Thanks. 2018-09-22T10:29:03Z beach: You may have to remind me. 2018-09-22T10:31:00Z shka_: drmeister and his family? 2018-09-22T10:31:03Z shka_: cool :-) 2018-09-22T10:31:24Z beach: Yes, wife and daughter. 2018-09-22T10:32:28Z shka_: i should check out status of clasp again 2018-09-22T10:34:34Z Shinmera: a lot has changed, but also not very much 2018-09-22T10:34:57Z Shinmera: tons of systems in ql don't run yet and installation is still a pain 2018-09-22T10:35:42Z shka_: well, clearly it is not mature 2018-09-22T10:35:58Z shka_: it would be fullish to expect that 2018-09-22T10:36:10Z beach: "foolish"? 2018-09-22T10:36:26Z shka_: foolish 2018-09-22T10:36:57Z shka_: sorry 2018-09-22T10:37:05Z shka_ crawls into the corner 2018-09-22T10:37:06Z Essadon joined #lisp 2018-09-22T10:37:10Z jackdaniel is a fool of expectations from clasp ;-) 2018-09-22T10:37:56Z shka_: well, constructing brand new implementation of common lisp is non trivial task 2018-09-22T10:38:06Z shka_: it takes time 2018-09-22T10:39:06Z jackdaniel: brand new is exaggeration, sicl is brand new in a sense of being build from scratch 2018-09-22T10:40:11Z beach: And it is taking time too. :) 2018-09-22T10:40:18Z beach: Anyway, time to leave. 2018-09-22T10:41:01Z pjb: Branding is usually rather instantaneous. Building sicl, some parts get old before others are even designed :-) 2018-09-22T10:50:39Z random-nick joined #lisp 2018-09-22T10:54:03Z _whitelogger quit (Remote host closed the connection) 2018-09-22T10:56:18Z _whitelogger joined #lisp 2018-09-22T11:05:43Z Bike joined #lisp 2018-09-22T11:10:28Z scymtym quit (Ping timeout: 245 seconds) 2018-09-22T11:10:34Z astalla quit (Ping timeout: 240 seconds) 2018-09-22T11:17:19Z paule32 joined #lisp 2018-09-22T11:17:26Z paule32: hello 2018-09-22T11:17:55Z paule32: i have following code, but there is a typo? i can't find the misstake: 2018-09-22T11:17:55Z paule32: http://dpaste.com/2B6XB0J 2018-09-22T11:18:29Z paule32: i use clisp, at the moment 2018-09-22T11:19:20Z makomo: you didn't quote your list 2018-09-22T11:19:48Z shka_: yup 2018-09-22T11:19:57Z shka_: also, couple of other issues 2018-09-22T11:19:58Z paule32: (setq Bakterium '( ... ? 2018-09-22T11:20:10Z makomo: paule32: yes, otherwise it will try to evaluate that form 2018-09-22T11:20:11Z paule32: i know, the syntax/layout 2018-09-22T11:20:25Z makomo: since it's a list, it thinks it's an operator call 2018-09-22T11:20:26Z shka_: quote won't help 2018-09-22T11:20:41Z shka_: because at the end, there is a format call 2018-09-22T11:21:00Z paule32: i would like a string 2018-09-22T11:21:01Z makomo: shka_: it depends what he wants to do with that format 2018-09-22T11:21:07Z shka_: right 2018-09-22T11:21:12Z makomo: paule32: then just enter a string, don't use format 2018-09-22T11:21:31Z paule32: makomo: ~ for word wrap ok? 2018-09-22T11:21:44Z makomo: shka_: that's probably not his intention though, but i'm still leaving the possibility 2018-09-22T11:21:51Z makomo: paule32: oh, i didn't know that was a format directive 2018-09-22T11:22:12Z makomo: erm 2018-09-22T11:22:34Z paule32: i saw in google, and somewhere ~ as wrap 2018-09-22T11:22:56Z makomo: http://www.lispworks.com/documentation/lw445/CLHS/Body/22_cec.htm 2018-09-22T11:23:12Z makomo: use the up arrow to find the whole list of format directives 2018-09-22T11:23:49Z makomo: hm, this is ~I, does just ~ even exist? 2018-09-22T11:25:09Z paule32: i would not ident the text, only wrap, around the screen at column 80 2018-09-22T11:25:44Z makomo: right, but ~ is definitely not the correct directive 2018-09-22T11:25:57Z makomo: directives are of the form "~" 2018-09-22T11:26:24Z paule32: have an other idea? 2018-09-22T11:26:31Z no-defun-allowed: ~ by itself is a syntax error, ~~ writes a ~ 2018-09-22T11:26:47Z makomo: paule32: take a look at all of the format directives and find what you need http://www.lispworks.com/documentation/lw445/CLHS/Body/22_c.htm 2018-09-22T11:27:01Z makomo: look under "printing", "pretty-printing", "layout control" 2018-09-22T11:36:13Z vaporatorius joined #lisp 2018-09-22T11:42:18Z moei joined #lisp 2018-09-22T11:44:03Z steiner quit (Remote host closed the connection) 2018-09-22T11:46:13Z pjb: makomo: ~ alone doesn't exist as format specifier. But #\~ #\newline do! 2018-09-22T11:46:44Z makomo: pjb: oh wow, sneaky 2018-09-22T11:46:45Z pjb: makomo: (format nil "~") #| ERROR: Premature end of control string "~" |# 2018-09-22T11:47:14Z pjb: (format nil "~ 2018-09-22T11:47:14Z pjb: ") #| --> "" | 2018-09-22T11:47:42Z pjb: makomo: you can also use the : and @ flags with #\~ #\newline. 2018-09-22T11:47:49Z makomo: here it is http://www.lispworks.com/documentation/lw445/CLHS/Body/22_cic.htm 2018-09-22T11:47:55Z makomo: pjb: understandable 2018-09-22T11:49:07Z paule32 quit (Ping timeout: 240 seconds) 2018-09-22T11:50:45Z paule32 joined #lisp 2018-09-22T11:52:50Z paule32: i have terrible internet connection 2018-09-22T11:53:11Z paule32: was something up, at last minutes? 2018-09-22T11:53:16Z pjb: Nothing. 2018-09-22T11:58:15Z phoe: Is there any cross-implementation means of defining GC hooks? 2018-09-22T11:58:35Z phoe: trivial-garbage doesn't seem to have them. 2018-09-22T11:58:37Z shka_: what kind of hook? 2018-09-22T11:59:51Z phoe: I want to run some code after each time the GC is triggered. 2018-09-22T12:00:07Z paule32 quit (Ping timeout: 240 seconds) 2018-09-22T12:00:17Z shka_: eh, i don't think that there is anything for that 2018-09-22T12:02:00Z Bike: not all gcs are even the same. you might have an incremental or generational gc 2018-09-22T12:02:00Z vibs29 quit (Read error: Connection reset by peer) 2018-09-22T12:03:33Z no-defun-allowed: You could hypothetically have no gc, the standard says nothing about requiring one. 2018-09-22T12:03:40Z no-defun-allowed: Implementors aren't stupid though. 2018-09-22T12:05:45Z vibs29 joined #lisp 2018-09-22T12:07:28Z paule32 joined #lisp 2018-09-22T12:07:53Z esrse joined #lisp 2018-09-22T12:12:06Z paule32 quit (Ping timeout: 252 seconds) 2018-09-22T12:12:35Z pjb: no-defun-allowed: Movitz doesn't have a GC (on purpose, since it's a kernel implementation implementation). 2018-09-22T12:15:07Z no-defun-allowed: I thought it had a stop-copy gc. 2018-09-22T12:18:48Z pjb: Well Mezzano superseded it somehow… 2018-09-22T12:19:56Z no-defun-allowed: Mezzano has a generational gc. 2018-09-22T12:20:06Z no-defun-allowed: Movitz will still have a very odd place in my heart though. 2018-09-22T12:21:07Z pjb: no-defun-allowed: If only we could make a few clones of ourselves, to take Movitz and fly with it! 2018-09-22T12:22:00Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-22T12:22:36Z no-defun-allowed: (dotimes (foo 20) (make-instance 'pjb)) 2018-09-22T12:30:17Z scymtym joined #lisp 2018-09-22T12:31:27Z phoe: (dotimes (foo 20) (copy-lisper pjb)) 2018-09-22T12:31:34Z phoe: let's make this generic 2018-09-22T12:31:58Z phoe: since structs have a copy facility 2018-09-22T12:33:22Z phoe: ...damn, I just realized that I'm facing a problem that could easily be solved using continuations - if I only could save the stack somewhere and somehow 2018-09-22T12:36:03Z no-defun-allowed: Load cffi and use setjmp. 2018-09-22T12:38:50Z SenasOzys joined #lisp 2018-09-22T12:41:32Z flip214: phoe: https://www.cliki.net/CPS, http://quickdocs.org/cl-cont/ 2018-09-22T12:42:03Z flip214: or, if you don't want that library, just pass lambdas around... ;) 2018-09-22T12:42:34Z shrdlu68 joined #lisp 2018-09-22T12:44:06Z pioneer42 joined #lisp 2018-09-22T12:44:22Z phoe: flip214: yes, I'm thinking of it right now 2018-09-22T12:56:22Z smokeink quit (Remote host closed the connection) 2018-09-22T12:58:01Z smokeink joined #lisp 2018-09-22T13:00:18Z anewuser joined #lisp 2018-09-22T13:01:06Z marvin2 joined #lisp 2018-09-22T13:13:25Z shka_: phoe: what are you trying to do? 2018-09-22T13:14:23Z asarch joined #lisp 2018-09-22T13:23:56Z phoe: shka_: implement a reader for a Lisp-like protocol, except the reader may be interrupted at any point (for example, by NIL returned from READ-CHAR-NO-HANG) and it should be possible for it to remember what it read so far and restart reading when input is available again 2018-09-22T13:29:05Z shka_: phoe: and protocol is in the form of...? 2018-09-22T13:29:13Z phoe: S-expressions, more or less 2018-09-22T13:29:25Z phoe: parens, symbols, strings, numbers 2018-09-22T13:29:42Z shka_: ok 2018-09-22T13:30:57Z ober joined #lisp 2018-09-22T13:30:57Z phoe: in the worst case, I'll just remember the part of the string that was read so far, save it somewhere, and then start reading again from a concatenated stream 2018-09-22T13:31:17Z shka_: that may not be enough 2018-09-22T13:31:53Z phoe: if we read "(1 2" then we save that string somewhere, so later we may read "3 4 5)" which will give us the resulting (1 23 4 5) 2018-09-22T13:32:15Z makomo_ joined #lisp 2018-09-22T13:32:42Z shka_: and what if 3 4 5 will be read multiple times? 2018-09-22T13:32:45Z shka_: is it allowed? 2018-09-22T13:32:57Z phoe: multiple times? what do you mean? 2018-09-22T13:33:22Z phoe: let's assume that we're reading from a network socket - when a character is read from that socket's stream, it won't be read again from it 2018-09-22T13:33:39Z shka_: yup 2018-09-22T13:33:53Z varjag joined #lisp 2018-09-22T13:34:43Z pioneer42 quit (Quit: Leaving.) 2018-09-22T13:35:08Z makomo quit (Ping timeout: 252 seconds) 2018-09-22T13:36:27Z pjb: You could invent a reader macro to read parts several times. 2018-09-22T13:36:59Z pjb: eg. (1 2 #3[ 4 5 6 ]) reads as (1 2 4 5 6 4 5 6 4 5 6). 2018-09-22T13:38:05Z pjb: But for a character by character repeatition, it'd be harder, because in your example, the prefix would already be parsed… 2018-09-22T13:38:25Z varjag quit (Ping timeout: 246 seconds) 2018-09-22T13:39:13Z phoe: Yep, my issue is that I need to be able to return control any time READ-CHAR-NO-HANG returns NIL, meaning, there's no character available for reading. 2018-09-22T13:39:33Z phoe: And then I need to be able to rewind the stack and continue reading from the exact same position and state. 2018-09-22T13:40:09Z shka_: reading after nil? 2018-09-22T13:40:36Z phoe: No - once there is some input on the character stream again. 2018-09-22T13:40:48Z shka_: ah, you don't want to block? 2018-09-22T13:40:51Z phoe: Once READ-CHAR-NO-HANG is able to return non-NIL. 2018-09-22T13:40:54Z phoe: Yes - I don't want to block. 2018-09-22T13:41:06Z shka_: well, ok 2018-09-22T13:41:11Z phoe: If I could just call a blocking READ or anything similar, that wouldn't be an issue. 2018-09-22T13:41:27Z shka_: and threads is no-go? 2018-09-22T13:42:57Z tfeb joined #lisp 2018-09-22T13:43:33Z rumbler31 joined #lisp 2018-09-22T13:45:38Z phoe: I don't want to create hundreds+ of threads just to make sure my connectivity works 2018-09-22T13:45:45Z shrdlu68: shka_: I tried a tree thing: https://gist.github.com/shrdlu68/117d02da6390d9ff8d45dd719412f17e 2018-09-22T13:45:57Z phoe: Since it's possible that I will have hundreds+ of simultaneous connections 2018-09-22T13:46:54Z shka_: ok 2018-09-22T13:51:44Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T13:52:00Z FreeBirdLjj joined #lisp 2018-09-22T13:53:32Z lnostdal joined #lisp 2018-09-22T13:57:09Z rumbler31 quit (Remote host closed the connection) 2018-09-22T13:58:16Z razzy: x 2018-09-22T13:59:45Z phoe: Error: The variable X is unbound. [Condition of type UNBOUND-VARIABLE] 2018-09-22T14:05:41Z Lycurgus joined #lisp 2018-09-22T14:08:17Z cl-arthur joined #lisp 2018-09-22T14:08:30Z steiner joined #lisp 2018-09-22T14:09:41Z nullniverse joined #lisp 2018-09-22T14:13:36Z shka_: shrdlu68: and? 2018-09-22T14:14:00Z shka_: no compression i tink 2018-09-22T14:14:05Z edgar-rft quit (Remote host closed the connection) 2018-09-22T14:14:05Z shka_: so it should not by any better 2018-09-22T14:14:06Z asarch: An off-topic question: what is comment in CSS? 2018-09-22T14:15:10Z phoe: /* this */ 2018-09-22T14:15:16Z asarch: Thank you! 2018-09-22T14:15:28Z asarch: Any good IRC client written in Common Lisp? 2018-09-22T14:15:28Z phoe: /* no problem (: */ 2018-09-22T14:15:35Z shrdlu68: shka_: It's better, memory-wise. But performance is horrible. 2018-09-22T14:15:47Z phoe: asarch: a user-facing client? I don't know, might be none 2018-09-22T14:15:48Z oni-on-ion: css: Found premature EOF or No input files 2018-09-22T14:15:55Z phoe: but there's plenty of libraries 2018-09-22T14:16:18Z shka_: shrdlu68: worse then my version? 2018-09-22T14:16:33Z asarch: There is a small one called ii 2018-09-22T14:16:38Z asarch: Written in C? 2018-09-22T14:17:22Z asarch: I'm planning to write a web interface for an IRC client written in Common Lisp so I could check all the messages from any PC connected in the LAN 2018-09-22T14:17:55Z shrdlu68: shka_: Lemme compare them. 2018-09-22T14:18:24Z oni-on-ion: asarch: sounds cool. i had a very pleasant time setting up cl-irc for a similar purpose the other day. 2018-09-22T14:26:34Z phoe: How can I create an output stream that forever blocks? I need it for testing purposes. 2018-09-22T14:27:09Z phoe: In other words, I want to create a modified string output stream that, for example, outputs "a b" and then hangs indefinitely (READ-CHAR-NO-HANG returns NIL on it). 2018-09-22T14:27:42Z shka_: phoe: flexistreams? 2018-09-22T14:28:09Z phoe: shka_: what exactly about flexistreams? 2018-09-22T14:28:47Z shka_: phoe: in-memory flexistream 2018-09-22T14:29:19Z phoe: sure, but the in-memory flexistream will AFAIK behave the same way a string output stream behaves 2018-09-22T14:29:26Z phoe: which is to output everything, and then return EOF 2018-09-22T14:29:28Z shka_: oh 2018-09-22T14:29:36Z phoe: I want it NOT to return an EOF and instead hang 2018-09-22T14:29:41Z phoe: More or less like a network socket stream 2018-09-22T14:29:42Z shka_: hmmmm 2018-09-22T14:29:52Z phoe: Except I don't want to create network sockets for that, since that would be a hack 2018-09-22T14:30:10Z shrdlu68: shka_: Interestingly, converting to a vector instead of a class improves performance 2x. 2018-09-22T14:30:36Z oni-on-ion: net work socks 2018-09-22T14:30:47Z shka_: shrdlu68: struct should be equally good 2018-09-22T14:30:49Z shrdlu68: Actually that might have to do with the fact that each child node is only created when needed. 2018-09-22T14:31:43Z shka_: well, yes 2018-09-22T14:31:52Z shka_: but there is more going on here 2018-09-22T14:32:21Z shka_: if i was you, i would try to introduce bitmask into my tree node and use this to compress vector 2018-09-22T14:32:25Z phoe: wait, not an output stream - an input stream 2018-09-22T14:32:29Z phoe: agh! I always confuse these two 2018-09-22T14:36:40Z nullniverse quit (Quit: Undertaking stack overflow prevention) 2018-09-22T14:42:07Z SenasOzys quit (Ping timeout: 240 seconds) 2018-09-22T14:43:27Z Posterdati joined #lisp 2018-09-22T14:43:29Z Posterdati: hi 2018-09-22T14:44:14Z Posterdati: please help, how can I handle :ENOTCONN error during a socket connection? 2018-09-22T14:46:11Z dlowe: I'm pretty sure that means you've set the socket to non-blocking mode before connecting 2018-09-22T14:46:45Z dlowe: no, that's EINPROGESS 2018-09-22T14:47:20Z dlowe: you're getting ENOTCONN from connect()? 2018-09-22T14:49:02Z Posterdati: yes, but cannot intercept it in the client thread with handler-case 2018-09-22T14:49:44Z Posterdati: I placed in the handler-case (iolib/sockets:socket-not-connected-error () ... ) 2018-09-22T14:50:14Z Posterdati: it didn't work when connection was established and server went away 2018-09-22T14:50:44Z ggole: IIRC connect(2) doesn't generate ENOTCONN, read(2) does 2018-09-22T14:50:57Z dlowe: try handling iolib:socket-error and iolib:hangup 2018-09-22T14:51:17Z ggole: (and similar calls like recv, I guess) 2018-09-22T14:51:34Z dlowe: https://github.com/dlowe-net/orcabot/blob/master/src/main.lisp#L115 2018-09-22T14:51:34Z Posterdati: but why :ENOTCONN error then? 2018-09-22T14:51:45Z dlowe: I handle a lot of different potential network errors 2018-09-22T14:52:01Z dlowe: ENOTCONN is when you try to use a socket and it's not connected 2018-09-22T14:52:09Z Posterdati: yes 2018-09-22T14:52:20Z dlowe: you don't want a socket to be connected if you're using it for connecting 2018-09-22T14:52:23Z Posterdati: and it is correct, I had this error because the server went away 2018-09-22T14:54:05Z gector quit (Read error: Connection reset by peer) 2018-09-22T14:54:44Z flip214: phoe: you can use a CONCATENATED-STREAM and have first a STRING-OUTPUT-STREAM and then some pipe or socket 2018-09-22T14:54:54Z Posterdati: mmmh I placed iolib/sockets:socket-error in the thread, but fallen in to the debugger... 2018-09-22T14:54:58Z gector joined #lisp 2018-09-22T14:56:29Z phoe: flip214: yes, but employing sockets for that looks pretty un-clean to me 2018-09-22T14:57:51Z rumbler31 joined #lisp 2018-09-22T15:02:36Z flip214: phoe: well, how about your own stream class that just never returns data? 2018-09-22T15:02:49Z phoe: flip214: I'm thinking of that 2018-09-22T15:02:57Z phoe: writing a trivial Gray stream class and methods on it 2018-09-22T15:03:00Z _death: it's unlikely that you actually want something that "hangs indefinitely".. you can use gray streams to define a stream that makes sense 2018-09-22T15:04:15Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-22T15:04:48Z Posterdati: people! I founf the problem, I used remote-host and remote-port on the error handler-case on the dead socket :), now I removed them and it worked! 2018-09-22T15:04:54Z flip214: phoe: if you would be so kind as to create a github project with a stream that outputs _only_ what gets written to it? a "pipe stream"? 2018-09-22T15:04:56Z Posterdati: thanks people!!! 2018-09-22T15:06:00Z phoe: flip214: I'll think of it, sure 2018-09-22T15:06:06Z flip214: thanks 2018-09-22T15:09:04Z pierpal quit (Ping timeout: 246 seconds) 2018-09-22T15:11:47Z cl-arthur quit (Ping timeout: 240 seconds) 2018-09-22T15:18:45Z shrdlu68: flip214: Isn't this the natural function of streams? 2018-09-22T15:19:02Z shrdlu68: i.e output == input ? 2018-09-22T15:21:30Z igemnace joined #lisp 2018-09-22T15:32:50Z phoe: flip214: https://github.com/smithzvk/cl-plumbing 2018-09-22T15:32:56Z phoe: make-pipe 2018-09-22T15:35:26Z hitchhikingcoder joined #lisp 2018-09-22T15:36:09Z phoe: and https://github.com/phoe/everblocking-stream 2018-09-22T15:36:16Z pjb: Posterdati: you may want to save the remote-host and remote-port before it closes! 2018-09-22T15:36:28Z shrdlu68 left #lisp 2018-09-22T15:38:54Z orivej quit (Ping timeout: 252 seconds) 2018-09-22T15:39:27Z shifty quit (Ping timeout: 252 seconds) 2018-09-22T15:41:44Z orivej joined #lisp 2018-09-22T15:42:14Z steiner quit (Remote host closed the connection) 2018-09-22T15:58:48Z gravicappa joined #lisp 2018-09-22T16:05:31Z hitchhikingcoder quit (Remote host closed the connection) 2018-09-22T16:05:46Z cl-arthur joined #lisp 2018-09-22T16:05:50Z orivej quit (Ping timeout: 252 seconds) 2018-09-22T16:06:04Z Lycurgus quit (Quit: Exeunt) 2018-09-22T16:09:34Z wavem joined #lisp 2018-09-22T16:09:36Z buffergn0me joined #lisp 2018-09-22T16:13:25Z Balooga_ joined #lisp 2018-09-22T16:13:50Z Kevslinger quit (Quit: Connection closed for inactivity) 2018-09-22T16:22:42Z meepdeew joined #lisp 2018-09-22T16:25:30Z Oladon joined #lisp 2018-09-22T16:26:15Z xrash joined #lisp 2018-09-22T16:26:42Z meepdeew quit (Remote host closed the connection) 2018-09-22T16:27:41Z pierpal joined #lisp 2018-09-22T16:41:05Z Pixel_Outlaw joined #lisp 2018-09-22T16:50:47Z orivej joined #lisp 2018-09-22T16:51:43Z esrse quit (Ping timeout: 245 seconds) 2018-09-22T16:54:20Z housel quit (Remote host closed the connection) 2018-09-22T16:54:50Z housel joined #lisp 2018-09-22T16:57:50Z Fare joined #lisp 2018-09-22T17:00:32Z rumbler31 joined #lisp 2018-09-22T17:04:34Z wavem quit (Remote host closed the connection) 2018-09-22T17:05:27Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-22T17:10:22Z khisanth_ quit (Ping timeout: 272 seconds) 2018-09-22T17:12:56Z orivej quit (Ping timeout: 252 seconds) 2018-09-22T17:21:29Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-22T17:22:06Z FreeBirdLjj joined #lisp 2018-09-22T17:22:50Z khisanth_ joined #lisp 2018-09-22T17:26:16Z FreeBirdLjj quit (Ping timeout: 246 seconds) 2018-09-22T17:26:50Z Fare quit (Ping timeout: 272 seconds) 2018-09-22T17:29:38Z oni-on-ion quit (Quit: WeeChat 1.9.1) 2018-09-22T17:32:16Z Oladon quit (Quit: Leaving.) 2018-09-22T17:36:13Z Zipheir joined #lisp 2018-09-22T17:38:07Z Zipheir left #lisp 2018-09-22T17:38:37Z Balooga_ quit (Quit: Balooga_) 2018-09-22T17:42:35Z robotoad joined #lisp 2018-09-22T17:43:42Z Folkol joined #lisp 2018-09-22T17:44:15Z housel quit (Remote host closed the connection) 2018-09-22T17:44:45Z housel joined #lisp 2018-09-22T17:44:49Z Ekho joined #lisp 2018-09-22T17:46:32Z aydio joined #lisp 2018-09-22T17:48:22Z phoe: flip214: eww 2018-09-22T17:48:31Z phoe: this cl-plumbing thing actually creates a Unix pipe 2018-09-22T17:48:37Z phoe: that's not a OS-portable solution 2018-09-22T17:49:28Z phoe: ...or rather, wait, it does have two versions - a gray streams one and a non-gray-streams one 2018-09-22T17:53:46Z scymtym quit (Ping timeout: 260 seconds) 2018-09-22T17:55:40Z Jesin quit (Quit: Leaving) 2018-09-22T17:58:28Z Nephromancer joined #lisp 2018-09-22T17:58:41Z phadthai quit (Remote host closed the connection) 2018-09-22T18:02:04Z phadthai joined #lisp 2018-09-22T18:02:27Z troydm quit (Ping timeout: 240 seconds) 2018-09-22T18:03:11Z phoe: ...with the Gray streams one being bugged 2018-09-22T18:15:02Z vaporatorius quit (Quit: Leaving) 2018-09-22T18:18:10Z makomo_ is now known as makomo 2018-09-22T18:18:34Z fchurca joined #lisp 2018-09-22T18:20:03Z fchurca: 'ullo 2018-09-22T18:22:26Z scymtym joined #lisp 2018-09-22T18:38:06Z angavrilov quit (Remote host closed the connection) 2018-09-22T18:43:58Z Balooga_ joined #lisp 2018-09-22T18:54:26Z Guest25977 quit (Ping timeout: 260 seconds) 2018-09-22T18:54:44Z rozenglass joined #lisp 2018-09-22T18:56:57Z oni-on-ion joined #lisp 2018-09-22T19:01:20Z rumbler31 joined #lisp 2018-09-22T19:05:45Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-22T19:09:13Z pjb: phoe: if you want a pure gray stream pipe, have a loot at com.informatimago.clext.pipe 2018-09-22T19:09:43Z mkolenda quit (Remote host closed the connection) 2018-09-22T19:10:05Z mkolenda joined #lisp 2018-09-22T19:12:29Z flip214: phoe: ah yeah, thanks 2018-09-22T19:13:31Z phoe: flip214: I actually made a PR there that fixes some gray-streams stuff 2018-09-22T19:20:45Z flip214: phoe: awww, that uses polling.... well, for testing it won't matter 2018-09-22T19:22:47Z orivej joined #lisp 2018-09-22T19:29:22Z anewuser quit (Quit: anewuser) 2018-09-22T19:32:30Z troydm joined #lisp 2018-09-22T19:35:41Z Arcaelyx_ joined #lisp 2018-09-22T19:36:23Z phoe: flip214: yep, it could use condition variables 2018-09-22T19:37:01Z Arcaelyx quit (Ping timeout: 260 seconds) 2018-09-22T19:39:49Z paule32 joined #lisp 2018-09-22T19:40:18Z azimut_ joined #lisp 2018-09-22T19:40:39Z paule32: hello 2018-09-22T19:40:39Z paule32: i need your help 2018-09-22T19:40:39Z paule32: http://dpaste.com/0ZEF17T 2018-09-22T19:40:40Z paule32: in the code, there is somewhere a colon error (clisp) 2018-09-22T19:40:45Z paule32: excepeted the unbound variables 2018-09-22T19:40:46Z paule32: atm 2018-09-22T19:40:53Z paule32: can you help me please? 2018-09-22T19:41:22Z buffergn0me quit (Remote host closed the connection) 2018-09-22T19:41:22Z Jesin joined #lisp 2018-09-22T19:41:57Z buffergn0me joined #lisp 2018-09-22T19:42:22Z azimut quit (Ping timeout: 272 seconds) 2018-09-22T19:43:24Z phoe: flip214: https://github.com/smithzvk/cl-plumbing/issues/3 2018-09-22T19:51:15Z doubledup quit (Quit: Leaving) 2018-09-22T19:51:54Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-22T19:52:30Z pjb: paule32: what colon error? 2018-09-22T19:52:38Z pjb: on the other hand, you have a parenthesis error. 2018-09-22T19:54:11Z paule32: sbcl 2018-09-22T19:54:20Z paule32: illegal terminating character after a colon: #\; Line: 514, Column: 1, File-Position: 21863 2018-09-22T19:54:38Z pjb: paule32: also, you're confusing program and data. 2018-09-22T19:56:25Z pjb: paule32: nope. [1]> (load "/tmp/a.lisp") ;; Loading file /tmp/a.lisp ... *** - READ: input stream # ends within an object. Last opening parenthesis probably in line 413. 2018-09-22T19:56:25Z pjb: 2018-09-22T19:57:13Z paule32: yes 2018-09-22T19:57:13Z paule32: i can't see it 2018-09-22T19:57:18Z paule32: i check over 2018-09-22T19:57:22Z paule32: but fail to find 2018-09-22T20:00:04Z smokeink quit (Remote host closed the connection) 2018-09-22T20:00:42Z smokeink joined #lisp 2018-09-22T20:00:55Z pjb: paule32: that's because you're not using emacs. 2018-09-22T20:01:07Z phoe: or any other editor that counts parentheses for you 2018-09-22T20:01:12Z sauvin_ joined #lisp 2018-09-22T20:01:38Z sauvin_ quit (Max SendQ exceeded) 2018-09-22T20:01:46Z pjb: paule32: but you can be smart: (with-open-file (source #P"/tmp/a.lisp") (loop for sexp := (read source nil source) :until (eq sexp source) :do (print sexp))) 2018-09-22T20:02:32Z paule32: i have open emacs 2018-09-22T20:02:39Z paule32: what's next? 2018-09-22T20:03:27Z sauvin quit (Ping timeout: 240 seconds) 2018-09-22T20:05:18Z pjb: C-h t 2018-09-22T20:05:26Z pjb: to read the tutorial (1/2 hour). 2018-09-22T20:05:38Z pjb: C-h t = type control-h and then t 2018-09-22T20:09:10Z ggole quit (Quit: ggole) 2018-09-22T20:09:41Z dented42 joined #lisp 2018-09-22T20:11:11Z Kevslinger joined #lisp 2018-09-22T20:12:00Z dented42 quit (Client Quit) 2018-09-22T20:14:27Z lemonpepper24 joined #lisp 2018-09-22T20:17:18Z Folkol quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2018-09-22T20:18:01Z jack_rabbit joined #lisp 2018-09-22T20:19:21Z sauvin_ joined #lisp 2018-09-22T20:21:26Z fchurca quit (Quit: Page closed) 2018-09-22T20:22:38Z sauvin_ quit (Max SendQ exceeded) 2018-09-22T20:23:02Z sauvin_ joined #lisp 2018-09-22T20:23:56Z sauvin_ quit (Max SendQ exceeded) 2018-09-22T20:24:21Z sauvin_ joined #lisp 2018-09-22T20:29:32Z thetemplar joined #lisp 2018-09-22T20:32:18Z rumbler31 joined #lisp 2018-09-22T20:33:20Z thetemplar quit (Quit: WeeChat 2.2) 2018-09-22T20:36:08Z thetemplar joined #lisp 2018-09-22T20:36:43Z rumbler31 quit (Ping timeout: 245 seconds) 2018-09-22T20:38:45Z pierpal quit (Ping timeout: 244 seconds) 2018-09-22T20:39:34Z Jesin quit (Quit: Leaving) 2018-09-22T20:41:37Z sauvin_ is now known as Sauvin 2018-09-22T20:43:02Z Fare joined #lisp 2018-09-22T20:47:03Z paule32: so, found 2018-09-22T20:48:29Z paule32: it is an advanture programming with lisp, if you have much code - that means, if you have forget a open or closed parenthese, you fail 2018-09-22T20:48:36Z paule32: but, lispers are hard 2018-09-22T20:48:55Z paule32: they felt in love with ( and ) :-D 2018-09-22T20:49:19Z djeis[m]: I would hate having to manage parens by hand, it would quickly drive me nuts. 2018-09-22T20:49:39Z djeis[m]: So I let my editor do that bit. 2018-09-22T20:49:50Z thetemplar: paredit in emacs? 2018-09-22T20:50:20Z paule32: it's not i can't programming, but i am new in lisp and emacs 2018-09-22T20:50:23Z pierpal joined #lisp 2018-09-22T20:50:47Z adlai: thetemplar: what is jeopardy? 2018-09-22T20:50:58Z paule32: and i found, lisp is good for learning systems 2018-09-22T20:51:23Z no-defun-allowed: Morning everyone 2018-09-22T20:51:33Z paule32: morning 2018-09-22T20:51:35Z aeth: Managing parentheses by hand isn't bad. 2018-09-22T20:51:38Z djeis[m]: paule32: it is difficult at first, but if you learn some paren management packages it’ll become a lot easier. 2018-09-22T20:51:46Z aeth: Managing your own parentheses while refactoring is painful. 2018-09-22T20:52:13Z djeis[m]: paule32: after a little while the parens stop bothering you altogether. 2018-09-22T20:52:23Z aeth: if I want to move the (* 3 4) in (+ 1 2 (* 3 4)) I don't want to have to do anything other than move the ( before the * 2018-09-22T20:52:29Z adlai: managing them by hand builds character, and eventually you lose patience with unbased chars 2018-09-22T20:52:37Z no-defun-allowed: If Gerald Sussman can do it on a blackboard, it can't be that bad. 2018-09-22T20:52:45Z djeis[m]: Fair lol 2018-09-22T20:52:51Z aeth: no-defun-allowed: did someone check his work to make sure they were always balanced? 2018-09-22T20:53:13Z adlai: it's well-known that MIT students sleep during lectures 2018-09-22T20:53:48Z no-defun-allowed: aeth: Edwin would blink the parens in the book I presume 2018-09-22T20:54:20Z no-defun-allowed: On the blackboards he was checking himself. He only missed one in lecture 2b. 2018-09-22T20:54:43Z paule32: 2b - class 12? 2018-09-22T20:54:46Z pierpal quit (Ping timeout: 244 seconds) 2018-09-22T20:55:09Z aeth: The problem with parentheses is that the level they're at often changes, especially if you e.g. refactor (+ 1 2 (* 3 4)) into (let ((a 0) (b 1) (c 2) (d 4)) (+ a b (* c d))) 2018-09-22T20:55:19Z aeth: It can quickly become slow if you don't use something like paredit 2018-09-22T20:56:09Z paule32: if you speak over programming or program speed ? 2018-09-22T20:56:34Z dented42 joined #lisp 2018-09-22T20:57:20Z paule32: is the stack of clisp limited to 10 pushes ? 2018-09-22T20:57:26Z Jesin joined #lisp 2018-09-22T20:57:40Z no-defun-allowed: 10 is quite small. 2018-09-22T20:58:02Z no-defun-allowed: I'd say usually program stacks are around 1000 calls long in interpreters. 2018-09-22T20:58:23Z paule32: i test it here with (setq foo '() '() ... ) and clisp crashed at 10 2018-09-22T21:01:20Z no-defun-allowed: I think it would just be annoyed you told it to set (quote nil). 2018-09-22T21:01:41Z no-defun-allowed: (setq/f happens in variable+value pairs.) 2018-09-22T21:02:08Z makomo: paule32: that's not how you're supposed to use SETQ. the syntax is (setq ...) 2018-09-22T21:02:31Z aeth: paule32: what were you trying to do? 2018-09-22T21:03:26Z pierpal joined #lisp 2018-09-22T21:03:39Z paule32: aeth: natural text recognition 2018-09-22T21:03:54Z makomo: paule32: clisp didn't crash, it just signalled an error 2018-09-22T21:03:59Z paule32: aeth: at this stage: a simple grammar tester 2018-09-22T21:04:25Z no-defun-allowed: Yeah, it's very rare for a Lisp system to crash. 2018-09-22T21:04:47Z no-defun-allowed: `(loop collect 42)` is a good way to try to crash it. 2018-09-22T21:05:59Z makomo: paule32: also, the size of the stack is irrelevant here, because who knows how the parameters are actually passed (it's an implementation detail) 2018-09-22T21:06:20Z paule32: yes 2018-09-22T21:06:35Z aeth: no-defun-allowed: It's very easy to get a Lisp system to crash. 2018-09-22T21:06:42Z aeth: no-defun-allowed: (safety 0) in SBCL 2018-09-22T21:06:49Z makomo: lul 2018-09-22T21:07:10Z aeth: well, it won't crash, it'll just say "the integrity of this image has been compromised. continuing with fingers crossed" or whatever the exact message is. 2018-09-22T21:07:28Z aeth: I don't want to torture a poor image just to get the exact quote 2018-09-22T21:07:47Z paule32: does clisp compile native? 2018-09-22T21:08:15Z makomo: paule32: i'm not sure, but i don't think so. SBCL does 2018-09-22T21:08:54Z aeth: Ah, it's "The integrity of this image is possibly compromised.\nContinuing with fingers crossed.\n" I looked it up in the source. 2018-09-22T21:09:03Z no-defun-allowed: Clisp uses bytecode. 2018-09-22T21:10:02Z White_Flame: paule32: there's the CALL-ARGUMENTS-LIMIT constant that will tell you the max things you can pass to a function 2018-09-22T21:10:18Z White_Flame: however, SETQ isn't a function; it's a special form 2018-09-22T21:11:32Z Bike: when paul came around here last january it was suggested they read a book about the language, but they don't seem to have gotten around to it. 2018-09-22T21:11:47Z Bike: maybe there's a german (?) language text, i don't know. Something. 2018-09-22T21:12:08Z makomo: heh :p 2018-09-22T21:12:22Z paule32: my plan is it (atm), to have a database of nouns, vocals ... these what you can see in the paste, i try to place it into real database like mysql 2018-09-22T21:12:26Z aeth: SBCL and CCL and CMUCL are native compilers. ABCL compiles to JVM bytecode. CLISP compiles to its own bytecode. ECL compiles to C, but has a backup interpreter. 2018-09-22T21:12:44Z Bike: It's just annoying seeing everybody trying here when none of it is getting through. 2018-09-22T21:12:48Z White_Flame: paule32: honestly, Prolog is probably what you want to play with, as it combines symbolic inference with a database 2018-09-22T21:12:50Z Shinmera: hasn't it been a year of unheeded advice by now? 2018-09-22T21:13:20Z Bike: at least nineteen months 2018-09-22T21:13:26Z aeth: I haven't seen paule32 here in a long time. Months. 2018-09-22T21:13:32Z paule32: White_Flame: no, prolog is 0 or 1 logic 2018-09-22T21:13:38Z White_Flame: wat 2018-09-22T21:13:41Z paule32: i need something between there 2018-09-22T21:13:59Z paule32: hi aeth, sorry 2018-09-22T21:14:42Z no-defun-allowed: paule32: that's verilog if I had to guess 2018-09-22T21:15:22Z adlai: paule32: ever heard of the dedekind cut? 2018-09-22T21:15:45Z paule32: i have mess time with programming a ide for programming 2018-09-22T21:15:59Z paule32: my intention is to support lisp 2018-09-22T21:16:07Z paule32: ansi standard 2018-09-22T21:16:25Z paule32: a moment please, i will make screen shoot's ... 2018-09-22T21:17:32Z adlai: paule32: skip the screenshot, study p-adic arithmetic and see if you can't find a more efficiently verifiable proof of Fermat's Last. 2018-09-22T21:17:54Z adlai: trust me, Top Men are hard at work on "supporting lisp ansi standard ide programming" or whatever it is. 2018-09-22T21:18:16Z paule32: adlai: it is more a wrapper 2018-09-22T21:18:24Z paule32: like a syntax checker 2018-09-22T21:19:03Z paule32: this is the intro: 2018-09-22T21:19:04Z paule32: http://i.imgur.com/hctQ3TR.png 2018-09-22T21:19:53Z paule32: this is the setup packager: 2018-09-22T21:19:54Z paule32: http://i.imgur.com/KeDCGWB.png 2018-09-22T21:20:12Z Bike: don't be too mean, adlai... 2018-09-22T21:20:28Z adlai does his very best, but thank you for the encouragement :) 2018-09-22T21:21:18Z paule32: this is the project site: 2018-09-22T21:21:25Z paule32: http://i.imgur.com/aObg7ql.png 2018-09-22T21:22:44Z no-defun-allowed: Oooh, those colours don't match will. 2018-09-22T21:22:48Z paule32: this is a sample of editor : 2018-09-22T21:22:52Z paule32: http://i.imgur.com/xwGML66.png 2018-09-22T21:23:15Z White_Flame: paule32: CL is a language steeped in issuing custom commands, from the language to the editor. I don't think colors, buttons, & forms will garner much interest, but rather any useful helper call that those invoke 2018-09-22T21:23:49Z aeth: no-defun-allowed: it's done without any consideration of aesthetics or design... very 90s retro 2018-09-22T21:23:50Z no-defun-allowed: The colour choices are quite concerning. 2018-09-22T21:23:52Z White_Flame: unless you have something genera-like, where all those elements are active Lisp objects 2018-09-22T21:23:53Z paule32: this is the designer: 2018-09-22T21:23:54Z paule32: http://i.imgur.com/cC3XGdp.png 2018-09-22T21:23:56Z aeth: no-defun-allowed: maybe that will come back in style 2018-09-22T21:24:17Z White_Flame: I'm reminded to eat more fruits in my diet, for some reason 2018-09-22T21:25:22Z no-defun-allowed: aeth: hopefully they'll keep to monochrome 2018-09-22T21:25:37Z paule32: the last: http://i.imgur.com/LrBQoQa.png 2018-09-22T21:25:42Z paule32: some settings 2018-09-22T21:26:11Z no-defun-allowed: I don't really want to open that one come to think of it. 2018-09-22T21:26:48Z makomo: LOL 2018-09-22T21:29:22Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-22T21:29:36Z no-defun-allowed: minion: tell Blackbeard about cl-decentralise please 2018-09-22T21:29:37Z minion: Blackbeard: cl-decentralise: cl-decentralise is a consensus building protocol designed for fast prototyping and development 2018-09-22T21:29:54Z no-defun-allowed: There you go. (They asked in a different room and I'm too lazy to type that out.) 2018-09-22T21:30:59Z Blackbeard: I see 2018-09-22T21:31:33Z jealousmonk joined #lisp 2018-09-22T21:32:40Z housel quit (Remote host closed the connection) 2018-09-22T21:33:04Z Blackbeard: is this it? 2018-09-22T21:33:16Z Blackbeard: netfarm / cl-decentralise · GitLab - https://gitlab.com/netfarm.gq/cl-decentralise 2018-09-22T21:34:11Z no-defun-allowed: Yes 2018-09-22T21:34:24Z Fare quit (Ping timeout: 252 seconds) 2018-09-22T21:34:38Z Blackbeard: I don't understand it 😂 2018-09-22T21:34:48Z Blackbeard: I am stupid 😭 2018-09-22T21:35:07Z housel joined #lisp 2018-09-22T21:41:17Z no-defun-allowed: To understand it, you must balance weasels on a rake while reading the sources. 2018-09-22T21:55:16Z lemonpepper24 quit (Ping timeout: 260 seconds) 2018-09-22T21:56:32Z vlatkoB quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 2018-09-22T22:09:11Z pjb: paule32: there are no parenthesis in lisp! 2018-09-22T22:09:20Z pjb: paule32: (car '(1 2 3)) #| --> 1 |# See, no parenthesis! 2018-09-22T22:09:44Z paule32: yes, you know, my bad english 2018-09-22T22:10:16Z pjb: paule32: Try: https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/sedit/index.html 2018-09-22T22:10:43Z pjb: And English is irrelevant here. Even in French, there are no parenthesis in lisp. 2018-09-22T22:10:56Z White_Flame: or since you're already an emacs user, install paredit 2018-09-22T22:12:50Z pjb: paule32: you should read PAIP. Check notably chapter 4. 2018-09-22T22:16:22Z paule32: #| block comment |# 2018-09-22T22:16:39Z paule32: can it be used in multiple lines? 2018-09-22T22:17:06Z gravicappa quit (Ping timeout: 252 seconds) 2018-09-22T22:17:18Z White_Flame: yes. Also, maybe these sorts of questions are more appropriate for #clschool than #lisp 2018-09-22T22:18:10Z stnutt left #lisp 2018-09-22T22:18:20Z Blackbeard: #'no-defun-allowed: yes master yoda🤔 2018-09-22T22:21:08Z aeth: pjb: That's an oversimplification 2018-09-22T22:22:01Z aeth: Lisp has both #\( and #\) 2018-09-22T22:22:13Z pjb: aeth: that's and advice. Learning the GPS should help somebody who wants to do NLP but don't seem to care for learning lisp before trying to write NLP in lisp… 2018-09-22T22:22:28Z pjb: aeth: lisp sources are sexps, not texts. 2018-09-22T22:22:40Z pjb: aeth: cf. https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/sedit/index.html 2018-09-22T22:22:46Z White_Flame: then the source doe lisp source is text? :-P 2018-09-22T22:22:50Z White_Flame: s/doe/for/ 2018-09-22T22:23:07Z pjb: White_Flame: not the source. The human-readable serialised form. 2018-09-22T22:23:20Z pjb: White_Flame: you could also serialize the sexps into ASN.1 BER format. 2018-09-22T22:23:21Z White_Flame: you mean human-written 2018-09-22T22:23:34Z pjb: PRINT. 2018-09-22T22:23:35Z White_Flame: "serialized" tends to imply output, not input 2018-09-22T22:23:43Z White_Flame: and "source" tends to imply input 2018-09-22T22:24:28Z random-nick quit (Ping timeout: 246 seconds) 2018-09-22T22:27:10Z pjb: White_Flame: you can insert elements in a list without tying parentheses. Try sedit. 2018-09-22T22:27:24Z White_Flame: yes, but that's not "source code" 2018-09-22T22:27:28Z White_Flame: those are runtime effects 2018-09-22T22:27:34Z pjb: White_Flame: now, granted, sedit would need a new command to insert a new list. I took the easy path, by using the lisp reader. 2018-09-22T22:29:12Z paule32: can i provide you the executable for alpha testing ? 2018-09-22T22:30:06Z pjb: Nope. I only take sources. (or their human and machine-readable serialized forms) 2018-09-22T22:30:54Z paule32: ok, i will make a zip 2018-09-22T22:31:04Z razzy: no-defun-allowed: i like your humour 2018-09-22T22:32:59Z rumbler31 joined #lisp 2018-09-22T22:37:04Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-22T22:38:14Z pjb: paule32: it would be better to put it on github, and let us clone your repo. 2018-09-22T22:38:26Z pjb: paule32: because you will keep ask questions, in newer versions! 2018-09-22T22:43:25Z no-defun-allowed: Thankyou. 2018-09-22T22:46:29Z White_Flame: pjb: btw, #. #+ and #- are part of source code, but are not part of serialized "lisp source" as you refer to 2018-09-22T22:46:42Z pjb: White_Flame: only of the serialized form. 2018-09-22T22:46:50Z White_Flame: they don't serialize from sexprs 2018-09-22T22:47:07Z pjb: Of course, as everything in lisp, you have a lisp in the reader. 2018-09-22T22:47:12Z White_Flame: again, "serialization" implies an output to serialized form 2018-09-22T22:47:26Z White_Flame: from an internal form 2018-09-22T22:47:35Z pjb: Quoting serialized forms is done with " not with ' ! 2018-09-22T22:47:57Z White_Flame: I would argue they are not serialized 2018-09-22T22:48:00Z pjb: White_Flame: you can look in com.informatimago, there are a few examples of serializing #. #+ #- 2018-09-22T22:48:00Z White_Flame: they're source 2018-09-22T22:48:21Z White_Flame: sure, you may have created sexpr-level constructs for those, but they aren't part of the lisp core 2018-09-22T22:50:26Z White_Flame: lisp source is text. lisp forms & expressions are conses & such 2018-09-22T22:56:10Z xrash quit (Ping timeout: 272 seconds) 2018-09-22T22:56:45Z pjb: White_Flame: and furthermore, #+ #- are very problematic. Try to write a documentation generator on serialized forms full of #+ #-! 2018-09-22T22:58:33Z xrash joined #lisp 2018-09-22T23:00:40Z White_Flame: (they're not serialized!) 2018-09-22T23:01:04Z White_Flame: serialized means there's some canonical object form that has been converted into a serial form 2018-09-22T23:01:14Z White_Flame: but the textual form IS the canonical input in the first place 2018-09-22T23:01:56Z White_Flame: true it is a "serial" format, but it is not "serialized" from any prior data structure 2018-09-22T23:03:46Z shka_ quit (Ping timeout: 272 seconds) 2018-09-22T23:05:04Z dented42 joined #lisp 2018-09-22T23:07:15Z dented42 quit (Client Quit) 2018-09-22T23:08:36Z hitchhikingcoder joined #lisp 2018-09-22T23:16:02Z aydio quit (Quit: WeeChat 2.2) 2018-09-22T23:16:20Z dented42 joined #lisp 2018-09-22T23:17:19Z pjb: White_Flame: this is what you're believing. 2018-09-22T23:17:45Z pjb: White_Flame: there's a data structure in your brain, and again, in com.informatimago and elsewhere, there's code to generate them! 2018-09-22T23:18:19Z White_Flame: there isn't a data structure in my brain, and even if there were, it's external to the lisp image, so the interface between is still the original source 2018-09-22T23:18:46Z White_Flame: and yes, tools to generate it fall into a turing tarpit argument 2018-09-22T23:21:31Z Guest25977 joined #lisp 2018-09-22T23:21:39Z rtypo joined #lisp 2018-09-22T23:25:50Z orivej quit (Ping timeout: 252 seconds) 2018-09-22T23:27:41Z hitchhikingcoder quit (Remote host closed the connection) 2018-09-23T00:00:01Z kozy quit (Remote host closed the connection) 2018-09-23T00:00:56Z kozy joined #lisp 2018-09-23T00:06:07Z megalography joined #lisp 2018-09-23T00:08:39Z Roy_Fokker joined #lisp 2018-09-23T00:10:01Z housel quit (Remote host closed the connection) 2018-09-23T00:10:32Z housel joined #lisp 2018-09-23T00:21:47Z Sauvin quit (Ping timeout: 240 seconds) 2018-09-23T00:25:00Z Nephromancer quit (Quit: Connection closed for inactivity) 2018-09-23T00:26:10Z varjag joined #lisp 2018-09-23T00:27:30Z paule32: sodele 2018-09-23T00:27:36Z paule32: here you have: 2018-09-23T00:27:37Z paule32: https://github.com/paule32/dBase4LinuxIDE 2018-09-23T00:31:32Z sauvin joined #lisp 2018-09-23T00:33:37Z rumbler31 joined #lisp 2018-09-23T00:35:37Z Balooga_ quit (Quit: Balooga_) 2018-09-23T00:37:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-23T00:38:38Z Fare joined #lisp 2018-09-23T00:38:47Z Balooga_ joined #lisp 2018-09-23T00:40:06Z pjb quit (Ping timeout: 264 seconds) 2018-09-23T00:40:40Z megalography quit (Ping timeout: 272 seconds) 2018-09-23T00:48:23Z varjag quit (Ping timeout: 245 seconds) 2018-09-23T00:50:13Z jmercouris joined #lisp 2018-09-23T00:54:15Z asarch: What is the keystroke to open multiple files in Emacs? 2018-09-23T00:54:48Z jmercouris: asarch: I don't think that's possible 2018-09-23T00:55:13Z megalography joined #lisp 2018-09-23T00:55:25Z jmercouris: I think it is only possible via dired 2018-09-23T00:55:32Z asarch: Thank you 2018-09-23T00:55:36Z asarch: Thank you very much :-) 2018-09-23T00:58:24Z astronavt quit (Ping timeout: 272 seconds) 2018-09-23T01:00:46Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-23T01:01:00Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-23T01:04:51Z phenoble quit (Ping timeout: 252 seconds) 2018-09-23T01:07:02Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-23T01:07:32Z phenoble joined #lisp 2018-09-23T01:11:16Z makomo quit (Ping timeout: 260 seconds) 2018-09-23T01:13:47Z aeth: asarch: You can open multiple files if you can express them as a wildcard, so C-x C-f ~/your/path/*lisp RET will open all of your lisp files in that directory. 2018-09-23T01:16:05Z Blackbeard: aeth: 😱awesome 2018-09-23T01:16:15Z astronavt_ joined #lisp 2018-09-23T01:18:00Z jmercouris: Assuming you don't have ivy or others... 2018-09-23T01:19:17Z astronavt__ joined #lisp 2018-09-23T01:19:42Z astronavt_ quit (Read error: Connection reset by peer) 2018-09-23T01:22:16Z Essadon quit (Quit: Qutting) 2018-09-23T01:23:54Z fiddlerwoaroof joined #lisp 2018-09-23T01:33:52Z astronavt__ quit (Ping timeout: 272 seconds) 2018-09-23T01:36:18Z Balooga_ quit (Quit: Balooga_) 2018-09-23T01:37:21Z jealousmonk quit (Quit: Leaving) 2018-09-23T01:38:09Z moei quit (Quit: Leaving...) 2018-09-23T01:41:20Z moei joined #lisp 2018-09-23T01:41:35Z rumbler31 joined #lisp 2018-09-23T01:41:38Z Oladon joined #lisp 2018-09-23T01:42:43Z Balooga_ joined #lisp 2018-09-23T01:44:58Z robotoad quit (Quit: robotoad) 2018-09-23T01:45:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-23T02:05:50Z robotoad joined #lisp 2018-09-23T02:06:27Z Balooga_ quit (Quit: Balooga_) 2018-09-23T02:09:01Z Guest25977 quit (Ping timeout: 260 seconds) 2018-09-23T02:12:47Z jmercouris quit (Remote host closed the connection) 2018-09-23T02:15:54Z siraben joined #lisp 2018-09-23T02:19:38Z flazh quit (Ping timeout: 252 seconds) 2018-09-23T02:21:52Z lemonpepper24 joined #lisp 2018-09-23T02:29:19Z dented42 joined #lisp 2018-09-23T02:30:26Z esrse joined #lisp 2018-09-23T02:31:29Z kushal quit (Remote host closed the connection) 2018-09-23T02:31:47Z kushal joined #lisp 2018-09-23T02:34:28Z dddddd quit (Remote host closed the connection) 2018-09-23T02:35:35Z dented42 quit (Ping timeout: 252 seconds) 2018-09-23T02:40:44Z Balooga_ joined #lisp 2018-09-23T02:47:31Z lemonpepper24 quit (Ping timeout: 260 seconds) 2018-09-23T03:01:26Z beach: Good morning everyone! 2018-09-23T03:01:47Z no-defun-allowed: Morning beach 2018-09-23T03:02:07Z beach: asarch: There is beirc. I am told it needs some maintenance. 2018-09-23T03:03:30Z Balooga_ quit (Quit: Balooga_) 2018-09-23T03:04:17Z Balooga_ joined #lisp 2018-09-23T03:08:27Z megalography quit (Ping timeout: 240 seconds) 2018-09-23T03:18:24Z dented42 joined #lisp 2018-09-23T03:19:18Z flazh joined #lisp 2018-09-23T03:24:45Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-23T03:25:33Z dented42 joined #lisp 2018-09-23T03:29:13Z pierpal quit (Quit: Poof) 2018-09-23T03:29:28Z pierpal joined #lisp 2018-09-23T03:33:31Z pierpal quit (Read error: Connection reset by peer) 2018-09-23T03:38:47Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-23T03:39:00Z pierpal joined #lisp 2018-09-23T03:42:22Z rumbler31 joined #lisp 2018-09-23T03:43:25Z megalography joined #lisp 2018-09-23T03:44:33Z ggole joined #lisp 2018-09-23T03:46:27Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-23T03:46:33Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-23T03:50:14Z Guest25977 joined #lisp 2018-09-23T03:50:56Z pierpal quit (Read error: Connection reset by peer) 2018-09-23T03:51:10Z pierpal joined #lisp 2018-09-23T03:54:32Z Guest25977 quit (Read error: Connection reset by peer) 2018-09-23T03:54:38Z nowhere_man joined #lisp 2018-09-23T03:55:52Z dented42 joined #lisp 2018-09-23T03:58:30Z dented42 quit (Client Quit) 2018-09-23T04:05:16Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-23T04:05:35Z dented42 joined #lisp 2018-09-23T04:05:48Z wigust quit (Ping timeout: 252 seconds) 2018-09-23T04:14:01Z Oladon quit (Quit: Leaving.) 2018-09-23T04:14:13Z acolarh quit (Ping timeout: 245 seconds) 2018-09-23T04:17:41Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-23T04:23:22Z dented42 joined #lisp 2018-09-23T04:23:39Z lemonpepper24 joined #lisp 2018-09-23T04:24:01Z acolarh joined #lisp 2018-09-23T04:24:07Z ealfonso quit (Disconnected by services) 2018-09-23T04:24:22Z ealfonso joined #lisp 2018-09-23T04:28:21Z ealfonso: I feel very insecure whenever I just run into 404s and domain errors when trying to find the website of a recommended CL library 2018-09-23T04:28:26Z terpri quit (Ping timeout: 260 seconds) 2018-09-23T04:31:08Z ealfonso: https://stackoverflow.com/questions/123234/what-is-the-best-sql-library-for-use-in-common-lisp points to CLSQL (http://clsql.b9.com/ => not found), google search for CLSQL => https://www.cliki.net/clsql => http://clsql.kpe.io/documentation.html => not found 2018-09-23T04:34:17Z |3b|: lots of libs are old, and also lots of links to them :/ 2018-09-23T04:34:38Z flazh quit (Ping timeout: 245 seconds) 2018-09-23T04:36:14Z PuercoPop: ealfonso: the new domain is kpe.io 2018-09-23T04:36:24Z PuercoPop: but its been down for a couple of days as least 2018-09-23T04:36:32Z |3b|: expired last month :/ 2018-09-23T04:37:22Z beach: _death: Fixed! Thanks! 2018-09-23T04:38:10Z PuercoPop: But you should be able to load clsql from quicklisp regardless of the domain 2018-09-23T04:39:47Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-23T04:40:41Z ealfonso: PuercoPop thanks, I'll give it a try 2018-09-23T04:43:52Z rtypo quit (Ping timeout: 246 seconds) 2018-09-23T04:44:56Z flazh joined #lisp 2018-09-23T04:52:15Z pierpal quit (Remote host closed the connection) 2018-09-23T05:12:46Z Bike quit (Quit: Lost terminal) 2018-09-23T05:40:34Z dented42 quit (Read error: Connection reset by peer) 2018-09-23T05:41:37Z dented42 joined #lisp 2018-09-23T05:43:08Z rumbler31 joined #lisp 2018-09-23T05:47:45Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-23T05:59:08Z dented42 quit (Read error: Connection reset by peer) 2018-09-23T06:00:31Z doubledup joined #lisp 2018-09-23T06:01:40Z dented42 joined #lisp 2018-09-23T06:11:35Z Tordek quit (Ping timeout: 250 seconds) 2018-09-23T06:12:04Z dale joined #lisp 2018-09-23T06:16:37Z Arcaelyx_ quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-23T06:18:14Z cobax joined #lisp 2018-09-23T06:25:27Z russellw: http://www.lispworks.com/documentation/HyperSpec/Body/f_search.htm - does the test default to eql? 2018-09-23T06:25:59Z Shinmera: yes 2018-09-23T06:26:23Z russellw: cool, thanks 2018-09-23T06:28:51Z Tordek joined #lisp 2018-09-23T06:29:38Z orivej joined #lisp 2018-09-23T06:30:39Z Siorai quit 2018-09-23T06:30:43Z Shinmera: clhs 17.2.1 2018-09-23T06:30:43Z specbot: Satisfying a Two-Argument Test: http://www.lispworks.com/reference/HyperSpec/Body/17_ba.htm 2018-09-23T06:30:54Z Shinmera: "If neither a :test nor a :test-not argument is supplied, it is as if a :test argument of #'eql was supplied." 2018-09-23T06:42:53Z vlatkoB joined #lisp 2018-09-23T06:45:18Z lemonpepper24 quit (Ping timeout: 252 seconds) 2018-09-23T06:48:34Z smokeink quit (Ping timeout: 240 seconds) 2018-09-23T06:51:48Z orivej quit (Ping timeout: 272 seconds) 2018-09-23T07:17:03Z makomo joined #lisp 2018-09-23T07:20:09Z igemnace quit (Quit: WeeChat 2.2) 2018-09-23T07:20:59Z paule32: hello 2018-09-23T07:21:24Z paule32: good morning @all 2018-09-23T07:22:48Z no-defun-allowed: hi paule32 2018-09-23T07:23:12Z paule32: have you download the codes? 2018-09-23T07:23:30Z no-defun-allowed: no 2018-09-23T07:23:49Z paule32: pjb is still sleeping? 2018-09-23T07:24:04Z cnx joined #lisp 2018-09-23T07:24:27Z no-defun-allowed: wanna find out? 2018-09-23T07:24:31Z cnx: hi are optional args evaluated from left to right? 2018-09-23T07:24:41Z paule32: haha, bet 2018-09-23T07:24:43Z paule32: :-) 2018-09-23T07:24:58Z no-defun-allowed: cnx: everything is left to right, so yes 2018-09-23T07:25:13Z cnx: i mean the fallback value? across all implementation? 2018-09-23T07:25:22Z White_Flame: cnx: and later optional args can refer to the value of prior optional args 2018-09-23T07:25:56Z cnx: ie it's always legal to (defun foo (&optional (bar 21) (baz (+ bar 34))) baz) 2018-09-23T07:26:23Z angavrilov joined #lisp 2018-09-23T07:26:40Z cnx: thanks, and are those fallback evaluated if the param is provided? 2018-09-23T07:27:14Z no-defun-allowed: yes 2018-09-23T07:27:27Z Shinmera: clhs 3.4.1.2 2018-09-23T07:27:27Z specbot: Specifiers for optional parameters: http://www.lispworks.com/reference/HyperSpec/Body/03_dab.htm 2018-09-23T07:27:37Z Shinmera: clhs 3.1.2.1.2.3 2018-09-23T07:27:38Z specbot: Function Forms: http://www.lispworks.com/reference/HyperSpec/Body/03_ababc.htm 2018-09-23T07:27:47Z cnx: so is it safe, to fallback to big compound data like (make-hash-table)? 2018-09-23T07:28:39Z no-defun-allowed: yes, i've done that before 2018-09-23T07:29:15Z no-defun-allowed: it's very useful for memoization actually 2018-09-23T07:29:17Z cnx: no worries for memory issue? 2018-09-23T07:29:17Z smokeink joined #lisp 2018-09-23T07:29:23Z cnx: thanks 2018-09-23T07:29:26Z cnx left #lisp 2018-09-23T07:30:05Z Shinmera: no-defun-allowed: ??? optional init-forms are not evaluated if the opitonal argument is given 2018-09-23T07:31:47Z no-defun-allowed: one moment 2018-09-23T07:31:54Z Shinmera: He's already gone (why do people do that?), but: ((lambda (&optional (a (print "a default"))) a) :a) 2018-09-23T07:32:11Z no-defun-allowed: i'm thinking of (defun foo (&optional bar (baz bar)) ...) (foo 2) 2018-09-23T07:32:20Z no-defun-allowed: baz is 2 2018-09-23T07:32:25Z Shinmera: sure 2018-09-23T07:33:09Z makomo: morning 2018-09-23T07:33:14Z Shinmera: anyway, as I linked (and I'm sure he didn't read) 3.4.1.2 is very clear about this 2018-09-23T07:34:04Z thetemplar joined #lisp 2018-09-23T07:43:51Z rumbler31 joined #lisp 2018-09-23T07:48:21Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-23T07:51:27Z kajo quit (Ping timeout: 244 seconds) 2018-09-23T07:54:34Z orivej joined #lisp 2018-09-23T07:56:43Z astalla joined #lisp 2018-09-23T07:58:52Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-23T08:00:40Z asarch quit (Quit: Leaving) 2018-09-23T08:02:00Z pjb joined #lisp 2018-09-23T08:04:11Z pjb: paule32: but there's no lisp in there! 2018-09-23T08:04:49Z no-defun-allowed: yeah paule32 there's no lisp 2018-09-23T08:04:52Z no-defun-allowed: hi pjb 2018-09-23T08:07:06Z pjb: hi (just passing, I've got a meeting to go to). 2018-09-23T08:10:52Z paule32: hi pjb 2018-09-23T08:11:17Z paule32: have you success with compiling? 2018-09-23T08:11:29Z GreaseMonkey joined #lisp 2018-09-23T08:11:51Z astalla quit (Ping timeout: 260 seconds) 2018-09-23T08:14:20Z pjb: paule32: Why would I want to compile it? This is #lisp, and there's no lisp code in it! 2018-09-23T08:15:22Z pjb: (furthermore, I'm on macOS, I would have to boot a linux box, and I won't have the time today). 2018-09-23T08:17:41Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-23T08:20:52Z no-defun-allowed: yeah where's the lisp at 2018-09-23T08:21:46Z housel quit (Read error: Connection reset by peer) 2018-09-23T08:31:50Z paule32: here, in the editor textbox: http://i.imgur.com/eXTW7hm.png 2018-09-23T08:31:54Z paule32: :-) 2018-09-23T08:33:19Z aeth: "+ 1 2 = 3" 2018-09-23T08:33:31Z paule32: wrong? 2018-09-23T08:33:33Z aeth: That's just confusing 2018-09-23T08:33:43Z White_Flame: I do appreciate that my prior comment was enshrined in the screenshot: https://i.imgur.com/cC3XGdp.png 2018-09-23T08:33:45Z aeth: paule32: it should be (+ 1 2) => 3 2018-09-23T08:34:15Z aeth: paule32: the infix "result" operator that's used in lisp documentation is "=>" so it isn't confused for a valid lisp function like = 2018-09-23T08:34:17Z paule32: ok, it is a fast programming message box 2018-09-23T08:34:23Z eschatologist joined #lisp 2018-09-23T08:35:24Z Balooga_ quit (Quit: Balooga_) 2018-09-23T08:35:40Z paule32: White_Flame: what? 2018-09-23T08:36:33Z no-defun-allowed: what the hell is this? 2018-09-23T08:36:42Z White_Flame: paule32: in the upper right corner 2018-09-23T08:37:07Z adlai: no-defun-allowed: i think paule32 is trying to make an IDE for teaching people how to use nested syntax? 2018-09-23T08:37:31Z adlai thought this was done better on the blackboard, last week 2018-09-23T08:38:04Z pjb: paule32: why doesn't it work on macOS? 2018-09-23T08:38:16Z no-defun-allowed: what the fuck is "+ 1 2"? 2018-09-23T08:38:33Z adlai: no-defun-allowed: skinned prefix notation 2018-09-23T08:38:50Z no-defun-allowed: i suppose 2018-09-23T08:38:52Z adlai: it works as long as there wasn't too much stuff to hold together! 2018-09-23T08:38:54Z pjb: paule32: but this is unrelated to your lisp programming problems and your NLP goal. 2018-09-23T08:39:06Z pjb: paule32: do you have a problem with this IDE? 2018-09-23T08:39:19Z no-defun-allowed: (+ 1 2) should be apply(op+, cons(1,cons(2,nil))) in prefix 2018-09-23T08:39:32Z no-defun-allowed: if you want a lisp, sl3.c is fun enough to hack 2018-09-23T08:39:38Z adlai should leave this to the professionals 2018-09-23T08:39:46Z White_Flame: or you could have fun with polish prefix notation 2018-09-23T08:40:02Z White_Flame: which "+ 1 2" might be, with a binary addition operator 2018-09-23T08:40:17Z White_Flame: vs "+ + 1 2 3" or "+ 1 + 2 3" 2018-09-23T08:40:36Z aeth: Don't confuse paule32 2018-09-23T08:40:47Z pjb: adlai: psychiatrist professionals? 2018-09-23T08:40:54Z White_Flame: those sorts of parsers are incredibly easy to write, and that's what I thought "+ 1 2 = 3" was implying at first 2018-09-23T08:41:17Z aeth: "(+ 1 2) => 3" is the correct way to write it, as you would expect to see it in the hyperspec examples. e.g. http://www.lispworks.com/documentation/HyperSpec/Body/f_pl.htm 2018-09-23T08:42:05Z aeth: based on those examples (+) returns 0 and everything else returns 1 or 1.0, though :-p 2018-09-23T08:43:19Z aeth: Its examples are very clearly for implementors. Do any of the replacements have a better examples section? 2018-09-23T08:43:59Z paule32: White_Flame: sorry, it comes to picture while i chat with #lisp, sorry, don't imagine it 2018-09-23T08:44:09Z Fare quit (Ping timeout: 244 seconds) 2018-09-23T08:44:30Z paule32: pjb: the ide is Qt5 based, Qt5 is a cross development framework for Mac, Linux, and Windows 2018-09-23T08:44:31Z White_Flame: anyway, my quote that was captured on the snapshot is still important to this whole thing as a whole 2018-09-23T08:44:42Z pjb: paule32: http://paste.scsys.co.uk/581827 2018-09-23T08:44:47Z aeth: White_Flame: ironic 2018-09-23T08:45:11Z adlai: pjb: there was this game i used to play on the toilet, years ago... basically the computer asked the person on the other side of the screen to route a PCB on its behalf. wonderful way to while away a constipated afternoon. 2018-09-23T08:45:32Z White_Flame: Flow Free or something? 2018-09-23T08:45:44Z adlai: quite possibly! 2018-09-23T08:46:01Z White_Flame: I played that tons when recovering from a concussion 2018-09-23T08:46:05Z adlai: yeah that's the gaussian integers version :D 2018-09-23T08:46:58Z paule32: haha 2018-09-23T08:47:18Z adlai: it can get quite frustrating, but then your constipation passes 2018-09-23T08:47:20Z paule32: i liked the qbasic game gorrilas on ms-dos 2018-09-23T08:58:23Z marvin2 quit (Ping timeout: 252 seconds) 2018-09-23T09:10:07Z paule32: [1]> (+ + 1 2) *** - +: NIL is not a number 2018-09-23T09:11:20Z no-defun-allowed: checks out 2018-09-23T09:11:27Z zooey quit (Ping timeout: 256 seconds) 2018-09-23T09:11:49Z zooey joined #lisp 2018-09-23T09:11:59Z paule32: Break 1 [2]> (+ (+ 1 2)) 2018-09-23T09:11:59Z paule32: 3 2018-09-23T09:15:13Z no-defun-allowed: also good 2018-09-23T09:17:21Z random-nick joined #lisp 2018-09-23T09:19:36Z cage_ joined #lisp 2018-09-23T09:24:38Z no-defun-allowed: paule32: in common lisp, + at the start of an expression and + in the rest are not equivalent 2018-09-23T09:24:47Z robotoad quit (Quit: robotoad) 2018-09-23T09:25:36Z no-defun-allowed: (+ ...) refers to the function +, whereas (... + ...) refers to the variable + which is defined by your REPL 2018-09-23T09:27:21Z Shinmera: please stop trying to help him, it is not productive. It's been close to two years of this guy getting advice in this channel and not heeding any of it 2018-09-23T09:27:40Z no-defun-allowed: alright then 2018-09-23T09:28:14Z doubledup quit (Quit: Leaving) 2018-09-23T09:28:35Z orivej quit (Ping timeout: 244 seconds) 2018-09-23T09:35:40Z marvin2 joined #lisp 2018-09-23T09:37:31Z xrash quit (Ping timeout: 246 seconds) 2018-09-23T09:40:29Z xrash joined #lisp 2018-09-23T09:40:36Z dented42 joined #lisp 2018-09-23T09:44:24Z shifty joined #lisp 2018-09-23T09:44:33Z rumbler31 joined #lisp 2018-09-23T09:49:15Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-23T09:50:51Z kajo joined #lisp 2018-09-23T09:57:54Z mkolenda quit (Remote host closed the connection) 2018-09-23T09:58:29Z mkolenda joined #lisp 2018-09-23T09:58:52Z whartung quit (Ping timeout: 246 seconds) 2018-09-23T10:00:00Z nowhereman_ joined #lisp 2018-09-23T10:00:21Z nowhere_man quit (Ping timeout: 260 seconds) 2018-09-23T10:06:54Z thetemplar joined #lisp 2018-09-23T10:09:34Z amko joined #lisp 2018-09-23T10:11:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-23T10:12:05Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-23T10:13:02Z nirved joined #lisp 2018-09-23T10:16:02Z russellw: If I understand http://www.lispworks.com/documentation/lw50/CLHS/Body/02_dfa.htm correctly, 'x is equivalent to (quote x) but `x is /not/ equivalent to (backquote x) ? 2018-09-23T10:17:54Z Shinmera: there is no backquote symbol in the CL package 2018-09-23T10:17:55Z russellw: sb-int:quasiquote ... guessing that means sbcl-internal, so the representation is purely an implementation detail? 2018-09-23T10:18:01Z Shinmera: yes. 2018-09-23T10:18:06Z russellw: okay, thanks 2018-09-23T10:19:18Z Shinmera: The representation could be handled by a struct or anything, as long as the readably printed variant uses the standard backquote notation 2018-09-23T10:25:46Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-23T10:27:06Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-23T10:31:54Z ealfonso quit (Ping timeout: 252 seconds) 2018-09-23T10:33:43Z thetemplar joined #lisp 2018-09-23T10:33:49Z White_Flame: the lack of specification also is a problem if you're walking through code in a macro 2018-09-23T10:34:28Z White_Flame: there's a fare-quasiquote package which overrides the backquote & comma and ensures it's nice nested sexpr lists for easier traversal 2018-09-23T10:36:38Z amko quit (Ping timeout: 272 seconds) 2018-09-23T10:37:25Z no-defun-allowed: I have a bad idea which will probably not work portably still. 2018-09-23T10:38:05Z no-defun-allowed: (defvar quasiquote (caar '(`(foo)))) 2018-09-23T10:38:28Z no-defun-allowed: (car '`(foo)) is also possible. 2018-09-23T10:38:31Z Shinmera: no-defun-allowed: As I said, it could be a struct or anything 2018-09-23T10:39:03Z pjb quit (Remote host closed the connection) 2018-09-23T10:39:13Z Shinmera: could even be a data type not specified by CL 2018-09-23T10:39:42Z no-defun-allowed: Indeed. 2018-09-23T10:39:52Z no-defun-allowed: Hence bad idea and not portable. 2018-09-23T10:40:13Z pjb joined #lisp 2018-09-23T10:40:48Z kajo joined #lisp 2018-09-23T10:48:40Z xrash quit (Ping timeout: 272 seconds) 2018-09-23T10:57:45Z scymtym quit (Ping timeout: 252 seconds) 2018-09-23T10:58:03Z White_Flame: at least in SBCL, the comma values are not sexprs 2018-09-23T10:58:26Z no-defun-allowed: I remember them being sexprs. 2018-09-23T10:58:49Z White_Flame: (type-of (second '`,x)) => SB-IMPL::COMMA 2018-09-23T10:59:11Z White_Flame: same thing if it's ,(foo bar) or whatever. you'd have to dig into the COMMA object 2018-09-23T10:59:19Z no-defun-allowed: Well then, maybe it's a kind of cons situation. 2018-09-23T10:59:35Z no-defun-allowed: (cons quasiquote (cons comma x)) 2018-09-23T10:59:37Z White_Flame: M-.'ing into it, it happens to be a struct 2018-09-23T11:00:39Z no-defun-allowed: Oh. 2018-09-23T11:00:40Z |3b|: it used to be, but there were too many edge cases when printing them nicely or something like that, so switched to structs 2018-09-23T11:01:15Z |3b|: (and if you don't care about printing them nicely, just expand to QUOTE, LIST, APPEND, etc 2018-09-23T11:01:18Z russellw: for my purposes, (defconstant +backquote+ (gensym)) etc looks like the way to go 2018-09-23T11:02:12Z |3b|: nice printing of ` forms is nice for debugging though 2018-09-23T11:05:55Z makomo: this post describes the pretty printing issue http://christophe.rhodes.io/notes/blog/posts/2014/backquote_and_pretty_printing/ 2018-09-23T11:06:51Z whartung joined #lisp 2018-09-23T11:11:25Z orivej joined #lisp 2018-09-23T11:16:08Z jackdaniel: when I create a broadcast-stream with s1 and s2: (make-broadcast-stream s1 s2) and call file-position on it, file position of s2 should be returned, right? 2018-09-23T11:16:31Z jackdaniel: excerpt from the standard: " The functions file-length, file-position, file-string-length, and stream-external-format return the value from the last component stream." 2018-09-23T11:22:01Z |3b|: yeah, that's how i read it 2018-09-23T11:22:18Z jackdaniel: thank you 2018-09-23T11:23:01Z jackdaniel: (a bit of context: ecl takes first component, so queried for a second opinion that it is wrong) 2018-09-23T11:25:32Z scymtym joined #lisp 2018-09-23T11:38:24Z mkolenda quit (Remote host closed the connection) 2018-09-23T11:39:00Z mkolenda joined #lisp 2018-09-23T11:39:49Z orivej quit (Ping timeout: 244 seconds) 2018-09-23T11:45:31Z rumbler31 joined #lisp 2018-09-23T11:49:27Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-23T11:53:41Z Nephromancer joined #lisp 2018-09-23T12:00:39Z razzy quit (Ping timeout: 252 seconds) 2018-09-23T12:03:57Z cl-arthur quit (Quit: Lost terminal) 2018-09-23T12:05:20Z tfeb quit (Remote host closed the connection) 2018-09-23T12:05:50Z tfeb joined #lisp 2018-09-23T12:07:35Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-23T12:07:47Z rozenglass quit (Read error: Connection reset by peer) 2018-09-23T12:09:34Z shka_ joined #lisp 2018-09-23T12:14:13Z tfeb quit (Ping timeout: 245 seconds) 2018-09-23T12:28:30Z phoe: What is test-op supposed to do when a test failure happens in modern ASDF and Quicklisp configurations? 2018-09-23T12:28:49Z phoe: For example, when Quicklisp builds its systems each month, what should be done to make it know that there was a test failure? 2018-09-23T12:30:45Z phoe: Xach: ^ 2018-09-23T12:37:07Z rtypo joined #lisp 2018-09-23T12:39:18Z dddddd joined #lisp 2018-09-23T12:53:43Z phoe: ....I'm bamboozled that the CL package has no RETRY restart 2018-09-23T12:53:48Z phoe: It's a custom addition! 2018-09-23T12:54:06Z oni-on-ion: for CLIM listener and slime and stuff ? 2018-09-23T12:54:16Z phoe: yes 2018-09-23T12:54:38Z oni-on-ion: does CLHS say something like "would be good idea for implementation [to implement] for debug/trace purpose" 2018-09-23T12:59:04Z pjb quit (Ping timeout: 240 seconds) 2018-09-23T13:01:18Z whartung quit (Ping timeout: 245 seconds) 2018-09-23T13:11:56Z tfeb joined #lisp 2018-09-23T13:13:09Z dale quit (Quit: dale) 2018-09-23T13:23:14Z Roy_Fokker joined #lisp 2018-09-23T13:25:07Z tfeb quit (Ping timeout: 240 seconds) 2018-09-23T13:32:13Z makomo quit (Read error: Connection reset by peer) 2018-09-23T13:32:20Z makomo_ joined #lisp 2018-09-23T13:38:44Z tfeb joined #lisp 2018-09-23T13:48:44Z paule32: sodele 2018-09-23T13:48:48Z paule32: http://i.imgur.com/jgJVJYi.png 2018-09-23T13:49:05Z paule32: this is stable arithmetic with integer numbers 2018-09-23T14:06:50Z nckx joined #lisp 2018-09-23T14:11:50Z thetemplar joined #lisp 2018-09-23T14:14:22Z rumbler31 joined #lisp 2018-09-23T14:17:01Z rumbler31 quit (Remote host closed the connection) 2018-09-23T14:17:03Z tfb_ joined #lisp 2018-09-23T14:18:14Z edgar-rft joined #lisp 2018-09-23T14:18:48Z tfeb quit (Ping timeout: 245 seconds) 2018-09-23T14:19:52Z igemnace joined #lisp 2018-09-23T14:23:00Z paule32: i have the book paul ghram 2018-09-23T14:23:04Z paule32: ansi lisp 2018-09-23T14:23:44Z paule32: what are the standard functions, to print text ? 2018-09-23T14:23:59Z edgar-rft: (print "text") 2018-09-23T14:26:43Z fluxit quit (Quit: ...) 2018-09-23T14:26:46Z paule32: hello edgar-rft 2018-09-23T14:26:51Z paule32: nice to see you 2018-09-23T14:29:21Z igemnace quit (Read error: Connection reset by peer) 2018-09-23T14:30:11Z igemnace joined #lisp 2018-09-23T14:31:45Z frodef joined #lisp 2018-09-23T14:38:53Z paule32: why is (= 3 3) ;; T 2018-09-23T14:39:05Z paule32: why is (= 2 1) ;; nil 2018-09-23T14:39:07Z paule32: ? 2018-09-23T14:40:37Z gector quit (Ping timeout: 246 seconds) 2018-09-23T14:41:06Z gector joined #lisp 2018-09-23T14:41:09Z Inline: because = is for numerical comparison 2018-09-23T14:42:01Z Inline: 3 = 3 true, 2 = 1 not true 2018-09-23T14:42:33Z makomo_ quit (Ping timeout: 245 seconds) 2018-09-23T14:44:15Z paule32: i mean in context of T, and nil 2018-09-23T14:44:28Z paule32: give it no T, and F ? 2018-09-23T14:49:20Z edgar-rft: In Common Lisp nil is false and everything else is true 2018-09-23T14:51:06Z djuber quit (Remote host closed the connection) 2018-09-23T14:52:16Z tfb_ quit (Remote host closed the connection) 2018-09-23T14:52:31Z tfeb joined #lisp 2018-09-23T14:53:01Z tfeb quit (Remote host closed the connection) 2018-09-23T14:53:21Z tfeb joined #lisp 2018-09-23T14:53:49Z tfeb quit (Remote host closed the connection) 2018-09-23T14:54:06Z igemnace quit (Quit: WeeChat 2.2) 2018-09-23T14:54:11Z tfeb joined #lisp 2018-09-23T14:54:22Z igemnace joined #lisp 2018-09-23T14:54:37Z tfeb quit (Remote host closed the connection) 2018-09-23T14:54:56Z tfeb joined #lisp 2018-09-23T14:55:25Z tfeb quit (Remote host closed the connection) 2018-09-23T14:55:46Z tfeb joined #lisp 2018-09-23T14:56:13Z tfeb quit (Remote host closed the connection) 2018-09-23T14:56:31Z tfeb joined #lisp 2018-09-23T14:56:33Z makomo_ joined #lisp 2018-09-23T14:57:01Z tfeb quit (Remote host closed the connection) 2018-09-23T14:57:14Z tfeb joined #lisp 2018-09-23T14:57:49Z tfeb quit (Remote host closed the connection) 2018-09-23T14:58:02Z tfeb joined #lisp 2018-09-23T14:58:10Z d4ryus quit (Quit: WeeChat 2.2) 2018-09-23T14:58:28Z dueyfinster joined #lisp 2018-09-23T14:58:37Z tfeb quit (Remote host closed the connection) 2018-09-23T14:59:07Z tfeb joined #lisp 2018-09-23T15:02:08Z thetemplar quit (Ping timeout: 245 seconds) 2018-09-23T15:02:26Z paule32: http://i.imgur.com/1AsLJHX.png 2018-09-23T15:02:28Z paule32: that is cool 2018-09-23T15:03:22Z tfeb quit (Ping timeout: 246 seconds) 2018-09-23T15:04:56Z joga quit (Ping timeout: 244 seconds) 2018-09-23T15:05:22Z dueyfinster quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-23T15:06:58Z dueyfinster joined #lisp 2018-09-23T15:19:09Z Demosthenex: _death: any cool tui stuff today? 2018-09-23T15:23:25Z d4ryus joined #lisp 2018-09-23T15:23:40Z shifty quit (Ping timeout: 246 seconds) 2018-09-23T15:24:58Z _death: Demosthenex: yesterday I worked a bit on editor windows like you can see in the second demo.. still there's much more to do there. I think the next step is to add mouse support and moving/resizing windows 2018-09-23T15:26:27Z Demosthenex: _death: nice 2018-09-23T15:27:43Z _death: there are also some missteps I should fix, added FIXMEs yesterday 2018-09-23T15:29:53Z rozenglass joined #lisp 2018-09-23T15:29:56Z tfeb joined #lisp 2018-09-23T15:30:41Z _death: I'm thinking a small demo application would indeed be something like a "turbo lisp".. with a repl and a file editor 2018-09-23T15:31:35Z _death: that incidentally also lets you change itself.. by nature of lisp (and smalltalk..) 2018-09-23T15:38:22Z tfeb quit (Ping timeout: 246 seconds) 2018-09-23T15:41:01Z Demosthenex: _death: all my usecase is about data entry forms.... i'm tinkering with trying to make some editing widgets 2018-09-23T15:43:51Z _death: right.. not there yet 2018-09-23T15:44:28Z Balooga_ joined #lisp 2018-09-23T15:44:50Z makomo_ quit (Ping timeout: 252 seconds) 2018-09-23T15:47:35Z Demosthenex: _death: not laying the burden on you, i'm trying to see what i can come up with. i already got my async inputs and such going 2018-09-23T15:50:36Z thetemplar joined #lisp 2018-09-23T15:52:47Z varjag joined #lisp 2018-09-23T15:53:23Z _death: ;) 2018-09-23T15:59:59Z housel joined #lisp 2018-09-23T16:00:58Z makomo_ joined #lisp 2018-09-23T16:03:13Z frodef quit (Ping timeout: 246 seconds) 2018-09-23T16:03:35Z tfeb joined #lisp 2018-09-23T16:07:01Z phoe: I have a SBCL thread that just hangs with 100% CPU usage. Its backtrace shows pretty much nothing, https://plaster.tymoon.eu/view/929#929 - how can I debug it? 2018-09-23T16:07:28Z phoe: I want to figure out where exactly it is and what it's doing, but a lack of a backtrace makes it pretty hard for me. 2018-09-23T16:11:08Z _death: add logging 2018-09-23T16:14:31Z xrash joined #lisp 2018-09-23T16:15:00Z phoe: _death: hm. It'll be a ton of logs - it's a very intermittent issue. 2018-09-23T16:15:07Z phoe: But I guess there's no other option at this point. 2018-09-23T16:15:29Z nckx quit (Quit: Updating my GNU GuixSD server — gnu.org/s/guix) 2018-09-23T16:17:35Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-23T16:17:42Z rumbler31 joined #lisp 2018-09-23T16:20:49Z nckx joined #lisp 2018-09-23T16:22:15Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-23T16:22:27Z oni-on-ion: phoe: CL has a nice tracer, called.. 2018-09-23T16:23:55Z oni-on-ion: or what about using 'trace' ? 2018-09-23T16:25:03Z Pixel_Outlaw joined #lisp 2018-09-23T16:29:22Z Oladon joined #lisp 2018-09-23T16:38:01Z phoe: Something very fishy is going on. 2018-09-23T16:38:14Z phoe: When I C-c C-c a function, that thread unblocks. 2018-09-23T16:38:30Z phoe: Compiling a function happens in a completely separate thread, no? 2018-09-23T16:40:05Z oni-on-ion: afaik yep. if repl is 'blocked' for me i can still load/compile 2018-09-23T16:40:31Z paule32 quit (Ping timeout: 260 seconds) 2018-09-23T16:43:02Z Demosthenex: hrm, i found justification in format, but not how to replace the default padding char while using center ie: (format nil "~70:@<~A~>" "Whee"), but what if i wanted .'s instead of spaces? 2018-09-23T16:43:38Z phoe: ~70,'. 2018-09-23T16:43:43Z phoe: AFAIR this should work 2018-09-23T16:44:20Z Demosthenex: that made it right justified 2018-09-23T16:44:59Z phoe: oh, hm 2018-09-23T16:45:21Z esrse quit (Ping timeout: 252 seconds) 2018-09-23T16:45:29Z Demosthenex: (format nil "~70,,,'.<~A~>" "Whee") made it use .'s and right justified 2018-09-23T16:45:39Z pjb joined #lisp 2018-09-23T16:46:16Z Demosthenex: i get an error about using options after the @ modifier 2018-09-23T16:46:30Z Demosthenex: (format nil "~70,,,'.:@<~A~>" "Whee") 2018-09-23T16:46:50Z Demosthenex: that was pretty opaque, the hyperspec realy didn't explain that well 2018-09-23T16:47:53Z _death: personally I wouldn't use format here 2018-09-23T16:51:04Z nowhereman_ quit (Ping timeout: 240 seconds) 2018-09-23T16:57:59Z razzy joined #lisp 2018-09-23T17:01:21Z Fare joined #lisp 2018-09-23T17:02:19Z Demosthenex: _death: given it can do padding, field limiting, etc, why not? 2018-09-23T17:06:27Z _death: http://www.cs.yale.edu/homes/dvm/format-stinks.html 2018-09-23T17:08:14Z Demosthenex: _death: never said it was ideal, just that it's provided. 2018-09-23T17:09:30Z makomo_ is now known as makomo 2018-09-23T17:10:06Z _death: no disagreement here.. it's just cryptic and unlispy 2018-09-23T17:11:39Z Demosthenex: oh i certainly agree there ;] 2018-09-23T17:11:54Z Demosthenex: though i like the hacky method for outputting csv in a one liner 2018-09-23T17:15:26Z sabrac joined #lisp 2018-09-23T17:18:53Z rumbler31 joined #lisp 2018-09-23T17:23:23Z razzy quit (Ping timeout: 245 seconds) 2018-09-23T17:24:57Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-23T17:28:29Z Demosthenex: hrm, wasn't there a way to bind slots locally like destructuring-bind? 2018-09-23T17:28:40Z makomo: WITH-SLOTS? 2018-09-23T17:29:05Z makomo: clhs with-slots 2018-09-23T17:29:05Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_w_slts.htm 2018-09-23T17:29:16Z makomo: and also 2018-09-23T17:29:18Z makomo: clhs with-accessors 2018-09-23T17:29:19Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_w_acce.htm 2018-09-23T17:29:26Z Demosthenex: well crap, i was looking for bind-slots :P 2018-09-23T17:29:28Z Demosthenex: thanks 2018-09-23T17:29:49Z makomo: :-) 2018-09-23T17:30:23Z makomo: _death: that's a very nice article, but what about issues regarding localization? 2018-09-23T17:30:50Z makomo: for example, the same problem shows up in C++. you can either use iostreams and its text formatters, or you can use printf 2018-09-23T17:31:17Z Oladon quit (Quit: Leaving.) 2018-09-23T17:31:41Z makomo: it's much easier to localize a printf/format-like "template", rather than individual parts of something like the article's OUT 2018-09-23T17:31:48Z makomo: because the translator has more context 2018-09-23T17:32:26Z steiner joined #lisp 2018-09-23T17:32:58Z makomo: maybe this is just a tooling issues, i don't know 2018-09-23T17:33:00Z makomo: issue* 2018-09-23T17:33:36Z scymtym quit (Ping timeout: 260 seconds) 2018-09-23T17:37:48Z _death: makomo: with Lisp you can store forms.. also, format control strings don't solve the localization problem.. but personally I don't care for localization so.. 2018-09-23T17:39:55Z Demosthenex: is there a conflict using multiple-value-bind inside the body of a with-slot? 2018-09-23T17:41:33Z _death: makomo: in fact with an OUT like construct you can provide more hints that can help with localization.. since you construct a language for writing things 2018-09-23T17:42:26Z _death: instead of being limited to the low level format control language that perhaps lets you do something like ~/ 2018-09-23T17:42:27Z Demosthenex: https://bpaste.net/show/e9cd7a55a1e5 window and title in the first call to locked-write-string-at-point aren't found 2018-09-23T17:44:32Z _death: the second argument to with-slots should be the object 2018-09-23T17:45:05Z Demosthenex: derp, i thought i fixed that from my test in slime. :P 2018-09-23T17:47:14Z nowhereman_ joined #lisp 2018-09-23T17:58:08Z robotoad joined #lisp 2018-09-23T18:05:00Z nowhereman_ quit (Ping timeout: 252 seconds) 2018-09-23T18:07:00Z _death: just to show an example of OUT hackery https://gist.github.com/death/4e273d14e671a3c64f3be10cab2aa1b2 2018-09-23T18:07:27Z jsjolen joined #lisp 2018-09-23T18:10:18Z razzy joined #lisp 2018-09-23T18:13:52Z nowhereman_ joined #lisp 2018-09-23T18:16:21Z pjb: _death: makomo: well, there's one way FORMAT helps solving the localization problem. 2018-09-23T18:17:35Z pjb: _death: makomo: it's with the format specifier ~*, which allows you to use the arguments by index, instead of by order, so you can easily use format string in different languages, without changing the program and the order of the arguments. In different languages, the order for formating of various data elements into the language often changes. 2018-09-23T18:18:30Z _death: instead of comparing to lesser languages, why not compare to a lispy language for solving the localization problem 2018-09-23T18:18:31Z nowhereman_ quit (Ping timeout: 260 seconds) 2018-09-23T18:19:44Z pjb: (format t (get-localized 'qualified-object-format-string) object color size qualifier) -> "La petite balle bleu" "The small blue ball" 2018-09-23T18:21:33Z pjb: French: "~2@*~A ~0@*~A ~A" English: "~2@*~A ~1@*~A ~0@*~A" etc. 2018-09-23T18:22:31Z pjb: It is funny, because one of the most advanced localization system, ie. NeXTstep/Openstep/Cocoa's one, isn't even able to do that! 2018-09-23T18:22:35Z pjb: lame. 2018-09-23T18:25:53Z _death: now instead come up with a lispy grammar for describing it.. (:object ball :definite t :adjectives (small blue)) 2018-09-23T18:26:42Z SumoSud0 quit (Quit: 8y3 8y3) 2018-09-23T18:28:07Z cage_ quit (Quit: Leaving) 2018-09-23T18:28:16Z lavaflow joined #lisp 2018-09-23T18:30:08Z SumoSud0 joined #lisp 2018-09-23T18:30:19Z makomo: _death: well, true, it doesn't solve it by itself, but it's much easier for a translator (the actual person doing the translations) to get context about what's being translated 2018-09-23T18:30:23Z pjb: _death: the problem is not the lispy grammar. It's to localize the strings. 2018-09-23T18:30:24Z makomo: at least that's what i remember reading somewhere 2018-09-23T18:31:38Z makomo: _death: that's a cool example, thanks 2018-09-23T18:31:56Z _death: a format control string doesn't give much context for the translator 2018-09-23T18:32:26Z _death: which sometimes makes for bad translations in big programs 2018-09-23T18:32:29Z makomo: _death: well, that horror from the article sure doesn't. but consider something like "there are ~a objects in the bag" or something 2018-09-23T18:32:39Z makomo: or "there are %d objects in the bag" 2018-09-23T18:32:49Z _death: 1 2018-09-23T18:32:54Z makomo: instead of separate strings "there are" and "objects in the bag" 2018-09-23T18:32:54Z _death: now your string is bad 2018-09-23T18:33:03Z makomo: right, that also needs to be handled 2018-09-23T18:33:06Z makomo: but aside from that 2018-09-23T18:34:24Z _death: no, that's the point.. the "use format strings for localization purposes" is just an opportunistic hack.. in lesser languages, it's easy to externalize strings, so they get used and a translator has to work with that 2018-09-23T18:34:28Z makomo: _death: what's constantia btw? your own library? 2018-09-23T18:34:57Z _death: but printf, format, etc. wasn't designed with localization in mind 2018-09-23T18:35:19Z _death: so if you actually want to solve the problem, you find that you need more context and structure 2018-09-23T18:35:37Z _death: and an OUT operator can provide that 2018-09-23T18:35:56Z _death: makomo: yes.. https://github.com/death/constantia 2018-09-23T18:35:58Z makomo: well, it sure is a hack, but i'm not aware of any other approaches 2018-09-23T18:40:39Z frodef joined #lisp 2018-09-23T18:44:04Z TMA: there is more to localization than simple exchange of strings. -- consider that you need to adjust sizes (an "OK" can be much smaller than "Budiz"); there are other directions for text than ltr-ttb; you might want to adjust colors (because of the connotations) images and icons, ... 2018-09-23T18:45:15Z _death: right.. so in the end it's (out (:l10n :there-are-n-objects-in-the-bag n)) ;) 2018-09-23T18:45:34Z russellw: Is there a way to get CCL to exit when a script is finished? wx86cl -Q -b -l test.lisp doesn't do it 2018-09-23T18:48:01Z Demosthenex: i saw ~?, but was there a way use a variable in the same format string to dynamically change padding? 2018-09-23T18:48:32Z random-nick quit (Read error: Connection reset by peer) 2018-09-23T18:48:47Z pjb: _death: of course, you would write(format t (_ "format ~A etc" "The message printed when so and so") …) and (format nil (_ "format ~A etc" "The label of the button to do this and that") …) 2018-09-23T18:49:14Z pjb: But this is the 101 of localization. 2018-09-23T18:49:26Z pjb: and independent of the language. I 2018-09-23T18:49:39Z Shinmera: Demosthenex: sure, eg (format T "~va" 10 :woah) 2018-09-23T18:49:41Z pjb: only spoke about the specific advantages of lisp format in localization. 2018-09-23T18:50:29Z Demosthenex: Shinmera: i read that hyperspec several times and never saw v :P 2018-09-23T18:50:42Z Demosthenex: Shinmera: thanks :P 2018-09-23T18:50:56Z Shinmera: clhs 22.3 2018-09-23T18:50:56Z specbot: Formatted Output: http://www.lispworks.com/reference/HyperSpec/Body/22_c.htm 2018-09-23T18:51:03Z ealfonso joined #lisp 2018-09-23T18:51:25Z Shinmera: "In place of a prefix parameter to a directive, V (or v) can be used. In this case, format takes an argument from args as a parameter to the directive. The argument should be an integer or character. If the arg used by a V parameter is nil, the effect is as if the parameter had been omitted. # can be used in place of a prefix parameter; it represents the number of args remaining to be processed. When used 2018-09-23T18:51:27Z Shinmera: within a recursive format, in the context of ~? or ~{, the # prefix parameter represents the number of format arguments remaining within the recursive call." 2018-09-23T18:51:51Z pjb: And for the desesperate cases, don't forget ~/ 2018-09-23T18:52:21Z pjb: you can provide or let the translator provide a set of functions to do the exact formating required in strange languages. 2018-09-23T18:53:12Z pjb: makomo: "there are ~a objects in the bag" is not correct. 2018-09-23T18:53:24Z makomo: pjb: yeah, i know, it's a really trivial and dumb example 2018-09-23T18:54:00Z _death: pjb: like I said, the format control language is low level and barely extensible via ~/ ~? etc. 2018-09-23T18:54:30Z pjb: makomo: in CL, we'd write: (loop for i below 3 collect (format nil "There are ~a object~:*~P in the bag." i)) #| --> ("There are 0 objects in the bag." "There are 1 object in the bag." "There are 2 objects in the bag.") |# 2018-09-23T18:55:40Z _death: pjb: instead you can use the full power of lisp to make things easier to the (since "localization is more than translation" argument was made) localization mechanical turk 2018-09-23T18:55:48Z makomo: pjb: in CL, and in English :D 2018-09-23T18:56:44Z _death: pjb: "are" 2018-09-23T18:57:06Z Blackbeard: hello 2018-09-23T18:57:06Z Blackbeard: I have this code 2018-09-23T18:57:25Z Blackbeard sent a long message: < https://matrix.org/_matrix/media/v1/download/matrix.org/stZqJlsPlMtsLEZdQxkSDazj > 2018-09-23T18:58:00Z shka_: and? 2018-09-23T18:58:18Z Blackbeard: is there a way that I can pass just a list '(".jpg" ".png" ".svg") and will apply search to f with every element of the list 2018-09-23T18:58:36Z Blackbeard: instead of having so many repetitions of search 2018-09-23T18:58:41Z _death: clhs some 2018-09-23T18:58:41Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_everyc.htm 2018-09-23T18:58:51Z shka_: yup 2018-09-23T18:59:19Z shka_: this way is fine though 2018-09-23T18:59:19Z ealfonso quit (Disconnected by services) 2018-09-23T18:59:26Z shka_: in this case 2018-09-23T18:59:31Z _death: but here SEARCH isn't the right tool.. instead you can use PATHNAME-TYPE 2018-09-23T18:59:55Z anewuser joined #lisp 2018-09-23T19:00:15Z Blackbeard: _death (IRC): ohh !! 2018-09-23T19:01:40Z _death: otherwise foo.jpg.exe may be considered an image... 2018-09-23T19:04:14Z pjb: _death: right. :-) (loop for i below 3 collect (format nil "There ~[are~;is~;are~] ~:*~a object~:*~P in the bag." i)) #| --> ("There are 0 objects in the bag." "There is 1 object in the bag." "There are 2 objects in the bag.") |# 2018-09-23T19:04:33Z pjb: try to do that in C! 2018-09-23T19:05:07Z _death: pjb: so now you have this "~[are~;is~;are~]" inline.. but it's a useful thing to have named 2018-09-23T19:05:41Z _death: pjb: format control language doesn't give you much to abstract it 2018-09-23T19:06:03Z _death: pjb: and it really shouldn't, since stuffing everything into a string makes things cryptic 2018-09-23T19:06:14Z pjb: (loop for i below 3 collect (format nil "There ~/english-verb-conjugate/ ~0@*~a object~:*~P in the bag." i "to be")) 2018-09-23T19:06:57Z pjb: actually, with ~V/.../ since ~/ cannot take more than one argument. 2018-09-23T19:07:04Z pjb: you need to pass i as a parameter. 2018-09-23T19:07:21Z _death: pjb: right, now consider ~{ which is limited to lists 2018-09-23T19:07:28Z Blackbeard: _death (IRC): thanks! 2018-09-23T19:07:58Z _death: pjb: you switched to vectors.. now what ~/{-FOR-VECTORS/ ? 2018-09-23T19:07:59Z pjb: That's why you can pass a function as format-string! 2018-09-23T19:08:13Z pjb: (format t (smart-formatter "…") …) 2018-09-23T19:08:59Z pjb: You cannot anything against format, it's too customizable for that. 2018-09-23T19:09:18Z _death: pjb: ok.. now instead just do (smart-formatter "...") 2018-09-23T19:09:38Z pjb: smart-format you mean. No. 2018-09-23T19:09:49Z _death: pjb: rename it OUT.. even make it use FORMAT to save a bit of code 2018-09-23T19:09:51Z pjb: You want to integrate with the existing mechanisms. 2018-09-23T19:12:58Z paule32 joined #lisp 2018-09-23T19:13:05Z lemonpepper24 joined #lisp 2018-09-23T19:13:21Z TMA: you do not want to rely on format's English support too heavily for localization. ~P works ok-ish for English but not for other languages 2018-09-23T19:14:38Z pjb: Yes, it's only to generate log messages and debugging statements. 2018-09-23T19:14:48Z _death: it's true that error/etc. are burdened with format.. there's even simple-condition with :format-control and :format-arguments.. I use format here and there and when I don't want to depend on constantia.. but when things get too cryptic, I'll either use OUT or just Lisp with simple primitives 2018-09-23T19:15:22Z TMA: and even in English you would have hard time to use ~P on regular basis for e.g. ox 2018-09-23T19:15:41Z thetemplar quit (Ping timeout: 260 seconds) 2018-09-23T19:16:36Z _death: "You have ~D copies of Emacs~:(P running" 2018-09-23T19:16:53Z _death: oof, ruined that joke.. -copied of 2018-09-23T19:19:03Z pjb: (loop for i below 3 collect (format nil "You have ~D cop~:*~@P of Emacs ~:(P running~)" i)) #| --> ("You have 0 copies of Emacs P Running" "You have 1 copy of Emacs P Running" "You have 2 copies of Emacs P Running") |# 2018-09-23T19:19:37Z charh joined #lisp 2018-09-23T19:21:16Z rumbler31 joined #lisp 2018-09-23T19:21:32Z paule32 quit (Ping timeout: 252 seconds) 2018-09-23T19:22:20Z random-nick joined #lisp 2018-09-23T19:22:56Z russellw: I'm about to write a function to return the last element of an array. Obviously this is a very simple function, sufficiently so that it probably already has a common name. The most obvious name is array-last; is that's what it's usually known as? 2018-09-23T19:23:57Z pjb: russellw: how do you define the last element of #3A((((1 2 3) (4 5 6)) ((1 2 3) (0 0 0))) (((1 2 3) (4 5 6)) ((1 2 3) (0 13 42)))) ? 2018-09-23T19:24:03Z pjb: (just to be sure). 2018-09-23T19:24:33Z russellw: I don't :) 2018-09-23T19:24:54Z pjb: Otherwise, there's (alexandria:last-elt #(1 2 3 4)) #| --> 4 |# 2018-09-23T19:25:12Z russellw: ah! thanks 2018-09-23T19:25:20Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-23T19:25:26Z pjb: russellw: the problem is not that array, it's that you don't know how to define the last element of that array! 2018-09-23T19:25:35Z jsjolen quit (Remote host closed the connection) 2018-09-23T19:26:09Z russellw: I'm not planning to use it on multidimensional arrays :) 2018-09-23T19:26:16Z pjb: (defun last-element-of-array (a) (row-major-aref a (1- (reduce (function *) (array-dimensions a))))) (last-element-of-array #3A((((1 2 3) (4 5 6)) ((1 2 3) (0 0 0))) (((1 2 3) (4 5 6)) ((1 2 3) (0 13 42))))) #| --> (0 13 42) |# 2018-09-23T19:26:41Z pjb: russellw: that's beside the point. The point is that you asked for the last element of an array, not the last element of a vector or of a sequence. 2018-09-23T19:27:08Z pjb: russellw: my point is that if you are able to state clearly your requirements, then the code will generally follow easily. 2018-09-23T19:28:00Z pjb: russellw: alternatively, you could start speaking in lisp. and ask, How do I (defun last-element (x) (aref x (1- (length x))))? Oops, I answered in the question… 2018-09-23T19:28:19Z Shinmera: pjb: array-total-size would be a bit shorter and idiomatic than reducing array-dimensions. 2018-09-23T19:28:41Z pjb: russellw: sometimes, you don't know what english name to give to a function. Just start writting it: (defun foo (…) …) and once it's written you can usually find easily what to call it in english. 2018-09-23T19:28:49Z pjb: Shinmera: exact. 2018-09-23T19:29:15Z pjb: Also, for vectors, you can use length or (array-dimension v 0): you won't get the same result on vectors with fill-pointers. 2018-09-23T19:29:26Z pjb: (array-dimension v 0) or array-total-size. 2018-09-23T19:29:29Z russellw: pjb, er, if we are going to get snarky about exact wording, take a look at the question I asked, in which I observed that I have no difficulty writing the function; that part is very simple. I merely wanted to know whether it already had a common name. The answer to which was yes, thank you 2018-09-23T19:29:41Z lemonpepper24 quit (Ping timeout: 260 seconds) 2018-09-23T19:29:43Z Blackbeard: (defun is-imagep (file) 2018-09-23T19:29:44Z Blackbeard: (let ((f (pathname-type file))) 2018-09-23T19:29:45Z Blackbeard: (some #'equal '("jpg" "jpeg" "png""svg") `(,f)))) 2018-09-23T19:29:57Z Blackbeard: _death (IRC): looks better now :) 2018-09-23T19:30:30Z pjb: russellw: I didn't want to get snarky. In this case, I would have said that obviously, a function to return the last element of an array should be named last-element-of-array. 2018-09-23T19:30:57Z pjb: Blackbeard: don't mix is- with -p. They're two different conventions for the same thing. 2018-09-23T19:31:06Z pjb: Blackbeard: in lisp, p or -p is prefered. 2018-09-23T19:31:06Z _death: (member (pathname-type file) '(...) :test #'equal) ;; or equalp.. 2018-09-23T19:31:09Z russellw: pjb, ah! Okay, while that's a little verbose for my tastes, it is a perfectly fair answer 2018-09-23T19:31:43Z pjb: russellw: you can stylistically choose: array-last-element. Or vector-last-element. Or just last-element, notably if that applies to sequences. 2018-09-23T19:31:59Z pjb: russellw: or you can write it as a generic function and have implementations for all kinds of collections. 2018-09-23T19:32:53Z russellw: (defun last-elt (s) (elt s (1- (length s)))); one of the things I like about dynamic languages is you get some degree of genericity for free 2018-09-23T19:33:22Z pjb: Blackbeard: member is nice. I often prefer to use FIND or even POSITION (for the side effect of computing the position if needed). 2018-09-23T19:33:51Z pjb: Blackbeard: member returns a tail of the searched list, so it may be ugly when printed (but otherwise, perfectly ok for the program). 2018-09-23T19:33:58Z nowhereman_ joined #lisp 2018-09-23T19:34:35Z pjb: Blackbeard: FIND has the advantage of returning the element in the list, as a prototypal form. This can be useful, if you want to normalize them. 2018-09-23T19:35:56Z pjb: Blackbeard: also, testing for the file type is a bad idea. You could check the meta data (prefixp "image/" (Content-Type file)). Or check the contents. (But this may require more I/O and computation). 2018-09-23T19:36:30Z dale joined #lisp 2018-09-23T19:36:48Z pjb: In any cases, be prepared to have non image file names .jpg or something else, and to have png files named .jpg and vice versa. 2018-09-23T19:37:10Z _death: you may also want to parse-native-namestring at the edges 2018-09-23T19:38:04Z thetemplar joined #lisp 2018-09-23T19:38:34Z aeth: russellw: You are probably going to have to inline it to get good performance with it, though. (1) trivial, (2) no reason to redefine it, (3) works on arrays or numbers (here, arrays). So it's a good candidate for inlining. 2018-09-23T19:39:06Z aeth: That's just (declaim (inline foo)) right above the defun 2018-09-23T19:39:48Z Blackbeard: pjb _death (IRC) ohhh I see let me change it !! thakns :) 2018-09-23T19:40:39Z aeth: s/works on arrays or numbers/works generically on arrays or sequences or numbers/ 2018-09-23T19:41:35Z _death: if you care about performance with lists you'd need another variant 2018-09-23T19:42:50Z moei quit (Quit: Leaving...) 2018-09-23T19:42:52Z aeth: _death: Yes, if you wanted it to work on lists instead of 1D arrays (vectors) specifically, the ELT variant is bad. You would probably want an ETYPECASE to split it into two cases, one for lists and one for vectors. The compiler will probably optimize it out if it's inline 2018-09-23T19:43:22Z russellw: Right, in this case performance is not an issue, but will keep those considerations in mind if it becomes so 2018-09-23T19:43:26Z aeth: The important thing is that anything that's just a one liner with something like AREF (works on all arrays) or ELT (works on all sequences) or + (works on all numbers) can become a lot more efficient when inline. 2018-09-23T19:44:06Z shka_ quit (Quit: Konversation terminated!) 2018-09-23T19:44:38Z _death: aeth: to keep it generic, you can just have (if (listp ...) (car (last ...)) (elt ...)) remember that type sequence is not necessarily type (or list vector) 2018-09-23T19:45:17Z _death: not sure what numbers have to do with it 2018-09-23T19:45:23Z Blackbeard: I am writing a module to change and set wallpapers for stumpwm 2018-09-23T19:45:42Z Blackbeard: it is something very simple, 2018-09-23T19:45:49Z Blackbeard: it is my first module of common lisp ever :) 2018-09-23T19:45:52Z pjb: That's because in (elt x (1- (length x))), we have to walks of a list. But only 2 O(1) accesses for vectors. 2018-09-23T19:48:02Z Blackbeard: my idea was to have a directory with a bunch of images 2018-09-23T19:48:28Z aeth: _death: I'd do it like this: (defun last-elt* (sequence) (etypecase sequence (list (car (last sequence))) (sequence (elt sequence (1- (length sequence)))))) 2018-09-23T19:48:52Z Blackbeard: and I was writing the function to get all the images with (directory path) 2018-09-23T19:48:59Z _death: aeth: right, that's good too 2018-09-23T19:49:18Z Blackbeard: but your idea is better because I would be able to get images from more paths 2018-09-23T19:49:26Z fiddlerwoaroof: Blackbeard: That's a good way to start: assume that everything in the directory is an image and let the user pick one of them then, once you get that working, worry about filtering out non images. 2018-09-23T19:49:44Z aeth: _death: numbers and sequences behave very similarly for this sort of pattern 2018-09-23T19:49:46Z fiddlerwoaroof: And/or supporting more paths 2018-09-23T19:49:48Z Blackbeard: now I just need to get the mimetypes 2018-09-23T19:50:01Z _death: aeth: how? 2018-09-23T19:50:51Z aeth: _death: Numbers also have an efficient inline form that the compiler will generate (probably... obviously stuff like JSCL behave differently) if it has more type information 2018-09-23T19:51:11Z _death: aeth: I see.. you're talking about inline, not last-elt 2018-09-23T19:52:17Z aeth: _death: e.g. (defun foo () (last-elt* (vector 1 2 3))) is about half the size in disassemble as last-elt* is if you inline last-elt* 2018-09-23T19:53:39Z aeth: And (defun bar () (last-elt* '(1 2 3))) and (defun baz () (last-elt* #(1 2 3))) are compiled to constantly return 3 in SBCL 2018-09-23T19:54:20Z angavrilov quit (Remote host closed the connection) 2018-09-23T19:54:45Z Blackbeard: I don't find any mimetype function for common lisp 2018-09-23T19:54:46Z Blackbeard: fiddlerwoaroof (IRC): oh ok :) 2018-09-23T19:54:46Z Blackbeard: I was thinking of using something like this 2018-09-23T19:54:48Z Blackbeard: (stumpwm:run-shell-command "file --mime-type image.jpg" t) 2018-09-23T19:55:21Z nowhereman_ quit (Ping timeout: 260 seconds) 2018-09-23T19:56:48Z nowhereman_ joined #lisp 2018-09-23T19:57:52Z fiddlerwoaroof: that would work, you might try this: https://github.com/Shinmera/trivial-mimes 2018-09-23T19:58:17Z Blackbeard: fiddlerwoaroof (IRC): ohh thanks!! 2018-09-23T19:58:33Z fiddlerwoaroof: It's in quicklisp 2018-09-23T19:59:32Z Blackbeard: so i have to do (quicklisp:quickload "trivial-mimes") right 2018-09-23T19:59:45Z fiddlerwoaroof: Yeah 2018-09-23T20:00:04Z fiddlerwoaroof: If you have a .asd file for your module, you could put the dependency there 2018-09-23T20:00:05Z smokeink quit (Remote host closed the connection) 2018-09-23T20:02:53Z smokeink joined #lisp 2018-09-23T20:03:53Z Blackbeard: ah g reat! 2018-09-23T20:05:27Z nowhereman_ quit (Ping timeout: 252 seconds) 2018-09-23T20:05:46Z Blackbeard: :) 2018-09-23T20:15:30Z anewuser quit (Ping timeout: 272 seconds) 2018-09-23T20:15:52Z anewuser_ joined #lisp 2018-09-23T20:20:29Z ggole quit (Quit: ggole) 2018-09-23T20:21:55Z rumbler31 joined #lisp 2018-09-23T20:23:55Z orivej joined #lisp 2018-09-23T20:23:58Z shka_ joined #lisp 2018-09-23T20:26:18Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-23T20:26:28Z Oladon joined #lisp 2018-09-23T20:32:24Z dale quit (Quit: dale) 2018-09-23T20:35:16Z russellw: I want to search a string for the position of the first character that is not a digit. Which function should I be looking at? 2018-09-23T20:35:52Z scymtym joined #lisp 2018-09-23T20:36:05Z _death: (position-if (complement #'digit-char-p) string) 2018-09-23T20:36:50Z russellw: thanks! 2018-09-23T20:38:01Z _death: position-if-not is also acceptable 2018-09-23T20:38:01Z dale joined #lisp 2018-09-23T20:39:38Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-23T20:42:00Z random-nick: why isn't there a macro version of the ` reader macro 2018-09-23T20:45:07Z aydio joined #lisp 2018-09-23T20:45:40Z nowhereman_ joined #lisp 2018-09-23T20:46:18Z oni-on-ion: ehhh 'common-lisp-user:function-value' is not defined ?! 2018-09-23T20:47:58Z oni-on-ion: random-nick: SB-IMPL::BACKQUOTE-CHARMACRO 2018-09-23T20:48:17Z oni-on-ion: use emacs M-. to jump to that definition too 2018-09-23T20:52:51Z Fare quit (Ping timeout: 252 seconds) 2018-09-23T20:54:43Z trittweiler quit (Ping timeout: 244 seconds) 2018-09-23T20:55:20Z nly joined #lisp 2018-09-23T20:55:35Z trittweiler joined #lisp 2018-09-23T21:05:47Z shka_ quit (Ping timeout: 240 seconds) 2018-09-23T21:07:08Z aydio quit (Quit: WeeChat 2.2) 2018-09-23T21:07:08Z vlatkoB quit (Remote host closed the connection) 2018-09-23T21:18:35Z random-nick quit (Read error: Connection reset by peer) 2018-09-23T21:18:46Z trittweiler quit (Ping timeout: 260 seconds) 2018-09-23T21:26:01Z moei joined #lisp 2018-09-23T21:26:02Z Oladon quit (Quit: Leaving.) 2018-09-23T21:30:52Z trittweiler joined #lisp 2018-09-23T21:31:01Z TMA quit (Ping timeout: 260 seconds) 2018-09-23T21:32:12Z phoe: Using usocket, how can I check if a server socket (made using socket-listen) has been closed or not? 2018-09-23T21:33:30Z terpri joined #lisp 2018-09-23T21:36:04Z nly quit (Read error: Connection reset by peer) 2018-09-23T21:36:25Z phoe: ...I assume it no longer has a local port in that case, and errors when I attempt to fetch it. 2018-09-23T21:38:14Z oni-on-ion: usocket docs say to read from the socket and END-OF-FILE is signalled 2018-09-23T21:38:34Z phoe: oni-on-ion: I mean a server socket. 2018-09-23T21:38:43Z phoe: It does not have any associated stream that I can check for EOF. 2018-09-23T21:38:56Z oni-on-ion: same 2018-09-23T21:38:58Z oni-on-ion: oh 2018-09-23T21:40:11Z oni-on-ion: not sure then 2018-09-23T21:42:37Z Nephromancer quit (Quit: Connection closed for inactivity) 2018-09-23T21:44:32Z grobe0ba: thats an easy one. assume all traffic can consist of no more than 1024KB and that the stream is defunct after that much traffic has passed. :P 2018-09-23T21:46:10Z phoe: grobe0ba: ... 2018-09-23T21:46:14Z phoe: I mean a server socket. 2018-09-23T21:46:17Z phoe: It does not have any associated stream that I can check for EOF. 2018-09-23T21:46:42Z phoe: A server socket's only role is accepting incoming connections and spawning stream sockets that *have* streams and *can* be used to transmit data. 2018-09-23T21:53:13Z phoe: I really hate the fact that a socket can close at any moment and because of this, at any moment while handling it, I can get an assortment of very non-portable errors such as sb-bsd-sockets:bad-file-descriptor-error. 2018-09-23T21:54:26Z terpri quit (Ping timeout: 252 seconds) 2018-09-23T21:54:42Z _death: I don't understand.. if you have a socket created by socket-listen, it will get closed when you close it.. it is possible that socket-accept will return an error 2018-09-23T21:56:29Z phoe: No no, my last comment is about stream sockets 2018-09-23T21:56:38Z phoe: Server sockets themselves are pretty nice and polite. 2018-09-23T21:59:26Z _death: do you mean a socket created by socket-accept? 2018-09-23T22:00:56Z phoe: yes, socket-accept creates a stream socket 2018-09-23T22:01:55Z anewuser_ quit (Read error: Connection reset by peer) 2018-09-23T22:02:04Z _death: then you're supposed to define a state machine and handle client shut down as well as errors 2018-09-23T22:03:32Z phoe: Yes, I know that one 2018-09-23T22:04:07Z phoe: I just dislike the fact there's multiple conditions that I need to handle 2018-09-23T22:04:27Z phoe: And I want to avoid handler-case'ing ERROR because this one captures way too much 2018-09-23T22:04:45Z _death: well, sockets are similar to threads in that they're usually not a convenient level for an application to do things 2018-09-23T22:04:57Z phoe: that's why I'm working on an abstraction now. 2018-09-23T22:07:05Z phoe: sleep time for me - good night 2018-09-23T22:07:23Z _death: night 2018-09-23T22:07:48Z anewuser_ joined #lisp 2018-09-23T22:09:47Z _death: usocket defines its own condition types.. and socket-error's description is "Parent error for all socket related errors" 2018-09-23T22:12:33Z xrash quit (Ping timeout: 245 seconds) 2018-09-23T22:12:48Z phoe: _death: I wish it would catch all of them. (: 2018-09-23T22:15:00Z xrash joined #lisp 2018-09-23T22:16:02Z bgavran joined #lisp 2018-09-23T22:17:21Z terpri joined #lisp 2018-09-23T22:17:41Z varjag quit (Ping timeout: 260 seconds) 2018-09-23T22:18:45Z anewuser_ is now known as anewuser 2018-09-23T22:19:24Z tfeb quit (Remote host closed the connection) 2018-09-23T22:19:42Z tfeb joined #lisp 2018-09-23T22:20:09Z tfeb quit (Remote host closed the connection) 2018-09-23T22:20:11Z Oladon joined #lisp 2018-09-23T22:20:26Z tfeb joined #lisp 2018-09-23T22:20:56Z tfeb quit (Remote host closed the connection) 2018-09-23T22:21:16Z tfeb joined #lisp 2018-09-23T22:21:44Z tfeb quit (Remote host closed the connection) 2018-09-23T22:21:58Z tfeb joined #lisp 2018-09-23T22:22:08Z alandipert: is there a way to set the function cell of a symbol locally? ie i have a function that returns a function, and i want to call that returned function in calling code w/out funcall 2018-09-23T22:22:16Z terpri quit (Ping timeout: 246 seconds) 2018-09-23T22:22:32Z tfeb quit (Remote host closed the connection) 2018-09-23T22:22:45Z tfeb joined #lisp 2018-09-23T22:22:49Z rumbler31 joined #lisp 2018-09-23T22:23:20Z tfeb quit (Remote host closed the connection) 2018-09-23T22:23:33Z tfeb joined #lisp 2018-09-23T22:23:40Z _death: you can have a with-functions macro that expands to labels 2018-09-23T22:23:53Z tfeb quit (Client Quit) 2018-09-23T22:24:51Z _death: it doesn't set the symbol's function cell.. if you want that, there's setf (and you can define letf..) 2018-09-23T22:25:49Z alandipert: i don't think i need that.. just want to avoid funcall inside a let binding 2018-09-23T22:26:01Z alandipert: err, let body 2018-09-23T22:26:07Z alandipert: a macro sounds good, thanks _death 2018-09-23T22:26:16Z _death: https://www.xach.com/naggum/articles/3237542136210443@naggum.no.html 2018-09-23T22:27:12Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-23T22:29:09Z fiddlerwoaroof: alandipert: it took me a while, but I eventually came to appreciate funcall, it eliminates a whole class of errors where a local symbol binding accidentally shadows the function you want to run. 2018-09-23T22:29:27Z frodef quit (Ping timeout: 240 seconds) 2018-09-23T22:29:56Z fiddlerwoaroof: One way, though, to avoid using funcall all over the place is to define a bunch of combinators to help build up the function you want and then funcall the resulting lambda 2018-09-23T22:29:58Z fiddlerwoaroof: e.g. https://github.com/fiddlerwoaroof/data-lens 2018-09-23T22:30:34Z fiddlerwoaroof: (ignore the "lens" part... I started this project with a different plan than what it ended up being :) ) 2018-09-23T22:31:24Z adam4567 joined #lisp 2018-09-23T22:31:54Z pjb: alandipert: perhaps you want flet or labels? 2018-09-23T22:32:11Z pjb: ie. not modifying the function cell, but defining a local lexical fbinding? 2018-09-23T22:32:54Z pjb: alandipert: setting the function cell is quite problematic. While you can do that to simulate dynamic binding, for functions it's also global to the image, not local to the current thread. So it can easily break hard. 2018-09-23T22:33:21Z pjb: alandipert: furthermore, to have good effects, you need to declare that function notinline. 2018-09-23T22:33:31Z pjb: (actually, that symbol). 2018-09-23T22:38:17Z paule32 joined #lisp 2018-09-23T22:42:33Z graphene joined #lisp 2018-09-23T22:46:27Z alandipert: i could be braindamaged, https://gist.github.com/alandipert/9d7ff35952f33b3105f90f24a5103e48 is my usecase 2018-09-23T22:47:43Z _death: with-collect is also a macro seen in the wild 2018-09-23T22:49:04Z _death: there's even a system called "collectors", apparently 2018-09-23T22:50:13Z graphene quit (Remote host closed the connection) 2018-09-23T22:50:35Z _death: alandipert: by the way, you don't need the sentinel.. you can have &optional (item nil item-supplied) 2018-09-23T22:51:25Z graphene joined #lisp 2018-09-23T22:52:24Z alandipert: _death oh cool, item-suppied is t then if it was? 2018-09-23T22:52:32Z pjb: alandipert: check comment on your gist. 2018-09-23T22:52:57Z _death: alandipert: without checking the clhs, don't know.. I'm guessing it specifies that it's "true" 2018-09-23T22:53:09Z pjb: Of course, if you need it several times, you can wrap them in a with-collect macro. 2018-09-23T22:56:13Z _death: clhs 3.4.1.2 2018-09-23T22:56:13Z specbot: Specifiers for optional parameters: http://www.lispworks.com/reference/HyperSpec/Body/03_dab.htm 2018-09-23T23:02:34Z PyroLagus joined #lisp 2018-09-23T23:04:17Z Balooga_ quit (Quit: Balooga_) 2018-09-23T23:05:53Z pjb: Note that optional parameter will probably be slower than mandatory parameters, so it may be worth it to avoid them in inner (and local) functions. 2018-09-23T23:07:06Z lemonpepper24 joined #lisp 2018-09-23T23:23:11Z mutenewt joined #lisp 2018-09-23T23:33:48Z shifty joined #lisp 2018-09-23T23:36:07Z pfdietz: And less self-documenting/extensible than keyword parameters. 2018-09-23T23:38:36Z Balooga_ joined #lisp 2018-09-23T23:39:30Z siraben quit (Ping timeout: 252 seconds) 2018-09-23T23:41:31Z siraben joined #lisp 2018-09-23T23:46:05Z makomo quit (Ping timeout: 252 seconds) 2018-09-23T23:53:26Z mutenewt quit (Quit: Leaving) 2018-09-24T00:02:48Z mange joined #lisp 2018-09-24T00:07:04Z pjb quit (Ping timeout: 250 seconds) 2018-09-24T00:10:41Z siraben quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-24T00:28:24Z varjag joined #lisp 2018-09-24T00:29:38Z zmt00 joined #lisp 2018-09-24T00:31:12Z LdBeth: What is the name for the class intended to be inherited only? 2018-09-24T00:31:16Z LdBeth: logical class? 2018-09-24T00:33:03Z varjag quit (Ping timeout: 252 seconds) 2018-09-24T00:33:30Z oni-on-ion: abstract ? 2018-09-24T00:35:26Z LdBeth: thanks, just can't come up with the name 2018-09-24T00:36:21Z pjb joined #lisp 2018-09-24T00:37:25Z LdBeth: Doing OOP with literature programming is way more terriable than using a lots of COME FROM 2018-09-24T00:40:56Z oni-on-ion: come from? =) 2018-09-24T00:41:10Z oni-on-ion: i like common lisp and julia object systems 2018-09-24T00:41:53Z LdBeth: COME FROM is more evil than GOTO 2018-09-24T00:42:23Z LdBeth: :D 2018-09-24T00:43:16Z LdBeth: http://catb.org/esr/intercal/stross.html 2018-09-24T00:46:44Z Pixel_Outlaw is now known as PO_away 2018-09-24T00:47:14Z dented42 joined #lisp 2018-09-24T00:49:04Z aeth: I fail to really see the difference between come from and goto in most languages. It looks like INTERCAL's come from uses line numbers (a feature of the language?) so "come from 230" will be a complete surprise if you're reading line 230. But most gotos use labels, so come-from in a language like CL would be the same way. So you'd (come-from label) instead of (go label) and you'd basically just trade which line has the label and which has t 2018-09-24T00:50:35Z aeth: (unless you have a confusing way of permitting multiple come-froms from the same label, but that seems adding to the basic come from) 2018-09-24T00:50:46Z aeth: s/that seems/that seems like/ 2018-09-24T00:51:22Z LdBeth: Yes, literate programming is pretty much the same thing 2018-09-24T00:56:08Z oni-on-ion: aeth, can i (defun ()) something as well as execute it? like in JS we can do (function n(arg) {})(arg) 2018-09-24T00:56:31Z oni-on-ion: apparently webasm has built in flow control stuff and avoids goto 2018-09-24T00:56:43Z asarch joined #lisp 2018-09-24T00:56:59Z mange: oni-on-ion: Does n really escape that? I don't think that defines n in the wider scope. 2018-09-24T01:00:11Z oni-on-ion: mange: not sure. but i am hoping defun could =) 2018-09-24T01:00:42Z no-defun-allowed: (progn (defun foo ...) (foo ...)) could work 2018-09-24T01:00:57Z no-defun-allowed: but tbh that's disgusting 2018-09-24T01:01:03Z aeth: oni-on-ion: this seems to work. (funcall (defun foo (x) x) 42) 2018-09-24T01:01:24Z oni-on-ion: ah nice ! 2018-09-24T01:01:26Z oni-on-ion: ty ty =) 2018-09-24T01:01:28Z no-defun-allowed: oh yeah, defun returns the symbol that names the function 2018-09-24T01:01:36Z aeth: oni-on-ion: defun returns the function name, so it would be just like (funcall 'foo 42) 2018-09-24T01:02:06Z aeth: oni-on-ion: avoiding goto would be a problem for implementing a Lisp in wasm, then 2018-09-24T01:02:51Z aeth: oni-on-ion: every macro that has to do with iteration (e.g. DO, LOOP) in CL is typically ultimately just a macro over GO contained within the scope of a TAGBODY 2018-09-24T01:03:02Z aeth: Often they use DO as an intermediate target, though. 2018-09-24T01:04:40Z no-defun-allowed: if wasm's supposed to compile to SSA, maybe looking at how llvm compilers handle for-loops and the like could help 2018-09-24T01:04:58Z oni-on-ion: wasm is getting a bunch more stuff i think because its not quite ready for super high level langs 2018-09-24T01:05:11Z oni-on-ion: it only supports 4 types, 32 and 64bit ints and floats =) 2018-09-24T01:05:23Z oni-on-ion: and cool, didnt know about defun, thats great =) 2018-09-24T01:05:42Z no-defun-allowed: what the fuck, 4 types? 2018-09-24T01:05:43Z aeth: oni-on-ion: it looks ugly, and it will warn you if you run it more than once (e.g. redefining it) 2018-09-24T01:05:45Z p_l: SSA and CPS are equivalent, and CPS had been a long time target for lisp compilers :) 2018-09-24T01:06:00Z no-defun-allowed: how do you intend on doing anything in wasm? 2018-09-24T01:06:12Z no-defun-allowed: oni-on-ion: yeah don't do that defun trick, just use flet or a lambda 2018-09-24T01:06:32Z aeth: It technically works, that's all 2018-09-24T01:07:43Z p_l: no-defun-allowed: interestingly enough, DEC Alpha was fastest processor on market while supporting only 32-bit-extended-to-64, 64bit ints, and few types of floats (of modern importance being only ieee 32 and 64 bit ones) 2018-09-24T01:07:54Z oni-on-ion: mhm =) not necessarily need the defun trick, but writing prototyping code, it helps to have the options. i almost needed it for how i was testing something out 2018-09-24T01:08:54Z p_l: the only issue it had was I/O due to lack of byte-sized accesses, which was worked around by intermediate chip... and which in WASM is done by exposing calls to JavaScript (which has a very limited primitive type system as well) 2018-09-24T01:09:16Z aeth: "has a very limited primitive type system as well" that's an understatement 2018-09-24T01:09:19Z no-defun-allowed: well yes today's cpus only handle ints and sometimes floats 2018-09-24T01:09:36Z pjb quit (Ping timeout: 252 seconds) 2018-09-24T01:09:39Z no-defun-allowed: javascript has a type system? 2018-09-24T01:09:46Z aeth: Isn't JS just number, boolean, string, and object? 2018-09-24T01:09:58Z no-defun-allowed: 1 + [] = "1" 2018-09-24T01:10:27Z aeth: (I'm not sure if objects and arrays are distinct) 2018-09-24T01:10:40Z p_l: aeth: and outside of boolean, number and characters can be generalized to float64 and int32, while objects are memory accesses 2018-09-24T01:10:48Z aeth: It looks like JS also has a null 2018-09-24T01:10:55Z no-defun-allowed: yeah arrays are pretty much special objects last time i checked 2018-09-24T01:11:19Z p_l: no-defun-allowed: today's cpus have a wide variety of different types, even if ultimately they are put in rather limited forms. Legacy of CISC :) 2018-09-24T01:11:44Z no-defun-allowed: types such as: byte, int, bigger int, bigger bigger int 2018-09-24T01:13:22Z oni-on-ion: aeth is your engine going to support switch or steam or anything 2018-09-24T01:13:44Z nisstyre is now known as `nisstyre 2018-09-24T01:14:17Z p_l: a variety of ints, packed int vectors, variable-sized arrays, floats, packed float vectors, packed character vectors, encryption primitives, and include instructions which are general-purpose primitives for building things like XML processing engines 2018-09-24T01:14:58Z p_l: SSE 4.2 is pretty wild at times 2018-09-24T01:15:22Z aeth: oni-on-ion: Supporting a console would require (1) porting SBCL, (2) replacing everything that touches SDL, (3) replacing everything that touches OpenGL. The Switch has the added challenge of not being x86-64, so it might also require improving SBCL's code generation on AMD64. 2018-09-24T01:15:32Z aeth: oni-on-ion: Supporting Steam requires wrapping one foreign library. 2018-09-24T01:15:55Z p_l: (SPARC is downright pedestrian, being a pretty honest RISC design with addition of supporting custom type systems that use tagged values) 2018-09-24T01:16:06Z aeth: s/AMD64/ARM64/ 2018-09-24T01:16:09Z aeth: wrong acronym XD 2018-09-24T01:16:19Z aeth: That shows you how much I think of other architectures. 2018-09-24T01:16:25Z SenasOzys joined #lisp 2018-09-24T01:16:39Z aeth: p_l: I think RISC V is similar there. 2018-09-24T01:17:02Z SenasOzys quit (Remote host closed the connection) 2018-09-24T01:17:18Z p_l: with RISC-V add every bit of kitchen sink that was discussed at cpu design course 2018-09-24T01:17:30Z aeth: as long as it's RISC 2018-09-24T01:17:31Z oni-on-ion: aeth: hmmmmm. javascript then =) 2018-09-24T01:17:46Z p_l: but keep the base essentially a reiteration of MIPS because that's what the faculty taught ;) 2018-09-24T01:17:54Z SenasOzys joined #lisp 2018-09-24T01:19:22Z p_l: which is probably why it's the only new design since 1990s to use Cray-style vector unit 2018-09-24T01:19:32Z aeth: oni-on-ion: Supporting JavaScript and probably even WASM requires writing my own Common Lisp implementation and trying to even get half the speed of what SBCL can get while working on a much higher level target. 2018-09-24T01:19:55Z aeth: It would also require replacing SDL and OpenGL (but with WebGL instead of a proprietary API). So it would probably actually be harder. 2018-09-24T01:20:13Z oni-on-ion: hmmmm. 2018-09-24T01:20:33Z aeth: (Neither ParenScript nor JSCL are complete and the incomplete parts are exactly the parts you'd want for a high-performance CL application.) 2018-09-24T01:21:44Z oni-on-ion: parenscript seems ok, how come it is not "complete"? 2018-09-24T01:21:55Z oni-on-ion: i've used it a bunch, and for a half-4drl 2018-09-24T01:21:58Z aeth: oni-on-ion: iirc ParenScript is explicitly a subset and JSCL is j ust very incomplete. 2018-09-24T01:22:30Z oni-on-ion: well yes. parenscript is not meant to be a full blown CL. just a translation to JS being as close to CL as possible under that 2018-09-24T01:22:37Z aeth: oni-on-ion: But you don't even want a complete, conforming CL implementation. CLISP is one such implementation and it's still entirely unsuitable for the kind of program that my game engine is. 2018-09-24T01:22:40Z oni-on-ion: not like say ClojureScript 2018-09-24T01:22:54Z aeth: You want something that goes beyond the minimum required by the standard. 2018-09-24T01:23:00Z oni-on-ion: huh? 2018-09-24T01:23:31Z Fare joined #lisp 2018-09-24T01:23:54Z aeth: If you're writing a game, you want type declarations and other optional places where types show up to (1) be respected and (2) actually optimize what you're writing. The only place where SBCL fails here is not respecting :type in defclass at default optimization levels because SBCL primarily uses types for performance, not reliability. 2018-09-24T01:24:17Z rumbler31 joined #lisp 2018-09-24T01:24:27Z aeth: (:type in defclass wouldn't really improve performance 2018-09-24T01:24:28Z aeth: ) 2018-09-24T01:25:54Z aeth: oni-on-ion: the only things that implementations are required to respect are CHECK-TYPE and (maybe, I'm not sure) TYPEP in an ASSERT... and they don't have to optimize based on that CHECK-TYPE, either. 2018-09-24T01:28:57Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-24T01:37:00Z Balooga_ quit (Quit: Balooga_) 2018-09-24T01:38:01Z Balooga_ joined #lisp 2018-09-24T01:40:36Z zmt00 quit (Quit: Leaving) 2018-09-24T01:42:08Z marvin2 quit (Ping timeout: 252 seconds) 2018-09-24T01:42:12Z `nisstyre is now known as nisstyre 2018-09-24T01:48:37Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-24T01:53:15Z Balooga_ quit (Quit: Balooga_) 2018-09-24T01:54:13Z dale quit (Quit: dale) 2018-09-24T01:56:46Z robotoad quit (Quit: robotoad) 2018-09-24T02:00:35Z rtypo quit (Ping timeout: 244 seconds) 2018-09-24T02:02:31Z graphene quit (Remote host closed the connection) 2018-09-24T02:03:46Z graphene joined #lisp 2018-09-24T02:04:25Z dddddd quit (Remote host closed the connection) 2018-09-24T02:06:42Z robotoad joined #lisp 2018-09-24T02:12:12Z lavaflow quit (Read error: No route to host) 2018-09-24T02:12:37Z adam4567 left #lisp 2018-09-24T02:14:37Z lavaflow joined #lisp 2018-09-24T02:20:07Z oni-on-ion: aeth: hmm, alright. thanks for explaining that 2018-09-24T02:24:30Z orivej quit (Ping timeout: 252 seconds) 2018-09-24T02:33:08Z dale joined #lisp 2018-09-24T02:51:44Z Balooga_ joined #lisp 2018-09-24T02:52:34Z graphene quit (Remote host closed the connection) 2018-09-24T02:53:49Z graphene joined #lisp 2018-09-24T02:55:04Z gector quit (Read error: Connection reset by peer) 2018-09-24T02:55:41Z gector joined #lisp 2018-09-24T02:56:00Z robotoad_ joined #lisp 2018-09-24T02:57:29Z robotoad quit (Ping timeout: 252 seconds) 2018-09-24T03:03:33Z beach: Good morning everyone! 2018-09-24T03:03:41Z Balooga_: Hi beach 2018-09-24T03:06:47Z no-defun-allowed: Morning beach 2018-09-24T03:06:47Z pjb joined #lisp 2018-09-24T03:07:04Z Blackbeard: hi 2018-09-24T03:08:35Z lavaflow_ joined #lisp 2018-09-24T03:09:56Z lavaflow quit (Ping timeout: 260 seconds) 2018-09-24T03:17:32Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-24T03:24:59Z rumbler31 joined #lisp 2018-09-24T03:29:36Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-24T03:33:34Z lnostdal quit (Quit: rebooting .. brb!) 2018-09-24T03:33:44Z megalography left #lisp 2018-09-24T03:35:19Z lnostdal joined #lisp 2018-09-24T03:35:43Z anewuser quit (Quit: anewuser) 2018-09-24T03:39:45Z pjb quit (Ping timeout: 252 seconds) 2018-09-24T03:42:13Z graphene quit (Remote host closed the connection) 2018-09-24T03:43:27Z graphene joined #lisp 2018-09-24T03:45:21Z oni-on-ion quit (Read error: No route to host) 2018-09-24T03:46:57Z oni-on-ion joined #lisp 2018-09-24T03:48:15Z Balooga_ quit (Quit: Balooga_) 2018-09-24T03:54:36Z PO_away quit (Quit: Leaving) 2018-09-24T03:54:38Z steiner left #lisp 2018-09-24T03:57:21Z LdBeth: hi 2018-09-24T03:57:46Z shifty quit (Ping timeout: 260 seconds) 2018-09-24T03:57:57Z LdBeth: how is #1=(1 . #1#) 2018-09-24T03:58:13Z LdBeth: this kind of reader macro implemented? 2018-09-24T03:59:03Z oni-on-ion: ~  2018-09-24T04:00:27Z |3b| would guess something like keeping a hash table of locations that need updated after whole thing is READ while READing it, then going back and updating once the actual value is available 2018-09-24T04:00:57Z LdBeth: ok, i can find ccl's impl 2018-09-24T04:02:00Z LdBeth: I found it comfusing because (get-dispatch-macro-character #\# #\1) returns nil 2018-09-24T04:02:01Z White_Flame: if you think about it, the only way to cons up a recursive list is to mutate one of the cells to hook it back 2018-09-24T04:02:09Z |3b|: it is #= 2018-09-24T04:02:28Z |3b|: 1 is a parameter to the #= dispatching reader macro 2018-09-24T04:02:33Z White_Flame: ie, you can't make a looped list with only pure functional cons calls 2018-09-24T04:04:45Z beach: |3b| is right. 2018-09-24T04:05:25Z |3b|: https://github.com/robert-strandh/SICL/blob/master/Code/Reader/Simple/macro-functions.lisp#L858 https://github.com/robert-strandh/SICL/blob/master/Code/Reader/Simple/read.lisp#L15 https://github.com/robert-strandh/SICL/blob/master/Code/Reader/Simple/fixup.lisp is the implementation from SICL 2018-09-24T04:06:29Z pjb joined #lisp 2018-09-24T04:07:09Z LdBeth: thanks, SICL's impl seems make more sense. CCL is restriced to use level-1 constructs. 2018-09-24T04:07:18Z |3b|: beach: in https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Code-utilities/declarations.lisp#L74 does the "we" not include users or implementations? 2018-09-24T04:08:04Z beach: It is better to look at Eclector. 2018-09-24T04:08:39Z beach: https://github.com/robert-strandh/Eclector 2018-09-24T04:08:54Z |3b|: (users who want to introspect the env during macros etc, or cleavir-based implementations trying to use the declarations to modify codegen) 2018-09-24T04:10:19Z beach: |3b|: Good question. 2018-09-24T04:10:46Z dale quit (Quit: dale) 2018-09-24T04:12:40Z |3b|: beach: also, if i want to have a set of functions that are compiled specially (foreign functions with different calling convention in this case), what's the best way to specify that in cleavir? best i've come up with so far is compiler macro that turns the call into a special form that knows about the extra details 2018-09-24T04:12:42Z beach: |3b|: I think the idea is that the acceptable declaration can be customized. But Common Lisp also allows declarations that are only valid in some implementations, provided that there is a DECLARATION declaration. 2018-09-24T04:13:24Z beach: It should be possible to customize the way function calls are compiled. 2018-09-24T04:13:46Z beach: Pretty much every compilation function is a generic function, so it can be customized. 2018-09-24T04:13:59Z beach: If I have missed this particular one, that could be corrected. 2018-09-24T04:14:10Z |3b|: yeah, just not obvious which ones to customize :) 2018-09-24T04:14:17Z beach: Let me look... 2018-09-24T04:15:09Z |3b|: possibly i just needed to cut it off higher in class hierarchy and not try to inherit from existing similar classes as much 2018-09-24T04:15:56Z |3b|: and if not clear, this is selected per function. one calling convention for FFI, and another for 'normal' functions 2018-09-24T04:16:20Z |3b|: the FFI calls need to do compile-time dispatching on name and argument type/counts, while 2018-09-24T04:16:32Z |3b|: while 'normal' functions act like CL 2018-09-24T04:17:37Z beach: The technique is as follows. Your environment must return a different INFO class for that type of function you want. Then you need to define a method on CONVERT-CST that specializes on that class. 2018-09-24T04:17:38Z |3b|: ideally transparent to user, since the differences are all internal (compile vs runtime dispatch, and hidden arguments) 2018-09-24T04:18:06Z |3b|: ok, i probably need to upgrade my sicl then, since i think i grabbed it right before you added the CST stuff :) 2018-09-24T04:18:25Z beach: I see. Well, there should be something similar in Generate-AST. 2018-09-24T04:18:34Z beach: That part hasn't changed. 2018-09-24T04:18:51Z |3b|: yeah, most of what i could find was either not exported or overwrote my changes 2018-09-24T04:19:17Z beach: It is called CONVERT-FORM in the Generate-AST system. 2018-09-24T04:19:18Z |3b|: so i'll update and try again before wasting your time debugging outdated code :) 2018-09-24T04:19:31Z |3b|: right 2018-09-24T04:19:35Z beach: The same action is required. 2018-09-24T04:20:02Z beach: You need to return a custom INFO object from the environment, and you need to add a method on CONVERT-FORM or CONVERT-CST. 2018-09-24T04:20:23Z |3b|: i think my custom info was getting converted to a global-function-info somewhere in the middle 2018-09-24T04:20:49Z |3b|: but possibly deriving it from global-function-info was a mistake? 2018-09-24T04:21:08Z |3b|: s/converted/replaced/ 2018-09-24T04:21:53Z beach: Maybe so. 2018-09-24T04:22:17Z beach: What is the representation of your environment? 2018-09-24T04:22:47Z |3b| 's env is a subclass of sicl-simple-environment:simple-environment 2018-09-24T04:23:20Z |3b|: with a method on cleavir-env:function-info to return the info for the FFI stuff 2018-09-24T04:23:21Z beach: Great! That should not hard then. 2018-09-24T04:23:32Z beach: OK, that sounds right. 2018-09-24T04:24:02Z |3b|: (and stubs for whatever other methods it complained about when i tried to compile something) 2018-09-24T04:24:25Z beach: Looks like you are on the right track. 2018-09-24T04:27:39Z |3b|: alternately, can i modify how it generates code to look up the function? 2018-09-24T04:27:46Z Kundry_Wag joined #lisp 2018-09-24T04:28:14Z beach: That doesn't sound right. 2018-09-24T04:28:24Z |3b|: possibly i could just have it return a special thing instead of generating a temp and looking up the function, and the code generator for funcall could just look for that thing 2018-09-24T04:29:09Z beach: You can try that. 2018-09-24T04:29:16Z beach: I haven't given it much thought. 2018-09-24T04:29:53Z |3b| will think some more and look at code 2018-09-24T04:30:20Z beach: What is it that you are working on? 2018-09-24T04:31:00Z |3b| wants a CL-like language that generates dalvik bytecode (possibly eventually a full CL, but that is relatively low priority for now) 2018-09-24T04:31:22Z beach: Wow, ambitious. 2018-09-24T04:31:49Z |3b|: and also learning cleavir to see how well it would apply to my existing compilers with similar goals (cl-like compiler to GLSL, cl-like compiler to spir-v, etc :) 2018-09-24T04:32:05Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-24T04:32:14Z beach: Very nice. 2018-09-24T04:32:17Z |3b|: well, the amount of ambition varies with the '-like' part :) 2018-09-24T04:32:35Z |3b|: which is one reason for full-cl being low priority, to minimize that amount 2018-09-24T04:33:02Z beach: I understand. 2018-09-24T04:33:23Z |3b|: full CL would probably wait until it could be a SICL backend if ever 2018-09-24T04:33:47Z beach: Yeah, that might be best. 2018-09-24T04:34:34Z |3b|: but to be minimally useful, it doesn't need to be able to do too much beyond define a subclass of a java API class with a few simple methods, so it could handle events from UI 2018-09-24T04:34:55Z oni-on-ion: "full" CL... 2018-09-24T04:35:55Z |3b| already wrote a dalvik asm/disasm and some of the file format tools last time i wanted a dalvik compiler, and just mostly finished parsing the API definitions so i should be able to define subclasses and methods, and call methods 2018-09-24T04:36:07Z |3b|: now just need to write the compiler part :p 2018-09-24T04:36:46Z beach: "just"! Heh. 2018-09-24T04:37:04Z |3b|: :) 2018-09-24T04:37:32Z |3b|: compiler is relatively easy if it doesn't have to be fast and nice to use :) 2018-09-24T04:37:48Z |3b|: (especially when you already wrote a big chunk of it) 2018-09-24T04:39:07Z |3b|: and type inference is a big part of both of those, and cleavir has half of that too 2018-09-24T04:39:23Z beach: True. 2018-09-24T04:39:42Z pjb quit (Ping timeout: 252 seconds) 2018-09-24T04:40:05Z beach: I think it would be great to have another client. More problems will be exposed and fixed. More contributions might happen. 2018-09-24T04:40:37Z |3b|: yeah, hopefully i'll actually finish the dalvik compiler this time :) 2018-09-24T04:42:16Z |3b|: oni-on-ion: "full" CL as in things like multiple values, conditions, automatic bignums (and ratios + complex types), clos, etc 2018-09-24T04:42:30Z beach: Right. Good luck! 2018-09-24T04:43:57Z oni-on-ion: i wonder if there is or could be a mini/half CL 2018-09-24T04:44:02Z |3b|: though this one will probably be closer to CL than the glsl/spirv compiler, just due to a more general-purpose target, so might support bignums, multiple values and conditions earlier 2018-09-24T04:44:12Z |3b|: the spec allows for "subsets" 2018-09-24T04:44:18Z |3b| hasn't heard of any though 2018-09-24T04:44:19Z oni-on-ion: ohh subsets, interesting 2018-09-24T04:45:22Z |3b|: clhs 1.7 2018-09-24T04:45:22Z specbot: Language Subsets: http://www.lispworks.com/reference/HyperSpec/Body/01_g.htm 2018-09-24T04:45:53Z |3b| more or less tries for that, but usually not 100% 2018-09-24T04:46:36Z aeth: oh, cool, I am going to write a subset of CL that can handle +, -, /, and * then 2018-09-24T04:46:54Z |3b|: like my glsl compiler has types defconstant, which doesn't match CL... would have to do separate defconstant + declaim to get a subset 2018-09-24T04:47:00Z |3b|: *typed defconstant 2018-09-24T04:47:23Z oni-on-ion: interestnig 2018-09-24T04:47:40Z |3b|: aeth: make sure to specify the numeric types properly (or implement full CL numeric tower) :p 2018-09-24T04:48:01Z |3b|: i guess you could just say a conforming program can't have numeric overflow in your subset 2018-09-24T04:49:37Z aeth: |3b|: typed defconstant seems pretty easy to resolve: just rename it and make it macroexpand-1 into defconstant + declaim 2018-09-24T04:53:25Z |3b|: not really something that needs resolved, just an example of how i don't try to make a 100% subset :) 2018-09-24T04:54:42Z |3b|: and to be a subset, i think that macro would need to be in the user code rather than the implementation code 2018-09-24T04:56:12Z aeth: |3b|: I think it would have to be in another package than CL 2018-09-24T04:57:32Z Oladon quit (Quit: Leaving.) 2018-09-24T04:59:13Z graphene quit (Remote host closed the connection) 2018-09-24T05:00:30Z graphene joined #lisp 2018-09-24T05:02:01Z |3b|: aeth: "any valid program in that language has equivalent semantics and will run directly (with no extralingual pre-processing, and no special compatibility packages) in any conforming implementation of the full language" 2018-09-24T05:02:24Z |3b|: so if the language specifies non-CL packages, it isn't a CL subset 2018-09-24T05:04:22Z shka_ joined #lisp 2018-09-24T05:06:05Z |3b| supposes i could define it as requiring 'conforming programs' to also be 'conforming CL programs with same semantics', and just anything that uses the stuff that differs is non-conforming :p 2018-09-24T05:07:10Z |3b|: though 'conforming programs' in that case would be prtty small set, you could do simple math on floats, not sure how much else :p 2018-09-24T05:08:19Z aeth: I don't think it's useful to write conforming CL on the GPU, anyway. The semantics are too different. 2018-09-24T05:09:17Z aeth: I would actually intentionally name certain things differently (e.g. a different name for defun) so people don't confuse the two 2018-09-24T05:11:10Z housel quit (Read error: Connection reset by peer) 2018-09-24T05:14:36Z oni-on-ion: julia does the GPU automatigally 2018-09-24T05:15:15Z graphene quit (Remote host closed the connection) 2018-09-24T05:15:17Z oni-on-ion: kind of scary how it parallelizes and vectorises stuff. but its not CL. 2018-09-24T05:15:29Z doubledup joined #lisp 2018-09-24T05:15:58Z oni-on-ion: couldnt CL target GPGPU stuff similarily ? 2018-09-24T05:16:28Z aeth: oni-on-ion: stuff like that seems like it would be more useful as a CL library on top of a distinct GPU shader language rather than as a feature of a GPU CL 2018-09-24T05:16:35Z graphene joined #lisp 2018-09-24T05:16:46Z beach: |3b|: I am sorry that I am not extremely helpful right now. Monday mornings are chaotic here under normal circumstances. And now we have house guests as well, so I am even busier than usual. 2018-09-24T05:17:07Z aeth: oni-on-ion: the latter couldn't be 100% GPU so now you'd have a very unpredictable program where you're always asking: "Is this going to be on the CPU or the GPU?" 2018-09-24T05:18:03Z housel joined #lisp 2018-09-24T05:18:09Z aeth: I personally think that predictable behavior is more important than performance. 2018-09-24T05:18:51Z Fare quit (Ping timeout: 260 seconds) 2018-09-24T05:18:58Z |3b|: beach: no problem, you've given me enough to think about/investigate for now :) 2018-09-24T05:19:06Z beach: Oh, good. 2018-09-24T05:19:16Z beach: Keep me informed about how it goes. 2018-09-24T05:19:40Z oni-on-ion: aeth: not sure of the difference but i think i understand 2018-09-24T05:20:18Z |3b|: oni-on-ion: for the specific case of glsl, the execution model is different enough from CL that i wouldn't want much more than i have (something that looks like CL but focused on that specific usage style 2018-09-24T05:20:52Z oni-on-ion: ahhh yeah, ok i see ^_^ 2018-09-24T05:21:06Z |3b|: for general GPGPU, you would probably still at least want a specialized library that generated GPU code rather than trying to translate arbitrary CL code 2018-09-24T05:21:27Z |3b| thinks *lisp and cmlisp would translate well to GPU for example 2018-09-24T05:21:30Z aeth: oni-on-ion: I mean this. If MAP could be single-threaded, multi-threaded, or on the GPU depending on various characteristics (like the input, which function is being used, whether or not the function is pure, etc.) then I wouldn't know what's going on at all. 2018-09-24T05:21:49Z |3b|: ^ 2018-09-24T05:21:50Z oni-on-ion: aeth: ahh. it would be practical to be able to decide. 2018-09-24T05:21:51Z aeth: oni-on-ion: But it's easy to write PMAP or GPU-MAP on top of CL. 2018-09-24T05:23:26Z |3b|: also moderately expensive to send things to/from GPU, so ideally you'd decide in advance that you were doing a bunch of GPU work with particular data 2018-09-24T05:23:29Z aeth: (Well, GPU-MAP would be fairly tricky, but I'd rather have it as a library than as part of the language as part of MAP.) 2018-09-24T05:24:59Z |3b|: so something like "add 10 million floats to these other 10 million floats" is fast on GPU, but if you add "copy these 20 million floats to gpu" and "copy these 20 million floats from gpu", it would have been faster to just add them on cpu 2018-09-24T05:25:29Z |3b|: (actually i guess you only need to copy 10M back, but doesn't change the conclusion) 2018-09-24T05:28:05Z aeth: yeah, it's not a decision I'd want a compiler to make 2018-09-24T05:28:27Z |3b|: well, sort of depends on language 2018-09-24T05:28:29Z aeth: sounds a lot easier to solve for one program than for all programs 2018-09-24T05:28:44Z |3b|: CL is specified in a way where it would be hard to extract good candidates 2018-09-24T05:28:58Z |3b|: but array languages might be good candidates for automatic translation 2018-09-24T05:30:03Z lemonpepper24 quit (Ping timeout: 245 seconds) 2018-09-24T05:30:36Z aeth: |3b|: I don't know. Is it possible to extend the type of a function to do things like mark functions as pure? (Or do some other declare of pure.) 2018-09-24T05:31:44Z aeth: Then a function defined in the same file or defined locally (as a lambda or with flet or with labels) or defined with sb-ext:*derive-function-types* set to T (or equivalents in other implementations if they exist, possibly CMUCL has one) could have at least more guarantees about its behavior 2018-09-24T05:32:06Z aeth: (Oh, also defined in the CL package, which has a lock.) 2018-09-24T05:32:09Z |3b|: yeah, not impossible, especially for fairly narrow subsets 2018-09-24T05:32:27Z smokeink quit (Remote host closed the connection) 2018-09-24T05:32:48Z jackdaniel: ecl has "pure" proclamations (it has also "side-effect free" proclamataion, what is slightly else) 2018-09-24T05:33:00Z jackdaniel: s/else/different/ 2018-09-24T05:33:06Z |3b|: i think sbcl has some similar things 2018-09-24T05:33:30Z aeth: Would be nice to have a portability library here and to fill in the gaps where they exist (at least supporting SBCL, CCL, and ECL) 2018-09-24T05:33:32Z |3b|: (probably most compilers that want to optimize at all, so you can decide if you can completely skip calls if result isn't used, or rearrange them, or whatever) 2018-09-24T05:33:43Z smokeink joined #lisp 2018-09-24T05:34:23Z |3b|: though as usual possibility of redefinition complicates things in CL :) 2018-09-24T05:34:43Z jackdaniel: https://gitlab.com/embeddable-common-lisp/ecl/blob/develop/src/cmp/proclamations.lsp ← 2018-09-24T05:34:54Z aeth: |3b|: hence my qualifications of sb-ext:*derive-function-types* or defined locally to the function or defined in the same file (or compilation-unit) or defined in the locked CL package 2018-09-24T05:35:13Z |3b|: right 2018-09-24T05:35:38Z aeth: Would be nice if every implementation had something like sb-ext:*derive-function-types* so you could just turn on the super optimizations super type derivations super static checking when you're done developing 2018-09-24T05:36:17Z |3b|: yeah, that's another reason for not doing full CL for dalvik to start with, easier to get small binaries :) 2018-09-24T05:37:15Z aeth: (The alternative is to put everything in one file but that breaks people's assumptions with using functions in macros because they don't put eval-when around literally everything) 2018-09-24T05:37:47Z aeth: (Also it's a bit surprising that C-c C-c could break your program because the compiler assumes C-c C-k) 2018-09-24T05:41:26Z Inline quit (Quit: Leaving) 2018-09-24T05:46:56Z no-defun-allowed: do you think anyone would complain if i added that to cl-vep's package.lisp? 2018-09-24T05:49:28Z igemnace quit (Ping timeout: 244 seconds) 2018-09-24T05:51:16Z aeth: no-defun-allowed: added what? 2018-09-24T05:51:29Z no-defun-allowed: derive-function-types 2018-09-24T05:51:30Z aeth: this? "#+sbcl sb-ext:*derive-function-types*" 2018-09-24T05:51:31Z aeth: don't do that 2018-09-24T05:51:43Z paule32 quit (Ping timeout: 245 seconds) 2018-09-24T05:51:44Z aeth: Imo leave it up to the user. 2018-09-24T05:52:09Z no-defun-allowed: okay then 2018-09-24T05:52:11Z aeth: no-defun-allowed: It's possible there's a way for you to set it to T, have ASDF compile your files, and then restore it to the original value. I don't know ASDF that well. 2018-09-24T05:52:37Z no-defun-allowed: i'm already messing with the GC to make it more agressive 2018-09-24T05:52:44Z aeth: oh sorry it would be #+sbcl (setf sb-ext:*derive-function-types* T) 2018-09-24T05:52:54Z aeth: anyway, that's a build step 2018-09-24T05:53:55Z aeth: (There are probably some other things that are useful for final builds of a program, in various implementations) 2018-09-24T05:54:23Z frodef joined #lisp 2018-09-24T05:54:57Z no-defun-allowed: hey frodef 2018-09-24T05:56:04Z no-defun-allowed: didn't seem to do much, probably since i've annotated functions myself to hell 2018-09-24T05:56:19Z no-defun-allowed: #+sbcl (setf (sb-ext:bytes-consed-between-gcs) (expt 2 26))​ stays though 2018-09-24T06:01:58Z joga joined #lisp 2018-09-24T06:03:05Z bgavran quit (Quit: The Lounge - https://thelounge.github.io) 2018-09-24T06:04:29Z smokeink quit (Ping timeout: 252 seconds) 2018-09-24T06:14:49Z varjag joined #lisp 2018-09-24T06:26:22Z no-defun-allowed: what do i declare to get something on the stack again? 2018-09-24T06:28:00Z no-defun-allowed: got it, dynamic-extent 2018-09-24T06:36:52Z ealfonso joined #lisp 2018-09-24T06:38:14Z graphene quit (Remote host closed the connection) 2018-09-24T06:39:03Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-24T06:39:35Z graphene joined #lisp 2018-09-24T06:48:22Z shka_ quit (Ping timeout: 246 seconds) 2018-09-24T06:51:36Z rozenglass quit (Read error: Connection reset by peer) 2018-09-24T06:52:59Z gpiero joined #lisp 2018-09-24T06:55:56Z frgo quit (Remote host closed the connection) 2018-09-24T06:56:32Z frgo joined #lisp 2018-09-24T07:00:15Z igemnace joined #lisp 2018-09-24T07:01:43Z frgo quit (Ping timeout: 245 seconds) 2018-09-24T07:02:56Z LdBeth: How to produce argument number of space with FORMAT? 2018-09-24T07:04:07Z LdBeth: maybe (format nil (format nil "~~~S@T" 12))? 2018-09-24T07:06:34Z doubledup quit (Read error: Connection reset by peer) 2018-09-24T07:06:56Z doubledup joined #lisp 2018-09-24T07:12:06Z |3b|: ~v@t ? 2018-09-24T07:13:36Z |3b|: v as parameter to a format directive means get the value from one of the arguments 2018-09-24T07:14:21Z LdBeth: Thanks 2018-09-24T07:15:27Z LdBeth: FORMAT iso complex. 2018-09-24T07:15:47Z |3b|: and still run into too many things it can't do :)( 2018-09-24T07:16:07Z |3b|: (at least without using the "just call an arbitrary function" feature 2018-09-24T07:17:33Z umpc quit (Ping timeout: 245 seconds) 2018-09-24T07:18:48Z mason quit (Ping timeout: 245 seconds) 2018-09-24T07:18:51Z isoraqathedh: The "call an arbitrary function" thing is awful to use as well. 2018-09-24T07:18:55Z mason joined #lisp 2018-09-24T07:19:10Z |3b|: yeah, which is why i didn't count it 2018-09-24T07:19:16Z umpc joined #lisp 2018-09-24T07:19:23Z isoraqathedh: You get exactly 1 argument, it must be package qualified (unless it's in cl-user, but you don't put things there anyway). 2018-09-24T07:19:54Z isoraqathedh: I don't remember if it can take extra format arguments in the format string. 2018-09-24T07:20:43Z isoraqathedh: Wasn't there someone who wrote a replacement package for format? If I remember right there was an attempt but the format string format is used in multiple places it ended up going nowhere. 2018-09-24T07:21:31Z |3b|: it passes stream, argument to print, flags for : and @ modifiers, and any prefix arguments from format string 2018-09-24T07:22:06Z smokeink joined #lisp 2018-09-24T07:25:25Z pjb joined #lisp 2018-09-24T07:26:12Z angavrilov joined #lisp 2018-09-24T07:26:56Z shifty joined #lisp 2018-09-24T07:27:01Z trittweiler: It's not so bad. I have a define-format-function which puts the symbols into an FMT package, so you use ~/FMT:IPV4/ for example 2018-09-24T07:27:31Z LdBeth: format can take a function instead of string spec 2018-09-24T07:27:50Z vlatkoB joined #lisp 2018-09-24T07:27:54Z dieggsy quit (Quit: ZNC 1.7.1 - https://znc.in) 2018-09-24T07:28:21Z umpc quit (Ping timeout: 260 seconds) 2018-09-24T07:28:43Z dieggsy joined #lisp 2018-09-24T07:29:45Z umpc joined #lisp 2018-09-24T07:32:58Z TMA joined #lisp 2018-09-24T07:33:48Z smokeink quit (Remote host closed the connection) 2018-09-24T07:34:09Z smokeink joined #lisp 2018-09-24T07:36:16Z no-defun-allowed: if format did s-expressions that'd be nice 2018-09-24T07:37:18Z |3b|: you mean for specifying how to print? 2018-09-24T07:40:21Z asarch quit (Quit: Leaving) 2018-09-24T07:40:25Z LdBeth: I think it's mainly for perfomance 2018-09-24T07:41:12Z LdBeth: or backward compatibility, since the original XP used a read macro to compile format spec 2018-09-24T07:42:55Z LdBeth: the later is now defined as FORMATTER function 2018-09-24T07:44:24Z schweers joined #lisp 2018-09-24T07:48:24Z shrdlu68 joined #lisp 2018-09-24T07:48:44Z varjag joined #lisp 2018-09-24T07:49:52Z no-defun-allowed: yes, an s-expression dsl would be better for printing 2018-09-24T07:49:52Z |3b|: beach: i think my problem when i originally tried to make my own function info type is that i need a method on cleavir-env::make-info (which isn't exported) for it. otherwise it gets copied to a new global-function-info if i subclass that 2018-09-24T07:50:28Z |3b|: like the out macro from http://www.cs.yale.edu/homes/dvm/papers/ytdoc.pdf#page=12 ? 2018-09-24T07:51:33Z no-defun-allowed: ooh that's nice 2018-09-24T07:53:43Z moei quit (Quit: Leaving...) 2018-09-24T07:59:14Z smokeink quit (Remote host closed the connection) 2018-09-24T07:59:27Z pjb quit (Ping timeout: 252 seconds) 2018-09-24T08:00:32Z smokeink joined #lisp 2018-09-24T08:01:22Z paule32 joined #lisp 2018-09-24T08:01:58Z smokeink quit (Remote host closed the connection) 2018-09-24T08:02:18Z smokeink joined #lisp 2018-09-24T08:02:40Z smokeink quit (Remote host closed the connection) 2018-09-24T08:02:58Z smokeink joined #lisp 2018-09-24T08:03:00Z smokeink quit (Remote host closed the connection) 2018-09-24T08:03:06Z gpiero quit (Remote host closed the connection) 2018-09-24T08:03:18Z smokeink joined #lisp 2018-09-24T08:03:55Z smokeink quit (Remote host closed the connection) 2018-09-24T08:04:58Z mange quit (Remote host closed the connection) 2018-09-24T08:05:13Z ggole joined #lisp 2018-09-24T08:07:47Z frgo joined #lisp 2018-09-24T08:10:31Z ealfonso quit (Ping timeout: 244 seconds) 2018-09-24T08:12:06Z frgo quit (Ping timeout: 252 seconds) 2018-09-24T08:15:24Z frgo joined #lisp 2018-09-24T08:18:13Z xificurC: a pretty large set of tools. Wondering if it is widely used 2018-09-24T08:18:44Z no-defun-allowed: there is quite a lot to work with 2018-09-24T08:18:59Z no-defun-allowed: my blur function takes 3 seconds to do one frame :/ 2018-09-24T08:19:56Z no-defun-allowed: actually, it might be encoding/decoding overhead 2018-09-24T08:20:05Z xificurC: can't find ytools on quicklisp, so probably not 2018-09-24T08:20:48Z no-defun-allowed: 1.8 seconds of blurring \: 2018-09-24T08:21:36Z no-defun-allowed: i have an idea to fix that actually 2018-09-24T08:21:45Z beach: |3b|: If you think something should be exported, then you could send me a PR for it. 2018-09-24T08:22:13Z no-defun-allowed: the blur at (x, y) is pretty much the blur at (x-1, y) minus everything at the very left column 2018-09-24T08:22:18Z beach: |3b|: I am not surprised that there are things that ought to be exported, but arten't. 2018-09-24T08:22:19Z no-defun-allowed: hey beach 2018-09-24T08:22:26Z beach: Hello no-defun-allowed. 2018-09-24T08:22:30Z beach: "aren't" 2018-09-24T08:23:02Z |3b|: beach: yeah, that would require me to know what i'm doing first though, so might take a bit :) 2018-09-24T08:23:13Z beach: Take your time. 2018-09-24T08:23:40Z |3b| is starting to think i should just treat them as special forms instead (at the ast/IR level, not language level) :p 2018-09-24T08:25:41Z beach: Why do you think that? 2018-09-24T08:26:11Z beach: Once the AST is generated, it will be a "call" AST, so you would have to do some searching and transformation of the AST I would think. 2018-09-24T08:26:33Z no-defun-allowed: right now the complexity is around O(ns), where n is pixel count and s is blur size 2018-09-24T08:27:05Z |3b|: for one thing, make-info passes special-operator-info through unmodified, so saves me a method :) 2018-09-24T08:27:42Z beach: Heh, OK. 2018-09-24T08:27:48Z |3b|: but also when i did write the method, seems like most of the things it changes on global-function-info don't really apply to the ffi calls at this point anyway 2018-09-24T08:28:33Z |3b|: they are always open coded, so inline isn't really applicable, not sure dynamic extent applies, etc 2018-09-24T08:28:46Z |3b|: not sure if compiler macros will be valid or not 2018-09-24T08:29:07Z |3b|: type declarations maybe, but possibly not in the same way 2018-09-24T08:29:35Z beach: OK, sounds like you need to contemplate it some more. 2018-09-24T08:29:57Z |3b|: yeah 2018-09-24T08:30:10Z |3b|: at least getting closer i think :) 2018-09-24T08:30:15Z beach: Good. 2018-09-24T08:30:27Z beach: Don't hesitate to run your ideas by me. 2018-09-24T08:30:49Z beach: I am a little distracted at the moment, but I'll do my best. 2018-09-24T08:31:12Z |3b| is always distracted :p 2018-09-24T08:31:53Z edgar-rft distracts you all 2018-09-24T08:32:15Z no-defun-allowed: aaaaa another distraction! 2018-09-24T08:34:47Z xrash quit (Ping timeout: 240 seconds) 2018-09-24T08:35:39Z no-defun-allowed: i have an idea for speeding up box blur which requires a diagram, can i link one here please? 2018-09-24T08:37:22Z dieggsy quit (Quit: ZNC 1.7.1 - https://znc.in) 2018-09-24T08:37:41Z dieggsy joined #lisp 2018-09-24T08:39:15Z |3b| thinks that sounds reasonable, are your diagrams NSFW or something? :p 2018-09-24T08:40:35Z no-defun-allowed: no 2018-09-24T08:40:39Z no-defun-allowed uploaded an image: boxblurspeedup.png (7KB) < https://matrix.org/_matrix/media/v1/download/matrix.org/AcxdHTfXSIajKpCqLFGkdRgq > 2018-09-24T08:40:41Z paule32 quit (Ping timeout: 252 seconds) 2018-09-24T08:40:43Z no-defun-allowed: i didn't make them using a literate DSL that compiles to UML and LaTeX though so it doesn't look very good though 2018-09-24T08:41:15Z |3b|: yeah, that looks right 2018-09-24T08:41:23Z no-defun-allowed: in fact i spent two minutes in the GIMP drawing these 2018-09-24T08:42:46Z no-defun-allowed: right, thanks 2018-09-24T08:44:03Z russellw: (format t "~a~36T~a~%" s) is wrapping at 80 columns. How can I get it to not do that? 2018-09-24T08:44:32Z mason quit (Ping timeout: 252 seconds) 2018-09-24T08:44:53Z |3b|: clhs *print-right-margin* 2018-09-24T08:44:53Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/v_pr_rig.htm 2018-09-24T08:45:42Z russellw: thanks! 2018-09-24T08:45:47Z |3b|: or maybe *print-pretty* 2018-09-24T08:46:15Z |3b|: actually maybe not that, since you use format 2018-09-24T08:48:05Z |3b|: yeah, turning off *print-pretty* might do it 2018-09-24T08:49:26Z umpc quit (Ping timeout: 260 seconds) 2018-09-24T08:49:45Z graphene quit (Remote host closed the connection) 2018-09-24T08:50:53Z umpc joined #lisp 2018-09-24T08:51:02Z graphene joined #lisp 2018-09-24T08:51:18Z heisig joined #lisp 2018-09-24T08:51:28Z mason joined #lisp 2018-09-24T08:54:31Z no-defun-allowed: i'm annoyed all these loop clauses are all off by one from a haiku 2018-09-24T08:54:51Z no-defun-allowed: for this-x of-type single-float, from left-x to right-x, summing this-x 2018-09-24T08:59:24Z charh quit (Ping timeout: 252 seconds) 2018-09-24T09:01:00Z no-defun-allowed: and it wasn't the correct code anyways 2018-09-24T09:01:03Z charh joined #lisp 2018-09-24T09:04:22Z anewuser joined #lisp 2018-09-24T09:09:57Z nostoi joined #lisp 2018-09-24T09:10:50Z Cymew joined #lisp 2018-09-24T09:24:50Z nostoi quit (Quit: Verlassend) 2018-09-24T09:32:34Z moei joined #lisp 2018-09-24T09:35:32Z DataLinkDroid joined #lisp 2018-09-24T09:40:20Z slyrus quit (Remote host closed the connection) 2018-09-24T09:40:35Z slyrus joined #lisp 2018-09-24T09:41:28Z earl-ducaine quit (Remote host closed the connection) 2018-09-24T09:56:49Z pjb joined #lisp 2018-09-24T09:58:01Z schweers quit (Remote host closed the connection) 2018-09-24T09:59:14Z makomo joined #lisp 2018-09-24T10:01:19Z housel quit (Read error: Connection reset by peer) 2018-09-24T10:01:50Z shka_ joined #lisp 2018-09-24T10:03:53Z makomo: morning 2018-09-24T10:04:01Z shka_: good morning 2018-09-24T10:04:14Z russellw: morning! 2018-09-24T10:28:59Z scymtym quit (Remote host closed the connection) 2018-09-24T10:30:03Z pjb quit (Ping timeout: 252 seconds) 2018-09-24T10:33:41Z no-defun-allowed: morning 2018-09-24T10:56:53Z frgo quit (Remote host closed the connection) 2018-09-24T10:57:22Z frgo joined #lisp 2018-09-24T11:00:37Z milanj joined #lisp 2018-09-24T11:01:42Z frgo quit (Ping timeout: 252 seconds) 2018-09-24T11:04:14Z frgo joined #lisp 2018-09-24T11:11:16Z koenig quit (Read error: Connection reset by peer) 2018-09-24T11:12:11Z gravicappa joined #lisp 2018-09-24T11:12:59Z koenig joined #lisp 2018-09-24T11:14:12Z orivej joined #lisp 2018-09-24T11:23:29Z no-defun-allowed: Implementing fast box blur can happen some other time, I've got other things to do. 2018-09-24T11:23:30Z no-defun-allowed: Right now my "feedback" value overflows so I think balancing increments (+right) and decrements (-left) isn't working. 2018-09-24T11:28:36Z beach: Shouldn't you take the (possibly weighted) average of the three? 2018-09-24T11:28:50Z djh joined #lisp 2018-09-24T11:29:33Z no-defun-allowed: Yes, that's the naive approach. 2018-09-24T11:30:07Z no-defun-allowed: The optimal approach as far as I know is to start at the left with all pixels considered, then move right subtracting leftmost pixels and adding rightmost pixels. 2018-09-24T11:30:18Z no-defun-allowed: I uploaded a diagram of this earlier. 2018-09-24T11:31:06Z Shinmera: no-defun-allowed: a box blur is a linearly separable convolution kernel, so you can do a horizontal and then a vertical pass. Then for dealing with edge conditions, pad your image on each side by the blur size so you don't need to check for overruns aside from the standard image bounds. 2018-09-24T11:31:12Z no-defun-allowed: The reason I think it's overflowing is because my edge logic isn't working correctly. It's literally an edge case. 2018-09-24T11:31:36Z no-defun-allowed: Shinmera: I have written a box blur to that method but it's very slow 2018-09-24T11:31:50Z no-defun-allowed: What the hell? I never clicked on that. 2018-09-24T11:32:02Z Shinmera: generally, look into convolution kernels and how those are done fast 2018-09-24T11:32:18Z no-defun-allowed: It takes 1.5 seconds on a 1080x720 picture with a 20px radius. 2018-09-24T11:32:22Z Shinmera: if you can implement that generically you can have tons of neat effects fer free 2018-09-24T11:32:34Z no-defun-allowed: I have a method for doing it fast but I can't quite get it working. 2018-09-24T11:33:51Z no-defun-allowed: My method doesn't require extension though, it looks at the range [max(left, 0), min(right, width-1)] and uses that size to divide. 2018-09-24T11:35:06Z makomo quit (Ping timeout: 272 seconds) 2018-09-24T11:36:04Z SenasOzys quit (Ping timeout: 240 seconds) 2018-09-24T11:36:41Z |3b|: is the wrong version at least faster? :) 2018-09-24T11:37:01Z no-defun-allowed: Yes, it's much faster 2018-09-24T11:37:19Z no-defun-allowed: I only used that method horizontally and it's gone from 1.5 to 1.0 seconds. 2018-09-24T11:37:49Z no-defun-allowed: (now it errors with a description of where the overflow happened for testing so no, not really :) 2018-09-24T11:38:28Z frgo quit (Remote host closed the connection) 2018-09-24T11:48:29Z dddddd joined #lisp 2018-09-24T11:52:02Z frgo joined #lisp 2018-09-24T11:53:36Z makomo joined #lisp 2018-09-24T11:54:04Z SenasOzys joined #lisp 2018-09-24T11:56:29Z frgo quit (Ping timeout: 252 seconds) 2018-09-24T12:02:09Z no-defun-allowed: Goodnight everyone! 2018-09-24T12:08:11Z pfdietz: Woo, a segfault in clisp. Is that still being maintained? 2018-09-24T12:09:16Z Shinmera: yes, but slowly 2018-09-24T12:09:27Z Shinmera: mailing list still gets responses at least 2018-09-24T12:13:47Z graphene quit (Remote host closed the connection) 2018-09-24T12:14:30Z jackdaniel: pfdietz: do you have version from git or the latest release? 2018-09-24T12:14:35Z jackdaniel: the latter is quite dated 2018-09-24T12:15:00Z graphene joined #lisp 2018-09-24T12:15:13Z pfdietz: Welcome to GNU CLISP 2.49.60+ (2017-06-25) 2018-09-24T12:15:36Z pfdietz: So, latest release? 2018-09-24T12:15:59Z pfdietz: Or whatever ubuntu 18.04 installs. 2018-09-24T12:16:48Z pfdietz: I'll build from git before I report anything. 2018-09-24T12:26:40Z pjb joined #lisp 2018-09-24T12:29:08Z paule32 joined #lisp 2018-09-24T12:36:04Z pfdietz: Where is the "official" git repo for clisp? 2018-09-24T12:37:36Z jackdaniel: I believe this is it: https://sourceforge.net/p/clisp/clisp/ci/tip/tree/ 2018-09-24T12:38:19Z pfdietz: https://gitlab.com/gnu-clisp/clisp 2018-09-24T12:48:05Z LiamH joined #lisp 2018-09-24T12:52:30Z Josh_2 joined #lisp 2018-09-24T12:54:58Z pierpal joined #lisp 2018-09-24T12:59:39Z pjb quit (Ping timeout: 252 seconds) 2018-09-24T13:01:25Z mjanssen left #lisp 2018-09-24T13:12:53Z Kundry_Wag joined #lisp 2018-09-24T13:15:00Z Bike joined #lisp 2018-09-24T13:17:20Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-24T13:17:49Z anewuser quit (Quit: anewuser) 2018-09-24T13:20:48Z warweasle joined #lisp 2018-09-24T13:22:16Z Kundry_Wag joined #lisp 2018-09-24T13:24:38Z Kundry_Wag quit (Remote host closed the connection) 2018-09-24T13:30:39Z scymtym joined #lisp 2018-09-24T13:32:21Z regreg joined #lisp 2018-09-24T13:36:15Z steiner joined #lisp 2018-09-24T13:36:32Z frgo joined #lisp 2018-09-24T13:40:33Z schweers joined #lisp 2018-09-24T13:42:38Z orivej quit (Ping timeout: 252 seconds) 2018-09-24T13:42:49Z anewuser joined #lisp 2018-09-24T14:07:05Z cl-arthur joined #lisp 2018-09-24T14:07:56Z Guest5800_ joined #lisp 2018-09-24T14:09:07Z shifty quit (Ping timeout: 240 seconds) 2018-09-24T14:10:51Z rumbler31 joined #lisp 2018-09-24T14:14:59Z rumbler31 quit (Remote host closed the connection) 2018-09-24T14:20:26Z Josh_2 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-24T14:20:55Z Josh_2 joined #lisp 2018-09-24T14:27:47Z dale_ joined #lisp 2018-09-24T14:28:07Z dale_ is now known as dale 2018-09-24T14:30:24Z Achylles joined #lisp 2018-09-24T14:33:58Z jkordani joined #lisp 2018-09-24T14:37:58Z shka_: hello 2018-09-24T14:39:25Z warweasle: hi 2018-09-24T14:44:56Z cage_ joined #lisp 2018-09-24T14:53:37Z Achylles: how do I get the motivation to learn lisp. I have tried about 2 or 3 times, but then I loose motivation. Learning how to program alone is really hard... 2018-09-24T14:54:05Z Josh_2: First language? 2018-09-24T14:54:33Z jackdaniel: Achylles: most rewarding way to learn a language is trying to contribute to open source projects along a way 2018-09-24T14:55:01Z jackdaniel: there are many easy tasks out there, solving them impove your language knowledge and lets you move to more ambitious tasks 2018-09-24T14:55:15Z jackdaniel: *and* you have a motivation to learn, how to solve such task 2018-09-24T14:56:14Z Achylles: I have read books on Python, C, C++, (some java, but hate this), prolog, ruby, scala, bashscript and others. I am not a programmer, but I think I have the theory in my mind: variables, constants, strings, functions, etc... 2018-09-24T14:56:48Z dlowe: maybe you don't like programming? 2018-09-24T14:56:51Z jackdaniel: contributing to foss projects is all about practice. just jump in 2018-09-24T14:57:04Z pjb joined #lisp 2018-09-24T14:57:13Z schweers: Achylles: my remark is slightly off-topic, because it’s about elisp, not Common Lisp, but ... Emacs actually did it for me. It enables you to solve very small problems, which are still rewarding. 2018-09-24T14:57:56Z beach: Achylles: As it turns out, programming is only slightly about getting the logic right, and mostly about communicating your intent to other people reading the code. 2018-09-24T14:58:01Z Achylles: Sorry, I thought the channel was about lisp 2018-09-24T14:58:06Z heisig quit (Ping timeout: 264 seconds) 2018-09-24T14:58:11Z beach: Achylles: About Common Lisp. 2018-09-24T14:58:14Z Josh_2: ^ 2018-09-24T14:58:19Z Achylles: Anyways, I also try to learn it in emacs... 2018-09-24T14:59:26Z beach: Achylles: I am with dlowe. Perhaps that kind of activity is not something you would like to do. 2018-09-24T14:59:53Z Achylles: jackdaniel, links to foss projects? 2018-09-24T15:00:13Z Achylles: beach, I am sure I like it, but the point for me is loneliness 2018-09-24T15:00:32Z beach: Achylles: Then you need to hang out here more. 2018-09-24T15:00:38Z beach: Achylles: And go to ELS once a year. 2018-09-24T15:00:50Z Josh_2: does text really cure loneliness? 2018-09-24T15:00:57Z Josh_2: bit offtopic 2018-09-24T15:00:59Z Achylles: I have learned a lot by myself. I would say most computing stuff... 2018-09-24T15:01:15Z jackdaniel: Achylles: there is relatively easy task for log4cl: https://github.com/sharplispers/log4cl/issues/26 2018-09-24T15:01:33Z jackdaniel: you may check out other sharplispers projects, all are desperate for contributors ;-) 2018-09-24T15:01:36Z gravicappa quit (Ping timeout: 260 seconds) 2018-09-24T15:01:38Z Achylles: Josh_2, ok I will be quiet if it is off-topic. Thx anyway... 2018-09-24T15:01:39Z beach: Achylles: That doesn't ring true to me. Given that programming is about communication, you have very likely missed the most important aspect of it. 2018-09-24T15:02:04Z Josh_2: wat no you are not off-topic 2018-09-24T15:02:07Z Josh_2: I was being off-topic 2018-09-24T15:02:16Z beach: Achylles: I suggest you expose your code here or on #clschool for people to comment on. 2018-09-24T15:02:39Z beach: Achylles: Then you will start learning the communication and maintenance aspect of programming. 2018-09-24T15:02:56Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-24T15:03:21Z Achylles: beach, thx. I did not know about that channel :) 2018-09-24T15:06:43Z SenasOzys joined #lisp 2018-09-24T15:07:54Z scymtym: jackdaniel: i'm not sure i agree regarding sharplispers projects. in my opinion, what they could use more of are experienced maintainers focusing on a single or at most a few projects - not more contributors if that means more pull requests 2018-09-24T15:11:58Z jackdaniel: still using semaphores seems like an easy task for gaining experience 2018-09-24T15:12:15Z Fare joined #lisp 2018-09-24T15:12:20Z jackdaniel: maybe word "desperate" was inadequate 2018-09-24T15:14:11Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-24T15:14:44Z kajo joined #lisp 2018-09-24T15:15:01Z pierpal quit (Ping timeout: 260 seconds) 2018-09-24T15:15:20Z beach: scymtym: How do you pronounce your nick? 2018-09-24T15:15:29Z rumbler31 joined #lisp 2018-09-24T15:16:14Z scymtym: beach: i don't. i spell it out 2018-09-24T15:16:24Z Josh_2: simtim 2018-09-24T15:16:34Z Josh_2: that's what my head says 2018-09-24T15:16:58Z beach: scymtym: I see. I wanted to know whether to pronounce the `c'. 2018-09-24T15:19:06Z scymtym: beach: i wouldn't know, i never put any thought into that question. it's just a word that randomly came up in my mind around 20 years ago. it has good uniqueness so i stuck with it 2018-09-24T15:20:12Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-24T15:20:32Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-24T15:23:08Z housel joined #lisp 2018-09-24T15:25:02Z SenasOzys joined #lisp 2018-09-24T15:29:17Z pjb quit (Remote host closed the connection) 2018-09-24T15:31:04Z pjb joined #lisp 2018-09-24T15:40:36Z asarch joined #lisp 2018-09-24T15:44:32Z shka_: i have data structure releated question 2018-09-24T15:44:37Z pjb quit (Remote host closed the connection) 2018-09-24T15:44:43Z shka_: is it ok to ask here or should i move to the lispcafe? 2018-09-24T15:45:03Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-24T15:46:07Z pjb joined #lisp 2018-09-24T15:46:07Z frgo quit (Read error: Connection reset by peer) 2018-09-24T15:53:21Z Bike: it might be alright 2018-09-24T15:55:09Z shka_: ok 2018-09-24T15:55:25Z shka_: i want to make sparse vector 2018-09-24T15:55:52Z shka_: that is: one that can handle large portion of it's content being null 2018-09-24T15:56:41Z shka_: my idea is to basicly take rrb type vector structure, and install bitmask at each node to store information about emptyness of subtree 2018-09-24T15:56:48Z shka_: how does it sound? 2018-09-24T15:57:30Z Inline joined #lisp 2018-09-24T15:59:21Z Fare quit (Ping timeout: 260 seconds) 2018-09-24T16:00:19Z Inline quit (Read error: Connection reset by peer) 2018-09-24T16:00:49Z Inline joined #lisp 2018-09-24T16:01:52Z Bike: i'd just use a hash table.s impler, you know 2018-09-24T16:02:00Z Bike: could write out the api and then compare performance between them 2018-09-24T16:02:36Z esrse joined #lisp 2018-09-24T16:07:35Z anewuser quit (Quit: anewuser) 2018-09-24T16:07:36Z papachan joined #lisp 2018-09-24T16:09:29Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-24T16:12:07Z whartung joined #lisp 2018-09-24T16:15:16Z shka_: Bike: that is actually decent idea, but I would also keep it immutable 2018-09-24T16:15:57Z shka_: i need this because it makes error safety far easier 2018-09-24T16:16:20Z shka_: namely i want it to implement data frame 2018-09-24T16:17:15Z shka_: plenty of data sets has HUGE chunks of NULL cells 2018-09-24T16:17:26Z shka_: ... but i actually already have immutable hash table 2018-09-24T16:17:28Z shka_: hmmm 2018-09-24T16:17:34Z shka_: i should think about it 2018-09-24T16:17:36Z SenasOzys joined #lisp 2018-09-24T16:19:11Z schweers quit (Ping timeout: 260 seconds) 2018-09-24T16:19:44Z frgo joined #lisp 2018-09-24T16:24:32Z frgo quit (Ping timeout: 272 seconds) 2018-09-24T16:29:02Z cage_: jackdaniel, please can you give some more explanation about the issue on log4cl? I mean, only revert changes on watcher.lisp is needed? 2018-09-24T16:31:31Z Blackbeard: I could do stumpwm::cancel-timer 2018-09-24T16:31:59Z Blackbeard: but I don't know what is the name of it to kill it 2018-09-24T16:35:01Z jackdaniel: cage_: not exactly (though close). In the meantime bordeaux-threads gained semaphore implementation. so it would be reverting to using semaphores, but semaphores provided by bt (not by bt-semaphore) 2018-09-24T16:35:33Z jackdaniel: after that testing on sbcl, ccl and ecl should follow 2018-09-24T16:39:09Z random-nick joined #lisp 2018-09-24T16:39:31Z cage_: i have changed all "bt-sem:" to "bt:" and removed all the #(+|-)ecl reader macros, i have tested only on sbcl 2018-09-24T16:39:39Z cage_: # 2018-09-24T16:39:59Z cage_: no chache i can test on other cl implementation soon :( 2018-09-24T16:40:18Z jackdaniel: then make a pull request and maybe someone will pick it from there 2018-09-24T16:41:22Z lumm joined #lisp 2018-09-24T16:41:34Z cage_: ok, i have acted like an awk program, though :) 2018-09-24T16:42:00Z jackdaniel: I've warned that it will be the easy one ;-) 2018-09-24T16:42:45Z cage_: that's ok if i made the right thing :) 2018-09-24T16:43:16Z pjb: shka_: you could have a look at Numenta HTM and their Sparse Distributed Representation. They have ways to compact them. 2018-09-24T16:43:29Z pjb: shka_: https://www.youtube.com/channel/UC8-ttzWLgXZOGuhUyrPlUuA 2018-09-24T16:43:46Z shka_: pjb: this sounds interesting 2018-09-24T16:43:54Z shka_: never heared about this before 2018-09-24T16:45:17Z varjag joined #lisp 2018-09-24T16:45:41Z shka_: pjb: it does not sound like i want it, but it seems to be cool in it's own rights! 2018-09-24T16:46:01Z edgar-rft quit (Remote host closed the connection) 2018-09-24T16:46:02Z pjb: Yes. 2018-09-24T16:46:19Z pjb: Depends on what you need the sparse vector for. 2018-09-24T16:46:40Z pjb: Oh, and SDR are vectors of bits actually, so… 2018-09-24T16:47:00Z shka_: well, this sounds like something that can be used as neural network input 2018-09-24T16:47:04Z shka_: but anyway 2018-09-24T16:47:48Z shka_: i simply want R style data frame, i want to have batch operations to modify it, and i don't want to wreck it when a condition is signalled 2018-09-24T16:48:05Z Bike: i've only worked with sparse tensors in matlab, and there i think it's just a linked list 2018-09-24T16:48:17Z shka_: so instread i want to perform graceful rollback 2018-09-24T16:48:26Z shka_: Bike: i think that those are CSRs 2018-09-24T16:48:58Z shka_: anyway, i think that masked rrb vector should work in this context fine 2018-09-24T16:49:23Z shka_: at least on paper it looks like efficient approach 2018-09-24T16:49:40Z shka_: i will read about SDR though 2018-09-24T16:51:34Z mathrick_ joined #lisp 2018-09-24T16:51:45Z nowhereman_ quit (Ping timeout: 252 seconds) 2018-09-24T16:52:04Z mathrick quit (Ping timeout: 240 seconds) 2018-09-24T16:53:14Z Fare joined #lisp 2018-09-24T16:57:23Z shka_: SDR sounds like something akin to datasketches 2018-09-24T16:58:06Z oni-on-ion: shka_: i heard a lot of R peeps using dataframes have migrated to julia 2018-09-24T16:58:27Z shka_: no wonder 2018-09-24T16:58:30Z shka_: ;-) 2018-09-24T16:58:39Z shka_: but i like CL 2018-09-24T17:00:31Z frgo joined #lisp 2018-09-24T17:02:36Z oni-on-ion: i love CL too. but ... this new girl ... >_< 2018-09-24T17:03:49Z pfdietz: That meme 2018-09-24T17:04:12Z shka_: well, some moved to python 2018-09-24T17:04:45Z shka_: anyway i hate python, R is limiting and julia is too young 2018-09-24T17:04:52Z shka_: CL rocks 2018-09-24T17:07:41Z aeth: I guess people who chase the trendiest langauges usually switch every 5 years or so. (Or they're replaced by people who do.) 2018-09-24T17:11:06Z Fare quit (Ping timeout: 260 seconds) 2018-09-24T17:11:17Z rumbler31 joined #lisp 2018-09-24T17:11:31Z aeth: Compile-to-JS is the worst for this. Remember CoffeeScript? Only 6 years or so past peak hype and now "no one" uses it. If you're writing something that takes years to write, you'd have an unpopular language by the time you finished if you picked compile-to-JS. 2018-09-24T17:11:46Z Fare joined #lisp 2018-09-24T17:12:34Z oni-on-ion: julia isnt too young =) its about 10 years old now. and its 1.0 - lots of happy python/matlab/R users gone to it 2018-09-24T17:12:39Z oni-on-ion: and *awesome* libraries. 2018-09-24T17:13:06Z shka_: aeth: remember dart? :D 2018-09-24T17:13:15Z oni-on-ion: hey i seen a lisp-in-dart yesterday 2018-09-24T17:13:18Z shka_: oni-on-ion: well, still not lisp is enough 2018-09-24T17:13:23Z aeth: shka_: Almost mentioned it too, but I didn't want to turn this channel into a language graveyard. :-) 2018-09-24T17:13:27Z oni-on-ion: https://github.com/nukata/lisp-in-dart/blob/master/IMPLEMENTATION-NOTES.md 2018-09-24T17:13:41Z aeth: oni-on-ion: first time I've seen Dart mentioned in like 2-3 years, and even then it was unpopular 2018-09-24T17:13:52Z aeth: s/even then/even back then/ 2018-09-24T17:13:56Z oni-on-ion: shka_: what do you mean? people telling me julia is lisp but m-expression 2018-09-24T17:15:05Z pjb: oni-on-ion: they are missing the s-exps. 2018-09-24T17:15:07Z oni-on-ion: it was google tho eh? 2018-09-24T17:15:14Z charh quit (Remote host closed the connection) 2018-09-24T17:15:27Z oni-on-ion: also um. i learned yesterday that Google, is using, Swift, for Tensorflow. ?!? 2018-09-24T17:15:42Z oni-on-ion: pjb: m-exps. 2018-09-24T17:15:58Z aeth: oni-on-ion: I'm not sure language creation time matters with this, though. If Common Lisp became the #4 most popular language tomorrow, the clock would be ticking, and in 5 years it'd have no more than 1/3 the users, probably. Because the people who make a language very popular move around unless they have no choice (e.g. JS, C, Java, etc.) 2018-09-24T17:16:12Z pjb: oni-on-ion: they are here: https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/index.html 2018-09-24T17:16:39Z oni-on-ion: its amazing to see julia is actually super performant without going through any low level hoops. those guys have really nailed the low level and high level thing; also david a. moon is contributing to it (the lisp guy.) 2018-09-24T17:16:40Z aeth: oni-on-ion: In a sense, CL already had a few hype phases, and we're just the leftovers from that, with a few people added every now and then from reading the old literature from that hype phase. 2018-09-24T17:17:02Z rumbler31 quit (Remote host closed the connection) 2018-09-24T17:17:45Z pjb: aeth: it's quite different. CL was standardized in the heart of the AI winter. That calmed quite an amount of hype. 2018-09-24T17:18:15Z pjb: aeth: then, it was at a time when getting a computer able to run it would cost an arm, of a year of salary… 2018-09-24T17:18:25Z oni-on-ion: aeth: creation time?? oh, i was answering someone saying julia is still too young. but about CL, its still tied to an image, so nope 2018-09-24T17:19:00Z pjb: aeth: imagine, you create Python, and to run it, you have to buy a $100,000 computer. 2018-09-24T17:19:08Z oni-on-ion: aeth: also true about the hype. however i do see many new articles as well 2018-09-24T17:19:13Z pjb: whatever the hype, the popularity wouldn't meet it. 2018-09-24T17:19:27Z oni-on-ion: pjb: wasn't prolog sort of sibling with lisp? but over in europe/asia ? 2018-09-24T17:19:54Z pjb: Now, of course, I exagerate a little, because MacLisp ran on Macintosh 512 or SE. But it was better to have maxed out the RAM (which costed the other arm). 2018-09-24T17:20:41Z pjb: oni-on-ion: prolog was invented in Marseilles in France. It's very different, it was a new kind of programming language: purely declarative. 2018-09-24T17:20:55Z aeth: pjb: I thought CL was standardized *after* its peak? At least the 1994 standard. 2018-09-24T17:21:14Z pjb: aeth: the AI winter was long. :-) 2018-09-24T17:22:21Z aeth: pjb: At least AI is perfectly fine now and not overpromising. 2018-09-24T17:22:30Z pjb: LOL 2018-09-24T17:23:00Z oni-on-ion: prolog is french?!?!? =D i always wanted to make a chart or graph showing all the country/language of origin for proglangs. 2018-09-24T17:23:11Z esrse quit (Ping timeout: 252 seconds) 2018-09-24T17:24:37Z russellw: so do you count Ada as American or French? 2018-09-24T17:24:45Z aeth: If prolog is french then how come it's not prologue? 2018-09-24T17:25:56Z paule32 quit (Ping timeout: 252 seconds) 2018-09-24T17:26:08Z oni-on-ion: aeth =) the first link in google is a dictionary entry for exactly that 2018-09-24T17:26:16Z pjb: Start with http://rosettacode.org/wiki/Category:Programming_Languages and use google… Or write a lisp program to do it. 2018-09-24T17:26:18Z oni-on-ion: Ocaml and Bigloo are done at INRIA, is that french ? 2018-09-24T17:26:30Z pjb: aeth: AI is perfectly fine now, and not overprimising: http://www.wolframalpha.com/input/?i=list+of+programming+languages+sorted+by+their+author+nationality 2018-09-24T17:26:35Z pjb: oni-on-ion: yes. 2018-09-24T17:26:41Z oni-on-ion: true, pjb . not sure where i'd collect the data, i think by hand is the only way there 2018-09-24T17:26:52Z pjb: VLisp and LeLisp was French too. As is Ada. 2018-09-24T17:27:02Z oni-on-ion: Ada -> C or was that ALGOL ? 2018-09-24T17:27:07Z pfdietz: Coq 2018-09-24T17:27:07Z pjb: Algol. 2018-09-24T17:27:19Z oni-on-ion: kk. bit dyslexic 2018-09-24T17:28:03Z pfdietz: The winning proposal to DOD for Ada came from France...? 2018-09-24T17:28:18Z oni-on-ion: i had this wierd idea to correlate mother tongues (french mostly for me) with proglangs. because i have major digital identity crisis =P 2018-09-24T17:28:39Z russellw: yep, it was written by a Frenchman. 'Author nationality' is a more precise term 2018-09-24T17:29:35Z pjb: pfdietz: yep. 2018-09-24T17:29:56Z pjb: https://en.wikipedia.org/wiki/Jean_Ichbiah 2018-09-24T17:30:36Z Inline: alors, va't'on! 2018-09-24T17:30:44Z Inline: huehuehue 2018-09-24T17:30:54Z terpri joined #lisp 2018-09-24T17:30:58Z pjb: Well he worked at the French company CII Honeywell Bull so Ada was also financed by a French company. https://en.wikipedia.org/wiki/Groupe_Bull 2018-09-24T17:31:45Z oni-on-ion: lisp was funded by military mostly ? 2018-09-24T17:32:41Z pjb: Not really: Artificial intelligence Project---RLE and MIT Computation Center 2018-09-24T17:32:51Z pjb: https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/aim-8/aim-8.html 2018-09-24T17:33:24Z pfdietz: Still used by the military, too. http://www.2is-inc.com/ 2018-09-24T17:34:27Z Inline: everything is 2018-09-24T17:35:03Z oni-on-ion: BRL-CAD 2018-09-24T17:37:07Z xrash joined #lisp 2018-09-24T17:43:44Z rnmhdn joined #lisp 2018-09-24T17:46:03Z jackdaniel: c 2018-09-24T17:56:23Z nydel joined #lisp 2018-09-24T17:56:29Z equwal joined #lisp 2018-09-24T18:04:43Z vlatkoB quit (Remote host closed the connection) 2018-09-24T18:06:06Z Cymew quit (Ping timeout: 252 seconds) 2018-09-24T18:09:34Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-24T18:09:45Z jkordani: oni-on-ion: https://en.wikipedia.org/wiki/Dynamic_Analysis_and_Replanning_Tool 2018-09-24T18:09:49Z Guest5800_ quit (Quit: Connection closed for inactivity) 2018-09-24T18:11:01Z jkordani: it is said that in the few years of its use, it saved more money than darpa had put in AI research since it had started doing so 2018-09-24T18:11:26Z kajo joined #lisp 2018-09-24T18:11:29Z Cymew joined #lisp 2018-09-24T18:11:59Z jkordani: the paper of it's development outlines an agile approach although I hate using that word 2018-09-24T18:12:27Z nirved quit (Ping timeout: 240 seconds) 2018-09-24T18:16:04Z charh joined #lisp 2018-09-24T18:19:40Z Kundry_Wag joined #lisp 2018-09-24T18:20:31Z Kundry_Wag quit (Remote host closed the connection) 2018-09-24T18:23:07Z equwal quit (Ping timeout: 246 seconds) 2018-09-24T18:25:34Z sauvin quit (Read error: Connection reset by peer) 2018-09-24T18:26:04Z rozenglass joined #lisp 2018-09-24T18:31:16Z Achylles quit (Quit: Leaving) 2018-09-24T18:32:12Z Achylles joined #lisp 2018-09-24T18:34:25Z random-nick quit (Read error: Connection reset by peer) 2018-09-24T18:36:13Z milanj quit (Quit: This computer has gone to sleep) 2018-09-24T18:37:06Z lumm quit (Quit: lumm) 2018-09-24T18:37:37Z lumm joined #lisp 2018-09-24T18:38:32Z razzy quit (Remote host closed the connection) 2018-09-24T18:39:01Z warweasle quit (Quit: later) 2018-09-24T18:41:53Z Achylles_ joined #lisp 2018-09-24T18:43:37Z Jesin quit (Quit: Leaving) 2018-09-24T18:49:08Z orivej joined #lisp 2018-09-24T18:50:48Z Bindler joined #lisp 2018-09-24T18:54:02Z razzy joined #lisp 2018-09-24T18:55:20Z Jesin joined #lisp 2018-09-24T18:58:13Z razzy: aaaaah, dart :] 2018-09-24T18:58:20Z Bindler quit (Ping timeout: 252 seconds) 2018-09-24T18:58:26Z anunnaki quit (Ping timeout: 272 seconds) 2018-09-24T18:58:46Z anunnaki joined #lisp 2018-09-24T19:00:33Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-24T19:02:52Z milanj joined #lisp 2018-09-24T19:06:22Z razzy quit (Read error: No route to host) 2018-09-24T19:09:04Z razzy joined #lisp 2018-09-24T19:13:44Z astronavt joined #lisp 2018-09-24T19:14:17Z terpri quit (Ping timeout: 252 seconds) 2018-09-24T19:14:50Z jasom: oni-on-ion: It was ARPA that funded the PDP-10 with an entire address space of core memory for MIT though, I have no idea how much that cost, and I heard it was never that reliable. 2018-09-24T19:16:20Z oni-on-ion: APRA is like DARPA? that means it funded C as well then =) 2018-09-24T19:16:47Z jasom: oni-on-ion: Yeah, they left the "D" off so they could pretend it wasn't military, but at some point gave up pretending I think :P 2018-09-24T19:16:58Z oni-on-ion: ahh , heh =) 2018-09-24T19:18:09Z rumbler31 joined #lisp 2018-09-24T19:19:03Z jasom: ah in 1973 they amended the charter to be "direct mil\itary application" only apparently 2018-09-24T19:21:07Z razzy quit (Ping timeout: 240 seconds) 2018-09-24T19:22:07Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-24T19:22:18Z razzy joined #lisp 2018-09-24T19:22:36Z Bindler joined #lisp 2018-09-24T19:24:15Z rnmhdn quit (Ping timeout: 244 seconds) 2018-09-24T19:24:22Z oni-on-ion: for the country! 2018-09-24T19:26:11Z pjb: Well, anyways, even if you do pure civilian research on pure private founds, as soon as the US government deems it good for national security, they've got the laws to take over all of it, and forbid you to ever talk about it. 2018-09-24T19:26:49Z pjb: So, in essence, all the activity in the US is directed directly toward military applications. 2018-09-24T19:26:56Z razzy: power hungry bastards :] 2018-09-24T19:27:02Z pjb: :-) 2018-09-24T19:27:09Z pjb: Worked for them so far. 2018-09-24T19:27:22Z razzy: and military is the worst way to get power 2018-09-24T19:27:23Z pjb: And they've got the contact with ET even. 2018-09-24T19:27:43Z razzy: how they are not seeing this? 2018-09-24T19:28:38Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-24T19:29:14Z razzy: pjb: how could you know? 2018-09-24T19:29:19Z dlowe: This is easily #lispcafe material 2018-09-24T19:29:26Z pjb: There are enough hints. 2018-09-24T19:29:32Z pjb: Yep. 2018-09-24T19:29:34Z razzy: dlowe: thx 2018-09-24T19:29:38Z phoe: Huh 2018-09-24T19:29:51Z phoe: I really like one particular feature of my PROTEST library 2018-09-24T19:30:13Z phoe: when I'm defining protocols, it doesn't allow me to define duplicate functions in dependent protocols 2018-09-24T19:30:32Z phoe: so it's a very good indicator when I should extract a particular function to a mixin 2018-09-24T19:30:38Z kajo joined #lisp 2018-09-24T19:31:54Z dented42 joined #lisp 2018-09-24T19:32:27Z orivej quit (Ping timeout: 252 seconds) 2018-09-24T19:34:09Z dented42 quit (Client Quit) 2018-09-24T19:34:38Z regreg quit (Ping timeout: 252 seconds) 2018-09-24T19:36:04Z razzy: hmm,.. are function declarations in every lisp global? 2018-09-24T19:36:28Z phoe: razzy: what do you mean, every lisp? 2018-09-24T19:36:44Z phoe: and no, (flet ((foo () 42)) #'foo) this isn't global 2018-09-24T19:36:44Z Bike: function declarations? 2018-09-24T19:37:46Z jasom: razzy: what do you mean by "function declarations"? 2018-09-24T19:38:00Z Shinmera: There's no declaration of functions, only definition. 2018-09-24T19:38:34Z razzy: are (defun minefunction) global? always? 2018-09-24T19:38:42Z phoe: well 2018-09-24T19:38:50Z Shinmera: They're in the global environment 2018-09-24T19:38:54Z phoe: it isn't global in some lisps, because they don't have the DEFUN operator 2018-09-24T19:39:06Z Shinmera: But there might be multiple such environments 2018-09-24T19:39:11Z razzy: most of you guessed what i meant 2018-09-24T19:39:14Z phoe: DEFUN is a Common Lisp thing. 2018-09-24T19:39:16Z Bike: defun is global 2018-09-24T19:39:25Z phoe: in Scheme, a toplevel DEFINE is global, too. 2018-09-24T19:39:31Z phoe: but nothing prevents you from defining local functions. 2018-09-24T19:39:43Z Bike: scheme also uses DEFINE in syntactic sugar for labels 2018-09-24T19:40:02Z razzy: i ask if there is a lisp, that have special local function definitons 2018-09-24T19:40:13Z razzy: like (let ) but for functions 2018-09-24T19:40:20Z phoe: all of them? 2018-09-24T19:40:34Z Bike: flet, labels 2018-09-24T19:40:37Z phoe: Common Lisp has FLET and LABELS, Schemes have similar mechanisms 2018-09-24T19:40:42Z Bike: or in scheme, just let 2018-09-24T19:41:02Z phoe: you can use let in Lisp, too, (let ((foo (lambda () 42))) (funcall foo)) 2018-09-24T19:41:10Z jackdaniel: and letrec 2018-09-24T19:45:39Z frodef: is there a standard elisp function for moving a sexpr out of its enclosing sexpr? 2018-09-24T19:46:01Z phoe: frodef: out of? can you give me an example? 2018-09-24T19:46:29Z frodef: (foo (bar) zonk) => (bar) when point is at (bar) 2018-09-24T19:46:56Z jasom: razzy: defun is global, but the name for a function is a symbol; you could have a macro that does `(defun ,(gensym) ...) and you'd have a global function with a name that is unreachable 2018-09-24T19:47:43Z phoe: frodef: I'm using smartparens for that, it's sp-raise-sexp in it 2018-09-24T19:48:25Z frodef: phoe: there is a raise-sexp it seems.. 2018-09-24T19:49:04Z frodef: phoe: looks perfect, thanks! :) 2018-09-24T19:49:20Z graphene quit (Remote host closed the connection) 2018-09-24T19:49:26Z phoe: yay! 2018-09-24T19:49:54Z kmb joined #lisp 2018-09-24T19:50:33Z graphene joined #lisp 2018-09-24T19:50:40Z cage_ quit (Quit: Leaving) 2018-09-24T19:50:49Z ggole quit (Quit: ggole) 2018-09-24T19:51:21Z m3tti joined #lisp 2018-09-24T19:51:57Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-24T19:52:16Z Bindler left #lisp 2018-09-24T19:53:39Z dented42 joined #lisp 2018-09-24T19:55:19Z SenasOzys quit (Remote host closed the connection) 2018-09-24T19:55:46Z SenasOzys joined #lisp 2018-09-24T20:00:08Z doubledup quit (Quit: Leaving) 2018-09-24T20:00:32Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-24T20:02:55Z razzy: phoe: thx, did not occur to me i can have local functions :] 2018-09-24T20:04:07Z pjb: razzy: that's because you learned C, and not Pascal. 2018-09-24T20:05:48Z razzy: i meant, this option did not occur to me in common lisp. i always used defun 2018-09-24T20:06:21Z razzy: and did not have big enough project to justify local function calls 2018-09-24T20:12:13Z aeth: It's a style choice 2018-09-24T20:13:11Z aeth: Almost every local function can also be a global function that's not exported. The main difference is that you might need more arguments to the lambda-list in the latter because you can't rely on the outer function's scope, but that makes things more explicit. 2018-09-24T20:13:35Z razzy: i like least possible variables and function calls to be global :] 2018-09-24T20:13:36Z aeth: (I say "almost every" because if I speak in absolutes on IRC someone will find a counterexample. I think it's actually every) 2018-09-24T20:14:51Z m3tti quit (Quit: Leaving) 2018-09-24T20:15:13Z m3tti joined #lisp 2018-09-24T20:15:24Z jasom: definitely not every because closing over lexical variables is different from closing over dynamic variables in important ways, and non-top-level DEFUNs are odd. 2018-09-24T20:15:51Z aeth: (oh dynamic variables, I forgot about them) 2018-09-24T20:17:29Z jasom: the classic (defun accum (x) (lambda (y) (incf x y))) 2018-09-24T20:18:39Z rumbler31 joined #lisp 2018-09-24T20:18:57Z pfdietz: Also, lexical things around defuns may not play nicely with threads, while dynamic variable bindings are (usually?) thread-local. 2018-09-24T20:21:14Z aeth: jasom: Depends on what you count as equivalent. Yes, you can no longer mutate x from within the flet function if you move it to outside, but you could have it return a value that is then set in the calling function. Since you have control over the API, whether or not that counts as equivalent is debatable. 2018-09-24T20:21:46Z aydio joined #lisp 2018-09-24T20:21:48Z aeth: There might be some case where you have to express it as the flet closure, though. 2018-09-24T20:22:30Z jasom: there are APIs that cannot be easilly expressed without closures. It is possible they are all bad APIs though. 2018-09-24T20:23:15Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-24T20:25:24Z Achylles_ quit (Quit: Leaving) 2018-09-24T20:25:30Z aydio quit (Client Quit) 2018-09-24T20:25:31Z aeth: jasom: I guess you could make an argument that explicitly creating those closures from an external defun and binding the returned lambdas could still be a better API than using FLET, though. Because you could use it from multiple functions. 2018-09-24T20:27:47Z Jesin quit (Quit: Leaving) 2018-09-24T20:30:45Z Jesin joined #lisp 2018-09-24T20:31:34Z aeth: (Still wouldn't quite be the same thing.) 2018-09-24T20:33:02Z Roy_Fokker joined #lisp 2018-09-24T20:34:31Z cl-arthur quit (Quit: Lost terminal) 2018-09-24T20:38:38Z trittweiler: I try to define functions locally that are very intrinsically coupled to the parent function. Top-level functions are coupled to an object or the package instead. Local functions are not directly invokable from the REPL, so that already draws a "natural" line. Ease of meaningful naming is another thing that's often difficult for local functions (it's usually a frob-foo, grovel-foo, or similar.) 2018-09-24T20:39:56Z scymtym quit (Ping timeout: 260 seconds) 2018-09-24T20:43:21Z pjb: aeth: usually, local functions are closures. To have them global, you'd need to make them objects. 2018-09-24T20:45:46Z jasom: I used to prefer global functions just because slime/sbcl just handled them a lot better (v, what it looks like in backtrace &c.). The tooling has improved considerably since I made that decision though. 2018-09-24T20:45:59Z asarch quit (Quit: Leaving) 2018-09-24T20:46:19Z trittweiler: if the closed-over variables are not modified in the local functions, they can be trivially lambda-lifted 2018-09-24T20:49:52Z dented42 joined #lisp 2018-09-24T20:52:29Z milanj quit (Quit: This computer has gone to sleep) 2018-09-24T20:57:22Z Josh_2: Is ABCL maintained? 2018-09-24T20:58:10Z phoe: yes 2018-09-24T20:58:13Z kmb quit (Quit: kmb) 2018-09-24T20:59:16Z varjag joined #lisp 2018-09-24T21:04:11Z Josh_2: ty 2018-09-24T21:05:05Z Josh_2 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-24T21:08:57Z beaky quit (Read error: Connection reset by peer) 2018-09-24T21:09:48Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-24T21:10:02Z scymtym joined #lisp 2018-09-24T21:10:05Z beaky joined #lisp 2018-09-24T21:10:15Z Duns_Scrotus quit (Ping timeout: 252 seconds) 2018-09-24T21:10:49Z fowlduck quit (Ping timeout: 252 seconds) 2018-09-24T21:10:50Z SenasOzys joined #lisp 2018-09-24T21:11:38Z Duns_Scrotus joined #lisp 2018-09-24T21:11:48Z fowlduck joined #lisp 2018-09-24T21:19:27Z ober: very shallow yes 2018-09-24T21:22:33Z rozenglass quit (Ping timeout: 245 seconds) 2018-09-24T21:23:04Z cobax quit (Ping timeout: 240 seconds) 2018-09-24T21:24:27Z angavrilov quit (Remote host closed the connection) 2018-09-24T21:27:54Z terpri joined #lisp 2018-09-24T21:30:09Z frodef quit (Ping timeout: 252 seconds) 2018-09-24T21:34:24Z LiamH quit (Quit: Leaving.) 2018-09-24T21:34:57Z jxy quit (Remote host closed the connection) 2018-09-24T21:35:09Z Achylles quit (Remote host closed the connection) 2018-09-24T21:36:39Z frodef joined #lisp 2018-09-24T21:37:50Z terpri quit (Ping timeout: 252 seconds) 2018-09-24T21:41:02Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-24T21:41:13Z trittweiler quit (Ping timeout: 246 seconds) 2018-09-24T21:41:41Z trittweiler joined #lisp 2018-09-24T21:42:44Z lumm quit (Quit: lumm) 2018-09-24T21:45:20Z robotoad_ quit (Quit: robotoad_) 2018-09-24T21:45:23Z astronavt_ joined #lisp 2018-09-24T21:47:15Z astronavt quit (Read error: Connection reset by peer) 2018-09-24T21:47:28Z astronavt__ joined #lisp 2018-09-24T21:51:58Z astronavt_ quit (Ping timeout: 272 seconds) 2018-09-24T21:53:52Z trittweiler quit (Ping timeout: 272 seconds) 2018-09-24T22:04:05Z emerson joined #lisp 2018-09-24T22:05:14Z graphene quit (Remote host closed the connection) 2018-09-24T22:06:34Z graphene joined #lisp 2018-09-24T22:07:28Z Oladon joined #lisp 2018-09-24T22:08:29Z m3tti quit (Quit: Leaving) 2018-09-24T22:10:01Z Bike quit (Ping timeout: 256 seconds) 2018-09-24T22:10:31Z cl-arthur joined #lisp 2018-09-24T22:10:53Z Fare quit (Ping timeout: 245 seconds) 2018-09-24T22:12:11Z jxy joined #lisp 2018-09-24T22:15:06Z dented42 joined #lisp 2018-09-24T22:15:15Z emerson quit (Ping timeout: 630 seconds) 2018-09-24T22:15:47Z shifty joined #lisp 2018-09-24T22:19:34Z rumbler31 joined #lisp 2018-09-24T22:21:06Z jackdaniel quit (Ping timeout: 272 seconds) 2018-09-24T22:22:57Z frodef quit (Ping timeout: 252 seconds) 2018-09-24T22:24:03Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-24T22:27:04Z terpri joined #lisp 2018-09-24T22:39:56Z Fare joined #lisp 2018-09-24T22:46:15Z varjag quit (Ping timeout: 252 seconds) 2018-09-24T22:47:08Z Fare quit (Ping timeout: 245 seconds) 2018-09-24T22:53:28Z energizer_ joined #lisp 2018-09-24T22:54:27Z justinmcp_ joined #lisp 2018-09-24T22:56:06Z nefercheprure joined #lisp 2018-09-24T22:56:31Z nonlinear joined #lisp 2018-09-24T22:59:39Z tomaw- joined #lisp 2018-09-24T22:59:45Z dvdmuckle_ joined #lisp 2018-09-24T23:00:51Z papachan quit (*.net *.split) 2018-09-24T23:00:51Z TMA quit (*.net *.split) 2018-09-24T23:00:51Z lnostdal quit (*.net *.split) 2018-09-24T23:00:51Z vibs29 quit (*.net *.split) 2018-09-24T23:00:51Z energizer quit (*.net *.split) 2018-09-24T23:00:51Z ebzzry quit (*.net *.split) 2018-09-24T23:00:51Z PuercoPop quit (*.net *.split) 2018-09-24T23:00:51Z justinmcp quit (*.net *.split) 2018-09-24T23:00:51Z sigjuice quit (*.net *.split) 2018-09-24T23:00:51Z NB0X quit (*.net *.split) 2018-09-24T23:00:51Z _bryan quit (*.net *.split) 2018-09-24T23:00:51Z alandipert quit (*.net *.split) 2018-09-24T23:00:51Z fouric quit (*.net *.split) 2018-09-24T23:00:51Z vxe quit (*.net *.split) 2018-09-24T23:00:51Z flip214 quit (*.net *.split) 2018-09-24T23:00:51Z dvdmuckle quit (*.net *.split) 2018-09-24T23:00:51Z mfiano quit (*.net *.split) 2018-09-24T23:00:51Z fredsir quit (*.net *.split) 2018-09-24T23:00:51Z shenghi quit (*.net *.split) 2018-09-24T23:00:51Z salva quit (*.net *.split) 2018-09-24T23:00:51Z bmansurov quit (*.net *.split) 2018-09-24T23:00:51Z tomaw quit (*.net *.split) 2018-09-24T23:00:52Z dvdmuckle_ is now known as dvdmuckle 2018-09-24T23:01:18Z sigjuice joined #lisp 2018-09-24T23:01:29Z alandipert joined #lisp 2018-09-24T23:02:51Z emerson joined #lisp 2018-09-24T23:06:02Z lnostdal joined #lisp 2018-09-24T23:06:43Z bmansurov joined #lisp 2018-09-24T23:07:28Z mfiano joined #lisp 2018-09-24T23:08:13Z salva joined #lisp 2018-09-24T23:08:16Z energizer_ is now known as energizer 2018-09-24T23:08:22Z shenghi joined #lisp 2018-09-24T23:12:20Z Bike joined #lisp 2018-09-24T23:20:11Z rumbler31 joined #lisp 2018-09-24T23:24:34Z rumbler31 quit (Ping timeout: 250 seconds) 2018-09-24T23:25:48Z lnostdal quit (Read error: Connection reset by peer) 2018-09-24T23:34:34Z lnostdal joined #lisp 2018-09-24T23:50:15Z vxe_ joined #lisp 2018-09-24T23:51:18Z rumbler31 joined #lisp 2018-09-24T23:55:34Z dale quit (Quit: dale) 2018-09-24T23:59:50Z eschulte joined #lisp 2018-09-25T00:00:55Z rumbler31 quit (Remote host closed the connection) 2018-09-25T00:01:48Z eschulte: Does anyone know of a serialization library appropriate for deserializing from another programming language? 2018-09-25T00:02:20Z eschulte: in particular I'm thinking of something I could combine with snooze to provide access to CL objects from another language through a REST API (and a wrapper library in the other language) 2018-09-25T00:02:30Z no-defun-allowed: json's usually pretty common and cl-json handles it really well 2018-09-25T00:03:10Z anewuser joined #lisp 2018-09-25T00:03:11Z whartung: Yea json is pretty lingua franca today 2018-09-25T00:03:13Z eschulte: oh, thanks!, that seems obvious. do you know off hand how it supports CLOS objects? 2018-09-25T00:03:44Z eschulte: never mind, reading the docs, this looks like the obvious choice, thanks! 2018-09-25T00:07:02Z Oladon quit (Quit: Leaving.) 2018-09-25T00:11:30Z Josh_2 joined #lisp 2018-09-25T00:11:55Z zmt00 joined #lisp 2018-09-25T00:12:30Z beach quit (Ping timeout: 264 seconds) 2018-09-25T00:12:48Z Josh_2: WHat's the best oath2 library? 2018-09-25T00:12:52Z Josh_2: oauth2* 2018-09-25T00:19:00Z nanoz joined #lisp 2018-09-25T00:19:08Z terpri quit (Read error: Connection reset by peer) 2018-09-25T00:23:57Z charh_ joined #lisp 2018-09-25T00:25:36Z Fare joined #lisp 2018-09-25T00:27:08Z charh quit (Ping timeout: 245 seconds) 2018-09-25T00:30:19Z igemnace quit (Quit: WeeChat 2.2) 2018-09-25T00:32:18Z no-defun-allowed: has anyone ever made a program which mutates some lisp code randomly until it runs without errors? 2018-09-25T00:32:54Z Pixel_Outlaw joined #lisp 2018-09-25T00:33:22Z Josh_2 quit (Remote host closed the connection) 2018-09-25T00:33:33Z eschulte: no-defun-allowed: close, see https://grammatech.github.io/sel/#Top but honestly it's support for C/C++ and assembler are much more mature than it's lisp support 2018-09-25T00:34:03Z eschulte: specifically this example usage shows repair. https://grammatech.github.io/sel/Repair.html#Repair 2018-09-25T00:35:00Z zmt00 quit (Read error: Connection reset by peer) 2018-09-25T00:35:48Z charh joined #lisp 2018-09-25T00:36:54Z zmt00 joined #lisp 2018-09-25T00:36:55Z nydel: hmm, i return to an old project depending on :USOCKET package and it seems the package function #'SOCKET-SERVER is not defined. is this my end? or has usocket changed? 2018-09-25T00:38:48Z charh_ quit (Ping timeout: 245 seconds) 2018-09-25T00:38:51Z nydel: i wonder if usocket is even still the goto package. any help would be appreciated. 2018-09-25T00:42:30Z Xach: nydel: you have to depend on usocket-server i think. 2018-09-25T00:42:31Z khisanth_ quit (Ping timeout: 244 seconds) 2018-09-25T00:42:36Z Xach: nydel: usocket is still Good 2018-09-25T00:43:27Z Fare quit (Ping timeout: 240 seconds) 2018-09-25T00:43:31Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-25T00:43:42Z charh_ joined #lisp 2018-09-25T00:43:50Z nydel: Xach: thank you - i was able to ql:quickload that right away. is this package connected to :USOCKET? 2018-09-25T00:44:52Z Xach: nydel: it is part of usocket 2018-09-25T00:46:43Z charh quit (Ping timeout: 245 seconds) 2018-09-25T00:48:43Z charh joined #lisp 2018-09-25T00:49:47Z charh_ quit (Ping timeout: 252 seconds) 2018-09-25T00:50:59Z nydel: odd, as far as i can tell, what used to be :USOCKET is partially in :USOCKET-SERVER even though slime-mode autocompletes some functions from the latter with only the former loaded. 2018-09-25T00:53:53Z nydel: available documentation doesn't really explain what happened as far as i can see 2018-09-25T00:54:24Z pjb quit (Read error: Connection reset by peer) 2018-09-25T00:54:24Z Kundry_Wag joined #lisp 2018-09-25T00:55:13Z khisanth_ joined #lisp 2018-09-25T00:55:16Z pjb joined #lisp 2018-09-25T00:56:18Z anewuser quit (Ping timeout: 245 seconds) 2018-09-25T00:57:48Z anewuser joined #lisp 2018-09-25T01:11:24Z dented42 joined #lisp 2018-09-25T01:15:35Z thetemplar joined #lisp 2018-09-25T01:17:20Z orivej joined #lisp 2018-09-25T01:18:18Z xrash quit (Ping timeout: 252 seconds) 2018-09-25T01:20:48Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-25T01:21:03Z xrash joined #lisp 2018-09-25T01:21:06Z esrse joined #lisp 2018-09-25T01:22:18Z zmt00 quit (Disconnected by services) 2018-09-25T01:24:12Z DataLinkDroid quit (*.net *.split) 2018-09-25T01:25:38Z xificurC quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2018-09-25T01:27:59Z xificurC joined #lisp 2018-09-25T01:31:54Z DataLinkDroid joined #lisp 2018-09-25T01:48:30Z froggey quit (Ping timeout: 264 seconds) 2018-09-25T01:49:53Z froggey joined #lisp 2018-09-25T01:51:05Z asarch joined #lisp 2018-09-25T01:55:13Z graphene quit (Remote host closed the connection) 2018-09-25T01:56:30Z graphene joined #lisp 2018-09-25T02:00:34Z nowhereman_ joined #lisp 2018-09-25T02:01:27Z rumbler31 joined #lisp 2018-09-25T02:02:53Z varjag joined #lisp 2018-09-25T02:05:27Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-25T02:07:46Z varjag quit (Ping timeout: 260 seconds) 2018-09-25T02:16:48Z Kundry_Wag quit (Remote host closed the connection) 2018-09-25T02:27:10Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-25T02:50:05Z pierpal joined #lisp 2018-09-25T03:03:03Z razzy quit (Ping timeout: 244 seconds) 2018-09-25T03:05:07Z sabrac quit (Quit: Konversation terminated!) 2018-09-25T03:05:42Z sabrac joined #lisp 2018-09-25T03:06:08Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-25T03:06:21Z dddddd quit (Remote host closed the connection) 2018-09-25T03:24:02Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T03:24:32Z edgar-rft joined #lisp 2018-09-25T03:38:07Z Fare joined #lisp 2018-09-25T03:46:39Z anewuser quit (Quit: anewuser) 2018-09-25T03:54:58Z Bike quit (Quit: Lost terminal) 2018-09-25T03:58:09Z igemnace joined #lisp 2018-09-25T04:01:55Z aeth: You know what's cool about CL? You write something and 19 times out of 20 it'll work in SBCL, CCL, and ECL without having to work around various quirks. 2018-09-25T04:07:49Z brettgilio joined #lisp 2018-09-25T04:09:12Z Blackbeard: aeth: I like that you have so much power 2018-09-25T04:09:35Z Blackbeard: and so much simplicity 2018-09-25T04:13:15Z aeth: (declare (optimize (power 3) (simplicity 1))) 2018-09-25T04:15:06Z beach joined #lisp 2018-09-25T04:15:57Z beach: Good morning everyone! 2018-09-25T04:17:24Z Blackbeard: beach: hi 2018-09-25T04:17:25Z Blackbeard: (: 2018-09-25T04:17:52Z aeth: ) 2018-09-25T04:19:29Z aeth: Blackbeard: what do you use CL for? 2018-09-25T04:19:55Z Blackbeard: well 2018-09-25T04:20:01Z Blackbeard: i tried learning Python 2018-09-25T04:20:10Z Blackbeard: i tried learning JavaScript 2018-09-25T04:20:18Z Blackbeard: i tried learning 2018-09-25T04:20:29Z Blackbeard: but Lisp was where i felt good 2018-09-25T04:20:31Z Blackbeard: SICP 2018-09-25T04:20:40Z Blackbeard: the land of lisp 2018-09-25T04:20:52Z Blackbeard: how to design programs 2018-09-25T04:20:56Z Blackbeard: now I use stumpwm 2018-09-25T04:21:01Z Blackbeard: and it is awesome 2018-09-25T04:21:04Z Blackbeard: 😊😃 2018-09-25T04:21:22Z Blackbeard: i am writing my first module 2018-09-25T04:21:32Z Blackbeard: to download and set wallpapers 2018-09-25T04:23:57Z nowhereman_ quit (Ping timeout: 252 seconds) 2018-09-25T04:23:58Z jruchti joined #lisp 2018-09-25T04:24:10Z jruchti quit (Client Quit) 2018-09-25T04:25:21Z jruchti joined #lisp 2018-09-25T04:25:43Z orivej quit (Ping timeout: 244 seconds) 2018-09-25T04:42:03Z _whitelogger quit (Remote host closed the connection) 2018-09-25T04:42:15Z steiner quit (Read error: Connection reset by peer) 2018-09-25T04:44:17Z _whitelogger joined #lisp 2018-09-25T04:48:18Z rnmhdn joined #lisp 2018-09-25T04:53:59Z Fare quit (Quit: Leaving) 2018-09-25T05:00:18Z forumulator joined #lisp 2018-09-25T05:01:36Z forumulator: Hi guys. Need a little help. I'm trying to expand a lisp macro to product something like val(a)->val(b). However, `(,a -> ,b) doesn't give me the correct result. 2018-09-25T05:01:56Z forumulator: Because of the spaces. How can I put in a member access without spaces? 2018-09-25T05:03:05Z no-defun-allowed: You'd need to FORMAT and create a string probably. 2018-09-25T05:03:20Z forumulator: Can you give me an example, please? 2018-09-25T05:03:26Z forumulator: Little bit new to lisp 2018-09-25T05:04:38Z nanoz quit (Ping timeout: 245 seconds) 2018-09-25T05:09:03Z beach: forumulator: Spaces? 2018-09-25T05:09:16Z beach: forumulator: Common Lisp macros don't work on surface syntax like that. 2018-09-25T05:09:46Z beach: forumulator: They work on S-expressions. Spaces are just related to how things are printed. 2018-09-25T05:09:58Z forumulator: Yeah I mean something like (defconstant a->b 5) is valid. 2018-09-25T05:10:07Z beach: It is. 2018-09-25T05:10:08Z forumulator: But (defconstant a -> b 5) is not 2018-09-25T05:10:13Z beach: Right. 2018-09-25T05:10:26Z beach: Because of the way the reader works. 2018-09-25T05:10:27Z forumulator: So how do I take care of that? 2018-09-25T05:10:37Z forumulator: I'm expanding the macro to a defconstant 2018-09-25T05:10:45Z beach: What macro? 2018-09-25T05:10:56Z forumulator: I have a macro, which has variables a and b 2018-09-25T05:11:16Z beach: Oh, that is very messy stuff. 2018-09-25T05:11:19Z forumulator: I finally need to expand to something like (defconstant val(a)->val(b)) 2018-09-25T05:11:20Z housel quit (Read error: Connection reset by peer) 2018-09-25T05:11:43Z forumulator: I could do a format, but it only outputs strings. How do I convert string to lisp code? 2018-09-25T05:11:55Z housel joined #lisp 2018-09-25T05:12:21Z beach: If you are new to Common Lisp, that is definitely NOT something you want to do. You will get into all kinds of trouble with readtable-case and packages. 2018-09-25T05:12:23Z frgo quit (Remote host closed the connection) 2018-09-25T05:12:36Z forumulator: It is something I have to do. Simple assignmetn. 2018-09-25T05:12:44Z forumulator: This is the last part I'm stuck on. 2018-09-25T05:12:52Z beach: Can you show us the assignment? 2018-09-25T05:13:07Z forumulator: Sure one sec. 2018-09-25T05:13:44Z forumulator: https://pastebin.com/Xcmpcuza 2018-09-25T05:14:18Z forumulator: beach: I dont' care about messy at this point, I've spend hours breaking my head on this. Lisp is a major programming language, and there doesn't seem to be sufficient macro documentation. 2018-09-25T05:14:38Z beach: WHAT? 2018-09-25T05:14:50Z forumulator: Which part :)? 2018-09-25T05:15:06Z beach: "there doesn't seem to be sufficient macro documentation" 2018-09-25T05:15:16Z beach: Anyway, use INTERN. 2018-09-25T05:15:19Z beach: clhs intern 2018-09-25T05:15:19Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_intern.htm 2018-09-25T05:15:25Z forumulator: There is some stuff, but I couldn't find advanced docs for the stuff I'm trying to do. 2018-09-25T05:15:29Z Inline quit (Quit: Leaving) 2018-09-25T05:16:12Z beach: The fact that you can't find it is not the same thing as it isn't there. 2018-09-25T05:16:20Z forumulator: Right, sorry :) 2018-09-25T05:16:51Z beach: I take it this a university class you are taking? What university? 2018-09-25T05:17:07Z forumulator: I'd rather not say, if that's okay? 2018-09-25T05:17:25Z beach: Too bad. I would be interested in knowing where Common Lisp is still taught. 2018-09-25T05:17:38Z forumulator: beach: But yeah, university class. Everything's good except for this final part. Any idead? 2018-09-25T05:17:44Z beach: I told you. 2018-09-25T05:17:48Z beach: Use INTERN. 2018-09-25T05:17:56Z beach: And specbot gave you a link to it. 2018-09-25T05:18:00Z flip214 joined #lisp 2018-09-25T05:18:20Z forumulator: So something like intern "a->b" ? 2018-09-25T05:19:47Z beach: I'd rather not say, if that's okay? 2018-09-25T05:19:58Z beach: Read the page of the link and try it. 2018-09-25T05:20:00Z forumulator: lol :). Thanks for the help, anyway. 2018-09-25T05:20:23Z rnmhdn quit (Ping timeout: 252 seconds) 2018-09-25T05:20:27Z forumulator: Please don't mind, taking help on an assignment is a bit sketchy. Even if they are ones like this. 2018-09-25T05:20:57Z beach: It's a bad assignment for people who are new to Common Lisp. 2018-09-25T05:21:11Z beach: You will get into all kinds of trouble. 2018-09-25T05:21:25Z forumulator: Right. Whatever happened to the old, 'run a loop and print some stars' :)? 2018-09-25T05:21:39Z forumulator: Out of curiosity, does lisp provide enums in the language? 2018-09-25T05:22:16Z beach: What would be the use? 2018-09-25T05:22:49Z beach: From the assignment, I don't see the point. 2018-09-25T05:23:14Z forumulator: Ah. Cool, once again, thanks for your help :) 2018-09-25T05:23:24Z beach: Sure. 2018-09-25T05:24:09Z beach: In a language like C, "enums" are used to associate compile-time names with small integers at run-time. 2018-09-25T05:24:28Z beach: But Common Lisp has symbols at run-time, so there is no great use for such a facility in Common Lisp. 2018-09-25T05:24:52Z beach: The first example of the assignment seems to suggest that kind of use. 2018-09-25T05:25:12Z beach: But then, the example with the planets is totally different. 2018-09-25T05:25:42Z beach: Basically, constants with names like planet->mass->mercury are pretty useless in terms of programming. 2018-09-25T05:25:58Z beach: It would be preferable to use a hash table or something similar. 2018-09-25T05:26:09Z forumulator: I see. 2018-09-25T05:27:52Z beach: In fact, if you have to construct that kind of symbol at run-time, you would use a hash table (that of the package) implicitly anyway. 2018-09-25T05:27:59Z frodef joined #lisp 2018-09-25T05:28:59Z forumulator: Instead of format and then intern, you mean? :D 2018-09-25T05:29:21Z _bryan joined #lisp 2018-09-25T05:29:44Z jackdaniel joined #lisp 2018-09-25T05:29:44Z beach: Yes, instead of FORMAT+INTERN it would be much better to use nested hash tables. 2018-09-25T05:30:28Z forumulator: Got it. Have to go to school now, thanks for your help! I'll ask my prof the point. 2018-09-25T05:30:30Z flip214: well, I don't see a package PLANET with a symbol MASS and a property MERCURY as pleasing. 2018-09-25T05:30:54Z beach: Right. 2018-09-25T05:31:09Z beach: The order seems weird as well. 2018-09-25T05:34:18Z flip214: although, for a single-level hash table, emulating multiple levels via a _single_-character (so it's "trivial" to split [ie. in C to change to a NUL ;]) isn't unheard of 2018-09-25T05:37:07Z forumulator quit (Ping timeout: 256 seconds) 2018-09-25T05:40:05Z sauvin joined #lisp 2018-09-25T05:49:24Z brettgilio quit (Remote host closed the connection) 2018-09-25T05:51:45Z no-defun-allowed: morning beach 2018-09-25T05:52:11Z brettgilio joined #lisp 2018-09-25T05:53:12Z no-defun-allowed: forumulator: my first piece of advice is to defenestrate your teacher 2018-09-25T05:55:23Z brettgilio quit (Remote host closed the connection) 2018-09-25T06:03:24Z brettgilio joined #lisp 2018-09-25T06:04:07Z shka_: good morning 2018-09-25T06:04:29Z beach: Hello shka_. 2018-09-25T06:09:12Z no-defun-allowed: hi shka 2018-09-25T06:17:12Z frgo joined #lisp 2018-09-25T06:17:24Z makomo: @smorning 2018-09-25T06:17:27Z makomo: morning* 2018-09-25T06:17:30Z makomo: woops 2018-09-25T06:18:30Z beach: Hello makomo. 2018-09-25T06:18:52Z xrash quit (Ping timeout: 244 seconds) 2018-09-25T06:20:57Z brettgilio left #lisp 2018-09-25T06:21:01Z no-defun-allowed: hi makomo 2018-09-25T06:21:10Z makomo: \o 2018-09-25T06:21:43Z frgo quit (Ping timeout: 245 seconds) 2018-09-25T06:22:04Z xrash joined #lisp 2018-09-25T06:26:23Z scymtym quit (Ping timeout: 252 seconds) 2018-09-25T06:29:16Z no-defun-allowed: o/ 2018-09-25T06:29:44Z phoe: Are weak hash tables the only kind of weak storage available to me as the programmer? 2018-09-25T06:31:08Z trittweiler joined #lisp 2018-09-25T06:32:12Z jackdaniel: phoe: common lisp doesn't give you weak data structures at all. as of compilers, usually you have hash tables with weak keys, values or both and for general structures you have a weak pointers 2018-09-25T06:32:53Z phoe: jackdaniel: I know, I'm not asking about standard functionality. 2018-09-25T06:33:00Z phoe: Oh - weak pointers is what I'm looking for. 2018-09-25T06:33:06Z frgo joined #lisp 2018-09-25T06:33:53Z jackdaniel: that's why I've mentioned what some implementations provide. first part of the answer hints, that it was imprecise. if abcl provides weak heap, would that satisfy you if I'd said: weak heap is there too. ? 2018-09-25T06:34:27Z jackdaniel: trivial-garbage gives you a portability layer for these structures 2018-09-25T06:34:40Z phoe: yes, I see 2018-09-25T06:34:42Z jackdaniel: s/that it was/that the question was/ 2018-09-25T06:34:56Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-25T06:35:11Z shka_: phoe: please note that in practice, weak pointers in garbage collected language have a limited use 2018-09-25T06:35:42Z jackdaniel: I'm curious what use do they have in a language, which is not(!) garbage collected 2018-09-25T06:36:11Z shka_: jackdaniel: breaking circular dependencies in reference counting 2018-09-25T06:36:15Z shka_: obviously 2018-09-25T06:36:27Z shka_: which happens a lot! 2018-09-25T06:36:33Z jackdaniel: isn't reference counting a poor man's GC though? 2018-09-25T06:36:52Z flip214: it's a different model. 2018-09-25T06:36:53Z beach: shka_: Why do weak pointers have limited use when there is garbage collection? 2018-09-25T06:37:02Z flip214: more overhead all the time, but no GC pauses. 2018-09-25T06:37:16Z beach: flip214: Oh? No pauses? HAH! 2018-09-25T06:37:18Z jackdaniel: sure, but it's still in GC realm 2018-09-25T06:37:23Z frgo quit (Ping timeout: 252 seconds) 2018-09-25T06:37:32Z shka_: jackdaniel: i would not say so, most people think about tracking GC when they are talking about GC 2018-09-25T06:37:50Z beach: flip214: Try having a huge tree and removing the last reference to the root. 2018-09-25T06:38:09Z shka_: beach: because the only thing that comes to my mind are caches 2018-09-25T06:38:18Z jackdaniel: shka_: I'm very sceptical about this claim (especially in context of discussing data structures with weak references) 2018-09-25T06:38:28Z Shinmera: Refcounting helps in tracking garbage and disposing of it. It is a gc technique, whether people like it or not. 2018-09-25T06:38:33Z no-defun-allowed: rc is cee user's attempt at GC 2018-09-25T06:38:45Z no-defun-allowed: *users' 2018-09-25T06:38:53Z no-defun-allowed: refcounting is gc like javascript is java 2018-09-25T06:39:10Z shka_: ok, let me rephrase it 2018-09-25T06:39:23Z phoe: welp, I've started an intense garbage collection discussion 2018-09-25T06:39:29Z phoe hides 2018-09-25T06:39:29Z dented42 joined #lisp 2018-09-25T06:39:35Z shka_: in tracking GC language, reference counting have limited use when compared to reference counting 2018-09-25T06:39:42Z flip214: beach: special cases exempt, as always. 2018-09-25T06:40:09Z no-defun-allowed: if you have a doubly linked list RC is no good 2018-09-25T06:40:20Z shka_: flip214: not so special, really 2018-09-25T06:40:31Z Shinmera: shka_: a tracking gc still counts references and hence weak pointers have plenty of use. 2018-09-25T06:40:40Z frgo joined #lisp 2018-09-25T06:40:53Z shka_: Shinmera: would you provide a handfull of those? 2018-09-25T06:41:00Z shka_: something that is not cache 2018-09-25T06:41:57Z Shinmera: anything where you aren't the one that is in charge of managing the object's lifetime 2018-09-25T06:42:10Z flip214: shka_: a big graph of structures with only a single entry point is less common than one with multiple entry points... n over k ;) 2018-09-25T06:42:21Z Shinmera: an easy example would be keeping track of instances of a class 2018-09-25T06:42:39Z shka_: Shinmera: yes, in cache 2018-09-25T06:42:45Z Shinmera: ? that's not a cache 2018-09-25T06:42:46Z no-defun-allowed: "ooh! it's for realtime programs cause tracing isn't realtime!!! cause rc totally is deterministic!!1!!" 2018-09-25T06:42:58Z frgo quit (Read error: Connection reset by peer) 2018-09-25T06:43:12Z frgo joined #lisp 2018-09-25T06:43:14Z shka_: Shinmera: right, not a cache 2018-09-25T06:43:14Z flip214: shka_: keeping identity across "foreign" objects (like ones loaded from a database). 2018-09-25T06:43:39Z shka_: flip214: i don't get this one 2018-09-25T06:44:09Z jackdaniel: defending opinion just for a sake of defending it isn't a good way to manage ones time :) \o 2018-09-25T06:45:08Z Shinmera: jackdaniel: are you going to defend that opinion? :^) 2018-09-25T06:45:30Z jackdaniel: ^_^ no, I've run out of coffee, need to go buy some 2018-09-25T06:45:33Z no-defun-allowed: i hope my abuse of exclamation marks indicated my sarcasm (^: 2018-09-25T06:45:37Z zooey quit (Ping timeout: 256 seconds) 2018-09-25T06:46:06Z shka_: anyway, Shinmera is right with his example 2018-09-25T06:46:39Z shka_: i never did this myself, but this is legitimate example i guess 2018-09-25T06:46:51Z shka_: and may araise in practice 2018-09-25T06:47:02Z asarch quit (Quit: Leaving) 2018-09-25T06:47:23Z flip214: shka_: imagine having a database table with records and a primary key 2018-09-25T06:47:42Z flip214: now, whenever a thread loads object #1 from there, you want to return the same (as in EQ) object in memory 2018-09-25T06:48:04Z flip214: so you'll need a hash table (database, table, record number) => WEAK object 2018-09-25T06:48:05Z shka_: flip214: so you are making a cache? :D 2018-09-25T06:48:11Z flip214: that's not a cache. 2018-09-25T06:48:24Z shka_: ok, continue 2018-09-25T06:48:38Z flip214: that's an identity-preserving database layer ;) 2018-09-25T06:48:41Z shka_: but it totally sounds like sort of cache to me 2018-09-25T06:48:49Z phoe: cache implies that data can be flushed at any time 2018-09-25T06:48:55Z flip214: a "cache" is to speed something up, IMO 2018-09-25T06:49:02Z flip214: this use is to get EQualness 2018-09-25T06:49:09Z phoe: if you flush what flip214 is speaking of, you no longer get EQ 2018-09-25T06:49:24Z shka_: well, it speeds things up proabbly anyway 2018-09-25T06:49:36Z phoe: sure, but speed isn't its main purpose 2018-09-25T06:49:45Z phoe: it's preserving identity 2018-09-25T06:49:46Z shka_: OR IS IT? :d 2018-09-25T06:49:51Z phoe facepalms 2018-09-25T06:50:31Z shka_: phoe: well, for me things are what they are because of how they behave, and not why they were created 2018-09-25T06:51:20Z shka_: so intermiediete layer that weakly stores objects and returns those when they are available is cache by definition 2018-09-25T06:51:43Z phoe: intermiediete layer that weakly stores objects and returns those when they are and is emptiable at any time* 2018-09-25T06:51:43Z zooey joined #lisp 2018-09-25T06:51:46Z phoe: FTFY 2018-09-25T06:52:08Z shka_: well, still a cache 2018-09-25T06:52:23Z flip214: shka_: but with a weak pointer it doesn't _cache_, as in "keeps it alive when nobody else is using it to speed up next accesses" 2018-09-25T06:52:51Z Shinmera: arguing semantics is a worthless waste of everyone's time, please stop. 2018-09-25T06:52:54Z flip214: with a weak pointer it only "remembers that _this_ record is around to return identity" 2018-09-25T06:53:01Z shka_: anyway, Shinmera example is good enough for me, so i no longer support my claim 2018-09-25T06:53:15Z flip214: Shinmera: no it isn't! (weak pointer to mpfc) 2018-09-25T06:56:44Z vlatkoB joined #lisp 2018-09-25T07:03:16Z shka_: still, in some tracked GC languages you don't have weak references 2018-09-25T07:03:55Z shka_: i wanted to say that C# does not have those but apparently it already have ^_^ 2018-09-25T07:08:17Z jackdaniel: nobody claimed that weak references are a must in GCed languages. small remainder: original claim: "weak structures have limited use in GCed languages" followed by a question: "do they have *any* use in languages which are not GCed?". then discussion went south witch caches and refcounting classification 2018-09-25T07:09:53Z shka_: jackdaniel: you drink to much coffe 2018-09-25T07:10:07Z jackdaniel: no, you contradict yourself and this kind of ticks me off 2018-09-25T07:10:10Z jackdaniel: and it is a pattern 2018-09-25T07:10:19Z heisig joined #lisp 2018-09-25T07:11:14Z shka_: well, if you say so 2018-09-25T07:13:20Z jackdaniel: regarding drinking too much coffee I'm not sure why you even said that 2018-09-25T07:13:33Z |3b|: weak pointers in non-gc language sounds useful to me. doesn't c++ have weak pointers now? 2018-09-25T07:14:42Z shka_: since C++11 2018-09-25T07:14:53Z shka_: and in boost for a long time 2018-09-25T07:15:49Z shka_: don't think to much about it ;-) 2018-09-25T07:16:28Z scymtym joined #lisp 2018-09-25T07:16:31Z makomo quit (Quit: WeeChat 2.2) 2018-09-25T07:21:39Z varjag joined #lisp 2018-09-25T07:23:47Z phoe: Is CHANGE-CLASS thread-safe in general? I assume not. 2018-09-25T07:24:33Z jackdaniel: |3b|: but shared_ptr gives you GC by reference counting in C++, and weak_ptr is part of this machinery, no? 2018-09-25T07:25:22Z anunnaki quit (Ping timeout: 246 seconds) 2018-09-25T07:25:27Z beach: phoe: It would depend on the implementation I would think. 2018-09-25T07:25:37Z |3b|: jackdaniel: yeah 2018-09-25T07:26:13Z |3b|: jackdaniel: though seems sort of useful to have it for same way we would use it in GC language, for stuff that wants to keep an eye on something they don't manage, without interfering with it 2018-09-25T07:26:18Z anunnaki joined #lisp 2018-09-25T07:26:27Z |3b| wonders how c++ programmers would think of that sort of use :) 2018-09-25T07:27:04Z jackdaniel: fair enough 2018-09-25T07:31:17Z angavrilov joined #lisp 2018-09-25T07:31:39Z aeth: shka_: usually when a language adds a feature it's because some niches really, really need it, even if it's of "limited use" elsewhere 2018-09-25T07:31:42Z shka_: phoe: i was searching manual of SBCL in order to find info on this, but i failed 2018-09-25T07:32:05Z shka_: few weeks ago 2018-09-25T07:32:35Z flip214: phoe: AFAIK it doesn't even keep history. 2018-09-25T07:33:15Z shka_: |3b|: honestly, having std::weak_ptr is a must 2018-09-25T07:33:54Z oni-on-ion: theres a saying "everything specified in the standard should be thread-safe" i just read 2018-09-25T07:34:13Z flip214: phoe: as in https://gist.github.com/phmarek/150462151573e201362d02ac5a8254e9 2018-09-25T07:34:18Z shka_: oni-on-ion: well, that does not help much 2018-09-25T07:34:43Z shka_: because it ends in global lock 2018-09-25T07:34:52Z shka_: which is not a good thing 2018-09-25T07:35:22Z |3b|: shka_: cor circular shared_ptr you mean? 2018-09-25T07:35:29Z |3b|: *for 2018-09-25T07:35:38Z shka_: |3b|: yes, exactly 2018-09-25T07:35:52Z shka_: and it happens literally all the time in real life 2018-09-25T07:36:04Z shka_: it is a mess :( 2018-09-25T07:42:24Z |3b|: yeah, i'm just saying it could be interesting aside from that 2018-09-25T07:42:47Z shka_: ok, makes sense 2018-09-25T07:43:04Z pjb quit (Ping timeout: 240 seconds) 2018-09-25T07:46:02Z russellw: it is said that ;; should be indented with surrounding code and ;;; should be indented at the left margin. But are there any actual usages where these give different results? In other words, is ;;; ever used other than between top-level forms which are at the left margin anyway? 2018-09-25T07:46:41Z |3b|: the language/implementation doesn't care, it is just a common style 2018-09-25T07:46:42Z jackdaniel: it sometimes is (I saw it used inside function body somewhere) 2018-09-25T07:46:53Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-25T07:47:07Z |3b|: you can put them where ever you want and indent them oddly, it will just confuse people used to the 'common' style 2018-09-25T07:47:42Z russellw: |3b| right, I'm asking about usage in practice, because I am writing a code formatter 2018-09-25T07:47:43Z flip214: russellw: you are right. 2018-09-25T07:48:00Z |3b|: in practice for compiler or for human reader? 2018-09-25T07:48:17Z russellw: jackdaniel, so on that occasion, was ;;; indented to left margin? 2018-09-25T07:48:21Z flip214: in practice it comes up to the same thing. unless the human code writer accidentally put ";;;" within some s-expression. 2018-09-25T07:48:25Z |3b|: compiler sees first ; and ignores anything else including more ; 2018-09-25T07:48:26Z jackdaniel: russellw: yes 2018-09-25T07:48:36Z russellw: |3b| human reader. The compiler does not care whether the code is nicely formatted 2018-09-25T07:48:48Z russellw: jackdaniel, thanks! 2018-09-25T07:48:49Z jackdaniel: it was describing general flow of the algorithm I think (not code itself). I don't remember well 2018-09-25T07:48:59Z |3b|: ok, in that case, yeah, i'd expect ;;; at left even inside code 2018-09-25T07:49:04Z bigfondue quit (Ping timeout: 240 seconds) 2018-09-25T07:49:21Z russellw: |3b|, cool, thanks 2018-09-25T07:50:46Z dented42 joined #lisp 2018-09-25T07:51:28Z dented42 quit (Client Quit) 2018-09-25T07:52:24Z LdBeth: ;;; Should occur on toplevel only 2018-09-25T07:53:22Z pierpal joined #lisp 2018-09-25T07:55:27Z |3b| also notes that "top-level" isn't always far left, for example eval-when and such, where you might wrap multiple definitions 2018-09-25T07:56:02Z kozy quit (Ping timeout: 252 seconds) 2018-09-25T07:56:09Z kozy_ joined #lisp 2018-09-25T07:56:20Z russellw: |3b| true. In that case, should ;;; between such top-level definitions, still be indented at the far left? 2018-09-25T07:56:26Z |3b| would still expect ;;; for the global definitions, even if inside eval-when or a closure, macrolet, etc 2018-09-25T07:56:34Z |3b|: i'd probably say yes 2018-09-25T07:56:39Z russellw: okay 2018-09-25T07:56:51Z |3b|: though probably wouldn't object either way 2018-09-25T07:57:34Z pierpal quit (Ping timeout: 240 seconds) 2018-09-25T07:57:57Z |3b|: does your formatter add/remove newlines, or just adjust indentation? 2018-09-25T07:58:29Z |3b|: (assuming the input has newlines, and isn't just actual conses etc) 2018-09-25T07:58:39Z russellw: it adds/removes newlines 2018-09-25T07:59:15Z |3b|: cool 2018-09-25T07:59:47Z |3b|: code reformatter has been on my list of "things to maybe do one day" for a while, but never get to it 2018-09-25T08:00:56Z russellw: I can understand that :) 2018-09-25T08:01:48Z beach: russellw: What are you planning to use to read your code? 2018-09-25T08:02:39Z |3b| thinks a bit more and realizes caring about comments implies source probably has newlines too :) 2018-09-25T08:02:50Z vlatkoB quit (Remote host closed the connection) 2018-09-25T08:03:22Z russellw: beach I was originally hoping to use the built-in reader, but eventually accepted this is not going to be possible and I have to write my own. So this is mostly done at this point https://github.com/russellw/lisp-format/blob/master/read.lisp 2018-09-25T08:03:41Z beach: Oh! I was going to recommend Eclector. 2018-09-25T08:04:02Z beach: It can handle stuff that is not read by an ordinary reader. 2018-09-25T08:04:09Z vlatkoB joined #lisp 2018-09-25T08:04:52Z beach: Oh well, more duplicate work. 2018-09-25T08:05:37Z russellw: ah! checking it out, looks interesting. Oh well, mine is pretty much done now, so. More duplicate work indeed :) 2018-09-25T08:08:44Z shrdlu68 joined #lisp 2018-09-25T08:10:27Z bigfondue joined #lisp 2018-09-25T08:10:47Z flip214: |3b|: "probably"... #| this is a comment, too #| 2018-09-25T08:10:57Z LdBeth: Actually I'm working on my own copy of CLWEB these days 2018-09-25T08:11:35Z flip214: and even if it werent you could just write symbols as comments as well … you only need to be careful about punctuation ".,'" ;) oh no, now the line is wasted! 2018-09-25T08:11:44Z LdBeth: If you're interested in typesetting with plainTeX... 2018-09-25T08:11:49Z |3b|: flip214: i mean if you still see comments, you were starting from characters and doing something like READ rather than just getting a list 2018-09-25T08:12:51Z |3b|: (or are getting list input from someone who parsed text input and is reasonably likely to have preserved formatting along with comments) 2018-09-25T08:14:41Z LdBeth: What size is recommanded for the hash table of ## labels? 2018-09-25T08:14:50Z beach: russellw: That's very unfortunate. 2018-09-25T08:17:52Z beach: LdBeth: What do you mean? A hash table will grow as needed. 2018-09-25T08:19:10Z LdBeth: beach: I think I want it initialize as fast as possible 2018-09-25T08:19:24Z beach: LdBeth: To read code? 2018-09-25T08:20:02Z LdBeth: yes, beach. It is not frequently used but should not missing 2018-09-25T08:20:06Z beach: LdBeth: I think it won't matter much. My hunch is that the I/O is going to dominate anyway. 2018-09-25T08:20:32Z LdBeth: Ok, just use default size 2018-09-25T08:22:51Z beach: LdBeth: What is it that you are working on that requires this much attention to performance? 2018-09-25T08:22:56Z beach: Another reader? 2018-09-25T08:25:08Z LdBeth: it's a macro layer used to parse documents into lisp code and TeX, which usesthe standard reader macro. 2018-09-25T08:26:05Z LdBeth: http://www.cs.brandeis.edu/~plotnick/clweb/ 2018-09-25T08:26:40Z LdBeth: The original one lack some features like ## and #= readers 2018-09-25T08:26:44Z nefercheprure is now known as TMA 2018-09-25T08:27:04Z beach: So you are parsing the input with your own program? 2018-09-25T08:27:37Z beach: What do these documents look like? 2018-09-25T08:27:45Z beach: Do you have an example? 2018-09-25T08:28:18Z LdBeth uploaded an image: 屏幕快照 2018-09-25 上午1.27.45.png (401KB) < https://matrix.org/_matrix/media/v1/download/matrix.org/KTeVCaRkiuDLImpRaSyzATpo > 2018-09-25T08:28:19Z LdBeth: sure 2018-09-25T08:28:52Z beach: I see. 2018-09-25T08:29:27Z beach: So you are implementing a superset of the Common Lisp reader? 2018-09-25T08:32:04Z LdBeth: Most control sequences are mature, I will mainly focus on improving data structures 2018-09-25T08:33:32Z LdBeth: For this one I think the standard reader is sufficient 2018-09-25T08:33:37Z earl-ducaine joined #lisp 2018-09-25T08:34:41Z beach: But then you don't control the size of the hash table for labels. 2018-09-25T08:35:55Z LdBeth: I tested with several sizes, seems on CCL the default size works good enough 2018-09-25T08:36:25Z LdBeth: it involves memory alignment, i suppose 2018-09-25T08:37:26Z beach: How did you test those sizes? By using implementation-specific code? 2018-09-25T08:39:24Z LdBeth: by running the actual function with differenct size parameters 2018-09-25T08:39:38Z LdBeth: you mean the profiler? 2018-09-25T08:40:43Z beach: No, I mean, I don't see a way in the Common Lisp standard to control the size of that hash table, so if you used the standard Common Lisp reader, I don't understand how you can test different sizes unless you use implementation-specific code. 2018-09-25T08:43:26Z LdBeth: Ah, so I sets macro chars to my own function, with set-dispatch-macro-character 2018-09-25T08:44:07Z beach: I thought we were talking about the hash table for #= and ##. No? 2018-09-25T08:44:24Z beach: So you redefine those reader macros? 2018-09-25T08:46:20Z LdBeth: yes. like the one https://pastebin.com/yFDvrc9x 2018-09-25T08:46:37Z beach: I think I see. 2018-09-25T08:47:02Z igemnace quit (Quit: WeeChat 2.2) 2018-09-25T08:48:26Z beach: And you do this for the sole purpose of controlling the size, or do you have any other use for controlling this aspect of the reader? 2018-09-25T08:48:47Z makomo joined #lisp 2018-09-25T08:50:46Z no-defun-allowed: i wonder if it's possible to compile a subset of CL to verilog 2018-09-25T08:51:20Z LdBeth: It reads lisp into tokens so something like read time eval, comments, optional evals can be preserved 2018-09-25T08:51:26Z shka_: well, + is a subset as well sooooooooo ;-) 2018-09-25T08:51:49Z LdBeth: #'no-defun-allowed: of course, and you can even do formal verification 2018-09-25T08:52:10Z beach: LdBeth: Got it. 2018-09-25T08:54:36Z fluxit joined #lisp 2018-09-25T08:56:30Z |3b|: beach: what's the next part i need to specialize once i have HIR? 2018-09-25T08:58:03Z jasongrossman joined #lisp 2018-09-25T08:58:21Z |3b|: looks like HIR-TO-MIR calls SPECIALIZE 2018-09-25T08:58:38Z earl-ducaine: Does there seem to be a generally prefered thead portability library? I was looking at Bordeaux Threads but I'm worried the API (at least the ql) seems to have changed quite a bit. 2018-09-25T08:58:58Z |3b|: bordeaux threads is the preferred thread lib 2018-09-25T08:59:03Z earl-ducaine: Maybe I just got unlucky and stumbled upon a prehistoric version in Trac? 2018-09-25T08:59:23Z |3b|: (or things that use it, if you want a higher-level API like lparallel) 2018-09-25T09:00:07Z earl-ducaine: This is the document I was looking at: 2018-09-25T09:00:08Z earl-ducaine: https://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation 2018-09-25T09:00:11Z |3b|: https://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation appears to be current docs 2018-09-25T09:00:15Z |3b|: yeah 2018-09-25T09:00:29Z earl-ducaine: It's seems to be quite out of date. 2018-09-25T09:00:50Z earl-ducaine: Timeouts are handled differently.... 2018-09-25T09:01:16Z earl-ducaine: And the timeout on recursively held locks is ignored completely. (ql version) 2018-09-25T09:01:17Z LdBeth: Go for sleep 2018-09-25T09:01:19Z LdBeth: seeya 2018-09-25T09:01:20Z earl-ducaine: https://quickref.common-lisp.net/bordeaux-threads.html 2018-09-25T09:01:25Z earl-ducaine: seems to be current. 2018-09-25T09:01:26Z beach: |3b|: We don't do much beyond HIR at the moment. 2018-09-25T09:01:50Z beach: |3b|: The plan is for me to define a HIR->MIR translator that can be customized. 2018-09-25T09:02:01Z beach: |3b|: But I haven't done that yet. 2018-09-25T09:02:05Z |3b|: and MIR is still similar to HIR? 2018-09-25T09:02:29Z beach: Yes, except that address calculations are exposed and the objects manipulated may be machine data. 2018-09-25T09:02:48Z |3b|: ok, no address calculations since i'm running on a VM anyway 2018-09-25T09:03:10Z |3b|: so i can just start working on codegen from the HIR, since i probably wouldn't be changing much going to MIR anyway 2018-09-25T09:03:22Z beach: Yes, that sounds very reasonable. 2018-09-25T09:04:35Z beach: |3b|: Depending on the kind of HIR you generate, you will need to generate code for array referencing, CONS-cell referencing, standard-object referencing, perhaps fixnum arithmetic, etc. 2018-09-25T09:06:08Z |3b|: yeah, will need to figure out how to configure that stuff at some point 2018-09-25T09:06:36Z |3b| 's current test function needs to pass function arguments and a literal int to 2 native functions 2018-09-25T09:07:36Z |3b|: then i need to figure out how to specify that i'm compiling the function for the native calling convention, and assemble it into something i can put in an apk file 2018-09-25T09:08:27Z |3b|: (specifying the calling convention is one of the things where dropping user/implementation declarations came up) 2018-09-25T09:09:41Z |3b|: actually, i guess i can walk up the tree of environments to find it, so maybe dropping it isn't a problem after all 2018-09-25T09:11:51Z shrdlu68: Is sb-kernel:hairy-data-vector-ref a potential optimization point? 2018-09-25T09:11:58Z |3b|: usually 2018-09-25T09:12:42Z |3b|: types for arrays and array indices can help 2018-09-25T09:12:59Z |3b|: *declaring types 2018-09-25T09:13:20Z razzy joined #lisp 2018-09-25T09:13:37Z |3b|: and possibly using specialized arrays. i don't remember specifically which things that was for, but usually when i'm optimizing i want specialized arrays anyway :) 2018-09-25T09:14:09Z no-defun-allowed: shka_: (+ a b) -> `assign foo = a + b` 2018-09-25T09:14:35Z beach: |3b|: Interesting project I see. 2018-09-25T09:14:46Z |3b|: (be sure to validate the declarations first if running on other lisps or running at safety 0) 2018-09-25T09:17:11Z igemnace joined #lisp 2018-09-25T09:17:43Z |3b|: hmm, i guess i have one more step at IR level, need to distinguish whether i'm compiling for native or lisp 2018-09-25T09:17:59Z xrash quit (Ping timeout: 252 seconds) 2018-09-25T09:18:19Z |3b|: and propagate some of that env info into the IR while i still have env 2018-09-25T09:20:40Z |3b|: anyone have thoughts on how best to represent java's super keyword in a lisp style? (super (foo this ...))? ((super foo) this ...)? (foo (super this) ..)? (funcall-super 'foo this ...)? 2018-09-25T09:21:04Z |3b|: aside from the specific cases that can just be (call-next-method) 2018-09-25T09:22:11Z |3b|: (if i understand correctly, super is sort of generalized call-next-method, that lets you call any method or access a slot starting dispatch with superclass instead of actual class) 2018-09-25T09:22:58Z TMA: it makes no sense in multiple inheritance setting 2018-09-25T09:23:08Z |3b| currently is thinking of (foo (super this) ...) as best representing what it does 2018-09-25T09:23:20Z |3b|: TMA: yeah, purely for single dispatch 2018-09-25T09:24:20Z |3b|: though you could sort of generalize it to multiple, grab classes for current method, find applicable methods for requested function, remove first entry if exact match for current method 2018-09-25T09:24:34Z TMA: |3b|: is this special? [not in (declare (special this)) but extraordinary, separately handled etc.] 2018-09-25T09:24:36Z |3b| isn't sure that would actually be a useful thing to do though :) 2018-09-25T09:25:15Z |3b|: yeah, this is for compiling code to interact with java APIs, so i need to subclass java classes, and call methods from superclass, etc 2018-09-25T09:25:32Z TMA: |3b|: if so, just use SUPER as an extraordinary marker as well 2018-09-25T09:25:56Z |3b|: so first need to distinguish it from an intentional recursive call, and 2nd need to generate different bytecode 2018-09-25T09:26:05Z |3b|: TMA: right, but where do i put the marker? :) 2018-09-25T09:26:18Z TMA: instead of THIS you put there SUPER 2018-09-25T09:27:00Z |3b|: well, currently THIS is an explicit argument in my lispy code, so generating SUPER sounds a bit off 2018-09-25T09:27:13Z TMA: not (super this) ... the latter would seem to enable you to use (super foo) for any foo, which is not the case from your description anyway 2018-09-25T09:27:42Z |3b|: actually, maybe that would work for any foo, will have to try that on the VM 2018-09-25T09:27:48Z |3b|: (once i get to that point) 2018-09-25T09:28:27Z |3b| isn't sure if foo.super.bar() is valid in java 2018-09-25T09:29:43Z TMA: it is not 2018-09-25T09:30:07Z xificurC quit 2018-09-25T09:30:15Z Shinmera: super is private 2018-09-25T09:32:04Z |3b| isn't sure only working on some things is too much of a problem, same way you can't call call-next-method on aything that would change applicable methods 2018-09-25T09:32:45Z |3b|: also seems like it would be fairly rare, since most places could just use call-next-method 2018-09-25T09:37:24Z TMA: using super for other purposes than the equivalent of call-next-method is considered bad style even in java itself 2018-09-25T09:38:23Z |3b|: cool, i'll just leave it as (super this) for now and ignore it :) 2018-09-25T09:38:56Z |3b|: and leave it as an implementation detail with call-next-method as the intended API 2018-09-25T09:39:55Z frgo quit (Remote host closed the connection) 2018-09-25T09:40:15Z TMA: [the usage super(argument1, argument2); in constructors is a (call-next-method) of sorts albeit you can choose which superclass constructor you use] 2018-09-25T09:41:20Z |3b|: right 2018-09-25T09:43:03Z pjb joined #lisp 2018-09-25T09:46:31Z shrdlu68: Spec says "vector is analogous to list", so is (aref n) the same as (nth n )? 2018-09-25T09:47:29Z |3b|: aside from runtime and improper lists, pretty much 2018-09-25T09:47:42Z |3b|: where does it say that? 2018-09-25T09:48:01Z shrdlu68: clhs vector 2018-09-25T09:48:01Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/a_vector.htm 2018-09-25T09:48:22Z |3b|: ah, i think it means the functions VECTOR and LIST rather than the types 2018-09-25T09:48:56Z |3b|: (though the types are also analogous to the extent both are sequences) 2018-09-25T09:50:31Z beach: |3b|: You know that the environment is gone by the time you have an AST, so you might need to define a new AST type as well. 2018-09-25T09:50:32Z |3b|: (elt n) is like (elt n) :) 2018-09-25T09:50:55Z |3b|: beach: yeah, i think that's part of what i meant 2018-09-25T09:51:00Z beach: OK. 2018-09-25T09:51:07Z |3b|: or at least i would have noticed quickly :) 2018-09-25T09:51:31Z beach: Absolutely! :) 2018-09-25T09:51:36Z |3b|: hard to tell what needs stored where until i try to use it, so probably will be a few passes of this sort of thing 2018-09-25T09:54:13Z graphene quit (Remote host closed the connection) 2018-09-25T09:55:35Z graphene joined #lisp 2018-09-25T09:57:58Z housel quit (Remote host closed the connection) 2018-09-25T09:58:18Z cl-arthur quit (Quit: Lost terminal) 2018-09-25T09:58:20Z housel joined #lisp 2018-09-25T09:59:42Z pjb: shrdlu68: aref is not the same as nth: (nth 4 '(1)) #| --> nil |# (aref #(1) 4) #| ERROR: Array index 4 out of bounds for #(1) . |# 2018-09-25T09:59:58Z pjb: shrdlu68: elt is like aref: (elt '(1) 4) #| ERROR: 4 is not a valid sequence index for (1) |# 2018-09-25T10:00:03Z pjb: this is why we have both nth and elt. 2018-09-25T10:00:31Z pjb: The older NTH is nice and gentle. It doesn't rely on a condition system, it just returns NIL. 2018-09-25T10:00:53Z dmiles quit (Ping timeout: 245 seconds) 2018-09-25T10:00:57Z frgo joined #lisp 2018-09-25T10:01:18Z X-Scale quit (Ping timeout: 245 seconds) 2018-09-25T10:01:23Z pjb: The newer AREF and ELT are harsh and strict. They rely on the condition system, and like to dominate and control you. 2018-09-25T10:01:37Z pjb: You use whatever fits your personality. 2018-09-25T10:02:08Z pjb: There are even people who specify the type of array elements! 2018-09-25T10:05:07Z frgo quit (Ping timeout: 240 seconds) 2018-09-25T10:05:19Z anewuser joined #lisp 2018-09-25T10:08:01Z Balooga_ joined #lisp 2018-09-25T10:10:40Z dmiles joined #lisp 2018-09-25T10:11:47Z X-Scale joined #lisp 2018-09-25T10:12:18Z adlai: no-defun-allowed: "a subset", sure, there are many trivial subsets (eg, bit vector operations, "logical" integer operations, etc). the interesting question is hunting for maximal feasible subsets. 2018-09-25T10:19:57Z no-defun-allowed: True 2018-09-25T10:20:19Z no-defun-allowed: There's a few simple parallels: = is let, <= is setf 2018-09-25T10:21:32Z frgo joined #lisp 2018-09-25T10:26:11Z frgo quit (Ping timeout: 252 seconds) 2018-09-25T10:26:25Z orivej joined #lisp 2018-09-25T10:28:48Z cl-arthur joined #lisp 2018-09-25T10:29:33Z |3b|: hmm, maybe it does eat the declarations in a way i can't get by walking up the env list 2018-09-25T10:35:14Z m00natic joined #lisp 2018-09-25T10:39:32Z XachX quit (Ping timeout: 180 seconds) 2018-09-25T10:42:08Z frgo joined #lisp 2018-09-25T10:46:32Z frgo quit (Ping timeout: 252 seconds) 2018-09-25T10:51:46Z igemnace quit (Quit: WeeChat 2.2) 2018-09-25T10:54:27Z frgo joined #lisp 2018-09-25T10:55:41Z SenasOzys quit (Ping timeout: 260 seconds) 2018-09-25T10:59:54Z t0adst00l joined #lisp 2018-09-25T11:02:38Z rumbler31 joined #lisp 2018-09-25T11:07:06Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-25T11:10:43Z igemnace joined #lisp 2018-09-25T11:12:32Z Balooga_ quit (Quit: Balooga_) 2018-09-25T11:27:01Z lagagain joined #lisp 2018-09-25T11:28:06Z makomo quit (Quit: WeeChat 2.2) 2018-09-25T11:40:46Z regreg joined #lisp 2018-09-25T11:48:02Z arkaros joined #lisp 2018-09-25T11:51:37Z Josh_2 joined #lisp 2018-09-25T11:52:54Z Josh_2: Afternoon all 2018-09-25T11:53:08Z russellw: afternoon! 2018-09-25T11:55:50Z shka_: ok, so i was reading on SDRs used for HTM 2018-09-25T11:56:35Z shka_: and it is very much like data sketch 2018-09-25T11:56:40Z ggole joined #lisp 2018-09-25T11:56:47Z shka_: but how they are using those is quite interesting! 2018-09-25T11:57:18Z xrash joined #lisp 2018-09-25T12:00:07Z wws quit (Ping timeout: 180 seconds) 2018-09-25T12:00:12Z XachX quit (Ping timeout: 180 seconds) 2018-09-25T12:00:19Z xrash quit (Remote host closed the connection) 2018-09-25T12:04:51Z SilverSteeples joined #lisp 2018-09-25T12:07:43Z SenasOzys joined #lisp 2018-09-25T12:16:44Z DGASAU quit (Ping timeout: 252 seconds) 2018-09-25T12:17:50Z eschulte quit (Ping timeout: 252 seconds) 2018-09-25T12:18:00Z regreg_ joined #lisp 2018-09-25T12:19:02Z regreg quit (Read error: Connection reset by peer) 2018-09-25T12:31:03Z orivej quit (Ping timeout: 252 seconds) 2018-09-25T12:31:42Z hjudt: is there any lisp project that has a docker file i can look into? i'd like to deploy a project to an openshift cluster. 2018-09-25T12:32:04Z jasongrossman left #lisp 2018-09-25T12:32:10Z Xach: hjudt: https://github.com/quicklisp/quicklisp-docker/ is one 2018-09-25T12:32:46Z Xach: it is naïve 2018-09-25T12:34:13Z hjudt: thanks. i'll give it a look 2018-09-25T12:36:19Z hjudt: i will have to find a way to pack all the required libs, or i create a lisp image 2018-09-25T12:37:21Z siraben joined #lisp 2018-09-25T12:38:50Z Xach: ok 2018-09-25T12:40:56Z Bike joined #lisp 2018-09-25T12:47:47Z Bike quit (Ping timeout: 256 seconds) 2018-09-25T12:49:25Z doubledup joined #lisp 2018-09-25T12:49:37Z graphene quit (Remote host closed the connection) 2018-09-25T12:50:52Z graphene joined #lisp 2018-09-25T12:51:36Z nowhereman_ joined #lisp 2018-09-25T12:56:38Z dim: hjudt: https://github.com/dimitri/pgloader has a dockerfile and is available on docker hub too, if you want to have a look 2018-09-25T12:57:32Z dim: it was contributed a nice spec to have a builder image different from the runtime image, wherein there's just the lisp image itself and its .so dependencies 2018-09-25T13:09:24Z Bike joined #lisp 2018-09-25T13:10:38Z orivej joined #lisp 2018-09-25T13:15:34Z rnmhdn joined #lisp 2018-09-25T13:18:25Z doubledup quit (Quit: Leaving) 2018-09-25T13:19:14Z Kundry_Wag joined #lisp 2018-09-25T13:23:13Z graphene quit (Remote host closed the connection) 2018-09-25T13:24:28Z graphene joined #lisp 2018-09-25T13:25:13Z graphene quit (Remote host closed the connection) 2018-09-25T13:25:33Z pierpal joined #lisp 2018-09-25T13:26:28Z graphene joined #lisp 2018-09-25T13:26:46Z orivej quit (Ping timeout: 260 seconds) 2018-09-25T13:26:47Z Guest5800_ joined #lisp 2018-09-25T13:32:34Z rnmhdn quit (Ping timeout: 240 seconds) 2018-09-25T13:33:06Z arkaros quit (Ping timeout: 272 seconds) 2018-09-25T13:34:20Z warweasle joined #lisp 2018-09-25T13:35:17Z PuercoPop joined #lisp 2018-09-25T13:37:53Z rumbler31 joined #lisp 2018-09-25T13:39:09Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T13:47:27Z pierpal joined #lisp 2018-09-25T13:49:09Z arkaros joined #lisp 2018-09-25T13:49:21Z Josh_2 quit (Read error: Connection reset by peer) 2018-09-25T13:54:31Z zfree joined #lisp 2018-09-25T13:56:27Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-25T14:07:46Z rumbler31 quit (Remote host closed the connection) 2018-09-25T14:08:56Z SenasOzys quit (Remote host closed the connection) 2018-09-25T14:09:48Z rnmhdn joined #lisp 2018-09-25T14:13:23Z SenasOzys joined #lisp 2018-09-25T14:13:41Z Inline joined #lisp 2018-09-25T14:16:27Z Inline quit (Read error: Connection reset by peer) 2018-09-25T14:16:54Z Inline joined #lisp 2018-09-25T14:17:00Z phoe: _death: I found the cause of the random socket errors I was getting 2018-09-25T14:17:26Z phoe: basically - socket operations are *not* thread-safe, and performing them at once from different threads causes things to explode. 2018-09-25T14:18:39Z shka_: phoe: you have multiple threads reading one socket? 2018-09-25T14:18:50Z rnmhdn quit (Ping timeout: 252 seconds) 2018-09-25T14:19:32Z cage_ joined #lisp 2018-09-25T14:19:33Z phadthai: hmm yes if they're thread-safe or not depends on OS, thread implemenation and polling method (signals may also be sent to the whole process, handled by whatever thread is next scheduled) 2018-09-25T14:19:55Z frgo quit (Remote host closed the connection) 2018-09-25T14:20:59Z phadthai: s/implemenation/implementation/ 2018-09-25T14:21:29Z phoe: shka_: I had 2018-09-25T14:21:33Z phoe: I don't have anymore 2018-09-25T14:21:38Z shka_: ok 2018-09-25T14:22:12Z shka_: btw, even if it would work, it would still be not the greatest idea 2018-09-25T14:22:54Z lavaflow_ quit (Read error: Connection reset by peer) 2018-09-25T14:23:20Z frgo joined #lisp 2018-09-25T14:23:21Z frgo quit (Read error: Connection reset by peer) 2018-09-25T14:23:29Z frgo joined #lisp 2018-09-25T14:23:45Z astronavt__ is now known as astronavt 2018-09-25T14:24:08Z lavaflow_ joined #lisp 2018-09-25T14:24:41Z sleepnap joined #lisp 2018-09-25T14:24:51Z zxcvz joined #lisp 2018-09-25T14:27:56Z phadthai: so usually we can disable signals we don't want in threads we don't want them (usually using pthread_sigmask), configure sockets to not send signals like sigint and block/unblock status (via setsockopt), use custom locks/mutexes around syscalls like recv/accept, etc... 2018-09-25T14:29:16Z phadthai: (something your abstraction lib may or may not allow too) 2018-09-25T14:29:28Z ja-barr quit (Ping timeout: 272 seconds) 2018-09-25T14:29:49Z ja-barr joined #lisp 2018-09-25T14:37:37Z ealfonso joined #lisp 2018-09-25T14:51:24Z frodef quit (Ping timeout: 244 seconds) 2018-09-25T14:54:33Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T14:54:44Z Kundry_Wag joined #lisp 2018-09-25T14:54:44Z pierpal joined #lisp 2018-09-25T14:56:21Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T14:57:46Z shifty quit (Ping timeout: 260 seconds) 2018-09-25T14:59:22Z frodef joined #lisp 2018-09-25T15:00:00Z pierpal joined #lisp 2018-09-25T15:02:30Z heisig quit (Ping timeout: 252 seconds) 2018-09-25T15:04:46Z travv0 joined #lisp 2018-09-25T15:05:49Z graphene quit (Remote host closed the connection) 2018-09-25T15:07:52Z graphene joined #lisp 2018-09-25T15:09:42Z edgar-rft quit (Read error: Connection reset by peer) 2018-09-25T15:09:55Z SenasOzys quit (Remote host closed the connection) 2018-09-25T15:10:10Z SenasOzys joined #lisp 2018-09-25T15:16:47Z slyrus1 joined #lisp 2018-09-25T15:17:08Z DataLinkDroid2 joined #lisp 2018-09-25T15:18:36Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-25T15:20:02Z DataLinkDroid quit (Ping timeout: 256 seconds) 2018-09-25T15:24:53Z rnmhdn joined #lisp 2018-09-25T15:25:18Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-25T15:27:00Z nowhereman_ quit (Ping timeout: 250 seconds) 2018-09-25T15:35:03Z SenasOzys quit (Ping timeout: 245 seconds) 2018-09-25T15:35:13Z astalla joined #lisp 2018-09-25T15:36:32Z jeosol joined #lisp 2018-09-25T15:39:09Z SenasOzys joined #lisp 2018-09-25T15:40:48Z Kundry_Wag quit (Remote host closed the connection) 2018-09-25T15:45:36Z travv0 quit (Ping timeout: 260 seconds) 2018-09-25T15:47:40Z frgo quit (Remote host closed the connection) 2018-09-25T15:48:10Z frgo joined #lisp 2018-09-25T15:52:12Z igemnace quit (Remote host closed the connection) 2018-09-25T15:52:22Z frgo quit (Ping timeout: 244 seconds) 2018-09-25T15:52:30Z graphene quit (Remote host closed the connection) 2018-09-25T15:53:43Z graphene joined #lisp 2018-09-25T15:53:52Z igemnace joined #lisp 2018-09-25T15:54:29Z frgo joined #lisp 2018-09-25T15:55:13Z orivej joined #lisp 2018-09-25T15:55:39Z arkaros quit (Ping timeout: 250 seconds) 2018-09-25T15:58:27Z frgo quit (Ping timeout: 240 seconds) 2018-09-25T16:00:38Z DataLinkDroid3 joined #lisp 2018-09-25T16:01:53Z asarch joined #lisp 2018-09-25T16:03:40Z DataLinkDroid2 quit (Ping timeout: 256 seconds) 2018-09-25T16:04:06Z Kundry_Wag joined #lisp 2018-09-25T16:06:48Z FreeBirdLjj joined #lisp 2018-09-25T16:08:15Z rumbler31 joined #lisp 2018-09-25T16:12:41Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-25T16:14:03Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T16:14:16Z pierpal joined #lisp 2018-09-25T16:16:28Z sjl joined #lisp 2018-09-25T16:18:20Z frgo joined #lisp 2018-09-25T16:21:39Z dale_ joined #lisp 2018-09-25T16:21:58Z dale_ is now known as dale 2018-09-25T16:22:24Z arkaros joined #lisp 2018-09-25T16:22:35Z frgo quit (Ping timeout: 252 seconds) 2018-09-25T16:27:32Z arkaros quit (Ping timeout: 252 seconds) 2018-09-25T16:27:48Z Kundry_Wag quit (Read error: No route to host) 2018-09-25T16:29:01Z Demosthenex: in case anyone is interested, humble bundle's doing a coder book bundle atm which includes land of lisp (ebooks). https://www.humblebundle.com/books/learn-you-some-code-books 2018-09-25T16:32:35Z kooga quit (Quit: :) 2018-09-25T16:33:15Z warweasle: LOL? 2018-09-25T16:36:21Z astalla quit (Ping timeout: 260 seconds) 2018-09-25T16:36:39Z Jesin quit (Quit: Leaving) 2018-09-25T16:40:50Z warweasle is now known as warweasle_afk 2018-09-25T16:40:53Z ealfonso quit (Ping timeout: 245 seconds) 2018-09-25T16:41:05Z Jesin joined #lisp 2018-09-25T16:41:17Z siraben quit (Ping timeout: 252 seconds) 2018-09-25T16:43:31Z lumm joined #lisp 2018-09-25T16:45:35Z FreeBirdLjj quit 2018-09-25T16:46:47Z orivej quit (Ping timeout: 252 seconds) 2018-09-25T16:46:58Z astalla joined #lisp 2018-09-25T16:50:50Z FreeBirdLjj joined #lisp 2018-09-25T16:52:43Z astalla quit (Ping timeout: 246 seconds) 2018-09-25T16:55:10Z SenasOzys quit (Ping timeout: 246 seconds) 2018-09-25T16:56:55Z frgo joined #lisp 2018-09-25T16:57:14Z anewuser quit (Quit: anewuser) 2018-09-25T16:59:22Z varjagg joined #lisp 2018-09-25T17:01:38Z SenasOzys joined #lisp 2018-09-25T17:07:00Z m00natic quit (Remote host closed the connection) 2018-09-25T17:07:35Z arkaros joined #lisp 2018-09-25T17:07:41Z frodef quit (Ping timeout: 252 seconds) 2018-09-25T17:08:17Z cgay: I wonder where Land of Lisp's summary came from. "...but it's cryptic syntax...." Way to sell books, guys. 2018-09-25T17:12:08Z arkaros quit (Ping timeout: 245 seconds) 2018-09-25T17:12:26Z dlowe: I'm not a big fan of Land of Lisp for a number of reasons. 2018-09-25T17:12:39Z dlowe: It seems to work for some people, though. 2018-09-25T17:12:49Z LiamH joined #lisp 2018-09-25T17:13:46Z aeth: I recently looked through the book (it was part of an ebook bundle a long time ago) and it didn't look as bad as some people said. It moves pretty slowly, though. Takes a while to get to useful features of the language. 2018-09-25T17:14:02Z moei quit (Quit: Leaving...) 2018-09-25T17:14:37Z aeth: It's dated, though. It recommends CLISP, whereas these days people generally recommend SBCL. And it mentions Clojure and Arc as up-and-coming Lisps. 2018-09-25T17:14:56Z aeth: (It's not just a recommendation for CLISP, the web chapter requires it.) 2018-09-25T17:15:16Z Demosthenex: hrm 2018-09-25T17:16:34Z pjb: Well, clisp has a good socket interface. 2018-09-25T17:17:59Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-25T17:18:36Z FreeBirdLjj joined #lisp 2018-09-25T17:23:18Z FreeBirdLjj quit (Ping timeout: 264 seconds) 2018-09-25T17:28:27Z russellw: What would be the most idiomatic way to order parts of a name? That is, in Scheme, there are lots of names like string->number. In my opinion, it would arguably make more sense to write such names like number-string or number-of-string when we are dealing with pure functions, because the function name is written before the argument, but string->number is the Scheme idiom. What is the idiom in 2018-09-25T17:28:27Z russellw: Common Lisp? 2018-09-25T17:28:49Z longshi joined #lisp 2018-09-25T17:30:54Z Bike: i think i've used both foo->bar and foo-to-bar 2018-09-25T17:31:09Z Bike: in the actual language, usually those things take a variety of possible arguments 2018-09-25T17:31:27Z Bike: so e.g. the thing to get a string out of a symbol or character is just called 'string' 2018-09-25T17:32:26Z russellw: right, which is why the distinction does not show up in the standard library. But as far as you are concerned, the idiom is from->to, not to-of-from? 2018-09-25T17:33:26Z Bike: i'm mostly talking about my preference. i don't know that it's something there's really an idiom for. 2018-09-25T17:34:00Z russellw: right, but I need some tiebreaker 2018-09-25T17:34:27Z Bike: okay, then i would do from->to, yes. 2018-09-25T17:34:36Z russellw: cool, thanks 2018-09-25T17:35:19Z russellw: the specific use case that prompted the question is a pair of test functions, one of which tries reading and then writing, the other of which tries writing then reading 2018-09-25T17:36:26Z pjb: russellw: indeed, number<-string in scheme, number-from-string in CL would lead to more readable code. But still, left-to-right transformations are more common. 2018-09-25T17:37:01Z pjb: (a<-b (b<-c (c<-d d))) -> a 2018-09-25T17:37:19Z pjb: vs. (b->a (c->b (d->c d))) -> a 2018-09-25T17:38:02Z russellw: (defun write-read (a) (assert (equal (read-string (fmt 0 a)) a))) 2018-09-25T17:38:24Z pjb: then, you can write a macro ((-> d->c c->b b->a) d) -> a 2018-09-25T17:39:19Z russellw: that has the flavor of Haskell, somehow 2018-09-25T17:40:08Z pierpal quit (Ping timeout: 252 seconds) 2018-09-25T17:40:43Z pfdietz: For accessors of structure types, the common part is a prefix. (defstruct human head arms torso legs) gives human-head, human-arms, etc. 2018-09-25T17:41:08Z russellw: ah, that's also from-to order 2018-09-25T17:41:09Z pjb: Yes, you go for the human structure to the arm structure with human->arm. 2018-09-25T17:41:14Z pjb: arm-of-human could be better. 2018-09-25T17:41:18Z russellw: (human-head human) 2018-09-25T17:41:46Z pjb: (sign (hand-of-arm (arm-of-human (human-ceo-of-enterprise 'apple))) (employment-contract *me*)) 2018-09-25T17:41:49Z pierpal joined #lisp 2018-09-25T17:42:37Z pjb: the -of- or -from- or <- connectors leads to more readable code than the -to- or -> or just - connectors. 2018-09-25T17:42:51Z cgay: a bold statement 2018-09-25T17:42:59Z pjb: Notice on the other hand, that in CL, you can specify the prefix in defstruct, and you can use foo. instead of foo- 2018-09-25T17:43:11Z pjb: So you write (human.head human) 2018-09-25T17:43:26Z pjb: But usually, and by default, it's human-head. 2018-09-25T17:44:04Z russellw: and I think given that the idiom is as it is, it is probably better if I follow it rather than doing things a different way 2018-09-25T17:44:23Z pfdietz: The alternate style is that of generic function accessors for standard classes. These typically omit the prefix entirely. arms, head, etc. 2018-09-25T17:44:34Z scymtym quit (Ping timeout: 240 seconds) 2018-09-25T17:44:40Z orivej joined #lisp 2018-09-25T17:44:56Z pfdietz: Because generic functions do not belong to any particular (base) class. 2018-09-25T17:45:14Z pfdietz: Are not members of, I should say. 2018-09-25T17:45:45Z Josh_2 joined #lisp 2018-09-25T17:47:40Z shrdlu68 joined #lisp 2018-09-25T17:48:06Z esrse quit (Ping timeout: 244 seconds) 2018-09-25T17:49:18Z Jesin quit (Quit: Leaving) 2018-09-25T17:50:07Z pierpal quit (Ping timeout: 246 seconds) 2018-09-25T17:51:26Z shrdlu68: I have a binary tree data structure such that each node consists of 'left-child, 'right-child, and 'data (which is some arbitrary object stored at the node). I'm currently using a vector to hold the values, initialized as (vector nil nil nil). What's a better alternative, performace-wise? 2018-09-25T17:51:58Z pjb: none. 2018-09-25T17:52:05Z shrdlu68: I've tried a CLOS object, which was sub-par. 2018-09-25T17:52:18Z pjb: you can (defstruct (node (:type vector)) left right data) for ease of use. 2018-09-25T17:53:20Z russellw: I would expect on theoretical grounds a structure should be slightly faster because the bounds check can be omitted, but the actual performance difference too small to measure 2018-09-25T17:53:44Z terpri joined #lisp 2018-09-25T17:54:47Z pjb: russellw: actually, I don't think structures can do without the bound check: (defstruct 2d-point x y) (defstruct (3d-point (:include 2d-point)) z) (3d-point-z (make-2d-point)) vs. (2d-point-y (make-3d-point)) 2018-09-25T17:55:06Z shrdlu68: The results of profiling are: https://gist.github.com/shrdlu68/081a78c6196b676395ca518a268d9119 2018-09-25T17:55:17Z pjb: of course, it's implementation dependent. 2018-09-25T17:55:38Z russellw: fair enough 2018-09-25T17:56:40Z pjb: But you should realize that it's silly to opimize the access to the node slots of a binary tree, when the access to the tree is a slow O(logn), when you could have O(1) with a hash-table!?! 2018-09-25T17:57:32Z shrdlu68: pjb: I know, trying to see how far I can take this. 2018-09-25T17:58:32Z shrdlu68: It's a space-time trade-off. 2018-09-25T18:01:13Z ggole quit (Quit: ggole) 2018-09-25T18:02:05Z pjb: If you start using vectors for binary trees, why not using only 1 vector? 2018-09-25T18:04:09Z shrdlu68: The keys are bit vectors of length 1-240. I just walk the bit vector going left or right. 2018-09-25T18:04:18Z longshi quit (Ping timeout: 250 seconds) 2018-09-25T18:04:47Z LdBeth: maybe for fast concatenation and substring 2018-09-25T18:05:12Z russellw: if all you want to do is lookup, I would expect a hash table to be both faster and smaller 2018-09-25T18:05:52Z shrdlu68: russellw: Faster, yes. Smaller, no. 2018-09-25T18:06:11Z russellw: why? 2018-09-25T18:06:28Z russellw: are bit vectors not stored very compactly if you just leave them in that form? 2018-09-25T18:06:31Z shka_ joined #lisp 2018-09-25T18:07:05Z shrdlu68: I assume it's because it keeps a copy of each key for comparison. 2018-09-25T18:07:35Z shka_: good enving 2018-09-25T18:07:48Z shrdlu68: Hey shka_ 2018-09-25T18:07:49Z russellw: ... okay, I suppose it is still 32 bytes/key 2018-09-25T18:07:52Z russellw: evening! 2018-09-25T18:08:28Z LdBeth: Hello 2018-09-25T18:08:33Z shrdlu68: About 10 times faster, though. 2018-09-25T18:08:42Z russellw: yeah 2018-09-25T18:09:12Z shka_: shrdlu68: you figured something out? 2018-09-25T18:09:45Z shrdlu68: shka_: Nope. 2018-09-25T18:09:48Z Jesin joined #lisp 2018-09-25T18:09:52Z shka_: oh, ok 2018-09-25T18:10:46Z shrdlu68: I tried using an octet vector rather than a bit vector, but octet vector was a bit slower than the bit vector. 2018-09-25T18:10:56Z shka_: as hash key? 2018-09-25T18:11:51Z shka_: shrdlu68: i had one idea 2018-09-25T18:11:52Z shrdlu68: Yes. I had to subseq and mask some of the bits of the last octet where length was not a multiple of 8. 2018-09-25T18:12:01Z zxcvz quit (Ping timeout: 260 seconds) 2018-09-25T18:12:27Z shka_: well, i have something different you can try out 2018-09-25T18:12:47Z russellw: how many of these things are you storing, that you need to worry about 32 bytes per key? 2018-09-25T18:12:56Z shka_: basicly try something like this 2018-09-25T18:13:00Z shka_: still a tree 2018-09-25T18:13:08Z shka_: but composed of hashtables 2018-09-25T18:13:28Z shka_: so simply divide your key into fixnum chunks 2018-09-25T18:13:44Z shka_: it shouldn't be ultra hard to implement 2018-09-25T18:14:11Z shrdlu68: russellw: A lot, I'm keeping record of all 240-bit prefixes in a bit vector. 2018-09-25T18:14:58Z russellw: supposing you have an atom to convert to a (read)able string, is this the fastest/simplest way to do it? (format nil "~s" a) 2018-09-25T18:15:28Z Shinmera: clhs prin1-to-string 2018-09-25T18:15:28Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_wr_to_.htm 2018-09-25T18:15:37Z arkaros joined #lisp 2018-09-25T18:15:44Z frodef joined #lisp 2018-09-25T18:15:57Z shrdlu68: shka_: I'm thinking about that. 2018-09-25T18:16:08Z russellw: Shinmera, thanks! 2018-09-25T18:16:15Z zxcvz joined #lisp 2018-09-25T18:16:19Z whartung: uh.. “all 240-bit prefixes”, we only have 64 bit addressing…arent; you going to run out? “I know, I’ll use virtual memory! — Now you have 2 problems.” 2018-09-25T18:17:19Z shrdlu68: Actually all prefixes of length 1-240. 2018-09-25T18:18:00Z whartung: yea, you’re still going to run out of bits. 2018-09-25T18:18:27Z shrdlu68: whartung: I take a file, read it into an octet vector, convert that into a bit vector, and, for each bit, look back 240 bits, keeping track of the last (n=240) bits. 2018-09-25T18:19:20Z whartung: how big are these files? 2018-09-25T18:19:34Z warweasle_afk is now known as warweasle 2018-09-25T18:19:36Z shrdlu68: Around 200kb. 2018-09-25T18:19:43Z russellw: WTF 2018-09-25T18:19:58Z shrdlu68: Yep. 2018-09-25T18:20:09Z russellw: your entire data set will only be hundreds of kilobytes! 2018-09-25T18:20:15Z whartung: so you’re storing 200,030 bytes total. 2018-09-25T18:20:24Z russellw: you could run that on a 286 2018-09-25T18:20:46Z russellw: use the hash table and be happy 2018-09-25T18:20:49Z whartung: (be boiled in oil and fried in crisco if I ever call bytes octets) 2018-09-25T18:20:59Z shrdlu68: I think there's something I'm not explaining clearly. 2018-09-25T18:21:05Z Blackbeard: hello 2018-09-25T18:21:16Z arkaros quit (Ping timeout: 272 seconds) 2018-09-25T18:21:18Z Blackbeard: in a .asd file 2018-09-25T18:21:19Z Blackbeard: should i put 2018-09-25T18:21:49Z shrdlu68: I've tried hashtables, takes around 5s to process a 36k file. 2018-09-25T18:21:51Z Blackbeard: :depends-on (#:stumpwm 2018-09-25T18:21:52Z Blackbeard: #:trivial-mimes) 2018-09-25T18:21:52Z Blackbeard: or 2018-09-25T18:21:56Z Blackbeard: :depends-on ("stumpwm" 2018-09-25T18:21:57Z Blackbeard: "trivial-mimes") 2018-09-25T18:22:17Z shka_: russellw: simply keys are long 2018-09-25T18:22:26Z shka_: and calculating hashes is slow 2018-09-25T18:22:31Z Shinmera: Blackbeard: both are ok. 2018-09-25T18:22:41Z whartung: the keys are 30 bytes long 2018-09-25T18:22:43Z Blackbeard: Shinmera (IRC): i see 2018-09-25T18:22:47Z Blackbeard: Shinmera (IRC): thanks :) 2018-09-25T18:23:10Z russellw: but he already said the hash table is 10 times as fast as the binary tree? 2018-09-25T18:23:35Z shrdlu68: Yes. But consumes much more memory. 2018-09-25T18:23:47Z russellw: Hundreds of kilobytes 2018-09-25T18:24:04Z shrdlu68: Nope, gigabytes. 2018-09-25T18:24:15Z russellw: you said the files are 200K? 2018-09-25T18:24:42Z shrdlu68: Actually my test file right now is /bin/cat, which is 36k 2018-09-25T18:24:57Z shrdlu68: I can barely process a 1MB file. 2018-09-25T18:25:01Z russellw: so where do you get gigabytes? 2018-09-25T18:25:15Z sauvin quit (Read error: Connection reset by peer) 2018-09-25T18:26:12Z shrdlu68: russellw: 30Mb x 35000 2018-09-25T18:26:29Z whartung: where’s the 30MB coming from? 2018-09-25T18:26:32Z shrdlu68: Oh wait, 30b x 35000 2018-09-25T18:26:57Z whartung: that’s 1M 2018-09-25T18:26:59Z whartung: ish 2018-09-25T18:27:33Z whartung: add 8 bytes of overhead, and it’s 1.2M 2018-09-25T18:27:38Z whartung: 1.3 2018-09-25T18:28:06Z russellw: also '5s to process a 36k file'? on a modern computer, it should be much faster than that. Calculating hashes is nowhere near that slow. By orders of magnitude. Have you profiled it? What compiler are you using? 2018-09-25T18:30:42Z shrdlu68: russellw: Here's the code: https://github.com/shrdlu68/ac-experiment 2018-09-25T18:30:44Z jasom: 30b*35000*8 2018-09-25T18:31:43Z SenasOzys quit (Ping timeout: 245 seconds) 2018-09-25T18:32:32Z igemnace quit (Remote host closed the connection) 2018-09-25T18:32:33Z nowhereman_ joined #lisp 2018-09-25T18:33:25Z shrdlu68: russellw: Profiling: https://gist.github.com/shrdlu68/081a78c6196b676395ca518a268d9119 2018-09-25T18:34:36Z jasom: holy bad indentation batman! 2018-09-25T18:35:02Z shrdlu68: Me? 2018-09-25T18:36:00Z russellw: so if I understand that correctly, you are using SBCL, which is generally reckoned the fastest available compiler, and it is indeed spending a large percentage of the total time calculating hashes. Okay, that is bizarre, and I have no explanation for it. Should be several orders of magnitude faster 2018-09-25T18:36:23Z russellw: afk 2018-09-25T18:36:38Z shrdlu68: russellw: Other implementations take so long I haven't really let them run to completion. 2018-09-25T18:36:48Z pjb: russellw: err, sbcl is one of the slowest compilers, if not the slowest. 2018-09-25T18:39:12Z jasom: it's entirely possible that the hash function for bitvectors is very bad. 2018-09-25T18:39:15Z pjb: Well, I believe. You would have to benchmark it. 2018-09-25T18:40:08Z jasom: and I see 3.7% of the time in sxhash, right? 2018-09-25T18:42:09Z whartung: 3.7% shouldn’t dominate the discussion. It’s interesting, but obviously not “the reason” its slow 2018-09-25T18:42:43Z whartung: I assume this: (FLET "BODY-FUN-0" :IN SB-IMPL::GETHASH3) includes the body of the function? 2018-09-25T18:42:47Z whartung: in it’s times? 2018-09-25T18:42:54Z SenasOzys joined #lisp 2018-09-25T18:43:17Z shka_: jasom: 3.7% self 2018-09-25T18:43:30Z jasom: shka_: 3.7% cumulative 0.8% self 2018-09-25T18:43:47Z graphene quit (Remote host closed the connection) 2018-09-25T18:43:50Z vtomole joined #lisp 2018-09-25T18:43:53Z shrdlu68: The profiling without inlining, and removing one function (forgot to update repo): https://gist.github.com/shrdlu68/081a78c6196b676395ca518a268d9119 2018-09-25T18:45:03Z graphene joined #lisp 2018-09-25T18:45:06Z shka_: jasom: i can't see this honestly 2018-09-25T18:45:30Z shka_: Cumul 81.9 - SXHASH is what i am seeing 2018-09-25T18:45:49Z shka_: and 50% on some internal local function of gethash3 2018-09-25T18:46:31Z shka_: i can't even find 3.7 in this file 2018-09-25T18:46:36Z shka_: am i crazy? 2018-09-25T18:47:01Z shrdlu68: shka_: Sorry I just updated that gist. 2018-09-25T18:47:21Z shka_: oooh, ok 2018-09-25T18:47:25Z shka_: so i am not crazy 2018-09-25T18:48:01Z shka_: nah it really looks like hashing is a bootleneck to me 2018-09-25T18:48:53Z slyrus1 quit (Remote host closed the connection) 2018-09-25T18:50:28Z jasom: does sbcl use most or least significant bytes for hash-tables? 2018-09-25T18:50:39Z jasom: becuase sxhash of two bitvectors of the same length only changes the lower bytes 2018-09-25T18:51:05Z jasom: (sxhash #*11111111) ;=>2321882180057224981 2018-09-25T18:51:21Z jasom: (sxhash #*00000000) ;=> 2321882180057224732 2018-09-25T18:52:21Z shka_: no idea, but i would expect sbcl to have different logic for short bitvectors and long ones 2018-09-25T18:52:30Z shrdlu68: "enhancement: The value of SXHASH on bit-vectors of length equal to the word size now depends on the vector's contents instead of being constant; its value on bit-vectors of length divisible by the word size now depends also on the contents of the vector's last word." => http://www.sbcl.org/all-news.html 2018-09-25T18:52:53Z shka_: ouch 2018-09-25T18:53:14Z shka_: i think that in your case you will get plenty of collisions 2018-09-25T18:53:57Z shka_: anyway, it all makes sense 2018-09-25T18:53:58Z jasom: it uses a poor mixng function though; the longer the bit vector the more the difference, but even with 30 bytes the first 9 decimal digits are identical 2018-09-25T18:54:24Z shka_: jasom: question is: does it matter for hashtable implementation 2018-09-25T18:54:29Z vlatkoB quit (Remote host closed the connection) 2018-09-25T18:54:52Z shka_: it may not need high avalanche factor 2018-09-25T18:55:55Z voidlily quit (Remote host closed the connection) 2018-09-25T18:59:10Z shka_: good night everyone 2018-09-25T18:59:36Z shrdlu68: Goodnight shka_ 2018-09-25T18:59:37Z vtomole: Good night 2018-09-25T18:59:52Z jasom: in any event 1M calculations of sxhash are nearly instantaneous 2018-09-25T19:01:16Z voidlily joined #lisp 2018-09-25T19:01:52Z shka_: jasom: since they are literally just taking 64 last bits! 2018-09-25T19:02:20Z shka_: yeah, this is weird 2018-09-25T19:03:13Z shrdlu68: And here I thought I was pushing the limits of modern computers :P 2018-09-25T19:03:20Z shka_: (FLET "BODY-FUN-0" :IN SB-IMPL::GETHASH3) this stuff is weird 2018-09-25T19:03:30Z foom2 joined #lisp 2018-09-25T19:03:37Z shka_: i wonder what it is doing… 2018-09-25T19:03:50Z shka_: anyway, off to bed 2018-09-25T19:06:34Z foom quit (Ping timeout: 240 seconds) 2018-09-25T19:07:24Z jasom: however, the hash-table-size is only 4M when it hits 1GB of heap on my machine 2018-09-25T19:08:21Z tomaw- is now known as tomaw 2018-09-25T19:08:34Z rumbler31 joined #lisp 2018-09-25T19:09:47Z regreg_ quit (Ping timeout: 250 seconds) 2018-09-25T19:09:47Z shka_ quit (Ping timeout: 252 seconds) 2018-09-25T19:10:20Z earl-ducaine quit (Ping timeout: 252 seconds) 2018-09-25T19:11:50Z MichaelRaskin joined #lisp 2018-09-25T19:16:20Z russellw: pjb, oh, which ones are faster? I thought nearly everyone was using SBCL 2018-09-25T19:16:38Z oni-on-ion: speed of compiling and speed of produced code are different metrics 2018-09-25T19:16:54Z jasom: space is almost entirely simple-array-unsigned-byte-64 objects 2018-09-25T19:16:58Z russellw: right, the conversation was about speed of the produced code 2018-09-25T19:18:01Z shrdlu68: Is that how bit vectors are implemented internally? 2018-09-25T19:18:30Z Bike: bitvectors are done as word vectors i think, yeah 2018-09-25T19:18:43Z jasom: I misspoke, it's only 20% byte-64 vectors, but it's the largest fraction 2018-09-25T19:18:48Z jasom: nope 2018-09-25T19:19:06Z jasom: because it's also about 17% simple-vit-vectors 2018-09-25T19:19:17Z jasom: maybe bit vectors that are a multiple of the word size are implemented that way? 2018-09-25T19:19:32Z jasom: no, that's wrong 2018-09-25T19:19:51Z jasom: Perhaps the hash tables use word vectors when there are collisions? 2018-09-25T19:20:29Z jasom: because there are ~3k of the word vectors but they are using over 100M of ram 2018-09-25T19:21:05Z jasom: also how many bit vectors are there supposed to be? I'm seeing 4M already and it hasn't yet run out of ram on my 1GB heap 2018-09-25T19:22:15Z oni-on-ion: heh @ last bullet item "(only with users permission and for maintenance reasons)" isnt that FB 2018-09-25T19:22:33Z oni-on-ion: wrong channel. 2018-09-25T19:22:53Z trafaret1 joined #lisp 2018-09-25T19:23:00Z trafaret1: hi there 2018-09-25T19:23:14Z oni-on-ion: if you dont need to modify the data as they come from files, perhaps using a more efficient data structure than that ? 2018-09-25T19:23:15Z oni-on-ion: hi 2018-09-25T19:23:19Z slyrus1 joined #lisp 2018-09-25T19:23:30Z trafaret1: need some help 2018-09-25T19:23:50Z trafaret1: I'm wondering about effective working wtih tables 2018-09-25T19:24:03Z trafaret1: does it solution to use lisp and mysql 2018-09-25T19:24:05Z slyrus quit (Ping timeout: 252 seconds) 2018-09-25T19:24:06Z slyrus1 is now known as slyrus 2018-09-25T19:24:09Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-25T19:24:35Z oni-on-ion: https://www.reddit.com/r/lisp/comments/5oezj6/how_to_interface_with_a_mysql_database_in_lisp/ ? 2018-09-25T19:25:48Z shrdlu68: jasom: If I run with "--dynamic-space-size 1024" I get heap exhaustion. 2018-09-25T19:26:20Z shrdlu68: "Heap exhausted during garbage collection: 0 bytes available, 32 requested." 2018-09-25T19:26:42Z shrdlu68: It says "during" GC. 2018-09-25T19:30:38Z regreg_ joined #lisp 2018-09-25T19:31:06Z Blackbeard: how can I measure the time a function takes ? 2018-09-25T19:32:13Z Shinmera: clhs time 2018-09-25T19:32:14Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_time.htm 2018-09-25T19:32:40Z dim: shrdlu68: try CCL, the GC is much better than SBCL's one in my playing around with pgloader 2018-09-25T19:32:48Z dim: +experience (maybe) 2018-09-25T19:33:35Z Blackbeard: Shinmera (IRC): oh thanks :) 2018-09-25T19:35:44Z vtomole: What's wrong with sblc's gc? 2018-09-25T19:36:03Z vtomole: *sbcl 2018-09-25T19:38:23Z rnmhdn quit (Ping timeout: 252 seconds) 2018-09-25T19:38:53Z rumbler31 quit (Remote host closed the connection) 2018-09-25T19:42:28Z jasom: nothing wrong with GC in this case though Shinmera 2018-09-25T19:42:33Z jasom: rather shrdlu68 2018-09-25T19:43:00Z jasom: shrdlu68: heap will almost always be exhasted during GC; its either during GC or during a point where GC is excluded. 2018-09-25T19:43:50Z Kevslinger quit (Quit: Connection closed for inactivity) 2018-09-25T19:44:08Z jasom: it looks like the hash table is about to grow to ~600MB and we are using 500MB, so that checks out. 2018-09-25T19:44:08Z dim: vtomole: when using pgloader users often reach heap exhausted/game over message in situations where CCL pile through the work at a fraction of the memory usage; it might be my code though 2018-09-25T19:44:42Z dim: but when users report problems with SBCL and big/huge data sets being processed by pgloader, I know I can just recommend CCL and it's going to be ok. 2018-09-25T19:44:43Z jasom: sbcl is very conservative about *when* to invoke the GC, so I've seen heap exhausted when there would have been room had the GC been run sooner 2018-09-25T19:45:01Z shrdlu68: Me too. 2018-09-25T19:45:11Z jasom: i.e. I see heap exaustion errors fixed by just putting a (gc) somewhere in the loop 2018-09-25T19:46:42Z pierpal joined #lisp 2018-09-25T19:46:43Z cage_ quit (Quit: Leaving) 2018-09-25T19:47:36Z jasom: but in this case it's jsut that its growing the hash-table to be more than 1/2 the heap which just isn't going to work 2018-09-25T19:50:20Z jasom: but it looks like we have 4M objects in less than 2k buckets, which explains a lot. However ~200MB of simple-bit-vectors seems excessive if the original statement that it's only 1 vector per bit in the file. 2018-09-25T19:50:48Z jasom: 4 million bit vectors would be 512k not the 32k that I'm testing on. 2018-09-25T19:51:06Z scymtym joined #lisp 2018-09-25T19:51:47Z shrdlu68: 30 vectors per bit, 2018-09-25T19:52:32Z lemonpepper24 joined #lisp 2018-09-25T19:52:51Z jasom: oh, that makes sense then. Space usage isn't that high; looks like its 8bytes+size of bit-vector per bit vector and then thhere's another over 100M for the single-float arrays 2018-09-25T19:52:59Z graphene quit (Remote host closed the connection) 2018-09-25T19:53:08Z jasom: so it's ~300M of data for 100M of hash-table overhead which isn't great but not terrible. 2018-09-25T19:54:07Z zxcvz quit (Quit: zxcvz) 2018-09-25T19:54:14Z graphene joined #lisp 2018-09-25T19:54:52Z arkaros joined #lisp 2018-09-25T19:54:53Z jasom: however, it looks like it may be copying the data on a rehash, as that's the only thing that makes sense for a 600M allocation. I'll inspect the code 2018-09-25T19:59:27Z arkaros quit (Ping timeout: 240 seconds) 2018-09-25T20:01:14Z jasom: also it looks like it always rounds the hash table size up to a power of two, which makes the default rehash-size of 1.5 rather stupid 2018-09-25T20:03:28Z jasom: total hash-table overhead seems to be 4 times the word size of the number of elements rounded up to a power of two 2018-09-25T20:05:34Z jasom: so a 64-bit target the overhead of storing 2^22+1 items would be ~256M. 2018-09-25T20:08:05Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-25T20:12:48Z jkordani_ joined #lisp 2018-09-25T20:16:16Z jkordani quit (Ping timeout: 260 seconds) 2018-09-25T20:18:35Z jkordani joined #lisp 2018-09-25T20:22:25Z pjb: minion: memo for shrdlu68 trees without pointers: https://pastebin.com/yreWM7NW 2018-09-25T20:22:27Z minion: does torturing a poor bot with things beyond its comprehension please you? 2018-09-25T20:22:32Z pjb: minion: memo for shrdlu68: trees without pointers: https://pastebin.com/yreWM7NW 2018-09-25T20:22:32Z minion: Remembered. I'll tell shrdlu68 when he/she/it next speaks. 2018-09-25T20:22:36Z jkordani_ quit (Ping timeout: 252 seconds) 2018-09-25T20:24:50Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T20:24:59Z pierpal joined #lisp 2018-09-25T20:25:41Z frodef quit (Ping timeout: 244 seconds) 2018-09-25T20:25:42Z razzy: aaaah, i remembered shrdlu :] 2018-09-25T20:27:23Z aeth: pjb: whenever I have something where a compose macro/function/whatever might seem useful, I find that it's probably better just to combine two of the three compositions into one new, trivial, inline function 2018-09-25T20:27:51Z quipa joined #lisp 2018-09-25T20:28:34Z aeth: i.e. instead of (another-function (some-function (symbol-to-keyword foo))) I can have (another-function (some-function* foo)) where the variation of some-function converts symbols to keywords 2018-09-25T20:29:08Z aeth: (I say i.e. instead of e.g. because it's pretty much always that, usually even symbol-to-keyword!) 2018-09-25T20:31:35Z aeth: This is common when I have a function with a case working on keywords but I take in arbitrary symbols from a macro. 2018-09-25T20:34:40Z frodef joined #lisp 2018-09-25T20:35:13Z kushal quit (Ping timeout: 256 seconds) 2018-09-25T20:36:25Z kushal joined #lisp 2018-09-25T20:51:47Z comborico1611 joined #lisp 2018-09-25T20:53:39Z dkmueller joined #lisp 2018-09-25T20:53:46Z rumbler31 joined #lisp 2018-09-25T20:54:05Z dkmueller quit (Client Quit) 2018-09-25T20:55:53Z lumm quit (Ping timeout: 245 seconds) 2018-09-25T20:56:55Z graphene quit (Remote host closed the connection) 2018-09-25T20:58:00Z blt quit (Quit: ZNC 1.7.0 - https://znc.in) 2018-09-25T20:58:11Z graphene joined #lisp 2018-09-25T20:59:27Z pierpal quit (Read error: Connection reset by peer) 2018-09-25T20:59:41Z pierpal joined #lisp 2018-09-25T21:06:23Z jackdaniel quit (Ping timeout: 252 seconds) 2018-09-25T21:06:34Z rumbler31 quit (Remote host closed the connection) 2018-09-25T21:09:49Z lumm joined #lisp 2018-09-25T21:11:57Z graphene quit (Remote host closed the connection) 2018-09-25T21:13:07Z graphene joined #lisp 2018-09-25T21:27:11Z qapples joined #lisp 2018-09-25T21:27:17Z qapples: any racketeers 2018-09-25T21:27:50Z Bike: this channel is for common lisp. i think you want #racket? 2018-09-25T21:28:01Z qapples: I don't want #racket 2018-09-25T21:28:17Z qapples: I want racket ∩ lisp 2018-09-25T21:28:23Z sjl quit (Quit: WeeChat 2.2-dev) 2018-09-25T21:29:08Z qapples: and |lisp| > |racket| so |lisp∩racket| > |racket| 2018-09-25T21:30:30Z Shinmera: Racket is off topic here. 2018-09-25T21:30:46Z Bike: is that supposed to be set intersection? because those expressions are not necessarily true 2018-09-25T21:30:50Z jasom: qapples: I considered implementing something like racket's language features using a reader macro 2018-09-25T21:31:05Z comborico1611 quit (Quit: Konversation terminated!) 2018-09-25T21:31:15Z Bike: lisp = {0, 1}, racket = {2}, so lisp ∩ racket = {} 2018-09-25T21:32:23Z jasom: actually |X| ∩ |Y| <= |Y| right? 2018-09-25T21:32:44Z jasom: for all X and Y 2018-09-25T21:33:02Z Bike: |X ∩ Y|, yeah 2018-09-25T21:33:53Z qapples: no actually lisp ∩ racket c racket my bad 2018-09-25T21:34:04Z no-defun-allowed: Good morning 2018-09-25T21:35:58Z jkordani: just speak plainly 2018-09-25T21:37:10Z angavrilov quit (Remote host closed the connection) 2018-09-25T21:37:19Z qapples: i need racketeers who are in #lisp 2018-09-25T21:38:31Z jkordani: well that doesn't really make sense. I've dabbled in racket, but why do you need people in lisp who aren't also in #racket 2018-09-25T21:41:23Z qapples: I think I need tutoring :p 2018-09-25T21:42:28Z blt joined #lisp 2018-09-25T21:45:08Z dented42 joined #lisp 2018-09-25T21:48:57Z Bike quit (Ping timeout: 256 seconds) 2018-09-25T21:52:14Z blt quit (Quit: ZNC 1.7.1 - https://znc.in) 2018-09-25T21:53:47Z mutenewt joined #lisp 2018-09-25T21:54:29Z blt joined #lisp 2018-09-25T21:55:26Z pfdietz quit (Ping timeout: 260 seconds) 2018-09-25T21:55:38Z papachan joined #lisp 2018-09-25T21:55:46Z arkaros joined #lisp 2018-09-25T21:59:17Z blt quit (Quit: ZNC 1.7.1 - https://znc.in) 2018-09-25T22:00:45Z arkaros quit (Ping timeout: 244 seconds) 2018-09-25T22:01:13Z moei joined #lisp 2018-09-25T22:05:35Z blt joined #lisp 2018-09-25T22:05:40Z Roy_Fokker joined #lisp 2018-09-25T22:06:20Z acolarh quit (Ping timeout: 252 seconds) 2018-09-25T22:07:01Z acolarh joined #lisp 2018-09-25T22:08:28Z jkordani_ joined #lisp 2018-09-25T22:08:53Z sleepnap left #lisp 2018-09-25T22:09:53Z oni-on-ion: qapples: pm for rates =) 2018-09-25T22:11:45Z lumm quit (Ping timeout: 252 seconds) 2018-09-25T22:12:27Z rumbler31 joined #lisp 2018-09-25T22:13:04Z jkordani quit (Ping timeout: 272 seconds) 2018-09-25T22:16:15Z LdBeth: jasom (IRC): I think you would be interested to read Expansion Passing Style paper 2018-09-25T22:17:00Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-25T22:17:01Z LdBeth: That was a macro system proposed for both CL and Scheme, but seems never been adopted 2018-09-25T22:17:57Z housel: Didn't scheme48 implement it? I can't recall precisely 2018-09-25T22:18:52Z longshi joined #lisp 2018-09-25T22:18:53Z longshi quit (Client Quit) 2018-09-25T22:21:51Z LdBeth: Scheme48 uses typical “hygienic” syntax 2018-09-25T22:22:36Z housel: Yes, but I thought under the hood it used expansion passing 2018-09-25T22:23:29Z Bike joined #lisp 2018-09-25T22:26:07Z blt quit (Ping timeout: 240 seconds) 2018-09-25T22:28:47Z varjagg quit (Ping timeout: 240 seconds) 2018-09-25T22:29:31Z blt joined #lisp 2018-09-25T22:30:03Z mutenewt quit (Quit: Leaving) 2018-09-25T22:44:34Z ober: islisp macros are in the middle of the two extreemes right? 2018-09-25T22:44:45Z aeth: qapples: ##lisp is the channel for the Lisp family of languages and #lisp is the channel for Common Lisp 2018-09-25T22:45:00Z longshi joined #lisp 2018-09-25T22:45:10Z aeth: qapples: Besides #racket you may also want to go to #scheme 2018-09-25T22:45:45Z ober: aeth: nice, and contrary to John McCarthy's wishes 2018-09-25T22:46:14Z ober left #lisp 2018-09-25T22:46:18Z aeth: ober: If #lisp had the topic of ##lisp and we were in #cl or some other channel instead, then #lisp would be as dead as ##lisp is 2018-09-25T22:46:53Z aeth: Generally people want to talk about specifics. 2018-09-25T22:47:29Z asarch quit (Quit: Leaving) 2018-09-25T22:49:04Z blt quit (Ping timeout: 240 seconds) 2018-09-25T22:52:09Z aeth: (It's a coward move to make a claim and then leave before anyone can respond. So I posted my response even though I noticed the person I responded to left.) 2018-09-25T22:53:11Z Denommus joined #lisp 2018-09-25T22:53:13Z Bike: mccarthy's wishes lol 2018-09-25T22:53:29Z aeth: I only do what our leader McCarthy would want us to do. 2018-09-25T22:54:09Z dto joined #lisp 2018-09-25T22:54:26Z Blackbeard: aeth: don't worry you are right (: 2018-09-25T22:54:40Z housel: I've been in this channel off and on since 2003, I don't remember him ever coming here and opining about the channel topic 2018-09-25T22:54:48Z dto: any parenscript experts here? i'm a bit confused. the function APPEND is in the manual, but showing up as undefined. 2018-09-25T22:58:45Z aeth: There isn't even one definition of "Lisp". You could mean "traditional Lisp", in which case only elisp and CL count (for the living, modern Lisp languages). You could expand it a bit and include Scheme (and probably have to split this expansion in two, one excluding Racket because of its immutable conses and one including Racket). You could also be all-inclusive (e.g. Clojure, Hy, etc.). And there are probably other, messier ways that would 2018-09-25T22:59:03Z aeth: messier ways that wouldn't just make each definition a superset of the previous. 2018-09-25T22:59:33Z aeth: And an active channel devoted to the Lisp family would probably debate over definitions half of the time unless it had an official definition. 2018-09-25T23:00:07Z aeth: (Or, alternatively, it would be like /r/lisp and be 90% about Common Lisp) 2018-09-25T23:04:28Z nowhere_man joined #lisp 2018-09-25T23:04:45Z nowhereman_ quit (Read error: Connection reset by peer) 2018-09-25T23:05:40Z LiamH quit (Quit: Leaving.) 2018-09-25T23:06:22Z Guest5800_ quit (Quit: Connection closed for inactivity) 2018-09-25T23:14:28Z dale quit (Quit: dale) 2018-09-25T23:15:29Z aeth: Personally, I would divide Lisps into traditional Lisps (CL is one), CL-likes (e.g. Parenscript, which calls itself "an extended subset of Common Lisp"), Schemes (e.g. Guile), Scheme-likes (e.g. Racket), and other. 2018-09-25T23:16:17Z rumbler31 joined #lisp 2018-09-25T23:18:49Z oni-on-ion: why u so mean to parenscript, its use case is for outputting javascript, not being a CL implementation =) 2018-09-25T23:19:00Z blt joined #lisp 2018-09-25T23:19:43Z cl-arthur quit (Quit: Lost terminal) 2018-09-25T23:32:03Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-25T23:34:57Z nowhere_man joined #lisp 2018-09-25T23:36:44Z jasom: dto: append works for me; sample code? 2018-09-25T23:37:10Z jasom: (ps:compile-script '(append 1 2)) ;; => "1.concat(2);" 2018-09-25T23:37:52Z dto: jasom: it seems to not like when i call append as assigning an initial value to a defvar .hangon 2018-09-25T23:38:44Z shifty joined #lisp 2018-09-25T23:39:01Z jasom: dto: that worked too 2018-09-25T23:39:59Z dto: it happens during M-x trident-eval-buffer 2018-09-25T23:40:01Z dto: hangon 2018-09-25T23:42:33Z jasom: I don't use trident-eval-buffer, so I may not be of help here 2018-09-25T23:42:48Z jasom: double check that it's cl:append and not something weird 2018-09-25T23:42:55Z dto: (ps:compile-script '(defvar *oppressors* (apply #'append (mapcar #'first *oppressions*)))) 2018-09-25T23:43:02Z jasom: that doesn't work 2018-09-25T23:43:07Z jasom: there is no function append 2018-09-25T23:43:27Z jasom: parenscript doesn't define any functions as a requirement is that it is usable in isolation. 2018-09-25T23:43:46Z v0|d: (apply 'append ..) ? 2018-09-25T23:43:48Z dto: ok. 2018-09-25T23:43:54Z jasom: there's no mapcar by default either I think 2018-09-25T23:44:06Z dto: i mean APPEND is totally in the parenscript reference 2018-09-25T23:44:16Z jasom: right, but it's not a function 2018-09-25T23:44:19Z dto: oh. 2018-09-25T23:44:52Z jasom: nothing in the reference is a function except for what is in chapter 22 2018-09-25T23:44:54Z dto: i can work around that 2018-09-25T23:45:20Z dto: thanks for your help 2018-09-25T23:45:30Z jasom: no problem 2018-09-25T23:45:35Z dto: hi oni-on-ion 2018-09-25T23:47:32Z sjl joined #lisp 2018-09-25T23:48:31Z oni-on-ion: hi ? 2018-09-25T23:54:55Z Oladon joined #lisp 2018-09-25T23:56:20Z quipa quit (Quit: Leaving) 2018-09-25T23:56:47Z arkaros joined #lisp 2018-09-25T23:57:28Z longshi quit (Ping timeout: 250 seconds) 2018-09-26T00:00:51Z dto quit (Remote host closed the connection) 2018-09-26T00:02:00Z arkaros quit (Ping timeout: 272 seconds) 2018-09-26T00:04:10Z rumbler31 quit (Remote host closed the connection) 2018-09-26T00:07:04Z blt quit (Ping timeout: 246 seconds) 2018-09-26T00:09:36Z pjb quit (Ping timeout: 252 seconds) 2018-09-26T00:14:03Z Pixel_Outlaw joined #lisp 2018-09-26T00:17:50Z rozenglass joined #lisp 2018-09-26T00:19:36Z emaczen quit (Read error: Connection reset by peer) 2018-09-26T00:21:05Z v0|d quit (Ping timeout: 252 seconds) 2018-09-26T00:23:31Z emaczen joined #lisp 2018-09-26T00:33:39Z frodef quit (Ping timeout: 252 seconds) 2018-09-26T00:45:02Z edgar-rft joined #lisp 2018-09-26T01:04:56Z rumbler31 joined #lisp 2018-09-26T01:09:30Z rumbler31 quit (Ping timeout: 264 seconds) 2018-09-26T01:10:53Z graphene quit (Remote host closed the connection) 2018-09-26T01:12:12Z graphene joined #lisp 2018-09-26T01:21:46Z oni-on-ion: is it trivial to swap out packages? ie. if i have two implementations of something, with the same interface, could i swap them at runtime? i amassuming so, like with find-symbol etc 2018-09-26T01:26:33Z graphene quit (Remote host closed the connection) 2018-09-26T01:27:48Z graphene joined #lisp 2018-09-26T01:32:55Z jcowan joined #lisp 2018-09-26T01:33:35Z jcowan: Can anyone suggest use cases for `copy-symbol`, either with or without copying properties (value cell, function cell, p-list)? 2018-09-26T01:35:03Z oni-on-ion: clhs copy-symbol 2018-09-26T01:35:03Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_cp_sym.htm 2018-09-26T01:35:04Z Oladon quit (Quit: Leaving.) 2018-09-26T01:35:22Z oni-on-ion: see the examples there.. it would seem that testing for inequality might have some interesting cases 2018-09-26T01:36:11Z oni-on-ion: string= 2018-09-26T01:40:34Z orivej quit (Ping timeout: 240 seconds) 2018-09-26T01:43:24Z jcowan quit (Quit: This computer has gone to sleep) 2018-09-26T01:46:38Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-26T01:48:27Z lemonpepper24 quit (Ping timeout: 240 seconds) 2018-09-26T01:49:46Z blt joined #lisp 2018-09-26T01:49:47Z oni-on-ion: :pkg.pkg:extern-symbol ;; too many colons in symbol. ehhh 2018-09-26T01:55:52Z dale joined #lisp 2018-09-26T01:57:32Z arkaros joined #lisp 2018-09-26T01:58:14Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T02:02:33Z arkaros quit (Ping timeout: 245 seconds) 2018-09-26T02:02:50Z X-Scale joined #lisp 2018-09-26T02:03:47Z housel quit (Ping timeout: 240 seconds) 2018-09-26T02:08:53Z jcowan joined #lisp 2018-09-26T02:09:17Z jcowan: The examples for copy-symbol show what the function does, it doesn't give any indication of why you'd use it in practice. 2018-09-26T02:09:40Z blt quit (Read error: Connection reset by peer) 2018-09-26T02:09:55Z aeth: hyperspec examples are usually interesting edge cases for implementors, perhaps something you'd want to put in a test case for standards compliance. 2018-09-26T02:10:05Z jcowan nods 2018-09-26T02:10:29Z blt joined #lisp 2018-09-26T02:10:53Z jcowan: But I still wonder what the utility of the function is, especially without copying properties: it's just (make-symbol (symbol-name 'fred)) 2018-09-26T02:11:33Z aeth: I'd run a big usage search over ~/quicklisp/dists/quicklisp/software if you have a large amount installed and see if it shows up 2018-09-26T02:11:47Z Bike: in sbcl at least, that's exactly how it's implemented 2018-09-26T02:13:06Z aeth: I see it used in cells and closer-mop and mcclim and uiop 2018-09-26T02:15:27Z aeth: Sorry, it's not actually used in mcclim, it's just part of a giant list called all-ansi-symbols 2018-09-26T02:16:24Z asarch joined #lisp 2018-09-26T02:19:11Z jcowan: aeth: Thanks. In uiop is used so that you can pass a symbol rather than a string to make-symbol variants. 2018-09-26T02:20:12Z Bike: in closer mop it looks like it's doing kidn of a gensym thing 2018-09-26T02:20:17Z Bike: i think i might have used it myself like that once 2018-09-26T02:20:59Z trafaret1 quit (Ping timeout: 252 seconds) 2018-09-26T02:23:46Z jcowan: in cells it's used in two places in the format (copy-symbol 'foo), which is just '#:foo 2018-09-26T02:26:35Z jcowan: looks like the same story in closer-mop: applied to a constant symbol only 2018-09-26T02:27:07Z jcowan: Can two instances of #:foo be coalesced by the compiler? 2018-09-26T02:27:12Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-26T02:28:01Z Bike: nah 2018-09-26T02:28:09Z Bike: they'll look the same, though, so it can get confusing 2018-09-26T02:28:13Z jcowan nods. 2018-09-26T02:28:35Z jcowan: So it is true then that (copy-symbol 'foo) does what '#:foo does 2018-09-26T02:28:44Z Bike: wait wait, no 2018-09-26T02:28:49Z Bike: maybe it can coalesce them 2018-09-26T02:29:08Z Bike: "Two apparently uninterned symbols S and C are similar if their names are similar. " i guess. 2018-09-26T02:30:46Z jack_rabbit joined #lisp 2018-09-26T02:33:11Z aeth: Bike: is (eq '#:foo '#:foo) always NIL or is it undefined? 2018-09-26T02:33:21Z Bike: undefined, apparently 2018-09-26T02:33:21Z jcowan: 3.2.4.4 says "If [two literal objects] are either both symbols or both packages, they may only be coalesced if and only if they are identical." 2018-09-26T02:33:35Z Bike: clhs 3.2.4.4 2018-09-26T02:33:35Z specbot: Additional Constraints on Externalizable Objects: http://www.lispworks.com/reference/HyperSpec/Body/03_bdd.htm 2018-09-26T02:34:12Z asarch: One stupid question: is it possible to get the very very very first Lisp there was? 2018-09-26T02:34:22Z Bike: er... 2018-09-26T02:34:31Z Bike: okay, that's a weird wrinkle in the definition of similarity 2018-09-26T02:34:40Z Bike: nevermind then, can't coalesce theme 2018-09-26T02:35:14Z asarch: How different were the first Lisp and Common Lisp? 2018-09-26T02:35:21Z jcowan: asarch: Probably not: it was IBM 704 assembly language 2018-09-26T02:35:31Z jcowan: There is a direct evolutionary continuity between them 2018-09-26T02:35:45Z asarch: Does it still exist? 2018-09-26T02:36:03Z dented42 joined #lisp 2018-09-26T02:36:04Z asarch: Maybe on a museum 2018-09-26T02:36:17Z jcowan: Unlikely 2018-09-26T02:36:23Z Bike: http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf enjoy 2018-09-26T02:36:27Z jcowan: If it all, in a source code listing somewhere. 2018-09-26T02:36:59Z loke: I did see someone managing to run lisp 1.5 on an emulated 704 2018-09-26T02:37:23Z jcowan: Then they must have had access to the source somehow 2018-09-26T02:37:25Z loke: If I remember correctly, they assembleds the binary from the source listings that are available on bitsavers 2018-09-26T02:37:35Z loke: (I'm assuming it's available on bitsavers) 2018-09-26T02:37:57Z jcowan: THe link above definitely does not contain full source, though it contains snippets of the Lisp-level source 2018-09-26T02:38:18Z loke: jcowan: the full source is available somewhere else. I know I've sene it. 2018-09-26T02:38:43Z graphene quit (Remote host closed the connection) 2018-09-26T02:38:48Z asarch: Maybe in the creator's notes 2018-09-26T02:38:56Z loke: https://www.reddit.com/r/lisp/comments/4mp4oy/lisp_i_and_lisp_15_manuals_source_code/ 2018-09-26T02:39:13Z jcowan: http://www.softwarepreservation.org/projects/LISP/lisp15_family/#LISP_I_and_LISP_1.5_for_IBM_704,_709,_7090_ seems to be it 2018-09-26T02:39:56Z graphene joined #lisp 2018-09-26T02:39:59Z asarch: I would be great an '--legacy-mode' option mode for SBCL, right? 2018-09-26T02:40:21Z asarch: sbcl --legacy-mode and you could run the original Lisp code 2018-09-26T02:40:49Z jcowan: http://recycledknowledge.blogspot.com/2011/11/john-mccarthy-inventor-of-lisp-died.html is a trivial translation of McCarthy's theorem prover from 1959 into Scheme 2018-09-26T02:41:01Z jcowan: interestingly, it does not assume that false = (), which is also true of Scheme 2018-09-26T02:41:42Z loke: jcowan: This page has a link to the full package you need to run it: 2018-09-26T02:41:44Z loke: http://www.mcjones.org/dustydecks/archives/category/simulators/ 2018-09-26T02:42:03Z loke: Specifically this one: http://www.sonoma.edu/users/l/luvisi/lisp/lisp15.tar.gz 2018-09-26T02:42:16Z asarch: Is (= in Common Lisp a variadic function? 2018-09-26T02:42:26Z Bike: yeah 2018-09-26T02:42:27Z jcowan: clhs = 2018-09-26T02:42:27Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_eq_sle.htm 2018-09-26T02:42:51Z jcowan: Alas, the Lisp I wrote for early Tandem machines is lost forever 2018-09-26T02:43:14Z asarch: Has anyone here worked with the original Lisp? 2018-09-26T02:43:53Z loke: asarch: most of us are too young... Remember that was back in the 50's. Also, very few people did. 2018-09-26T02:44:10Z Oladon joined #lisp 2018-09-26T02:45:15Z lemonpepper24 joined #lisp 2018-09-26T02:45:35Z loke: asarch: Also, you don' tneed a legacy mode for SBCL. You can implement it in very little Lisp code yourself. I beleve pjb did that and ran some Lisp 1.5 code in common lisp. 2018-09-26T02:46:07Z jcowan: Yes, that's Wang's variant of McCarthy's prover 2018-09-26T02:46:51Z jcowan: ~~ sigh ~~ So many deaths. 2018-09-26T02:48:24Z asarch: Wow! 2018-09-26T02:49:09Z asarch: We really will miss all that people 2018-09-26T02:49:23Z asarch: So many questions 2018-09-26T02:50:02Z loke: a lot of people are doign a lot of hard work preserving this stuff. 2018-09-26T02:50:11Z travv0 joined #lisp 2018-09-26T02:50:11Z loke: the living computer history useum for example. 2018-09-26T02:53:47Z aeth: Nowhere near enough work preserving stuff. And I'm not sure things have gotten better in an era where things are continuously patched, either on the server or with daily updates 2018-09-26T02:54:00Z jcowan quit (Quit: This computer has gone to sleep) 2018-09-26T02:54:52Z aeth: I'm sure for some things you could see what version was used in 2011-02-12 and even have the binary stored, but even keeping the source repo(s) and rolling back to that day might not get you the same build. 2018-09-26T02:57:07Z gector quit (Read error: Connection reset by peer) 2018-09-26T02:57:41Z gector joined #lisp 2018-09-26T03:00:46Z dale quit (Quit: dale) 2018-09-26T03:02:26Z asarch: Now than I can understand Lisp, I see the code and I get disappointed. Then I get back to other languages and I get even more disappointed. Then, I get disappointed not about Lisp but about me and then I realize about its beauty. One very easy and natural way to solve problems 2018-09-26T03:03:19Z asarch: Common Lisp is the language we should learn for our entire life 2018-09-26T03:03:59Z asarch: When I have kids, I will teach them Lisp 2018-09-26T03:04:42Z asarch: Have you teach to your kids Lisp? 2018-09-26T03:05:49Z rumbler31 joined #lisp 2018-09-26T03:08:05Z aeth: asarch: Imo, there's nothing in Lisp that can't be done in another language. What's rare is the combination in one language. 2018-09-26T03:09:25Z asarch: Yeah 2018-09-26T03:09:38Z esrse joined #lisp 2018-09-26T03:10:07Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-26T03:16:01Z loke has taught lisp to my kids 2018-09-26T03:16:06Z loke: They understand it fine 2018-09-26T03:18:57Z xantoz quit (Ping timeout: 252 seconds) 2018-09-26T03:19:41Z aeth: loke: Do they write Lisp with GNU Emacs or something else? 2018-09-26T03:21:43Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-26T03:22:35Z asarch: I think it would be great for girls, since they actually don't like to complicate things 2018-09-26T03:28:30Z loke: aeth: They don't write any lisp. They learned some, and them promptly went back to doing something else. 2018-09-26T03:28:56Z loke: However, I noticed that Roblox is a great game for creative people. Roblox Studio is pretty amazing. 2018-09-26T03:29:01Z LdBeth: GG 2018-09-26T03:29:07Z loke: Only problem is that it uses Lua as programming language. 2018-09-26T03:30:22Z LdBeth: Lua is easy to get used 2018-09-26T03:30:30Z LdBeth: So does JS 2018-09-26T03:31:22Z LdBeth: They are just not good enough 2018-09-26T03:32:39Z rozenglass quit (Remote host closed the connection) 2018-09-26T03:44:58Z pierpal quit (Read error: Connection reset by peer) 2018-09-26T03:45:13Z pierpal joined #lisp 2018-09-26T03:45:47Z marusich joined #lisp 2018-09-26T03:47:27Z pierpal quit (Client Quit) 2018-09-26T03:47:45Z pierpal joined #lisp 2018-09-26T03:49:47Z pierpal quit (Read error: Connection reset by peer) 2018-09-26T03:53:43Z pierpal joined #lisp 2018-09-26T03:58:33Z arkaros joined #lisp 2018-09-26T03:58:40Z doubledup joined #lisp 2018-09-26T03:59:04Z doubledup quit (Max SendQ exceeded) 2018-09-26T03:59:26Z doubledup joined #lisp 2018-09-26T03:59:27Z travv0 quit (Ping timeout: 240 seconds) 2018-09-26T04:01:56Z rnmhdn joined #lisp 2018-09-26T04:03:17Z arkaros quit (Ping timeout: 252 seconds) 2018-09-26T04:12:11Z doubledup quit (Quit: Leaving) 2018-09-26T04:14:22Z Bike quit (Quit: Lost terminal) 2018-09-26T04:15:39Z Kundry_Wag joined #lisp 2018-09-26T04:19:50Z pfdietz joined #lisp 2018-09-26T04:23:13Z Kundry_Wag quit (Remote host closed the connection) 2018-09-26T04:32:48Z Oladon quit (Quit: Leaving.) 2018-09-26T04:34:06Z ebzzry_ joined #lisp 2018-09-26T04:38:10Z space_otter joined #lisp 2018-09-26T04:38:55Z [X-Scale] joined #lisp 2018-09-26T04:40:07Z X-Scale quit (Ping timeout: 240 seconds) 2018-09-26T04:40:07Z [X-Scale] is now known as X-Scale 2018-09-26T04:40:32Z nowhereman_ joined #lisp 2018-09-26T04:40:33Z nowhere_man quit (Read error: Connection reset by peer) 2018-09-26T04:55:20Z housel joined #lisp 2018-09-26T04:56:11Z housel quit (Client Quit) 2018-09-26T05:06:33Z rumbler31 joined #lisp 2018-09-26T05:09:01Z gendl: "Lisp is for Girls" -- we need to steal that slogan from Python. 2018-09-26T05:10:53Z rumbler31 quit (Ping timeout: 245 seconds) 2018-09-26T05:22:47Z LdBeth: good evening 2018-09-26T05:23:01Z sauvin joined #lisp 2018-09-26T05:24:00Z housel joined #lisp 2018-09-26T05:24:57Z beach: Good morning everyone! 2018-09-26T05:25:16Z LdBeth: hello beach 2018-09-26T05:28:33Z astalla joined #lisp 2018-09-26T05:33:00Z LdBeth: okay, seem I get to know how #= works for circular list 2018-09-26T05:33:35Z asarch: Lisp for everyone! 2018-09-26T05:33:38Z asarch: じゃあまたね! 2018-09-26T05:33:45Z asarch quit (Quit: Leaving) 2018-09-26T05:33:54Z frodef joined #lisp 2018-09-26T05:36:25Z LdBeth: クク 2018-09-26T05:46:19Z jackdaniel joined #lisp 2018-09-26T05:54:21Z astalla quit (Ping timeout: 260 seconds) 2018-09-26T05:54:45Z frgo quit (Remote host closed the connection) 2018-09-26T05:55:23Z frgo joined #lisp 2018-09-26T05:59:19Z arkaros joined #lisp 2018-09-26T05:59:38Z frgo quit (Ping timeout: 245 seconds) 2018-09-26T06:04:07Z arkaros quit (Ping timeout: 250 seconds) 2018-09-26T06:04:22Z shka_ joined #lisp 2018-09-26T06:04:44Z shka_: good morning 2018-09-26T06:06:36Z Inline quit (Quit: Leaving) 2018-09-26T06:06:42Z oni-on-ion: hello 2018-09-26T06:09:57Z no-defun-allowed: morning beach 2018-09-26T06:10:23Z igemnace joined #lisp 2018-09-26T06:12:58Z no-defun-allowed: i want to write some kind of metaobject protocol over cl-decentralise but i'm not sure how to start 2018-09-26T06:13:37Z beach: Are you sure it is "meta"? 2018-09-26T06:13:59Z no-defun-allowed: actually i'm not sure 2018-09-26T06:14:14Z no-defun-allowed: i'd like to be able to use the system to define classes in itself which are also objects though 2018-09-26T06:14:31Z beach: Ah, yes, that would be meta. 2018-09-26T06:15:32Z shka_: hm 2018-09-26T06:15:44Z shka_: to what end though? 2018-09-26T06:15:50Z no-defun-allowed: my first thought is to write a "schema" or "class" class which is static and doesn't require any resolution or dependencies 2018-09-26T06:15:53Z eminhi joined #lisp 2018-09-26T06:16:00Z arkaros joined #lisp 2018-09-26T06:16:11Z space_otter quit (Remote host closed the connection) 2018-09-26T06:16:21Z no-defun-allowed: then i write the basic classes, "signed object", and give them instructions on how to be parsed and verified 2018-09-26T06:16:29Z vlatkoB joined #lisp 2018-09-26T06:16:49Z no-defun-allowed: effectively i want to teach cl-d's objects how to verify and interpret themselves 2018-09-26T06:17:12Z shka_: ok, this sounds fine 2018-09-26T06:17:15Z SaganMan joined #lisp 2018-09-26T06:17:32Z shka_: you want to verify slots? 2018-09-26T06:17:34Z shka_: methods? 2018-09-26T06:18:22Z shka_: and objects as instances of classes or class objects? 2018-09-26T06:18:30Z no-defun-allowed: i want to verify parts of cl-decentralise/netfarm objects 2018-09-26T06:18:47Z shka_: well, i don't know this project :( 2018-09-26T06:18:49Z shka_: sorry 2018-09-26T06:18:54Z no-defun-allowed: these are distinct from CL objects and probably will be implemented as hashtables 2018-09-26T06:19:17Z no-defun-allowed: no problem, i'm just trying to figure out how to create a MOP for netfarm 2018-09-26T06:19:46Z no-defun-allowed: (although, hell, if i can write translators for nf objects into CL objects, that'd be very useful) 2018-09-26T06:20:39Z shka_: this is certainly possible 2018-09-26T06:20:53Z shka_: not sure if it would be a good idea, but it is possible 2018-09-26T06:21:24Z eminhi: Hi, many functions which allow :test key also support :test-not. CLHS states :test-not is deprected, is there a specific reason for this? 2018-09-26T06:21:44Z beach: eminhi: You can safely forget about the deprecation. 2018-09-26T06:21:44Z no-defun-allowed: i think it's a good idea since i don't have a fixed plan or design for netfarm but it should be flexible 2018-09-26T06:22:10Z no-defun-allowed: i figure :test (complement foo) is equivalent to :test-not if you want to live by that deprecation 2018-09-26T06:22:15Z shka_: eminhi: when new standard comes out, it surely be removed! :D 2018-09-26T06:22:26Z beach: eminhi: It was thought that one should use COMPLEMENT with :TEST insted. 2018-09-26T06:22:38Z no-defun-allowed: REMOVE-IF-NOT was "deprecated" but no one listened 2018-09-26T06:23:05Z beach: eminhi: You can safely ignore the deprecation because there will not be a new standard. 2018-09-26T06:23:06Z no-defun-allowed: turns out many new languages today have R-I-N instead of REMOVE-IF which the spec writers preferred 2018-09-26T06:23:08Z no-defun-allowed: they call it "filter" 2018-09-26T06:23:59Z arkaros quit (Ping timeout: 244 seconds) 2018-09-26T06:24:17Z eminhi: So using *-if-not functions and :test-not keyword is /in style/, rather than COMPLEMENT of :test 2018-09-26T06:24:37Z beach: I use it and so do many others, so go right ahead. 2018-09-26T06:24:37Z eminhi: ? 2018-09-26T06:24:50Z shka_: eminhi: it doesn't matter 2018-09-26T06:25:04Z eminhi: Thank You. 2018-09-26T06:25:04Z no-defun-allowed: depends on the situation honestly 2018-09-26T06:25:13Z shka_: :test-not is here to stay 2018-09-26T06:25:27Z no-defun-allowed: if i want to find and eliminate some items from a set, R-IF looks nicest. 2018-09-26T06:25:28Z shka_: it will outlive us all probabbly :P 2018-09-26T06:25:48Z no-defun-allowed: if i want to keep items from a set, R-IF-NOT makes more sense 2018-09-26T06:26:17Z gravicappa joined #lisp 2018-09-26T06:26:41Z beach: Though, using :TEST-NOT with REMOVE-IF-NOT might not be such a good idea. 2018-09-26T06:27:08Z beach: Too many negations. 2018-09-26T06:27:14Z eminhi: So which ever makes code more readable . 2018-09-26T06:27:19Z beach: Yeah. 2018-09-26T06:27:38Z beach: Heh, (remove-if-not ... :test-not (complement ...)) 2018-09-26T06:28:30Z shka_: we need to go deeper 2018-09-26T06:28:45Z eminhi: I have a hard time parsing, some, every, notany 2018-09-26T06:28:47Z no-defun-allowed: beach: i can't disbelieve you wouldn't not consider not doing that in actual code 2018-09-26T06:29:16Z jackdaniel: conceptually remove-if-not is simpler to me (but name is unfortunate - it should be FILTER) - so it picks elements matching the predicate 2018-09-26T06:29:17Z no-defun-allowed: some = or, every = and, notany = nor, notevery = nand 2018-09-26T06:29:46Z beach: jackdaniel: I mentally call it KEEP-IF. 2018-09-26T06:29:53Z beach: FILTER is not such a great name. 2018-09-26T06:29:54Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T06:29:58Z no-defun-allowed: remove-if-not is less abstract 2018-09-26T06:30:13Z beach: FILTER could mean remove or keep. 2018-09-26T06:30:27Z no-defun-allowed: if you use flour or pan for gold, you might expect different things from a FILTER. 2018-09-26T06:30:39Z eminhi: no-defun-allowed: That is very concise, thank you. 2018-09-26T06:30:43Z no-defun-allowed: that also applies to coffee, fancy lenses, etc 2018-09-26T06:30:47Z no-defun-allowed: no problem 2018-09-26T06:31:03Z jackdaniel: my mind is settled on filter already, but I get your point and it is valid 2018-09-26T06:31:06Z dented42 joined #lisp 2018-09-26T06:31:23Z jackdaniel: (I have such abbreviation in my tools) 2018-09-26T06:33:34Z scymtym quit (Ping timeout: 240 seconds) 2018-09-26T06:35:07Z arkaros joined #lisp 2018-09-26T06:35:38Z dented42 quit (Ping timeout: 252 seconds) 2018-09-26T06:37:39Z flamebeard joined #lisp 2018-09-26T06:39:06Z SaganMan quit (Ping timeout: 272 seconds) 2018-09-26T06:41:21Z ealfonso joined #lisp 2018-09-26T06:42:49Z frgo joined #lisp 2018-09-26T06:44:32Z no-defun-allowed: i find cl has much more descriptive and verbose names for things than other languages 2018-09-26T06:44:46Z no-defun-allowed: for example, destructuring-bind does what match might do in some other languages (and d-b sounds cooler too :) 2018-09-26T06:46:56Z LdBeth: can I have a loop collect only if result is not nil? 2018-09-26T06:47:12Z frgo quit (Ping timeout: 252 seconds) 2018-09-26T06:47:13Z no-defun-allowed: (loop ... for value = ... when value collect value) 2018-09-26T06:48:16Z LdBeth: Great, thank you #'no-defun-allowed 2018-09-26T06:48:25Z no-defun-allowed: sci-hub doesn't have a copy of the Art of the Meta-Object Protocol which is a bit sad 2018-09-26T06:48:45Z beach: That would be an illegal copy if it did. 2018-09-26T06:49:48Z LdBeth: Does the book still in print? 2018-09-26T06:50:27Z beach: LdBeth: You can buy it from Amazon, so I would think so. 2018-09-26T06:50:32Z graphene quit (Remote host closed the connection) 2018-09-26T06:51:03Z no-defun-allowed: well all of sci-hub is illegal last time i checked :^) 2018-09-26T06:51:18Z beach: That doesn't make it acceptable. 2018-09-26T06:51:45Z graphene joined #lisp 2018-09-26T06:52:16Z no-defun-allowed: i disagree but that is probably cause we're on different sides of publishing 2018-09-26T06:53:33Z no-defun-allowed: people who write books obviously should get paid but often the books are very expensive 2018-09-26T06:53:49Z beach: Possibly. I am firmly convinced that laws exist so that we can live together despite different ideas. If people only respect the laws they like, that purpose will not be possible. The right way would be to change the laws, or, in this case, the way people publish books so that they are affordable. 2018-09-26T06:54:39Z no-defun-allowed: i'd certainly pay if it was affordable though 2018-09-26T06:55:21Z no-defun-allowed: as a student, i do appreciate that they're not "hahaha enjoy your student debt nerd" levels of expensive though, unlike some textbooks 2018-09-26T06:56:26Z no-defun-allowed: $90 and you have to use their crappy online viewer which streams PNGs to your computer and is half broken? hell yeah great value for money 2018-09-26T06:58:04Z arkaros quit (Ping timeout: 240 seconds) 2018-09-26T06:58:19Z no-defun-allowed: i digress, but i believe the only people that expensive textbooks and resources benefit are the publishers 2018-09-26T06:58:21Z shka_: scientific publishing needs to change, though 2018-09-26T06:58:42Z shka_: open science luckly takes off 2018-09-26T07:04:30Z ggole joined #lisp 2018-09-26T07:07:16Z rumbler31 joined #lisp 2018-09-26T07:08:00Z White_Flame: whatever happened to public funds implying public domain? 2018-09-26T07:08:21Z White_Flame: but yeah, MOP is outside that 2018-09-26T07:08:31Z White_Flame: (I think?) 2018-09-26T07:11:11Z xantoz joined #lisp 2018-09-26T07:11:31Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-26T07:14:57Z nydel: howdy friendos 2018-09-26T07:16:17Z aeth: White_Flame: what happened to that? well, SBCL resulted from that 2018-09-26T07:17:37Z beach: Hello nydel. 2018-09-26T07:18:17Z aeth: White_Flame: but I don't think it went away, I think there are just tons of loopholes to do things indirectly 2018-09-26T07:21:03Z phoe: good morning 2018-09-26T07:21:12Z beach: Hello phoe. 2018-09-26T07:21:16Z phoe: Hey beach 2018-09-26T07:23:23Z arej joined #lisp 2018-09-26T07:23:49Z nydel: i write a function to evaluate the mathematical average of all numbers in a list added together. it's amazing how many different ways there are to do it. 2018-09-26T07:23:49Z aeth: White_Flame: actually iirc (from Wikipedia/Wikimedia licensing) it's not public money => public domain, it's US federal government employee => public domain 2018-09-26T07:24:02Z aeth: White_Flame: that's why there's so much NASA stuff on Wikipedia/Wikimedia 2018-09-26T07:24:09Z frgo joined #lisp 2018-09-26T07:24:27Z SaganMan joined #lisp 2018-09-26T07:24:39Z beach: nydel: Yes, and that's the difference between "grammatical phrases" and "idiomatic phrases". 2018-09-26T07:24:54Z beach: nydel: The concept exists in natural languages and in programming languages as well. 2018-09-26T07:25:03Z aeth: White_Flame: https://en.wikipedia.org/wiki/Copyright_status_of_work_by_the_U.S._government 2018-09-26T07:25:08Z nydel: beach: that's the exact thought i was having but i couldn't put it together! you always do that hehe. 2018-09-26T07:25:16Z beach: Thanks. :) 2018-09-26T07:26:34Z igemnace quit (Quit: WeeChat 2.2) 2018-09-26T07:27:52Z aeth: White_Flame: I'm not quite sure how this rule got applied to SBCL (probably was pre-fork, with CMUCL) to put it into the public domain. 2018-09-26T07:28:26Z frgo quit (Ping timeout: 252 seconds) 2018-09-26T07:28:30Z White_Flame: was SBCL put into public domain because of something like that, or just because the forkers wanted it there? 2018-09-26T07:29:01Z aeth: It looks like the original was Spice Lisp. https://en.wikipedia.org/wiki/Spice_Lisp 2018-09-26T07:29:15Z aeth: https://www.cons.org/cmucl/doc/cmucl-history.html 2018-09-26T07:33:28Z dented42 joined #lisp 2018-09-26T07:33:42Z zfree quit (Quit: zfree) 2018-09-26T07:34:30Z aeth: So it looks like CMUCL/SBCL was initially funded by DARPA, and it looks like that history page was written in the 1993-1996 range when it was called ARPA for the 2nd time. https://en.wikipedia.org/wiki/DARPA 2018-09-26T07:34:56Z nydel: beach: if you've a moment, is there anything terribly wrong with this way? https://bin.disroot.org/?176144b172fe6c0b#HQajk0WF/JIlPVJBtmkvE0P7/Gc0A7U2y7YakIi7fsk= 2018-09-26T07:35:44Z nydel: i think maybe saying "let's make it recursive" was a mistake? hmmm 2018-09-26T07:35:48Z no-defun-allowed: you can't guarantee you'll get away with tail recursion, even if done right 2018-09-26T07:36:01Z no-defun-allowed: additionally, you can specify defaults in the lambda list 2018-09-26T07:36:37Z nydel: no-defun-allowed: thank you for checking it. oh right of course, i'm doing the defaults in the cond for some reason 2018-09-26T07:36:48Z nydel: i appreciate your help 2018-09-26T07:36:59Z no-defun-allowed: (loop for item in list for length from 0 summing item into sum finally (return (/ sum length))) 2018-09-26T07:37:12Z no-defun-allowed: the LOOP giveth, the LOOP taketh away 2018-09-26T07:37:49Z beach: nydel: (/ (reduce #'+ list-of-numbers) (length list-of-numbers)) 2018-09-26T07:38:46Z beach: ... modulo checking for 0, converting to float, etc. 2018-09-26T07:38:48Z scymtym joined #lisp 2018-09-26T07:38:55Z no-defun-allowed: yes, i forgot another thing: even if you can do tail recursion, it's not worth it if you're reinventing MAP, REDUCE or the like 2018-09-26T07:38:56Z nydel: wait does anything change if i set the defaults? don't i end up only instead of (null answer) in the cond instead (eq answer the-default-i-set) 2018-09-26T07:39:36Z no-defun-allowed: nothing must be changed other than removing the cond clause that sets up "defaults" 2018-09-26T07:40:13Z nydel: beach: thank you, that is much prettier and objectively better. i don't use #'reduce regularly so i was a bit confused trying to do it with mapping 2018-09-26T07:40:26Z no-defun-allowed: if you still want to use a recursive iterative process, you could use LABELS to add an internal function which doesn't expose COUNTER too 2018-09-26T07:41:11Z beach: nydel: It is never recommended to use recursion on linear lists. 2018-09-26T07:41:55Z nydel: beach: would you count this definition among idioms that repulse? e.g. "ty" in english? ;) 2018-09-26T07:41:57Z beach: nydel: One more thing, the typical style in Common Lisp is to use the plural form of the noun to mean a list of things, so you can use NUMBERS rather than LIST-OF-NUMBERS. 2018-09-26T07:42:37Z beach: nydel: You mean your definition of AVERAGE? It is definitely a very strange way of defining it in Common Lisp. 2018-09-26T07:44:46Z frgo joined #lisp 2018-09-26T07:44:51Z nydel: i return to lisp hackerings after a year of family obligation so my readability/convention is a bit out of alignment. noted and will work on that. 2018-09-26T07:45:10Z nydel: yes i am going for strange definitions. it seems to be helping me get back into the spirit. 2018-09-26T07:45:15Z beach: nydel: As no-defun-allowed said, Common Lisp does not guarantee tail-call optimization, and the stack depth can be very limited. Recursion is fine when you have, say, a tree with a depth that is logarithmic in the number of elements. 2018-09-26T07:45:38Z beach: Then the stack can't grow very much, and there is really no other choice than recursion for trees. 2018-09-26T07:47:01Z jackdaniel: ftr: there is `mean` function in alexandria 2018-09-26T07:48:26Z SaganMan: Morning beach 2018-09-26T07:48:53Z SaganMan: I finally have all the free time to code again 2018-09-26T07:48:56Z eminhi quit (Ping timeout: 250 seconds) 2018-09-26T07:49:01Z no-defun-allowed: wonderful 2018-09-26T07:49:06Z beach: SaganMan: Congratulations! 2018-09-26T07:49:16Z beach: SaganMan: Are you looking for something to do? :) 2018-09-26T07:49:20Z frgo quit (Ping timeout: 252 seconds) 2018-09-26T07:49:22Z SaganMan: thanks beach, how is your research going? 2018-09-26T07:49:24Z nydel: for fun this is the one i wrote right before the recursive: https://bin.disroot.org/?f8fd4643252795ce#jcpt0Rz6orIIGMNGlpcxKlqxSROwPI78TucjdmkESac= 2018-09-26T07:49:44Z no-defun-allowed: beach: you can always pop and push your conses on a stack but that's very rarely needed 2018-09-26T07:49:52Z beach: SaganMan: Very well thank you. I think I have enough material for 2, maybe 3 ELS submissions. 2018-09-26T07:49:54Z nydel: (i know it's not named correctly but i didn't know it wasn't a function to be called by the actual one) 2018-09-26T07:49:55Z anewuser joined #lisp 2018-09-26T07:50:19Z no-defun-allowed: nydel: you should use DO if you're going to just mutate, it spares a few conses 2018-09-26T07:50:43Z nydel: no-defun-allowed: as in do instead of collect? 2018-09-26T07:50:48Z beach: nydel: (setq x (+ x y)) is better expressed as (incf x y). 2018-09-26T07:51:03Z no-defun-allowed: yes, (loop ... do (mutating-thing)) 2018-09-26T07:51:14Z SaganMan: yes beach, I want to write program in lisp which will download comics 2018-09-26T07:51:20Z beach: nydel: The entire thing can be expressed as (loop for i in list sum i) 2018-09-26T07:51:26Z v0|d joined #lisp 2018-09-26T07:51:30Z beach: SaganMan: I see. 2018-09-26T07:52:00Z SaganMan: beach: ELS? what's that? is that like ieee? 2018-09-26T07:52:17Z no-defun-allowed: european lisp symposium 2018-09-26T07:52:24Z beach: https://www.european-lisp-symposium.org/ 2018-09-26T07:52:32Z nydel: beach: oh that's great, was unaware of "sum" used like that. i still need to divide by the length if that way 2018-09-26T07:52:33Z SaganMan: woah, that's cool 2018-09-26T07:53:09Z beach: nydel: And you would never write it like that anyway. You would initialize ANSWER to 0 and loop over the entire list. 2018-09-26T07:54:28Z SaganMan: beach: Will you be giving presentation at next lisp symposium? 2018-09-26T07:54:53Z nydel: i hope this isn't a collosal waste of time for y'all, i'm learning a lot. so when i ask -- could AVERAGE be defined as a macro in an acceptable way? -- feel free to leave my curiosty unindulged 2018-09-26T07:55:44Z no-defun-allowed: possibly 2018-09-26T07:56:29Z jackdaniel: nydel: if its arguments are known at the compilation time - why not. otherwise just define a function and declare it inline 2018-09-26T07:56:43Z no-defun-allowed: (defmacro average* (&rest foo) (#.(if (prefers-apply-p you) 'apply 'reduce) #'average foo)) 2018-09-26T07:56:54Z no-defun-allowed: inlining is also a good idea as jackdaniel said 2018-09-26T07:57:13Z jackdaniel: also, you may define a function and call it at read time (if arguments are known by then), like #.(my-average 1 2 3) 2018-09-26T07:58:28Z nydel: jackdaniel: these are part of a text adventure. an idler game where you expand a hideout to escape a forest. so the numbers are calculable for any given situation but does that count as "known" in the sense? 2018-09-26T07:59:13Z nydel: that is, a function determines the numbers that will go to the average function. but it doesn't memoize at initialization or anything (yet) 2018-09-26T07:59:14Z jackdaniel: nydel: if they are parameters (i.e variables passed to the function) then no 2018-09-26T07:59:28Z nydel: jackdaniel: right, i see. thank you. 2018-09-26T08:00:24Z beach: SaganMan: That will depend on the program committee after they examine the paper submissions. :) 2018-09-26T08:02:01Z beach: nydel: The real thing to do is to define it as a function, because it doesn't require any strange evaluation rule. But then you can define a compiler macro on that function that checks whether the argument is a literal list and substitute the answer. 2018-09-26T08:02:29Z beach: clhs define-compiler-macro 2018-09-26T08:02:29Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_define.htm 2018-09-26T08:04:21Z nydel: that's great! & now i'm thinking more like a commonlisp user. i think freenode#lisp is the friendliest most productive/encouraging irc location. 2018-09-26T08:05:31Z frgo joined #lisp 2018-09-26T08:09:05Z prometheus_falli joined #lisp 2018-09-26T08:09:41Z frgo quit (Ping timeout: 252 seconds) 2018-09-26T08:10:55Z marusich quit (Quit: Leaving) 2018-09-26T08:12:13Z t0adst00l quit (Ping timeout: 256 seconds) 2018-09-26T08:23:26Z nonlinear quit (Remote host closed the connection) 2018-09-26T08:24:01Z nonlinear joined #lisp 2018-09-26T08:24:42Z angavrilov joined #lisp 2018-09-26T08:26:09Z frgo joined #lisp 2018-09-26T08:30:34Z frgo quit (Ping timeout: 244 seconds) 2018-09-26T08:45:44Z LdBeth: hi nydel 2018-09-26T08:52:33Z jackdaniel quit (Remote host closed the connection) 2018-09-26T08:58:31Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T09:01:47Z jackdaniel joined #lisp 2018-09-26T09:05:00Z ealfonso left #lisp 2018-09-26T09:06:17Z orivej joined #lisp 2018-09-26T09:06:40Z troydm quit (Ping timeout: 272 seconds) 2018-09-26T09:08:01Z rumbler31 joined #lisp 2018-09-26T09:08:56Z russellw: I just discovered something weird. On theoretical grounds, vectors should be faster than lists, right? Well, tried a simple test just now in SBCL, find vs member, and lists are faster... by 3 orders of magnitude 2018-09-26T09:09:45Z nydel: LdBeth: hello there :) 2018-09-26T09:10:34Z orivej quit (Ping timeout: 240 seconds) 2018-09-26T09:11:42Z nydel: LdBeth: nice to see you here. working on/playing with anything fun? 2018-09-26T09:12:04Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-26T09:19:43Z russellw: The above is also true of CCL. Presumably they just put much more effort into optimizing lists 2018-09-26T09:20:04Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-26T09:20:05Z beach: russellw: Three orders of magnitude? A factor 1000? 2018-09-26T09:20:17Z russellw: beach, yes 2018-09-26T09:20:30Z beach: That doesn't sound right. 2018-09-26T09:20:37Z kajo joined #lisp 2018-09-26T09:20:45Z beach: I think your test must be measuring something else. 2018-09-26T09:21:12Z troydm joined #lisp 2018-09-26T09:21:32Z nydel: russellw: would you share the test forms? 2018-09-26T09:21:32Z orivej joined #lisp 2018-09-26T09:22:09Z russellw: it absolutely does not sound right, to the point where I would've not believed it had I not seen the results myself, so I would definitely encourage you to try it 2018-09-26T09:22:11Z russellw: (time(dotimes(i 100000000)(find 'z #(a b c d e f g h i j k l m n o p q r s t u v w x y z)))) 2018-09-26T09:22:31Z russellw: (time(dotimes(i 100000000)(member 'z '(a b c d e f g h i j k l m n o p q r s t u v w x y z)))) 2018-09-26T09:22:55Z russellw: adjust loop counts as necessary 2018-09-26T09:23:13Z beach: russellw: Try using sequences of length 1000000 instead of that short. 2018-09-26T09:23:51Z beach: russellw: Also, compilation time is included in your timing. 2018-09-26T09:23:56Z beach: Stick those things in functions. 2018-09-26T09:25:23Z beach: russellw: In SBCL with a million elements, using FIND on the list and on the vector gives indistinguishable times. 2018-09-26T09:25:38Z beach: russellw: MEMBER is much faster, but not a factor 1000. 2018-09-26T09:26:04Z beach: russellw: It is also likely that the compiler removes your code entirely in one case. 2018-09-26T09:26:07Z russellw: beach, in practice you would use a hash table with 1000000 elements. The above is not an artificial test; it reflects a real pattern that I use somewhat frequently, which is why I was interested in the relative times. I think we both know compilation time is not going to be significant here, but I would by all means encourage you or anyone else interested, to try variants of the test and report 2018-09-26T09:26:07Z russellw: the results 2018-09-26T09:26:24Z russellw: the compiler does not remove the code entirely, as can be verified by trying different loop counts 2018-09-26T09:27:00Z russellw: indistinguishable times with a million elements is an interesting data point; it is at least considerably closer to what one would expect 2018-09-26T09:27:07Z beach: Anyway, you can not design a performance test that way. It will measure something else. 2018-09-26T09:28:27Z russellw: there is no such thing as a perfect performance test, but I think the above is sufficient grounds to drop my tentative plan to start using find instead of member 2018-09-26T09:28:31Z beach: With 10 million elements, find gives 0.080 seconds in one case and 0.079 in the other. 2018-09-26T09:29:01Z beach: MEMBER gives 0.021 seconds, so it is 4 times as fast. 2018-09-26T09:29:37Z beach: But this result only reflects the fact that MEMBER is better optimized than FIND. Not that any of the data types is "faster" than the other. 2018-09-26T09:30:33Z Folkol joined #lisp 2018-09-26T09:31:00Z russellw: So not as outlandish, but still interestingly different from what would expect on theoretical grounds. and if X is better optimized than Y, then X tends to end up faster than Y. That's the whole point of optimization. And was also my suggested explanation in the first place 2018-09-26T09:31:56Z lavaflow_ quit (Ping timeout: 260 seconds) 2018-09-26T09:32:05Z beach: russellw: No, you said that they put more effort into optimizing lists. 2018-09-26T09:32:25Z beach: russellw: But in reality, they probably put more effort into optimizing MEMBER. 2018-09-26T09:32:30Z ggole: Lists might show more variance in performance if you don't create them all at once 2018-09-26T09:33:13Z ggole: The conses will likely be contiguous given the way you have constructed the list. 2018-09-26T09:33:15Z russellw: which they clearly did, as your own results verified. the same function was the same speed on lists and vectors in the asymptotic case, which you only get if you put more optimization into lists, that by default would be slower 2018-09-26T09:33:35Z beach: Whatever. 2018-09-26T09:33:58Z russellw: ggole, true 2018-09-26T09:36:28Z longshi joined #lisp 2018-09-26T09:36:34Z no-defun-allowed: maybe there's cache coherency but that's about it for lists 2018-09-26T09:36:35Z dented42 joined #lisp 2018-09-26T09:36:52Z nydel: russellw: if you compose a hypothesis to mark the beginning of these tests, what is it, and is it proven? if so, have you tried to disprove it? 2018-09-26T09:38:07Z russellw: nydel, my hypothesis was that vectors would be faster than lists for testing membership. That hypothesis has been comprehensively disproven 2018-09-26T09:40:13Z ggole: If this operation is consuming a lot of time, you could (probably) do a lot better than switching between member and find 2018-09-26T09:40:24Z ggole: eg, using binary search 2018-09-26T09:41:38Z russellw: ggole, with many elements yes, or a hash table as I mentioned, but I am looking at scenarios where there would only be a handful of elements. Constant factors matter when N is small 2018-09-26T09:42:04Z ggole: Binary search is good even when n is quite small 2018-09-26T09:42:39Z scymtym: here, all three examples compile to the same (empty bodied) loop and take the same time to execute. this is not surprising as the compiler can fold ({member,find} 'z '(… z)) 2018-09-26T09:43:32Z russellw: scymtym, yeah, that doesn't surprise me. which compiler? 2018-09-26T09:43:39Z scymtym: sbcl 2018-09-26T09:43:53Z nowhereman_ quit (Remote host closed the connection) 2018-09-26T09:43:56Z russellw: ah, setting higher optimization level? 2018-09-26T09:44:14Z scymtym: no, very safe and slow 2018-09-26T09:44:17Z nowhereman_ joined #lisp 2018-09-26T09:44:53Z russellw: then what did you do differently? because it did not optimize away the loop body when I tried it 2018-09-26T09:45:28Z scymtym: (lambda () (dotimes (i 1000000) (find 'z '(a … z)))) (disassemble *) 2018-09-26T09:45:47Z scymtym: how did you check what it did/didn't optimize? 2018-09-26T09:46:43Z slyrus quit (Ping timeout: 245 seconds) 2018-09-26T09:47:10Z russellw: by noticing that the run time stayed proportional to the number of iterations 2018-09-26T09:47:42Z russellw: I did not wrap it in a lambda, which you just did. So I was wondering if that made the difference. But I just tried your version now... 2018-09-26T09:48:55Z russellw: https://pastebin.com/6T6HxkGE 2018-09-26T09:48:56Z scymtym: taking time proportional to the iteration count only means that the loop wasn't optimized away entirely. the body still could be and indeed is 2018-09-26T09:49:34Z scymtym: maybe that SBCL version didn't fold FIND 2018-09-26T09:49:59Z russellw: well the constant of proportionality was a lot more than an empty loop. Anyway, the disassembly I just posted, does not look to me like the loop body was optimized away. This is with a recent version of the compiler. 2018-09-26T09:52:08Z frodef quit (Ping timeout: 245 seconds) 2018-09-26T09:53:36Z pjb joined #lisp 2018-09-26T09:54:12Z LdBeth: nydel: just finished writing assignment in JS 2018-09-26T10:14:27Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T10:17:08Z regreg_ quit (Ping timeout: 245 seconds) 2018-09-26T10:25:16Z lemonpepper24 quit (Ping timeout: 244 seconds) 2018-09-26T10:25:59Z longshi quit (Quit: WeeChat 2.2) 2018-09-26T10:28:25Z longshi joined #lisp 2018-09-26T10:30:03Z razzy quit (Ping timeout: 245 seconds) 2018-09-26T10:34:12Z razzy joined #lisp 2018-09-26T10:36:20Z m00natic joined #lisp 2018-09-26T10:38:49Z dented42 joined #lisp 2018-09-26T10:40:16Z graphene quit (Remote host closed the connection) 2018-09-26T10:40:34Z cl-arthur joined #lisp 2018-09-26T10:41:29Z graphene joined #lisp 2018-09-26T10:42:45Z frodef joined #lisp 2018-09-26T10:43:41Z dented42 quit (Ping timeout: 260 seconds) 2018-09-26T10:44:45Z slyrus joined #lisp 2018-09-26T10:45:14Z zfree joined #lisp 2018-09-26T10:56:14Z frgo joined #lisp 2018-09-26T11:00:28Z frgo quit (Ping timeout: 245 seconds) 2018-09-26T11:03:56Z jmercouris joined #lisp 2018-09-26T11:08:49Z rumbler31 joined #lisp 2018-09-26T11:13:03Z rumbler31 quit (Ping timeout: 250 seconds) 2018-09-26T11:15:24Z dented42 joined #lisp 2018-09-26T11:20:18Z gravicappa quit (Ping timeout: 272 seconds) 2018-09-26T11:28:24Z lavaflow_ joined #lisp 2018-09-26T11:36:27Z lemonpepper24 joined #lisp 2018-09-26T11:39:06Z emerson quit (Quit: WeeChat 2.2) 2018-09-26T11:49:26Z emerson joined #lisp 2018-09-26T11:51:54Z orivej quit (Ping timeout: 252 seconds) 2018-09-26T12:12:58Z igemnace joined #lisp 2018-09-26T12:13:06Z cl-arthur quit (Quit: Lost terminal) 2018-09-26T12:15:58Z MichaelRaskin quit (Quit: MichaelRaskin) 2018-09-26T12:18:05Z SenasOzys quit (Ping timeout: 250 seconds) 2018-09-26T12:39:46Z pierpal quit (Ping timeout: 260 seconds) 2018-09-26T12:41:40Z shka_: keep-if 2018-09-26T12:41:53Z shka_: what do you think about ONLY and WITHOUT? 2018-09-26T12:43:20Z beach: Hmm. 2018-09-26T12:43:44Z beach: I would prefer something like INCLUDE and EXCLUDE for symmetry. But it's moot. We have what we have. 2018-09-26T12:44:15Z heisig joined #lisp 2018-09-26T12:44:54Z esrse quit (Ping timeout: 252 seconds) 2018-09-26T12:46:44Z longshi quit (Quit: WeeChat 2.2) 2018-09-26T12:48:12Z dlowe: I like FILTER and SELECT 2018-09-26T12:48:55Z beach: Well, like we said before, "filter" is ambiguous. It can mean "keep" or "reject". 2018-09-26T12:49:17Z beach: You seem to use it as "reject". 2018-09-26T12:49:27Z beach: ... since you have SELECT. 2018-09-26T12:49:47Z beach: But other people use it as "keep", apparently. 2018-09-26T12:50:02Z beach: ... some other people... 2018-09-26T12:50:47Z beach: REMOVE-IF and REMOVE-IF-NOT are fine, because REMOVE means non-destructive. 2018-09-26T12:50:50Z ggole: The nice thing about remove/remove-if is that the name fits beautifully for the non-function case, which is not really true of select 2018-09-26T12:50:55Z dlowe: right. As unwieldy as REMOVE-IF-NOT is, it is really obvious what it does 2018-09-26T12:50:58Z beach: None of the alternatives suggest that. 2018-09-26T12:51:26Z dddddd joined #lisp 2018-09-26T12:51:36Z ggole: And (reject 1 seq) doesn't really read like "remove one from seq" to me 2018-09-26T12:53:03Z shka_: beach: in CL, yes, I have my own library 2018-09-26T12:53:21Z shka_: and i did not submit into QL so i can change names 2018-09-26T12:53:26Z dlowe: yeah, it's very very easy to make wrappers if you don't like the names 2018-09-26T12:54:29Z shka_: it is not wrapper around CL functions 2018-09-26T12:54:33Z shka_: cl standard functions 2018-09-26T12:54:33Z makomo joined #lisp 2018-09-26T12:54:40Z ggole: remove-if and remove-unless? 2018-09-26T12:55:00Z shka_: remove-when more like 2018-09-26T12:55:25Z ggole: So remove-when and remove-unless, matching the macros. Hmm. 2018-09-26T12:55:34Z ggole: That does make a certain sense. 2018-09-26T12:55:59Z dlowe: yeah, those are good too 2018-09-26T12:56:07Z shka_: hm 2018-09-26T12:56:49Z dlowe: To the time machine! 2018-09-26T12:57:12Z shka_: don't try to change the past 2018-09-26T12:57:23Z shka_: try to shape the future ;-) 2018-09-26T12:58:40Z warweasle joined #lisp 2018-09-26T13:00:38Z dlowe: impatient people still use the time machine :p 2018-09-26T13:01:56Z frodef quit (Ping timeout: 260 seconds) 2018-09-26T13:05:21Z warweasle: I used the time machine. The closest I could get everything back to normal ended up with Trump. Frankly, I just quit trying after that. 2018-09-26T13:05:51Z warweasle: Although the trains in Nazi-controlled America are AMAZING! 2018-09-26T13:06:04Z warweasle: Now we are back to volvos. 2018-09-26T13:07:37Z jmercouris: warweasle: What are you talking about? 2018-09-26T13:07:50Z dlowe: sorry, in this timeline we only talk about common lisp on this channel 2018-09-26T13:07:57Z shka_: warweasle: thanks, my day was not going well, but this was really funny 2018-09-26T13:09:33Z rumbler31 joined #lisp 2018-09-26T13:10:45Z LiamH joined #lisp 2018-09-26T13:11:33Z dale_ joined #lisp 2018-09-26T13:11:53Z dale_ is now known as dale 2018-09-26T13:13:35Z shrdlu68 joined #lisp 2018-09-26T13:13:56Z shrdlu68: Good afternoon 2018-09-26T13:13:56Z minion: shrdlu68, memo from pjb: trees without pointers: https://pastebin.com/yreWM7NW 2018-09-26T13:14:11Z rumbler31 quit (Ping timeout: 260 seconds) 2018-09-26T13:15:47Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-26T13:26:07Z Bike joined #lisp 2018-09-26T13:30:23Z pierpal joined #lisp 2018-09-26T13:30:35Z FreeBirdLjj joined #lisp 2018-09-26T13:34:44Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-26T13:35:17Z vtomole quit (Ping timeout: 256 seconds) 2018-09-26T13:35:18Z Denommus quit (Remote host closed the connection) 2018-09-26T13:37:27Z vtomole joined #lisp 2018-09-26T13:47:00Z shrdlu68: minion: memo for pjb: I'll give this a try, thanks! 2018-09-26T13:47:00Z minion: Remembered. I'll tell pjb when he/she/it next speaks. 2018-09-26T13:47:42Z asarch joined #lisp 2018-09-26T13:48:21Z frgo joined #lisp 2018-09-26T13:51:34Z thetemplar joined #lisp 2018-09-26T13:55:24Z frgo quit (Remote host closed the connection) 2018-09-26T13:55:52Z frgo joined #lisp 2018-09-26T13:59:42Z makomo quit (Ping timeout: 252 seconds) 2018-09-26T14:00:35Z frgo quit (Ping timeout: 252 seconds) 2018-09-26T14:01:13Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-26T14:01:55Z jkordani joined #lisp 2018-09-26T14:05:31Z jkordani_ quit (Ping timeout: 260 seconds) 2018-09-26T14:09:22Z astronavt_ joined #lisp 2018-09-26T14:09:25Z astronavt quit (Read error: Connection reset by peer) 2018-09-26T14:13:56Z makomo joined #lisp 2018-09-26T14:17:53Z regreg_ joined #lisp 2018-09-26T14:26:13Z rnmhdn quit (Quit: WeeChat 2.2) 2018-09-26T14:30:14Z frodef joined #lisp 2018-09-26T14:35:03Z pierpal quit (Quit: Poof) 2018-09-26T14:35:20Z pierpal joined #lisp 2018-09-26T14:36:01Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-26T14:39:10Z veinoflegaladvic is now known as veinofincubus 2018-09-26T14:39:35Z igemnace quit (Remote host closed the connection) 2018-09-26T14:40:20Z igemnace joined #lisp 2018-09-26T14:41:10Z astalla joined #lisp 2018-09-26T14:42:43Z FreeBirdLjj joined #lisp 2018-09-26T14:43:22Z papachan quit (Quit: WeeChat 2.2) 2018-09-26T14:45:24Z cl-arthur joined #lisp 2018-09-26T14:45:27Z cl-arthur: games 2018-09-26T14:45:34Z beach: ? 2018-09-26T14:46:06Z cl-arthur: typo :) 2018-09-26T14:46:33Z rnmhdn joined #lisp 2018-09-26T14:49:13Z frgo joined #lisp 2018-09-26T14:49:37Z m00natic quit (Read error: Connection reset by peer) 2018-09-26T14:49:53Z m00natic joined #lisp 2018-09-26T14:50:05Z shrdlu68 quit (Ping timeout: 252 seconds) 2018-09-26T14:50:15Z travv0 joined #lisp 2018-09-26T14:53:44Z frgo quit (Ping timeout: 272 seconds) 2018-09-26T14:56:35Z gravicappa joined #lisp 2018-09-26T14:57:06Z frgo joined #lisp 2018-09-26T15:07:16Z astronavt_ is now known as astronavt 2018-09-26T15:07:35Z equwal joined #lisp 2018-09-26T15:10:19Z rumbler31 joined #lisp 2018-09-26T15:10:47Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-26T15:11:47Z quazimodo quit (Ping timeout: 240 seconds) 2018-09-26T15:14:36Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-26T15:19:30Z vtomole: Hey beach, how's SICL coming along? 2018-09-26T15:20:03Z equwal quit (Ping timeout: 245 seconds) 2018-09-26T15:20:37Z beach: vtomole: Making steady progress. Thanks! 2018-09-26T15:20:46Z m00natic quit (Ping timeout: 260 seconds) 2018-09-26T15:20:59Z flamebeard quit 2018-09-26T15:21:45Z beach: vtomole: There is now a #sicl IRC channel where I can blab freely about what I am doing. 2018-09-26T15:21:56Z beach: It is even logged by Shinmera's bot 2018-09-26T15:22:04Z vtomole: I'll be there 2018-09-26T15:23:09Z zxcvz joined #lisp 2018-09-26T15:23:20Z beach: I am making very good progress on bootstrapping, and since Clasp seems to want to replace LLVM (which is very slow) by Common Lisp code generating x86-64, I am working on HIR-to-MIR which will eventually be possible to translate to x86-64. 2018-09-26T15:23:29Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-26T15:23:36Z cage_ joined #lisp 2018-09-26T15:23:51Z lumm joined #lisp 2018-09-26T15:24:18Z m00natic joined #lisp 2018-09-26T15:27:17Z Achylles joined #lisp 2018-09-26T15:27:45Z FreeBirdLjj joined #lisp 2018-09-26T15:28:44Z vtomole: beach: Replacing LLVM in Clasp seems like a huge project. Good luck to those involved! Why is it slow? 2018-09-26T15:29:24Z longshi joined #lisp 2018-09-26T15:29:28Z beach: Luckily, we don't have to replicate all of LLVM. Having said that, I am convinced that it would be much easier to write something like that in Common Lisp than in C++. 2018-09-26T15:29:43Z beach: It is apparently slow because it is modular. 2018-09-26T15:29:47Z gravicappa quit (Ping timeout: 240 seconds) 2018-09-26T15:29:53Z Jesin quit (Quit: Leaving) 2018-09-26T15:30:16Z beach: I often say "it is impossible to write a C++ program that is both modular and fast", and here is another data point in that direction. 2018-09-26T15:30:24Z astalla: Don't you lose C/C++ interoperability though, which was the whole point of Clasp? 2018-09-26T15:30:46Z beach: astalla: That's what I would have thought, but drmeister says that he can handle that. 2018-09-26T15:31:34Z vtomole: C/C++ interoperability? Is CFFI not enough? 2018-09-26T15:31:43Z beach: Apparently not, no. 2018-09-26T15:32:06Z djeis[m]: I guess it could still make use of LLVM specifically for the C/C++ interop. 2018-09-26T15:32:21Z djeis[m]: For generating the proper shims and the like. 2018-09-26T15:32:39Z djeis[m]: While leaving the bulk of codegen to something faster. 2018-09-26T15:32:43Z beach: I know very little about this topic. You would have to ask drmeister. 2018-09-26T15:32:59Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-26T15:33:26Z djeis[m]: Yea 2018-09-26T15:34:39Z djeis[m]: Generating code to access C++ directly is a lot more complicated than just what you can get with CFFI, because C++ is all kinds of nonsense at the ABI level. 2018-09-26T15:35:17Z astalla: vtomole: as far as I know, to properly link to C++ code without second-guessing whatever compiler was used to compile it, you need a C++ parser, and C++ syntax is complex enough that a proper parser is very hard to write and basically it requires a whole C++ compiler. 2018-09-26T15:36:35Z djeis[m]: Not just a C++ parser, you have to replicate the name mangling proceedure of whatever C++ compiler that lib was compiled with. 2018-09-26T15:36:46Z beach: I had assumed that LLVM was a requirement for such interoperability to work, but I only recently learned that drmeister had plans to generate x86-64 code directly. 2018-09-26T15:37:22Z ggole: That's always fun. 2018-09-26T15:37:23Z beach: djeis[m]: And the (apparently Turing-complete template code). 2018-09-26T15:37:38Z beach: djeis[m]: And the (apparently Turing-complete) template code, I mean. 2018-09-26T15:38:11Z djeis[m]: I'm fairly certain that LLVM would still be needed for the interop itself, but there's no reason that codegen for the bits that don't involve interop could be done using some other compiler. 2018-09-26T15:38:20Z djeis[m]: asm is asm. 2018-09-26T15:38:54Z ggole: In practice there's other junk like debug data 2018-09-26T15:39:10Z Kundry_Wag joined #lisp 2018-09-26T15:39:12Z ggole: You can reimplement all (or some) of that, but it's a lot of work 2018-09-26T15:39:26Z astalla: djeis[m]: good point. 2018-09-26T15:41:04Z djeis[m]: *couldn't be done lol 2018-09-26T15:41:33Z vtomole: Does Clasp compile to LLVM IR now instead of x86-64? 2018-09-26T15:48:01Z beach: djeis[m]: drmeister (who is my house guest at the moment) says that all that is required is to follow the calling convention, which is fairly easy. 2018-09-26T15:48:48Z beach: They do plan to generate DWARF debug information from Common Lisp code. 2018-09-26T15:48:56Z beach: vtomole: Yes. 2018-09-26T15:49:28Z beach: I need to go entertain my guests. 2018-09-26T15:52:52Z Inline joined #lisp 2018-09-26T15:53:06Z ggole: The *c++* convention? I don't think what each compiler does is even documented. 2018-09-26T15:53:07Z sabrac quit (Quit: Konversation terminated!) 2018-09-26T15:54:02Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-26T15:54:33Z ggole: For instance, there's a trick which clang(?) does where if every override for a virtual function returns a constant, they replace the function pointer with the relevant constant in the vtables 2018-09-26T15:55:07Z ggole: If you have to reverse-engineer that sort of implementation quirk, you'll be in for quite a ride. 2018-09-26T15:55:26Z Inline quit (Read error: Connection reset by peer) 2018-09-26T15:55:56Z Inline joined #lisp 2018-09-26T15:56:48Z zfree quit (Quit: zfree) 2018-09-26T15:58:33Z djeis[m]: beach: That makes sense I suppose. 2018-09-26T15:59:59Z FreeBirdLjj joined #lisp 2018-09-26T16:05:26Z anewuser quit (Quit: anewuser) 2018-09-26T16:08:19Z Jesin joined #lisp 2018-09-26T16:10:59Z shka_ joined #lisp 2018-09-26T16:14:48Z travv0 quit (Ping timeout: 272 seconds) 2018-09-26T16:16:26Z pierpal quit (Ping timeout: 252 seconds) 2018-09-26T16:16:45Z pierpal joined #lisp 2018-09-26T16:18:27Z Jesin quit (Quit: Leaving) 2018-09-26T16:19:24Z Jesin joined #lisp 2018-09-26T16:23:34Z pierpal quit (Ping timeout: 240 seconds) 2018-09-26T16:25:10Z equwal joined #lisp 2018-09-26T16:30:11Z razzy: beach: i admire you both, drmeister and you :] 2018-09-26T16:30:44Z Kevslinger joined #lisp 2018-09-26T16:32:52Z razzy: warweasle: nazis just love trains :]. who could blame them :]. 2018-09-26T16:33:06Z razzy: soooo efficient 2018-09-26T16:33:10Z heisig quit (Ping timeout: 272 seconds) 2018-09-26T16:33:23Z equwal quit (Ping timeout: 245 seconds) 2018-09-26T16:36:18Z trittweiler quit (Ping timeout: 252 seconds) 2018-09-26T16:39:14Z shka_: good evening 2018-09-26T16:39:31Z asarch quit (Remote host closed the connection) 2018-09-26T16:39:33Z Shinmera: razzy: please try not to keep off-topic chatter going, especially when it's politically charged. 2018-09-26T16:40:13Z russellw: what's the best way to test a variable for being equal to one of several strings? with symbols it's (member x '(a b c)) but that uses eql so doesn't work with strings 2018-09-26T16:40:25Z dlowe: russellw: you can specify :test 2018-09-26T16:40:31Z shka_: russellw: :test #'string= 2018-09-26T16:40:41Z russellw: ah, thanks! 2018-09-26T16:40:48Z shka_: or use hashtable 2018-09-26T16:41:09Z Shinmera: a hash-table with standard test won't help either 2018-09-26T16:41:17Z shka_: yes, that's true 2018-09-26T16:41:31Z shka_: you will need also specify test for the hash table 2018-09-26T16:41:39Z shka_: good catch 2018-09-26T16:41:50Z razzy: Shinmera: sorry, i feel ashamed. the politics charge did not occur to me, really 2018-09-26T16:42:09Z shka_: dear #lisp, i have a question 2018-09-26T16:42:54Z shka_: data frame implementation i am working on, will use copy on write logic to only copy parts of data frame that are actually changed 2018-09-26T16:43:19Z equwal joined #lisp 2018-09-26T16:43:19Z equwal quit (Read error: Connection reset by peer) 2018-09-26T16:43:40Z shka_: however, obviously, it would be beneficial to check if operation on frame actually changes it 2018-09-26T16:44:00Z shka_: in order to take burden away from the user 2018-09-26T16:44:42Z shka_: i was thinking on it, and it appears to me that eql would be the right way to do so 2018-09-26T16:44:54Z shka_: however, there is one corner case that i see 2018-09-26T16:45:18Z shka_: namely (make-symbol) and property lists of symbols 2018-09-26T16:46:10Z shka_: is it worth it to create custom logic for this case, or is it better to ignore this? 2018-09-26T16:47:18Z shka_: or perhaps there is other corner case, where eql would not be sufficient 2018-09-26T16:47:47Z astalla quit (Ping timeout: 252 seconds) 2018-09-26T16:51:09Z equwal joined #lisp 2018-09-26T16:53:41Z cage_ quit (Quit: Leaving) 2018-09-26T16:54:41Z nowhereman_ quit (Ping timeout: 260 seconds) 2018-09-26T16:55:42Z varjag joined #lisp 2018-09-26T17:06:09Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-26T17:08:15Z Folkol quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2018-09-26T17:08:41Z equwal quit (Ping timeout: 260 seconds) 2018-09-26T17:09:44Z southy joined #lisp 2018-09-26T17:11:00Z rumbler31 joined #lisp 2018-09-26T17:15:30Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-26T17:18:01Z khisanth_ quit (Ping timeout: 260 seconds) 2018-09-26T17:19:23Z jkordani_ joined #lisp 2018-09-26T17:23:12Z jkordani quit (Ping timeout: 252 seconds) 2018-09-26T17:24:17Z shifty quit (Ping timeout: 244 seconds) 2018-09-26T17:29:30Z flip214 quit (Read error: Connection reset by peer) 2018-09-26T17:30:08Z Essadon joined #lisp 2018-09-26T17:30:24Z Essadon quit (Max SendQ exceeded) 2018-09-26T17:30:51Z Essadon joined #lisp 2018-09-26T17:31:33Z khisanth_ joined #lisp 2018-09-26T17:35:04Z travv0 joined #lisp 2018-09-26T17:35:13Z flip214 joined #lisp 2018-09-26T17:36:36Z ggole quit (Quit: ggole) 2018-09-26T17:38:03Z shrdlu68 joined #lisp 2018-09-26T17:38:36Z Jesin quit (Quit: Leaving) 2018-09-26T17:43:12Z Jesin joined #lisp 2018-09-26T17:46:18Z southy quit (Ping timeout: 252 seconds) 2018-09-26T17:47:16Z warweasle is now known as warweasle_afk 2018-09-26T17:48:16Z lemonpepper24 quit (Ping timeout: 246 seconds) 2018-09-26T17:48:28Z m00natic quit (Remote host closed the connection) 2018-09-26T17:50:37Z nsrahmad joined #lisp 2018-09-26T17:54:18Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-26T17:57:55Z kajo joined #lisp 2018-09-26T17:57:55Z kajo quit (Client Quit) 2018-09-26T18:00:11Z nsrahmad quit (Remote host closed the connection) 2018-09-26T18:01:39Z kajo joined #lisp 2018-09-26T18:02:14Z flip214 quit (Read error: Connection reset by peer) 2018-09-26T18:03:55Z trittweiler joined #lisp 2018-09-26T18:04:26Z lemonpepper24 joined #lisp 2018-09-26T18:05:01Z longshi quit (Quit: WeeChat 2.2) 2018-09-26T18:05:20Z flip214 joined #lisp 2018-09-26T18:06:04Z longshi joined #lisp 2018-09-26T18:06:52Z makomo quit (Ping timeout: 250 seconds) 2018-09-26T18:07:13Z graphene quit (Remote host closed the connection) 2018-09-26T18:08:28Z graphene joined #lisp 2018-09-26T18:09:54Z SaganMan joined #lisp 2018-09-26T18:15:39Z southy joined #lisp 2018-09-26T18:18:23Z pierpal joined #lisp 2018-09-26T18:20:26Z southy quit (Ping timeout: 260 seconds) 2018-09-26T18:22:26Z sauvin quit (Read error: Connection reset by peer) 2018-09-26T18:23:18Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T18:23:48Z makomo joined #lisp 2018-09-26T18:25:41Z msb quit (Ping timeout: 252 seconds) 2018-09-26T18:27:51Z msb joined #lisp 2018-09-26T18:28:34Z dented42 joined #lisp 2018-09-26T18:36:31Z Jesin quit (Quit: Leaving) 2018-09-26T18:37:33Z rnmhdn quit (Ping timeout: 245 seconds) 2018-09-26T18:39:08Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T18:39:24Z orivej joined #lisp 2018-09-26T18:40:27Z Jesin joined #lisp 2018-09-26T18:50:05Z ski quit (K-Lined) 2018-09-26T18:58:41Z jackdaniel quit (Ping timeout: 252 seconds) 2018-09-26T19:03:40Z veinofincubus is now known as veinofKoRn 2018-09-26T19:11:43Z rumbler31 joined #lisp 2018-09-26T19:11:54Z shrdlu68 quit (Read error: Connection reset by peer) 2018-09-26T19:13:27Z gravicappa joined #lisp 2018-09-26T19:15:23Z thetemplar quit (Ping timeout: 250 seconds) 2018-09-26T19:15:27Z ski joined #lisp 2018-09-26T19:16:30Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-26T19:17:33Z vlatkoB quit (Remote host closed the connection) 2018-09-26T19:20:54Z warweasle_afk is now known as warweasle 2018-09-26T19:25:57Z nanoz joined #lisp 2018-09-26T19:33:10Z astalla joined #lisp 2018-09-26T19:40:52Z azimut joined #lisp 2018-09-26T19:42:06Z azimut_ quit (Ping timeout: 260 seconds) 2018-09-26T19:43:38Z igemnace quit (Quit: WeeChat 2.2) 2018-09-26T19:43:48Z ym quit (Quit: Leaving) 2018-09-26T19:47:54Z shka_ quit (Ping timeout: 264 seconds) 2018-09-26T19:48:25Z meepdeew joined #lisp 2018-09-26T19:51:34Z beach quit (Ping timeout: 240 seconds) 2018-09-26T20:00:16Z southy joined #lisp 2018-09-26T20:03:16Z warweasle quit (Quit: next job) 2018-09-26T20:18:32Z longshi quit (Quit: WeeChat 2.2) 2018-09-26T20:23:03Z astronavt quit (Ping timeout: 244 seconds) 2018-09-26T20:23:32Z ym joined #lisp 2018-09-26T20:24:36Z longshi joined #lisp 2018-09-26T20:29:19Z Myon joined #lisp 2018-09-26T20:30:04Z Myon: svillemot: Hi, are you taking over cl-nibbles from dim, or should I try uploading the fixes for https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908641 ? 2018-09-26T20:30:30Z drmeister: Hello everyone. 2018-09-26T20:31:00Z frodef: hi 2018-09-26T20:31:04Z longshi: hello 2018-09-26T20:31:15Z svillemot: Myon: I 2018-09-26T20:31:27Z drmeister: On reflection, generating code directly from cleavir will probably require figuring out how to set up unwinding and to generate DWARF metadata. 2018-09-26T20:31:35Z svillemot: Myon: I will probably do it, but not sure when, so don't hesitate to go ahead 2018-09-26T20:32:39Z Myon: svillemot: the autoremoval clock is ticking, but there's a whole month left 2018-09-26T20:33:23Z Myon: I'd be more comfortable if you did it because I can't judge any of the patches 2018-09-26T20:33:37Z Myon: I can only see if pgloader explodes or not :) 2018-09-26T20:34:03Z svillemot: ok, I'll do it 2018-09-26T20:34:46Z Myon: merci 2018-09-26T20:37:34Z scymtym quit (Ping timeout: 240 seconds) 2018-09-26T20:41:56Z zxcvz quit (Quit: zxcvz) 2018-09-26T20:46:27Z Kundry_Wag joined #lisp 2018-09-26T20:46:27Z Kundry_Wag quit (Remote host closed the connection) 2018-09-26T20:46:56Z mutenewt joined #lisp 2018-09-26T20:48:20Z SenasOzys joined #lisp 2018-09-26T20:51:31Z nanoz quit (Ping timeout: 260 seconds) 2018-09-26T21:01:51Z scymtym joined #lisp 2018-09-26T21:12:33Z rumbler31 joined #lisp 2018-09-26T21:12:54Z southy quit (Ping timeout: 252 seconds) 2018-09-26T21:16:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-26T21:20:04Z gravicappa quit (Remote host closed the connection) 2018-09-26T21:20:20Z jkordani joined #lisp 2018-09-26T21:23:48Z jkordani_ quit (Ping timeout: 245 seconds) 2018-09-26T21:23:49Z Roy_Fokker joined #lisp 2018-09-26T21:24:03Z no-defun-allowed: Morning 2018-09-26T21:25:16Z frodef: where? 2018-09-26T21:26:13Z no-defun-allowed: Where is this morning? 2018-09-26T21:26:22Z frodef: right :) 2018-09-26T21:27:58Z Bike: ulaanbataar 2018-09-26T21:30:39Z housel: In another channel I'm in (#dylan), it is always morning by convention; makes it easier to choose a greeting across time zones 2018-09-26T21:32:21Z rumbler31 joined #lisp 2018-09-26T21:34:43Z no-defun-allowed: Yes beach brought that up when I said he was up early. 2018-09-26T21:35:04Z graphene quit (Remote host closed the connection) 2018-09-26T21:36:18Z graphene joined #lisp 2018-09-26T21:38:22Z jmercouris quit (Remote host closed the connection) 2018-09-26T21:40:46Z frodef: what 2018-09-26T21:41:03Z frodef: 's the idiom for exchanging the value of two variables again? 2018-09-26T21:41:16Z _death: (rotatef a b) 2018-09-26T21:41:38Z frodef: thanks 2018-09-26T21:42:28Z southy joined #lisp 2018-09-26T21:44:52Z Achylles: (mapcar (two-x 2 3) '(1 2 3 4)) --> *** Eval error *** Invalid function: 6 2018-09-26T21:45:04Z Achylles: why it gives me this error? 2018-09-26T21:45:23Z Bike: what's two-x? 2018-09-26T21:45:26Z cl-arthur quit (Quit: Lost terminal) 2018-09-26T21:45:45Z Achylles: (two-x) --> is a function (* x y) 2018-09-26T21:45:55Z Achylles: multiplies 2 numbers 2018-09-26T21:45:59Z Bike: so (two-x 2 3) evaluates to 6? 2018-09-26T21:46:10Z Achylles: yes 2018-09-26T21:46:15Z Bike: so... 2018-09-26T21:46:21Z Bike: what did you expect the mapcar to do, exactly? 2018-09-26T21:46:27Z Bike: You're basically doing (mapcar 6 '(1 2 3 4)) 2018-09-26T21:46:59Z southy quit (Ping timeout: 252 seconds) 2018-09-26T21:47:53Z Achylles: how do I apply --> (* 6 (1 2 3 4) --> to each list element? 2018-09-26T21:48:20Z Bike: Pass a function that multiplies a number by 6 2018-09-26T21:48:24Z Bike: such as (lambda (x) (* x 6)) 2018-09-26T21:49:42Z dented42 joined #lisp 2018-09-26T21:53:02Z Josh_2 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-26T21:59:13Z lumm quit (Quit: lumm) 2018-09-26T22:01:53Z Bike quit (Ping timeout: 256 seconds) 2018-09-26T22:04:38Z d4ryus quit (Ping timeout: 245 seconds) 2018-09-26T22:04:56Z d4ryus joined #lisp 2018-09-26T22:05:03Z oni-on-ion: Achylles: (apply #'* '(1 2 3 4)) ;; ? =) 2018-09-26T22:05:34Z frodef quit (Ping timeout: 240 seconds) 2018-09-26T22:05:37Z oni-on-ion: i think you are looking for 'currying', looking at your example above 2018-09-26T22:05:54Z oni-on-ion: so that (two-x 2 3) becomes a new function with 2 and 3 already passed 2018-09-26T22:07:12Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T22:07:32Z frodef joined #lisp 2018-09-26T22:11:55Z Inline quit (Quit: Leaving) 2018-09-26T22:12:43Z White_Flame: (defun make-multiplier (x y) (let ((scale (* x y))) (lambda (in) (* in scale))) 2018-09-26T22:12:54Z White_Flame: (mapcar (make-multiplier 2 3) '(1 2 3 4)) 2018-09-26T22:13:19Z White_Flame: that performs the *2 3 only once, and multiplies that result over the list 2018-09-26T22:13:36Z White_Flame: note that make-multiplier returns a lambda, which is used in the mapcar 2018-09-26T22:14:31Z oni-on-ion: julia -- [1 2 3 4] .* 4 => 1x4 Array{Int64,2}: [4 8 12 18] 2018-09-26T22:14:48Z aeth: alexandria has both curry and rcurry. (mapcar (alexandria:curry #'* 2 3) '(1 2 3)) 2018-09-26T22:15:20Z aeth: It is essentially a general and more efficient version of what White_Flame is doing. 2018-09-26T22:17:46Z aeth: It is probably not optimized to the degree that it could be. 2018-09-26T22:19:21Z oni-on-ion: hmm. 2018-09-26T22:19:51Z oni-on-ion: julia magically arranges static code paths, looking for the disasm now 2018-09-26T22:20:32Z aeth: What I mean about not optimized is that given a sufficiently smart compiler both (defun foo () (mapcar (alexandria:curry #'* 2 3) '(1 2 3))) and (defun foo () (quote #.(mapcar (alexandria:curry #'* 2 3) '(1 2 3)))) would be compiled to constantly return '(6 12 18) but that's clearly not the case, at least in SBCL. 2018-09-26T22:21:30Z aeth: (well, actually it should return (list 6 12 18) in the former case. Slightly different in that modifying the quoted version is undefined and could have unexpected behavior) 2018-09-26T22:21:55Z oni-on-ion: i did disasm (mapcar (lambda (x) (* x 8)) '(1 2 3 4)) its only a page, that julia was about 4-5 pages.... 2018-09-26T22:22:08Z LdBeth: map (2 * 3 *) [1..6] 2018-09-26T22:22:16Z oni-on-ion: heh 2018-09-26T22:22:38Z oni-on-ion: aeth what is #. 2018-09-26T22:22:46Z aeth: oni-on-ion: doing it at reader time, since it's constant data 2018-09-26T22:22:47Z oni-on-ion: "#." 2018-09-26T22:22:57Z oni-on-ion: ohh. didnt know about that =) 2018-09-26T22:23:05Z aeth: I then have to quote it because it tries to evaluate (6 12 18) as a function with two arguments and the name 6 2018-09-26T22:23:16Z aeth: (at least in SBCL) 2018-09-26T22:23:28Z oni-on-ion: so ur telling me that lisp is the perfect balance and harmony between man and machine 2018-09-26T22:24:01Z aeth: oni-on-ion: No, I'm saying that even here Lisp is incorrect because given entirely constant data, a sufficiently optimizing compiler will compile it to a constant return value, without needing a hack like evaluating that at read time 2018-09-26T22:24:13Z aeth: s/here Lisp/here SBCL/ 2018-09-26T22:24:41Z LdBeth: compiler should do that kind of jobs 2018-09-26T22:24:42Z oni-on-ion: room for improvement on the implementation side, minor details =) 2018-09-26T22:24:48Z aeth: In fact, I wouldn't be surprised if the equivalent multiplication in LOOP on the quoted list *does* return a constant 2018-09-26T22:25:13Z aeth: #(1 2 3) and '(1 2 3) are hints to the compiler to make magic happen :-p 2018-09-26T22:25:36Z oni-on-ion: hmm still a lot of code. 'thread.alloc-region' eh 2018-09-26T22:25:50Z oni-on-ion: #() is vector right ? 2018-09-26T22:25:57Z aeth: well, literal vector 2018-09-26T22:26:05Z oni-on-ion: yeah =) [] in elisp 2018-09-26T22:26:05Z southy joined #lisp 2018-09-26T22:26:07Z aeth: are you disassembling the reader version in SBCL? for me it returns '(6 12 18) in 23 bytes 2018-09-26T22:26:23Z oni-on-ion: just that above with the mapcap and lambda 2018-09-26T22:26:37Z oni-on-ion: 274 bytes eheh 2018-09-26T22:26:45Z LiamH quit (Quit: Leaving.) 2018-09-26T22:26:53Z aeth: You probably did something that destroyed the constantness of the data, then 2018-09-26T22:27:12Z oni-on-ion: how DARE you! nah i just typed in that : 2018-09-26T22:27:18Z oni-on-ion: (disassemble (lambda () (mapcar (lambda (x) (* x 8)) '(1 2 3 4)))) 2018-09-26T22:27:28Z oni-on-ion: might not have needed the extra thing there.. 2018-09-26T22:27:35Z aeth: oh, no that's right 2018-09-26T22:27:40Z aeth: I thought you were disassembling the #. version 2018-09-26T22:27:57Z oni-on-ion: hjehe Can't make a compiled function from (8 16 24 32) 2018-09-26T22:27:58Z oni-on-ion: [Condition of type SIMPLE-TYPE-ERROR] 2018-09-26T22:28:09Z regreg_ quit (Ping timeout: 252 seconds) 2018-09-26T22:28:10Z oni-on-ion: ah 2018-09-26T22:28:10Z aeth: oni-on-ion: (disassemble (lambda () (quote #.(mapcar (lambda (x) (* x 8)) '(1 2 3 4))))) 2018-09-26T22:28:40Z oni-on-ion: hm yeah 23 2018-09-26T22:28:41Z aeth: #. is the only way I know how to do this without defining a macro first. 2018-09-26T22:28:52Z oni-on-ion studies it 2018-09-26T22:29:02Z aeth: I wouldn't use that in production 2018-09-26T22:29:10Z aeth: If you have to do something like that ahead of time use a macro, it's clearer 2018-09-26T22:29:17Z aeth: and more general 2018-09-26T22:30:05Z oni-on-ion: so its just #. inline the result -> quote put it back to list -> yay 2018-09-26T22:30:07Z southy quit (Ping timeout: 240 seconds) 2018-09-26T22:30:07Z oni-on-ion: ? 2018-09-26T22:30:27Z oni-on-ion: for one-off things it is good to know all the tools in the shed 2018-09-26T22:31:17Z aeth: oni-on-ion: this won't be as concise as the reader version because I'm using LIST instead of QUOTE: (defmacro times-eight (list-of-numbers) `(list ,@(mapcar (lambda (x) (* x 8)) list-of-numbers))) 2018-09-26T22:31:36Z aeth: but then (times-eight (1 2 3 4)) => (8 16 24 32) 2018-09-26T22:31:48Z aeth: e.g. (disassemble (lambda () (times-eight (1 2 3 4)))) 2018-09-26T22:31:51Z oni-on-ion: oh. right, but! 2018-09-26T22:32:06Z oni-on-ion: why not (disassemble (lambda () `(list ,@ ..... ? 2018-09-26T22:32:25Z aeth: You can get the same thing with (defmacro times-eight* (list-of-numbers) `(quote ,(mapcar (lambda (x) (* x 8)) list-of-numbers))) 2018-09-26T22:32:33Z aeth: (the same thing as the reader version) 2018-09-26T22:33:30Z oni-on-ion: 341 bytes... 2018-09-26T22:33:31Z aeth: oni-on-ion: for me that's done at runtime 2018-09-26T22:33:37Z aeth: the macro will be done at macro expansion time 2018-09-26T22:33:44Z varjag quit (Ping timeout: 252 seconds) 2018-09-26T22:33:52Z oni-on-ion: ok.. so macro expansion counts in the disasm ? 2018-09-26T22:33:58Z aeth: The *disadvantage* of the macro approach is that even though it's more general than the reader approach, it still won't always give you want you want. 2018-09-26T22:34:45Z oni-on-ion: 349 bytes with list instead of quote o_O 2018-09-26T22:34:47Z aeth: e.g. a list of (1 2 (* 2 2) 4) will fail. If you wanted to be totally general, you'd have to walk through, see if something is a number, if it's a number apply the multiplication, and if it's not a number, make sure the multiplication is attempted at run time. 2018-09-26T22:34:51Z oni-on-ion veers into icebergs 2018-09-26T22:35:16Z aeth: oni-on-ion: Putting the ` and ,@ in the lambda itself is doing the operation at run time each time the function is called, even though your data is constant 2018-09-26T22:35:27Z aeth: oni-on-ion: The ` and ,@ in the macro will do the computation once, when compiling it. 2018-09-26T22:35:29Z oni-on-ion: i think im just attacking code translation. reason i mentioned balance and harmony earlier, getting to it.. 2018-09-26T22:35:53Z oni-on-ion: aeth: oh! i didnt know that. when to get macros eval'd at compile? eval-when obviously then ? 2018-09-26T22:36:16Z oni-on-ion: for some reason i didnt lose any marbles by assuming ` and @ were compile time or even just eval time. 2018-09-26T22:36:30Z oni-on-ion: or because its in a lambda 2018-09-26T22:36:58Z oni-on-ion: and. so oh nevermind you answered it. because its not in a macro ? 2018-09-26T22:37:00Z aeth: oni-on-ion: this is the full version you want, btw. (defmacro times-eight (list-of-numbers) `(list ,@(mapcar (lambda (x) (if (numberp x) (* x 8) `(* ,x 8))) list-of-numbers))) 2018-09-26T22:37:28Z oni-on-ion: wouldnt if numberp add more code though ? 2018-09-26T22:37:33Z aeth: oni-on-ion: If it's a number at macro-expansion time (i.e. a literal number like 42) it will do the multiplication then. If it's not a number (e.g. the list (* 3 4)), then it will attempt to do the multiplication at run time 2018-09-26T22:37:53Z aeth: oni-on-ion: So it only adds more code if it's not a literal number 2018-09-26T22:37:57Z oni-on-ion: ohh. duh. thx for clearing up my synapse pathways 2018-09-26T22:38:06Z aeth: (times-eight (1 2 3 4 (* 3 4))) => (8 16 24 32 96) 2018-09-26T22:38:12Z oni-on-ion: right, when its more general, as you say =) 2018-09-26T22:38:46Z aeth: the macro is essentially taking in '(1 2 3 4 (* 3 4)) and returning '(list 8 16 24 32 (* (* 3 4) 8)) 2018-09-26T22:39:22Z oni-on-ion: =O 2018-09-26T22:39:30Z oni-on-ion: didnt notice that other list in there 2018-09-26T22:39:38Z aeth: and it will even work with variables. (macroexpand-1 `(times-eight (1 2 3 4 foo))) => (LIST 8 16 24 32 (* FOO 8)) 2018-09-26T22:40:04Z groovy2shoes quit (Ping timeout: 240 seconds) 2018-09-26T22:40:09Z oni-on-ion: hmmm =) awrsome! 2018-09-26T22:40:18Z outtabwz joined #lisp 2018-09-26T22:40:22Z aeth: (disassemble (defun foo () (times-eight (1 2 3 4 foo)))) 2018-09-26T22:40:52Z aeth: Now there still is a generic-* but it's only applied once, to the variable foo, instead of on every item, which are mostly constant. We turned the naive map into the most efficient thing we can do. 2018-09-26T22:40:55Z outtabwz left #lisp 2018-09-26T22:41:02Z rumbler31 quit (Remote host closed the connection) 2018-09-26T22:41:08Z astalla quit (Ping timeout: 272 seconds) 2018-09-26T22:41:19Z groovy2shoes joined #lisp 2018-09-26T22:41:43Z oni-on-ion: yeah =) =) hm! 2018-09-26T22:41:55Z Achylles quit (Ping timeout: 252 seconds) 2018-09-26T22:42:39Z astronavt joined #lisp 2018-09-26T22:42:49Z quazimodo joined #lisp 2018-09-26T22:44:36Z aeth: oni-on-ion: the only catch is that we're not really working on a list. (1 2 3 4 foo) is syntax. (times-eight foo) won't work because it will see the symbol foo instead of a list there, at macro-expansion time. 2018-09-26T22:44:49Z dented42 joined #lisp 2018-09-26T22:45:12Z aeth: Because that's misleading we can express the macro like this: (defmacro times-eight (&rest list-of-numbers) `(list ,@(mapcar (lambda (x) (if (numberp x) (* x 8) `(* ,x 8))) list-of-numbers))) 2018-09-26T22:45:27Z aeth: And then we get this API: (times-eight 1 2 3 4 (* 5 4)) => (8 16 24 32 160) 2018-09-26T22:46:48Z aeth: Alternatively, we could attempt to parse the argument in the macro and have a slow version for when it's not what we want. Then we could have (times-eight (list 1 2 3 4)) as the API, and for everything that's not a list that begins with LIST we can provide the slow, runtime route. 2018-09-26T22:47:41Z oni-on-ion contemplates it 2018-09-26T22:48:57Z aeth: This would be the implementation: (defmacro times-eight* (list) (if (and (listp list) (eql (car (list)) list)) `(list ,@(mapcar (lambda (x) (if (numberp x) (* x 8) `(* ,x 8))) list)) `(mapcar (lambda (x) (* x 8)) ,list))) 2018-09-26T22:49:08Z aeth: looks messier than it actually is because I put it on one line for IRC 2018-09-26T22:49:19Z aeth: It would get a bit messier if you wanted to also support '(1 2 3) lists 2018-09-26T22:49:49Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-26T22:49:56Z aeth: But essentially the idea is that if the list is known at compile time, handle it in an optimal way. If it's unknown, just do the mapcar like you would have done. 2018-09-26T22:51:14Z Kundry_Wag joined #lisp 2018-09-26T22:53:32Z frodef quit (Ping timeout: 252 seconds) 2018-09-26T22:54:53Z oni-on-ion: right =) i will get used to swapping between compile and run time , glad the syntax is super small for it 2018-09-26T22:55:07Z aeth: And the final step would be to replace (* x 8) with a function. This gets messy. 2018-09-26T22:55:08Z oni-on-ion: there is a macrolet ? 2018-09-26T22:55:44Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-26T22:56:50Z makomo quit (Ping timeout: 252 seconds) 2018-09-26T22:59:49Z anewuser joined #lisp 2018-09-26T23:03:33Z Pixel_Outlaw joined #lisp 2018-09-26T23:05:30Z angavrilov quit (Remote host closed the connection) 2018-09-26T23:06:05Z jasom: isn't (car (list)) always nil? 2018-09-26T23:06:50Z White_Flame: yeah, probably wanted to be (car list) 2018-09-26T23:07:23Z jasom: clhs define-compiler-macro 2018-09-26T23:07:23Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_define.htm 2018-09-26T23:07:44Z jasom: also consider that for when you might want to behave as a function or a macro depending on your arguments. 2018-09-26T23:08:39Z Kundry_Wag joined #lisp 2018-09-26T23:09:53Z jasom: also IIRC compiler-macros may be expanded when used in funcall 2018-09-26T23:10:43Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-26T23:12:39Z aeth: jasom: absolutely right, that's the problem with a lisp-2 :-p 2018-09-26T23:12:52Z aeth: jasom: You can use "list" everywhere but you still might accidentally use the wrong list 2018-09-26T23:14:13Z aeth: I also needed to quote 'list 2018-09-26T23:15:31Z aeth: This is the correct version: (defmacro times-eight* (list) (if (and (listp list) (eql (car list) 'list)) `(list ,@(mapcar (lambda (x) (if (numberp x) (* x 8) `(* ,x 8))) (cdr list))) `(mapcar (lambda (x) (* x 8)) ,list))) 2018-09-26T23:15:42Z aeth: too much list to not be confusing :-p 2018-09-26T23:18:36Z aeth: It's already getting very messy and this is before generalizing (* x 8) 2018-09-26T23:20:27Z Kundry_Wag joined #lisp 2018-09-26T23:20:37Z Kundry_Wag quit (Remote host closed the connection) 2018-09-26T23:20:45Z Kundry_Wag joined #lisp 2018-09-26T23:26:18Z grault joined #lisp 2018-09-26T23:26:35Z grault left #lisp 2018-09-26T23:27:30Z longshi quit (Ping timeout: 264 seconds) 2018-09-26T23:28:12Z graphene quit (Remote host closed the connection) 2018-09-26T23:28:44Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-26T23:29:26Z graphene joined #lisp 2018-09-26T23:30:38Z quazimodo joined #lisp 2018-09-26T23:32:26Z graphene quit (Remote host closed the connection) 2018-09-26T23:33:23Z pierpal quit (Ping timeout: 245 seconds) 2018-09-26T23:33:43Z graphene joined #lisp 2018-09-26T23:41:41Z dale quit (Quit: dale) 2018-09-26T23:53:43Z Achylles joined #lisp 2018-09-26T23:54:36Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-26T23:55:33Z sjl quit (Quit: WeeChat 2.2-dev) 2018-09-26T23:59:33Z regreg_ joined #lisp 2018-09-27T00:03:21Z Essadon quit (Quit: Qutting) 2018-09-27T00:09:04Z mutenewt quit (Quit: Leaving) 2018-09-27T00:15:49Z Bike joined #lisp 2018-09-27T00:16:04Z lemonpepper24 quit (Ping timeout: 246 seconds) 2018-09-27T00:19:06Z lemonpepper24 joined #lisp 2018-09-27T00:24:36Z Kundry_Wag quit (Remote host closed the connection) 2018-09-27T00:25:44Z grumble quit (Read error: Connection reset by peer) 2018-09-27T00:25:45Z gurmble joined #lisp 2018-09-27T00:26:00Z gurmble is now known as grumble 2018-09-27T00:29:10Z Kundry_Wag joined #lisp 2018-09-27T00:36:46Z grumble quit (Quit: Freenode looks forward to seeing you at the freenode #live conference, in Bristol on November 3rd and 4th. Check it out at https://freenode.live or join #live or read the /motd for more info!) 2018-09-27T00:37:05Z grumble joined #lisp 2018-09-27T00:46:14Z sjl joined #lisp 2018-09-27T00:49:31Z quazimodo quit (Ping timeout: 260 seconds) 2018-09-27T00:49:53Z southy joined #lisp 2018-09-27T00:50:58Z quazimodo joined #lisp 2018-09-27T00:54:46Z southy quit (Ping timeout: 260 seconds) 2018-09-27T01:02:02Z equwal joined #lisp 2018-09-27T01:03:22Z nullniverse joined #lisp 2018-09-27T01:05:32Z dddddd quit (Ping timeout: 252 seconds) 2018-09-27T01:07:13Z equwal quit (Ping timeout: 244 seconds) 2018-09-27T01:10:27Z equwal joined #lisp 2018-09-27T01:10:31Z equwal quit (Remote host closed the connection) 2018-09-27T01:11:08Z Oladon joined #lisp 2018-09-27T01:11:08Z equwal joined #lisp 2018-09-27T01:16:58Z orivej quit (Ping timeout: 252 seconds) 2018-09-27T01:19:16Z Achylles quit (Ping timeout: 260 seconds) 2018-09-27T01:21:50Z Balooga_ joined #lisp 2018-09-27T01:22:42Z slyrus quit (Quit: slyrus) 2018-09-27T01:23:05Z slyrus joined #lisp 2018-09-27T01:26:26Z Kundry_Wag quit (Remote host closed the connection) 2018-09-27T01:26:47Z UNCLE_PROTON joined #lisp 2018-09-27T01:26:54Z Kundry_Wag joined #lisp 2018-09-27T01:28:58Z Kundry_Wag quit (Read error: No route to host) 2018-09-27T01:29:20Z Kundry_Wag joined #lisp 2018-09-27T01:30:07Z lavaflow_ quit (Read error: Connection reset by peer) 2018-09-27T01:33:09Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-27T01:34:16Z equwal quit (Remote host closed the connection) 2018-09-27T01:34:40Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-27T01:37:07Z iomonad quit (Ping timeout: 240 seconds) 2018-09-27T01:37:25Z equwal joined #lisp 2018-09-27T01:37:33Z lavaflow_ joined #lisp 2018-09-27T01:42:34Z esrse joined #lisp 2018-09-27T01:42:56Z Balooga_ quit (Quit: Balooga_) 2018-09-27T01:44:38Z equwal quit (Ping timeout: 245 seconds) 2018-09-27T01:45:13Z UNCLE_PROTON quit (Quit: leaving) 2018-09-27T01:47:56Z shifty joined #lisp 2018-09-27T01:49:28Z Kundry_Wag joined #lisp 2018-09-27T01:53:00Z dale joined #lisp 2018-09-27T01:59:59Z atgreen joined #lisp 2018-09-27T02:00:59Z iomonad joined #lisp 2018-09-27T02:09:50Z meepdeew quit (Remote host closed the connection) 2018-09-27T02:17:23Z Pixel_Outlaw joined #lisp 2018-09-27T02:21:56Z nullniverse quit (Quit: Undertaking stack overflow prevention) 2018-09-27T02:24:29Z lagagain quit (Quit: Connection closed for inactivity) 2018-09-27T02:32:54Z Kundry_Wag quit (Remote host closed the connection) 2018-09-27T02:33:16Z graphene quit (Remote host closed the connection) 2018-09-27T02:33:30Z Kundry_Wag joined #lisp 2018-09-27T02:34:33Z graphene joined #lisp 2018-09-27T02:37:33Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T02:43:17Z jealousmonk joined #lisp 2018-09-27T02:44:22Z meepdeew joined #lisp 2018-09-27T02:47:37Z nanoz joined #lisp 2018-09-27T02:49:42Z meepdeew quit (Ping timeout: 252 seconds) 2018-09-27T02:51:05Z pierpal joined #lisp 2018-09-27T02:51:43Z nanoz quit (Ping timeout: 245 seconds) 2018-09-27T02:55:31Z astronavt quit (Ping timeout: 260 seconds) 2018-09-27T02:55:51Z LdBeth: hola 2018-09-27T02:57:50Z no-defun-allowed: hey LdBeth 2018-09-27T03:04:42Z Kundry_Wag joined #lisp 2018-09-27T03:05:27Z anewuser quit (Read error: Connection reset by peer) 2018-09-27T03:08:16Z jack_rabbit joined #lisp 2018-09-27T03:09:17Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T03:09:57Z Balooga_ joined #lisp 2018-09-27T03:13:01Z Kundry_Wag joined #lisp 2018-09-27T03:13:15Z prometheus_falli quit (Remote host closed the connection) 2018-09-27T03:16:41Z prometheus_falli joined #lisp 2018-09-27T03:23:48Z dented42 joined #lisp 2018-09-27T03:26:59Z dale quit (Quit: dale) 2018-09-27T03:28:18Z dented42 quit (Client Quit) 2018-09-27T03:28:48Z southy joined #lisp 2018-09-27T03:33:29Z southy quit (Ping timeout: 252 seconds) 2018-09-27T03:39:26Z rnmhdn joined #lisp 2018-09-27T03:43:56Z Balooga_ quit (Ping timeout: 252 seconds) 2018-09-27T03:44:38Z LdBeth: can I do someth like (defmethod method ((foo (and superclass-1 superclass-2))) ...) 2018-09-27T03:45:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-27T03:45:15Z Pixel_Outlaw quit (Remote host closed the connection) 2018-09-27T03:46:48Z LdBeth: I'm not sure if this is releated to method combination 2018-09-27T03:47:16Z nanoz joined #lisp 2018-09-27T03:47:33Z dented42 joined #lisp 2018-09-27T03:47:49Z LdBeth: or maybe I could define a new type for it 2018-09-27T03:49:48Z jealousmonk quit (Quit: Leaving) 2018-09-27T03:51:19Z Balooga_ joined #lisp 2018-09-27T03:54:10Z ealfonso joined #lisp 2018-09-27T04:05:49Z ggole joined #lisp 2018-09-27T04:08:39Z Kundry_Wag joined #lisp 2018-09-27T04:13:18Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T04:15:04Z nonlinear is now known as NB0X-Matt-CA 2018-09-27T04:19:20Z Kundry_Wag joined #lisp 2018-09-27T04:28:37Z Demosthenex: _death: anything cool? =] 2018-09-27T04:35:00Z madrik joined #lisp 2018-09-27T04:35:44Z oni-on-ion: LdBeth: afaik it is possible yes 2018-09-27T04:45:04Z Oladon quit (Quit: Leaving.) 2018-09-27T04:46:43Z Balooga_ quit (Quit: Balooga_) 2018-09-27T04:47:10Z oni-on-ion: LdBeth: the practical way is to have superclass-1 and superclass-2 come from superclass-0 then dispatch on that, i think. 2018-09-27T04:48:53Z igemnace joined #lisp 2018-09-27T04:50:47Z beach joined #lisp 2018-09-27T04:50:57Z beach: Good morning everyone! 2018-09-27T04:51:02Z flip214: LdBeth: you could write a SATISFIES predicate 2018-09-27T04:51:27Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-27T04:52:03Z flip214: Good morning, beach! 2018-09-27T04:53:09Z Demosthenex: beach: top of the mornin! 2018-09-27T04:53:58Z eminhi joined #lisp 2018-09-27T04:55:50Z no-defun-allowed: Morning beacu 2018-09-27T04:55:51Z no-defun-allowed: *beach 2018-09-27T04:57:46Z Kundry_Wag joined #lisp 2018-09-27T04:58:19Z LdBeth: ok, got it 2018-09-27T04:58:51Z Kundry_Wag quit (Read error: No route to host) 2018-09-27T04:59:07Z Kundry_Wag joined #lisp 2018-09-27T05:03:04Z doubledup joined #lisp 2018-09-27T05:03:27Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-27T05:05:49Z jackdaniel joined #lisp 2018-09-27T05:06:59Z Kundry_Wag joined #lisp 2018-09-27T05:08:54Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-27T05:10:23Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T05:10:30Z Kundry_Wag joined #lisp 2018-09-27T05:14:59Z aeth: LdBeth: there's always the ugly, messy, hackish solution of writing a macro to generate two methods, one for superclass-1 and one for superclass-2, with the same body. 2018-09-27T05:15:19Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-27T05:15:44Z aeth: oh wait, it's and not or, nevermind 2018-09-27T05:16:12Z sauvin joined #lisp 2018-09-27T05:16:14Z aeth: You could probably still do it with a macro but it'd be even messier if you could 2018-09-27T05:21:23Z aeth: With a macro-generated approach I'd be thinking of something along the lines of this: You would need to make sure that both methods got called if both were valid, and only call the "real" method if both methods got called. Probably messier than the other two approaches. 2018-09-27T05:22:07Z nanoz quit (Ping timeout: 240 seconds) 2018-09-27T05:26:19Z aeth: e.g. NIL as a member of null has two distinct parent classes (list and symbol) and you can go into both in some order via: (defmethod foobar ((foo symbol)) (format t "symbol ~S~%" foo) (when (next-method-p) (call-next-method))) (defmethod foobar ((foo list)) (format t "list ~S~%" foo) (when (next-method-p) (call-next-method))) 2018-09-27T05:29:45Z southy joined #lisp 2018-09-27T05:31:44Z igemnace quit (Remote host closed the connection) 2018-09-27T05:32:04Z frodef joined #lisp 2018-09-27T05:32:40Z igemnace joined #lisp 2018-09-27T05:33:41Z varjag joined #lisp 2018-09-27T05:33:56Z Kundry_Wag joined #lisp 2018-09-27T05:34:42Z southy quit (Ping timeout: 272 seconds) 2018-09-27T05:34:44Z frgo quit (Remote host closed the connection) 2018-09-27T05:36:44Z DataLinkDroid3 quit (Ping timeout: 256 seconds) 2018-09-27T05:41:53Z pyx joined #lisp 2018-09-27T05:42:15Z pyx quit (Client Quit) 2018-09-27T05:42:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-27T05:43:50Z doubledup quit (Quit: Leaving) 2018-09-27T05:44:08Z Kundry_Wag joined #lisp 2018-09-27T05:48:48Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T05:51:24Z robotoad joined #lisp 2018-09-27T05:53:29Z Balooga_ joined #lisp 2018-09-27T05:53:45Z Kundry_Wag joined #lisp 2018-09-27T05:58:41Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T05:59:08Z makomo joined #lisp 2018-09-27T05:59:27Z vlatkoB joined #lisp 2018-09-27T06:01:04Z varjag quit (Ping timeout: 240 seconds) 2018-09-27T06:01:53Z LdBeth: aeth: actually I find out that I could aviod it in the particular case I'm dealing 2018-09-27T06:07:18Z aeth: LdBeth: great 2018-09-27T06:07:49Z Balooga_ quit (Quit: Balooga_) 2018-09-27T06:09:51Z LdBeth uploaded an image: 屏幕快照 2018-09-26 下午11.09.13.png (39KB) < https://matrix.org/_matrix/media/v1/download/matrix.org/fOFZzRGdNykCWdETdqweudZU > 2018-09-27T06:09:52Z LdBeth: yeah, it works! 2018-09-27T06:16:01Z no-defun-allowed: Nice 2018-09-27T06:16:25Z Kundry_Wag joined #lisp 2018-09-27T06:16:48Z LdBeth: I hope the orignal author can see it 2018-09-27T06:21:09Z shka_ joined #lisp 2018-09-27T06:21:14Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T06:24:23Z Kundry_Wag joined #lisp 2018-09-27T06:27:46Z frgo joined #lisp 2018-09-27T06:28:07Z lemonpepper24 quit (Ping timeout: 246 seconds) 2018-09-27T06:29:13Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T06:32:14Z frgo quit (Ping timeout: 252 seconds) 2018-09-27T06:34:09Z frgo joined #lisp 2018-09-27T06:34:28Z frgo quit (Remote host closed the connection) 2018-09-27T06:36:38Z moei quit (Ping timeout: 252 seconds) 2018-09-27T06:36:51Z makomo quit (Ping timeout: 252 seconds) 2018-09-27T06:37:29Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-27T06:37:59Z shka_ joined #lisp 2018-09-27T06:38:05Z graphene quit (Remote host closed the connection) 2018-09-27T06:38:47Z Kundry_Wag joined #lisp 2018-09-27T06:39:19Z graphene joined #lisp 2018-09-27T06:39:40Z scymtym quit (Ping timeout: 246 seconds) 2018-09-27T06:42:28Z frgo joined #lisp 2018-09-27T06:43:23Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T06:45:19Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-27T06:45:36Z shka_ joined #lisp 2018-09-27T06:49:42Z Kundry_Wag joined #lisp 2018-09-27T06:50:24Z abbe quit (Read error: Connection reset by peer) 2018-09-27T06:50:33Z abbe joined #lisp 2018-09-27T07:06:45Z emaczen quit (Read error: Connection reset by peer) 2018-09-27T07:07:50Z emaczen joined #lisp 2018-09-27T07:09:39Z flamebeard joined #lisp 2018-09-27T07:10:54Z graphene quit (Remote host closed the connection) 2018-09-27T07:12:07Z graphene joined #lisp 2018-09-27T07:21:44Z scymtym joined #lisp 2018-09-27T07:23:16Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-27T07:24:08Z varjag joined #lisp 2018-09-27T07:25:57Z Kundry_Wag joined #lisp 2018-09-27T07:30:07Z nowhereman_ joined #lisp 2018-09-27T07:30:26Z graphene quit (Remote host closed the connection) 2018-09-27T07:30:32Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T07:31:39Z graphene joined #lisp 2018-09-27T07:33:45Z shrdlu68 joined #lisp 2018-09-27T07:34:57Z shrdlu68: pjb: It occured to me that O(log n) ought not be 10 times slower than 0(1) when n=240 2018-09-27T07:35:06Z t0adst00l joined #lisp 2018-09-27T07:36:03Z shrdlu68: (the binary trees, bit vectors, hash-tables discussion) for context. 2018-09-27T07:36:25Z prometheus_falli quit (Ping timeout: 256 seconds) 2018-09-27T07:36:52Z angavrilov joined #lisp 2018-09-27T07:37:06Z Kundry_Wag joined #lisp 2018-09-27T07:39:04Z beach: shrdlu68: Different algorithms have different overhead, so different constant factors. Having said that, I should point out that lb(256) = 8 so 10 doesn't sound strange at all. 2018-09-27T07:39:30Z no-defun-allowed: yeah O(...) doesn't include constant factors 2018-09-27T07:39:45Z igemnace quit (Remote host closed the connection) 2018-09-27T07:41:43Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T07:41:47Z igemnace joined #lisp 2018-09-27T07:42:54Z shrdlu68: I see. 2018-09-27T07:44:10Z no-defun-allowed: so if using, say, O(n) lists and O(1) vectors, if vectors are 3 times slower (which is unlikely, just for an example), it's really O(n) and O(3) 2018-09-27T07:44:29Z beach: There is no such thing as O(3). 2018-09-27T07:44:30Z no-defun-allowed: O() just refers to the shape of the complexity if you were to plot it IMO 2018-09-27T07:44:48Z igemnace quit (Remote host closed the connection) 2018-09-27T07:44:51Z no-defun-allowed: that's true, O() doesn't really use constants 2018-09-27T07:45:56Z no-defun-allowed: to rephrase that, "the relative time taken for each structure would be n and 3" i guess 2018-09-27T07:46:58Z Kundry_Wag joined #lisp 2018-09-27T07:49:56Z shka_: shrdlu68: it is worth noting that hashtable have amortized constant time insert 2018-09-27T07:50:10Z shka_: but pesemistic time is linear ;-) 2018-09-27T07:50:23Z shka_: pesemistic search time 2018-09-27T07:51:46Z Kundry_Wag quit (Ping timeout: 244 seconds) 2018-09-27T07:58:17Z Kundry_Wag joined #lisp 2018-09-27T07:59:28Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T07:59:36Z Kundry_Wag joined #lisp 2018-09-27T08:00:47Z lemonpepper24 joined #lisp 2018-09-27T08:01:49Z Demosthenex: so where do you go for lispy news? reddit's /r/common_lisp? y combinator's hacker news? 2018-09-27T08:01:52Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T08:02:44Z beach: http://planet.lisp.org/ maybe? 2018-09-27T08:05:47Z Shinmera: Demosthenex: /r/lisp, planet lisp, here. 2018-09-27T08:07:38Z Demosthenex: Shinmera: so i'm well informed then ;] 2018-09-27T08:11:49Z Kundry_Wag joined #lisp 2018-09-27T08:16:44Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T08:17:16Z LdBeth uploaded an image: 屏幕快照 2018-09-27 上午1.16.43.png (400KB) < https://matrix.org/_matrix/media/v1/download/matrix.org/DJIrWfVadwmrKqPwZaxYbINN > 2018-09-27T08:17:21Z LdBeth: is this a bug? 2018-09-27T08:18:41Z beach: In your code, yes. 2018-09-27T08:19:22Z shka_: i am looking for blog post demonstrating petalisp 2018-09-27T08:19:25Z adlai: Demosthenex: no matter where i get my news, i have never encountered the journalist lispy enough to try slipping nestted parentheses by the copyeditor 2018-09-27T08:19:32Z shka_: can someone recommend me anything? 2018-09-27T08:19:47Z beach: shka_: Ask heisig. 2018-09-27T08:20:13Z shka_: hm, asking him to write it does not help :-) 2018-09-27T08:22:23Z LdBeth: beach: Seems I have a excuse for implement #= not very perfect 2018-09-27T08:23:32Z beach: What part do you think might be a bug, and do you think it might be a bug in CCL or something else? 2018-09-27T08:24:19Z LdBeth: In sbcl (slot-value (car (last z)) 'a) => (1 2 3 #) 2018-09-27T08:24:35Z LdBeth: and in ccl  (slot-value (car (last z)) 'a) => (1 T 1 2 3 #) 2018-09-27T08:24:46Z beach: Oh, yes, the T looks wrong. 2018-09-27T08:25:19Z LdBeth: becase i see SICL use closer-mop for this 2018-09-27T08:25:34Z beach: For what? 2018-09-27T08:25:47Z beach: Not for the reader. I use Eclector. 2018-09-27T08:26:06Z Bike: i'm not sure ## in a #. is valid 2018-09-27T08:26:19Z LdBeth: So it undefined behavior 2018-09-27T08:26:22Z Bike: the 1 T is probably ccl's pre-fixup artifact 2018-09-27T08:26:52Z beach: I agree with Bike that it is probably not valid. 2018-09-27T08:28:00Z LdBeth: it's a good news for me, which means reduced work 2018-09-27T08:28:32Z zfree joined #lisp 2018-09-27T08:29:05Z shka_: reduce #'* ;-) 2018-09-27T08:29:46Z LdBeth: GG 2018-09-27T08:31:05Z shka_: https://european-lisp-symposium.org/static/2018/heisig.pdf obviously, there ELS presentation 2018-09-27T08:31:15Z shka_: it looks lovely 2018-09-27T08:31:39Z shka_: i wonder what latex class was used for this 2018-09-27T08:32:07Z no-defun-allowed: $5 says beamer theme 2018-09-27T08:34:40Z Shinmera: no-defun-allowed: what's your guess on this one? https://github.com/Shinmera/talks/blob/master/els2018-glsl-oop/presentation/static.pdf 2018-09-27T08:35:11Z Bike quit (Quit: Lost terminal) 2018-09-27T08:35:47Z no-defun-allowed: o.o 2018-09-27T08:36:08Z shka_: no-defun-allowed: yeah, beamer, but what theme 2018-09-27T08:36:15Z shka_: anyway, content is cool as well 2018-09-27T08:36:51Z no-defun-allowed: i can't tell 2018-09-27T08:37:06Z Shinmera: The answer is this https://github.com/Shinmera/beamer 2018-09-27T08:37:10Z no-defun-allowed: i've only done one presentation with beamer and it was a default 2018-09-27T08:37:32Z no-defun-allowed: and the teacher used the google drive pdf viewer which is all blurry and horrible cause she didn't download it either she just zoomed in the browser 2018-09-27T08:38:17Z Shinmera: Or in action here https://www.youtube.com/watch?v=od6WI7JIJcQ&list=PLkDl6Irujx9PL5LfhvvkkeMiCiDij8jzM&index=5 2018-09-27T08:38:24Z no-defun-allowed: i only could tell beamer cause a. duh this is #lisp and b. i recognise the font 2018-09-27T08:39:30Z moei joined #lisp 2018-09-27T08:40:05Z Kundry_Wag joined #lisp 2018-09-27T08:41:17Z shka_: hm, petalisp looks kinda astonishing 2018-09-27T08:42:19Z no-defun-allowed: i have an idea for getting the money to go to els 2020 2018-09-27T08:42:36Z no-defun-allowed: petalisp does look very fancy 2018-09-27T08:42:37Z Shinmera: not 2019? 2018-09-27T08:42:54Z no-defun-allowed: in 2020 i'll be out of high school (probably) 2018-09-27T08:43:01Z Shinmera: 2020 isn't even decided yet where it is! 2018-09-27T08:43:14Z no-defun-allowed: 2019 is last week of term 1 and i'll be 18 in 2020 2018-09-27T08:43:31Z no-defun-allowed: Shinmera: it wouldn't be the ELS if it wasn't in Europe 2018-09-27T08:43:35Z ggole: Hmm, the petalisp operators remind me of star lisp a little 2018-09-27T08:43:35Z beach: Shinmera: In Europe, I would think. 2018-09-27T08:44:16Z Shinmera: beach: Well, maybe Didier will throw us for a loop! 2018-09-27T08:44:41Z beach: Maybe so. 2018-09-27T08:44:47Z no-defun-allowed: it's at least 12000km from here if it's in europe 2018-09-27T08:44:47Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T08:45:19Z Shinmera: You haven't heard this from me, but 2020 might be in Zürich. 2018-09-27T08:45:21Z no-defun-allowed: (tldr: watched a security conference, saw neat presentation on wpa cracking with fpga, wondered why no one sells these things to skiddies and or pentesters) 2018-09-27T08:45:32Z beach: Shinmera: That would be fantastic! 2018-09-27T08:45:41Z Shinmera: It would. 2018-09-27T08:46:07Z emaczen quit (Read error: Connection reset by peer) 2018-09-27T08:46:18Z no-defun-allowed: i've never been to europe so it'll be fantastic 2018-09-27T08:46:35Z emaczen joined #lisp 2018-09-27T08:47:25Z Kundry_Wag joined #lisp 2018-09-27T08:47:45Z beach: Shinmera: Would ETH support such a thing, like with free access to a lecture room? 2018-09-27T08:48:06Z no-defun-allowed: now i remember, ETH is in zurich 2018-09-27T08:48:09Z no-defun-allowed: that's the oberon people 2018-09-27T08:48:22Z beach: I think those days are over. 2018-09-27T08:48:52Z no-defun-allowed: :c 2018-09-27T08:48:57Z Shinmera: I'm still looking into that. I'm meeting with some googlers this Friday to see what we want to do. I'll try contacting the ETH secretary based on what we decide there 2018-09-27T08:49:09Z no-defun-allowed: that's a shame, oberon is rather nice 2018-09-27T08:49:50Z beach: Shinmera: Good plan. The Google people in Zürich might help as well. 2018-09-27T08:50:03Z francogrex joined #lisp 2018-09-27T08:50:20Z Shinmera: Yes, fe[nl]ix won't be here to help, but I'm meeting with trittweiler and another. 2018-09-27T08:50:28Z beach: Excellent! 2018-09-27T08:50:53Z beach: When I organized it, I got help from the region and the city as well. 2018-09-27T08:51:16Z francogrex: is there a reason why when I load clsql package, SBCL 1.4.2, recompile most of the already compiled file every time!? for example all files in clsql/uffi/ and clsql/db-oracle/ compiling (IN-PACKAGE #:CLSQL-UFFI)... etc. I though when nothing is changed it just loads the already compile files? 2018-09-27T08:51:57Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T08:52:16Z Kundry_Wag joined #lisp 2018-09-27T08:52:26Z heisig joined #lisp 2018-09-27T08:52:33Z no-defun-allowed: okay i think i figured out the cl-decentralise object system 2018-09-27T08:53:08Z no-defun-allowed: schema is usually used for documents of some kind and i think that's a more appropriate word though 2018-09-27T08:55:22Z longshi joined #lisp 2018-09-27T08:57:22Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-27T09:03:45Z edgar-rft quit (Quit: Leaving) 2018-09-27T09:04:17Z Kundry_Wag joined #lisp 2018-09-27T09:07:21Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T09:07:44Z Kundry_Wag joined #lisp 2018-09-27T09:10:20Z phoe: Is there a one-liner to generate a nested list? 2018-09-27T09:10:28Z phoe: Like (make-nested-list-6) ;=> (((((()))))) 2018-09-27T09:11:22Z phoe: (loop repeat 3 for list = nil then (list list) finally (return list)) - OK, found it. 2018-09-27T09:12:12Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T09:12:50Z madrik quit (Ping timeout: 252 seconds) 2018-09-27T09:15:03Z Shinmera: phoe: (reduce 'cons (make-list 7)) 2018-09-27T09:15:03Z heisig: Ah, I see people demanding more documentation for Petalisp. Well, I am working on it... but I am not willing to document an API that is still under development. Give me a few more weeks. 2018-09-27T09:21:08Z Kundry_Wag joined #lisp 2018-09-27T09:28:09Z groovy2shoes quit (Quit: moritura te salutat) 2018-09-27T09:31:16Z southy joined #lisp 2018-09-27T09:35:36Z southy quit (Ping timeout: 252 seconds) 2018-09-27T09:36:36Z phoe: Shinmera: woah, right 2018-09-27T09:37:57Z Shinmera: :) 2018-09-27T09:39:24Z phoe: (: 2018-09-27T09:41:26Z francogrex quit (Quit: ERC (IRC client for Emacs 25.3.1)) 2018-09-27T09:42:47Z t0adst00l quit (Ping timeout: 256 seconds) 2018-09-27T09:44:19Z orivej joined #lisp 2018-09-27T09:44:57Z razzy: ELS in zurich would make me very happy. 2018-09-27T09:45:19Z Shinmera: razzy: Why's that? 2018-09-27T09:45:59Z shrdlu68: Ah, I failed at (reduce #'list (make-list 6)) 2018-09-27T09:47:16Z shka_: heisig: it's cool, btw, can we add alias "alpha" for greek alpha? 2018-09-27T09:47:34Z shka_: and "beta" for beta? 2018-09-27T09:47:55Z igemnace joined #lisp 2018-09-27T09:50:05Z ggole: (nested-funcall 7 #'list nil) would be cleaner imho, but then you need to write nested-funcall 2018-09-27T09:50:26Z ggole: There's probably one in Alexandria... 2018-09-27T09:52:55Z shka_: heisig: so people could either customize their input to include greek letters, or use pretty lambda in emacs or just stick to plain old ascii 2018-09-27T09:53:02Z razzy: Shinmera: i can hope to see zurich, eth and els at the same time :] 2018-09-27T09:53:19Z longshi quit (Ping timeout: 250 seconds) 2018-09-27T09:53:42Z Kundry_Wag quit (Ping timeout: 250 seconds) 2018-09-27T09:55:58Z razzy: 2020 i can make it, if i plan accordingly 2018-09-27T09:57:02Z Kundry_Wag joined #lisp 2018-09-27T10:00:05Z heisig: shka_: The aliases are already there! I am listening to community feedback :-) 2018-09-27T10:00:28Z shka_: heisig: oh, cool, i was checking in the quicklisp version 2018-09-27T10:00:32Z shka_: and did not find them 2018-09-27T10:00:42Z shka_: maybe this version is old 2018-09-27T10:00:53Z shka_: anyway, i think that your project looks sweeeeeeeeeet! 2018-09-27T10:01:47Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T10:04:31Z anewuser joined #lisp 2018-09-27T10:05:32Z Kundry_Wag joined #lisp 2018-09-27T10:07:15Z heisig: shka_: Thank you! I hope I get the native code generator working again before the next Quicklisp release. At the moment, Petalisp is extremely slow. 2018-09-27T10:10:35Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-27T10:11:43Z shka_: heisig: i hope so to! 2018-09-27T10:12:33Z Kundry_Wag joined #lisp 2018-09-27T10:12:41Z shka_: heisig: btw, is GPU computation is still considered to be a future feature? 2018-09-27T10:14:18Z heisig: Yes, but the dependency chain is: 1. Fast single threaded code 2. fast multi-threaded code 3. MPI parallel code 4. A GPU backend. 2018-09-27T10:16:15Z jackdaniel: 5. Oracle-based answers. 2018-09-27T10:17:08Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T10:17:28Z t0adst00l joined #lisp 2018-09-27T10:18:59Z heisig: The company?!? Or some machine-learning magic? 2018-09-27T10:21:42Z jackdaniel: many thesis include metaphore of oracle which always returns correct results in no time (as a means of comparison) 2018-09-27T10:21:47Z jackdaniel: I believe company name came from that 2018-09-27T10:22:19Z jackdaniel: heisig: https://en.wikipedia.org/wiki/Oracle_machine ← 2018-09-27T10:22:31Z shka_: heisig: ok, so MPI goes before GPU 2018-09-27T10:22:33Z shka_: ok 2018-09-27T10:22:43Z dim: I've seen references of “God's algorithm” in some papers too, and used that to show pgloader as the next best thing ;-) 2018-09-27T10:23:02Z jackdaniel: hueh, demi-god software incorporated 2018-09-27T10:23:13Z dim: how fast can you sort this huge vector? well if you're God, it's already sorted before you need it that way, right? 2018-09-27T10:23:31Z shka_: folks, how can i find-method but without knowing the exact class of specializers? 2018-09-27T10:24:04Z dim: in the case of pgloader it was like if you're God then your database is already running with PostgreSQL, no wonder, the next best thing is ./pgloader mysql://localhost/dbname pgsql://localhost/dbname and be done with it already; so that's what pgloader does 2018-09-27T10:24:06Z dim: anyway 2018-09-27T10:24:11Z shka_: namely (defclass foo (bar)...) 2018-09-27T10:24:17Z shka_: and i have method for bar 2018-09-27T10:24:26Z dim: was fun, the approach worked very well in the presentation: people did have a laugh and then though about it 2018-09-27T10:24:31Z jackdaniel: (c2mop:generic-function-methods …) 2018-09-27T10:24:33Z beach: shka_: What do you expect it to return if you don't know the specializers? 2018-09-27T10:24:56Z shka_: jackdaniel: well, it is about inheritance, really 2018-09-27T10:24:58Z beach: shka_: Do you want the applicable methods? 2018-09-27T10:24:59Z hydan joined #lisp 2018-09-27T10:25:00Z shka_: jackdaniel: thanks 2018-09-27T10:25:06Z shka_: beach: yeah, that's what i want 2018-09-27T10:25:15Z beach: mop compute-applicable-methods 2018-09-27T10:25:15Z specbot: http://metamodular.com/CLOS-MOP/compute-applicable-methods.html 2018-09-27T10:25:15Z shka_: actually it is sufficient if it exists 2018-09-27T10:25:23Z shka_: oooh! 2018-09-27T10:25:25Z shka_: ok 2018-09-27T10:25:27Z shka_: thanks :-) 2018-09-27T10:26:00Z shka_: jackdaniel: sorry, i wanted to highlight beach 2018-09-27T10:26:24Z jackdaniel: with "thanks"? well, that certainly suprised me, yes 2018-09-27T10:26:58Z shka_: jackdaniel: with inheritance 2018-09-27T10:27:05Z SaganMan quit (Ping timeout: 252 seconds) 2018-09-27T10:27:42Z shka_: beach: and what if i don't have instances of classes, but just class names? 2018-09-27T10:28:00Z jackdaniel: try expand method 2018-09-27T10:28:06Z shka_: oh, ok 2018-09-27T10:28:07Z jackdaniel: you'll get right of the bat: (c2mop:compute-applicable-methods-using-classes 2018-09-27T10:28:16Z shka_: ooooooooh, neat 2018-09-27T10:28:59Z shka_: i like how mop has those layers of functions for extra dispatch 2018-09-27T10:29:18Z splittist likes the idea of ELS ZRH too. 2018-09-27T10:29:57Z razzy: heisig: i very much liked code shattered to graph-structure you are using. forget the name 2018-09-27T10:30:07Z eminhi_ joined #lisp 2018-09-27T10:30:37Z razzy: *i forgoten the name 2018-09-27T10:30:58Z shka_: jackdaniel: that works perfectly :D 2018-09-27T10:31:00Z shka_: awesome 2018-09-27T10:31:07Z eminhi quit (Ping timeout: 240 seconds) 2018-09-27T10:31:11Z SaganMan joined #lisp 2018-09-27T10:31:26Z jackdaniel: see, that's why I was suprised in the first place. glad it works 2018-09-27T10:31:38Z jackdaniel: btw, is it me or c2mop doesnt export compute-applicable-methods ? 2018-09-27T10:31:47Z jackdaniel: (only the variant with classes) 2018-09-27T10:33:19Z jackdaniel: ah, that's because function is part of cl package 2018-09-27T10:33:51Z igemnace quit (Remote host closed the connection) 2018-09-27T10:34:01Z shka_: indeed it is 2018-09-27T10:34:51Z heisig: razzy: Treating lazy arrays as data flow graph nodes? That works well. It gets somewhat funny once you start supporting functions with multiple return values. That is what I'm working on right now. 2018-09-27T10:35:32Z razzy: heisig: how funny? 2018-09-27T10:38:32Z shka_: i think that i already seen restructuring (tau) in petalisp 2018-09-27T10:39:40Z shka_: or not 2018-09-27T10:40:10Z razzy: data flow graph nodes seem most natural of the basic-code representation 2018-09-27T10:40:14Z razzy: to me 2018-09-27T10:43:06Z SaganMan quit (Ping timeout: 264 seconds) 2018-09-27T10:43:27Z heisig: razzy: Well, you get one array of all first values, one array of all second values and so on. But when several of the multiple value arrays are used in the same computation, you want to merge them back to a single call to the multiple valued function. I hope this makes sense. 2018-09-27T10:44:35Z russellw: suppose you are calling a function with a list, on which you want to apply destructuring. You can take it as a parameter, then use destructuring-bind. But is there a way to make the destructuring happen right there in the function call? A destructuring-defun, so to speak? 2018-09-27T10:46:41Z Kundry_Wag joined #lisp 2018-09-27T10:47:14Z heisig: russellw: That would be a different calling convention, so no. But you can have a look at TRIVIA:DEFUN-MATCH. 2018-09-27T10:47:53Z russellw: Okay thanks 2018-09-27T10:48:55Z russellw: also to concatenate several strings, this can be done with (concatenate 'string a b c). But suppose a and b are strings but c is a list of strings, what's the best way? 2018-09-27T10:49:21Z igemnace joined #lisp 2018-09-27T10:49:35Z heisig: (apply #'concatenate 'string a b c)? 2018-09-27T10:49:51Z shka_: or format 2018-09-27T10:50:03Z eminhi_: doesn't defmacro do some destructuring in lambda list? 2018-09-27T10:50:34Z shka_: yes 2018-09-27T10:50:36Z russellw: thanks! 2018-09-27T10:50:38Z shka_: but not defun 2018-09-27T10:51:07Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-27T10:54:21Z eminhi_ quit (Quit: leaving) 2018-09-27T11:00:27Z dddddd joined #lisp 2018-09-27T11:00:28Z esrse quit (Ping timeout: 245 seconds) 2018-09-27T11:04:13Z SaganMan joined #lisp 2018-09-27T11:07:24Z Achylles joined #lisp 2018-09-27T11:08:17Z moei quit (Read error: Connection reset by peer) 2018-09-27T11:08:34Z robotoad quit (Read error: Connection reset by peer) 2018-09-27T11:08:53Z moei joined #lisp 2018-09-27T11:09:58Z robotoad joined #lisp 2018-09-27T11:12:07Z russellw: to print a list of items comma-separated, (format nil "~{~a~^,~}" '(1 2 3)) can be used. but suppose instead of a hardcoded comma, the separator itself must be a parameter. Can format do this? 2018-09-27T11:13:04Z SaganMan quit (Ping timeout: 240 seconds) 2018-09-27T11:15:47Z edgar-rft joined #lisp 2018-09-27T11:18:30Z heisig: russellw: Since you can call arbitrary functions from a format string via ~/NAME/, the answer to "can format do this?" is always yes. The question is whether it will be aesthetically pleasing. The easiest way for you is probably to use another format call to produce the format string with a separator of choice.. 2018-09-27T11:18:55Z Essadon joined #lisp 2018-09-27T11:19:54Z anewuser quit (Ping timeout: 252 seconds) 2018-09-27T11:20:05Z russellw: heisig, I see what you mean. Or maybe instead of overloading format that badly, there might be a reasonably elegant idiom for just doing it with LOOP 2018-09-27T11:24:00Z |3b|: (with-output-to-string (s) (loop for (i . more) on list do (format s "~a~:[~;~a~]" i more separator))) ? 2018-09-27T11:24:44Z Shinmera: razzy: Fair enough (wrt els) 2018-09-27T11:24:58Z |3b|: though might be better to just use do (format s "~a" i) when more do (format s "~a" separator) 2018-09-27T11:25:06Z Kundry_Wag joined #lisp 2018-09-27T11:25:45Z russellw: |3b| I had no idea loop could do that. Thanks! 2018-09-27T11:26:09Z |3b|: latter is more obvious, and not really enough else happening in the format string to require combining them 2018-09-27T11:26:32Z |3b|: yeah, lots of useful tricks with loop destructuring and FOR .. ON 2018-09-27T11:29:38Z Kundry_Wag quit (Ping timeout: 245 seconds) 2018-09-27T11:30:05Z |3b|: (i . more) in LOOP destructuring is like (i &rest more) in normal destructuring, and ON binds all of remainder of list each time, so each step gets the car of current part of list in I, and cdr in MORE 2018-09-27T11:31:46Z |3b|: (well, . also works like that in 'normal' destructuring, but i'd hope not to see it in anything but code golf or really old code :) 2018-09-27T11:32:35Z southy joined #lisp 2018-09-27T11:34:27Z gravicappa joined #lisp 2018-09-27T11:36:43Z Kundry_Wag joined #lisp 2018-09-27T11:36:51Z southy quit (Ping timeout: 252 seconds) 2018-09-27T11:38:24Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T11:38:44Z Kundry_Wag joined #lisp 2018-09-27T11:39:45Z marvin2 joined #lisp 2018-09-27T11:40:53Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T11:49:32Z longshi joined #lisp 2018-09-27T11:51:19Z Kundry_Wag joined #lisp 2018-09-27T11:53:04Z russellw quit (Ping timeout: 240 seconds) 2018-09-27T12:00:19Z russellw joined #lisp 2018-09-27T12:01:48Z SaganMan joined #lisp 2018-09-27T12:09:19Z lanu1 joined #lisp 2018-09-27T12:11:22Z lanu1 is now known as lanu 2018-09-27T12:13:31Z frodef: in sbcl/slime, is there any way to inject something that will look like a stack-frame without having an actual function? 2018-09-27T12:13:46Z frodef: e.g. like (with-stack-info (..) ...) 2018-09-27T12:13:53Z frodef: ..that shows up in the backtrace 2018-09-27T12:14:48Z zfree quit (Quit: zfree) 2018-09-27T12:14:57Z Shinmera: with what purpose 2018-09-27T12:15:24Z frodef: having more informative backtrace 2018-09-27T12:16:00Z longshi quit (Ping timeout: 252 seconds) 2018-09-27T12:16:01Z Shinmera: a local function can do that, as long as you make sure to declare it notinline. 2018-09-27T12:17:03Z frodef: sure. Just thought there might be explicit support, seems like a worthwhile mechanism to me. 2018-09-27T12:17:34Z Shinmera: the stack is for stack frames. seems weird to have support for anything else. 2018-09-27T12:18:42Z frodef: it'd just be another stack-frame feature, I suppose. 2018-09-27T12:18:46Z frodef: not unlike restarts. 2018-09-27T12:19:00Z Shinmera: just make a function call 2018-09-27T12:19:10Z pfdietz: So you could implement with-stack-info as a macro that produces a flet with a notinline declaration. 2018-09-27T12:19:38Z pfdietz: More interesting would be more standard ways of tracing such local functions. 2018-09-27T12:20:22Z Shinmera: I do something like this in dissect to identify stack caps. https://github.com/Shinmera/dissect/blob/master/interface.lisp#L15-L20 2018-09-27T12:23:43Z shka_: neat trick 2018-09-27T12:24:33Z Kundry_Wag quit (Ping timeout: 250 seconds) 2018-09-27T12:28:48Z regreg_ quit (Ping timeout: 245 seconds) 2018-09-27T12:31:04Z potatonomicon joined #lisp 2018-09-27T12:31:39Z Kundry_Wag joined #lisp 2018-09-27T12:32:37Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T12:32:56Z Kundry_Wag joined #lisp 2018-09-27T12:33:43Z shka_: heisig: btw, how did you made petalisp portable? 2018-09-27T12:33:51Z m00natic joined #lisp 2018-09-27T12:34:36Z k-hos quit (Ping timeout: 272 seconds) 2018-09-27T12:35:42Z heisig: shka_: I use CL:COMPILE to produce fast code and avoid non-Lisp dependencies. 2018-09-27T12:36:17Z igemnace quit (Quit: WeeChat 2.2) 2018-09-27T12:36:20Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-27T12:36:50Z LdBeth almost forget about compile 2018-09-27T12:37:26Z Bike joined #lisp 2018-09-27T12:37:28Z shka_: heisig: ok, cool 2018-09-27T12:37:34Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-27T12:37:58Z shka_: so basicly, you are generating code, compiling it then run 2018-09-27T12:38:11Z shka_: is there anything more in the loop? 2018-09-27T12:38:27Z heisig: In the loop? 2018-09-27T12:39:22Z shka_: well, in basic workflow 2018-09-27T12:40:38Z heisig: Ah, not the CL:LOOP. Yes, there is plenty of data flow graph optimization and - most importantly - normalization, so that I can cache and reuse compiled code. 2018-09-27T12:41:08Z shka_: right 2018-09-27T12:41:26Z Kundry_Wag joined #lisp 2018-09-27T12:41:52Z LdBeth: sounds like what fb had recently released 2018-09-27T12:42:42Z shka_: sounds like compiler to me 2018-09-27T12:43:03Z shka_: it is like lisp extension essentially 2018-09-27T12:43:11Z LdBeth: http://skiplang.com 2018-09-27T12:44:09Z LdBeth: I have to go sleep, it's almost 6 am 2018-09-27T12:44:23Z LdBeth: seeya 2018-09-27T12:44:25Z shka_: did you mean: get up? :D 2018-09-27T12:44:50Z |3b|: you mean "have lunch"? 2018-09-27T12:45:56Z LdBeth: GG 2018-09-27T12:47:11Z SenasOzys joined #lisp 2018-09-27T12:50:30Z Kundry_Wag quit (Remote host closed the connection) 2018-09-27T12:51:05Z Kundry_Wag joined #lisp 2018-09-27T12:54:22Z lanu quit (Quit: lanu) 2018-09-27T12:55:16Z Kundry_Wag quit (Ping timeout: 250 seconds) 2018-09-27T12:55:43Z shka_ quit (Quit: WeeChat 1.9.1) 2018-09-27T12:59:01Z Kundry_Wag joined #lisp 2018-09-27T13:01:21Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T13:01:40Z Kundry_Wag joined #lisp 2018-09-27T13:02:11Z scymtym quit (Ping timeout: 260 seconds) 2018-09-27T13:04:42Z Oddity quit (Ping timeout: 264 seconds) 2018-09-27T13:06:25Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-27T13:07:25Z vtomole quit (Ping timeout: 256 seconds) 2018-09-27T13:09:08Z Oddity joined #lisp 2018-09-27T13:09:15Z Guest5800_ joined #lisp 2018-09-27T13:13:37Z groovy2shoes joined #lisp 2018-09-27T13:13:50Z regreg_ joined #lisp 2018-09-27T13:13:57Z scroll joined #lisp 2018-09-27T13:15:04Z rnmhdn quit (Ping timeout: 240 seconds) 2018-09-27T13:15:46Z atgreen quit (Ping timeout: 272 seconds) 2018-09-27T13:16:25Z Kundry_Wag joined #lisp 2018-09-27T13:20:18Z vtomole joined #lisp 2018-09-27T13:20:51Z Kundry_Wag quit (Ping timeout: 260 seconds) 2018-09-27T13:21:28Z razzy: LdBeth: "skip what you already computed" :D awesome 2018-09-27T13:22:54Z warweasle joined #lisp 2018-09-27T13:24:48Z heisig: Two red flags about Skip: "Skip achieved [efficient memoization-based caching] via a static type system ..." and "Skip is no longer under active development at Facebook". 2018-09-27T13:30:34Z FreeBirdLjj joined #lisp 2018-09-27T13:35:24Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-27T13:38:56Z Kundry_Wag joined #lisp 2018-09-27T13:43:31Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-27T13:44:04Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-27T13:48:32Z Kundry_Wag joined #lisp 2018-09-27T13:52:47Z Kundry_Wag quit (Ping timeout: 240 seconds) 2018-09-27T13:53:59Z thetemplar joined #lisp 2018-09-27T13:58:51Z arej quit (Ping timeout: 252 seconds) 2018-09-27T14:04:38Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-27T14:07:06Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-27T14:12:46Z lemonpepper24 quit (Ping timeout: 272 seconds) 2018-09-27T14:12:51Z pierpal quit (Read error: Connection reset by peer) 2018-09-27T14:13:24Z astronavt joined #lisp 2018-09-27T14:14:23Z atgreen joined #lisp 2018-09-27T14:14:36Z astronavt_ joined #lisp 2018-09-27T14:18:38Z astronavt quit (Ping timeout: 252 seconds) 2018-09-27T14:21:50Z SenasOzys quit (Remote host closed the connection) 2018-09-27T14:21:56Z igemnace joined #lisp 2018-09-27T14:22:09Z SenasOzys joined #lisp 2018-09-27T14:26:30Z frodef quit (Ping timeout: 244 seconds) 2018-09-27T14:31:08Z FreeBirdLjj joined #lisp 2018-09-27T14:32:59Z Bike quit (Ping timeout: 256 seconds) 2018-09-27T14:34:55Z pierpal joined #lisp 2018-09-27T14:36:26Z atgreen quit (Remote host closed the connection) 2018-09-27T14:42:12Z NB0X-Matt-CA quit (Remote host closed the connection) 2018-09-27T14:42:48Z NB0X-Matt-CA joined #lisp 2018-09-27T14:46:08Z pierpal quit (Ping timeout: 252 seconds) 2018-09-27T14:47:11Z orivej quit (Ping timeout: 260 seconds) 2018-09-27T14:47:54Z pierpal joined #lisp 2018-09-27T14:50:31Z pierpal quit (Read error: Connection reset by peer) 2018-09-27T14:50:49Z pierpal joined #lisp 2018-09-27T14:55:28Z jkordani_ joined #lisp 2018-09-27T14:55:30Z pierpal quit (Ping timeout: 252 seconds) 2018-09-27T14:56:36Z nsrahmad joined #lisp 2018-09-27T14:59:34Z jkordani quit (Ping timeout: 244 seconds) 2018-09-27T15:00:19Z frgo quit (Remote host closed the connection) 2018-09-27T15:02:59Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-27T15:04:52Z warweasle is now known as warweasle_bbib 2018-09-27T15:07:10Z FreeBirdLjj joined #lisp 2018-09-27T15:08:08Z heisig quit (Ping timeout: 252 seconds) 2018-09-27T15:09:15Z frgo joined #lisp 2018-09-27T15:10:03Z shrdlu68 quit (Ping timeout: 245 seconds) 2018-09-27T15:11:59Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-27T15:12:27Z regreg_ quit (Ping timeout: 240 seconds) 2018-09-27T15:14:05Z FreeBirdLjj joined #lisp 2018-09-27T15:14:12Z frgo quit (Ping timeout: 272 seconds) 2018-09-27T15:16:48Z v0|d: anybody know a software verification suite written in CL? 2018-09-27T15:19:05Z SenasOzys quit (Remote host closed the connection) 2018-09-27T15:19:17Z SenasOzys joined #lisp 2018-09-27T15:19:27Z dim: yeah, I think I saw one the other day, something that's at least 30 years old and seemed to have a modern offering to it, but I can't remember any name, it was tweeted by Rainer Joswig 2018-09-27T15:20:23Z v0|d: interesting. 2018-09-27T15:22:00Z orivej joined #lisp 2018-09-27T15:25:48Z m00natic: ACL2 probably 2018-09-27T15:26:41Z cage_ joined #lisp 2018-09-27T15:27:39Z frodef joined #lisp 2018-09-27T15:30:08Z gravicappa quit (Ping timeout: 252 seconds) 2018-09-27T15:33:50Z southy joined #lisp 2018-09-27T15:34:08Z frgo joined #lisp 2018-09-27T15:34:51Z flamebeard quit 2018-09-27T15:35:04Z v0|d: I wonder what ppl use for white-box testing these days. 2018-09-27T15:35:26Z v0|d: for instance generating test-cases for coverage for an algo written in lang X. 2018-09-27T15:35:31Z graphene quit (Remote host closed the connection) 2018-09-27T15:36:48Z graphene joined #lisp 2018-09-27T15:38:19Z southy quit (Ping timeout: 244 seconds) 2018-09-27T15:42:09Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-27T15:42:57Z FreeBirdLjj joined #lisp 2018-09-27T15:43:27Z astronavt_ is now known as astronavt 2018-09-27T15:43:36Z gendl: Xach: any chance of getting the planet Lisp link to google calendar of Lisp meetings working again? 2018-09-27T15:44:27Z gendl: I want to try scheduling another Detroit meetup. 2018-09-27T15:45:32Z varjag joined #lisp 2018-09-27T15:45:56Z shka_ joined #lisp 2018-09-27T15:46:10Z shka_: good evening 2018-09-27T15:47:11Z gendl: heisig: check out Gendl.org for an actively maintained, dynamically-typed, Lisp-based system which sounds something like Skip (plus more, also minus a bunch of stuff too I’m sure). 2018-09-27T15:48:24Z FreeBirdLjj quit (Ping timeout: 272 seconds) 2018-09-27T15:51:28Z FreeBirdLjj joined #lisp 2018-09-27T15:52:33Z shka_: what the heck is skip anyway? 2018-09-27T15:53:09Z shka_: scratch that, not a lisp question 2018-09-27T15:54:38Z NB0X-Matt-CA quit (Remote host closed the connection) 2018-09-27T15:55:12Z NB0X-Matt-CA joined #lisp 2018-09-27T15:55:48Z dolohov quit (Quit: WeeChat 2.2) 2018-09-27T15:56:35Z Blackbeard: hi 2018-09-27T15:56:35Z Blackbeard: I just wrote my first package 2018-09-27T15:56:38Z Blackbeard: https://gitlab.com/soybarbanegra/stumpwm-wallpapers 2018-09-27T15:57:13Z Blackbeard: if anyone wants to give me some feedback I will appreciate it :) 2018-09-27T15:57:24Z shka_: Blackbeard: first of, congrats 2018-09-27T15:57:54Z southy joined #lisp 2018-09-27T15:58:15Z scymtym joined #lisp 2018-09-27T15:59:04Z shka_: defcommand needs progn? 2018-09-27T15:59:06Z shka_: yuck 2018-09-27T15:59:13Z graphene quit (Remote host closed the connection) 2018-09-27T16:00:26Z Blackbeard: shka_: I don't know :) I just used it 2018-09-27T16:00:31Z graphene joined #lisp 2018-09-27T16:00:56Z shka_: i don't understand what happens at line 83 2018-09-27T16:01:12Z shka_: i suspect some kind of mistake 2018-09-27T16:01:34Z Blackbeard: shka_: line 83? 2018-09-27T16:01:35Z shka_: uh no 2018-09-27T16:01:40Z shka_: old.lisp 2018-09-27T16:01:52Z shka_: i don't understand this function 2018-09-27T16:01:57Z Blackbeard: ohh sorry I should delete old.lisp 2018-09-27T16:02:03Z Blackbeard: I forgot that 2018-09-27T16:02:09Z Blackbeard: it is wallpapers.lisp 2018-09-27T16:02:09Z LiamH joined #lisp 2018-09-27T16:02:10Z shka_: oh, ok 2018-09-27T16:02:19Z robotoad quit (Quit: robotoad) 2018-09-27T16:02:28Z Blackbeard: let me delete it 2018-09-27T16:02:28Z shka_: well kill-wallpaper-timer is mystery to me 2018-09-27T16:03:05Z shka_: other then that, nothing really screams "bad" at me 2018-09-27T16:03:06Z shka_: but i am not an expert 2018-09-27T16:03:06Z Blackbeard: shka_: oh ok 2018-09-27T16:03:15Z Blackbeard: so stumpwm has a list of timers 2018-09-27T16:03:28Z Blackbeard: *timer-list* 2018-09-27T16:03:37Z Blackbeard: so I loop in the stumpwm::*timer-list* 2018-09-27T16:03:54Z shka_: and those timers are functions? 2018-09-27T16:04:01Z Blackbeard: and then I check if the function of each timer is #'set-random-wallpaper 2018-09-27T16:04:14Z Blackbeard: if it is 2018-09-27T16:04:16Z Blackbeard: I kill that timer 2018-09-27T16:04:21Z shka_: hm 2018-09-27T16:04:22Z shka_: ok 2018-09-27T16:04:34Z Blackbeard: I only kill those timers, because the user might have timers for other things 2018-09-27T16:04:58Z shka_: i think you can use eq here 2018-09-27T16:05:06Z shka_: instead of equal 2018-09-27T16:05:10Z Blackbeard: I need to kill the wallpapers timers because if you decide to change your timer the other would still run 2018-09-27T16:05:11Z shifty quit (Ping timeout: 244 seconds) 2018-09-27T16:05:12Z Blackbeard: so it needs to be killed 2018-09-27T16:05:19Z Blackbeard: ohh 2018-09-27T16:05:26Z Blackbeard: ok i will do that :) 2018-09-27T16:05:44Z Blackbeard: I am a little confused and overwhelmed with all the equality functions 2018-09-27T16:05:45Z Blackbeard: haha 2018-09-27T16:05:48Z shka_: i don't know that much about stumpwm so i can't comment any further 2018-09-27T16:05:53Z orivej quit (Ping timeout: 245 seconds) 2018-09-27T16:06:32Z Blackbeard: shka_: thanks :) you are the first person to check my code eer 2018-09-27T16:10:01Z warweasle_bbib is now known as warweasle 2018-09-27T16:13:38Z shka_: no problem man 2018-09-27T16:14:08Z graphene quit (Remote host closed the connection) 2018-09-27T16:15:45Z graphene joined #lisp 2018-09-27T16:16:14Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-27T16:16:27Z southy quit (Ping timeout: 240 seconds) 2018-09-27T16:19:45Z trittweiler: Blackbeard, the longer the name of the equivalence function, the broader its concept of equivalence is. EQ just compares by memory address, EQL additionally compares numbers and character by identity (their memory address might be different, thing of boxed numbers), equal also compares lists and arrays (including strings), case sensitively, and equalp is like equal but compares case insensitively. There are a few more details, but that's essentially i 2018-09-27T16:19:45Z trittweiler: t. 2018-09-27T16:21:29Z trittweiler: equalp also compares structures and hash-tables element-wise, though again case insensitively 2018-09-27T16:24:39Z dale_ joined #lisp 2018-09-27T16:24:42Z shka_: i never understood case insensitivity here 2018-09-27T16:24:47Z shka_: just why 2018-09-27T16:24:58Z dale_ is now known as dale 2018-09-27T16:25:12Z Blackbeard: trittweiler: ooohhh 2018-09-27T16:25:17Z Blackbeard: that is such a great explanation 2018-09-27T16:25:22Z Blackbeard: it belongs in a book 2018-09-27T16:25:24Z Blackbeard: 🤔 2018-09-27T16:26:16Z pierpal joined #lisp 2018-09-27T16:26:52Z dale quit (Client Quit) 2018-09-27T16:28:07Z dale_ joined #lisp 2018-09-27T16:28:17Z Shinmera: Blackbeard: a similar explanation is in PCL, so your wish had been granted before you even had it 2018-09-27T16:28:26Z dale_ is now known as dale 2018-09-27T16:28:35Z shka_: heh 2018-09-27T16:28:47Z trittweiler: Yeah was just going to paste http://www.gigamonkeys.com/book/syntax-and-semantics.html search for EQ 2018-09-27T16:28:49Z shka_: btw, PCL is a good book 2018-09-27T16:29:14Z shka_: it can't be recommended enough 2018-09-27T16:30:22Z Blackbeard: ahh 2018-09-27T16:30:44Z Blackbeard: great 2018-09-27T16:30:48Z Blackbeard: I must accept I learned from 2018-09-27T16:30:49Z Blackbeard: How to Design Programs 2018-09-27T16:30:50Z Blackbeard: so I don't know the details of common lisp 2018-09-27T16:31:21Z Blackbeard: or general coding conventions 2018-09-27T16:31:25Z Blackbeard: that's why I use the arrows 2018-09-27T16:31:34Z Blackbeard: I learned that in HtDP 2018-09-27T16:31:54Z Blackbeard: But I wanna code something more meaningful now 2018-09-27T16:31:58Z Shinmera: do yourself, and everyone else, a favour and read PCL 2018-09-27T16:32:00Z Folkol joined #lisp 2018-09-27T16:32:35Z Blackbeard: Shinmera: ok 2018-09-27T16:33:20Z SenasOzys quit (Read error: Connection reset by peer) 2018-09-27T16:41:29Z Kundry_Wag joined #lisp 2018-09-27T16:42:48Z pjb: shka_: it's random. It's just because equal and equalp are called recursively, and in the case of strings, equal is case sensitive and equalp is case insensitve. 2018-09-27T16:42:48Z minion: pjb, memo from shrdlu68: I'll give this a try, thanks! 2018-09-27T16:43:24Z pjb: shka_: again, if you're not happy with that, define your own equals methods. 2018-09-27T16:43:41Z Kundry_Wag quit (Read error: No route to host) 2018-09-27T16:44:40Z shka_: hmmm 2018-09-27T16:44:42Z shka_: ok 2018-09-27T16:44:42Z pjb: Common Lisp is a hybrid programming language. It's the oldest and also the most modern. It's the lowest level programming language, but also the highest level programming language thanks to the macros. 2018-09-27T16:45:00Z wiselord joined #lisp 2018-09-27T16:45:14Z pjb: It's a big ball of mud, but also the cleanest programming language (since thanks to meta-programming, you can clean it as aseptically as you wish). 2018-09-27T16:45:26Z pjb: There are no parenthesis, but you only see them. 2018-09-27T16:45:30Z jkordani joined #lisp 2018-09-27T16:45:38Z pjb: There are no lists! but it's called LISt Processing! 2018-09-27T16:47:20Z pjb: Not only it's an elephant, but an alien elephant at that (you don't even recognize the parts you touch). And while it's an elephant, it's small compared to other programming languages (java, c++, r7rs, etc). 2018-09-27T16:48:09Z pjb: It has fun with you: program parameters shall be defined with defvar, global variables shall be defined with defparameter! 2018-09-27T16:48:22Z pjb: and you can have fun with it! Just write a macro! 2018-09-27T16:48:54Z wiselord: hi! help me plz, i use ccl on windows. (ql:quickload 'cl+ssl) return error: libssl32.dll or ssley32.dll unable to load, i realized what i need to install openssl, but where do i put files "ssley32.dll" and "ssleay32.dll"? 2018-09-27T16:49:13Z jkordani_ quit (Ping timeout: 245 seconds) 2018-09-27T16:49:15Z |3b|: anywhere on %PATH% i think 2018-09-27T16:49:33Z |3b|: or possibly working directory would work 2018-09-27T16:49:38Z pjb: or you may specify the paths to the libraries in cffi:**. 2018-09-27T16:50:09Z |3b|: cffi:*foreign-library-directories* 2018-09-27T16:50:28Z pjb: cffi:*foreign-library-directories* yes. 2018-09-27T16:53:45Z wiselord: but where can i write it? in ccl-init.lisp? 2018-09-27T16:54:24Z wiselord: current cffi:*foreign-library-directories* NIL 2018-09-27T16:54:54Z jasom: wiselord: you can write it wherever you want. You can also copy the DLLs into the same directory as CCL, but that's kind of an ugly solution. 2018-09-27T16:57:18Z pjb: wiselord: possibly. But since you're using Common Lisp, and may use another CL implementation, I would advise to use a ~/rc/common.lisp file and load it from all the rc files. 2018-09-27T16:57:36Z pjb: wiselord: eg. https://github.com/informatimago?rc 2018-09-27T16:57:40Z pjb: cf. Makefile for the symlinks. 2018-09-27T16:58:12Z pjb: (don't use my rc files, you'd be puzzled; but writing your own you may follow the model). 2018-09-27T16:59:20Z quazimodo quit (Ping timeout: 272 seconds) 2018-09-27T16:59:44Z wiselord: ok, thank 2018-09-27T17:02:35Z qapples quit (Ping timeout: 256 seconds) 2018-09-27T17:05:59Z Bike joined #lisp 2018-09-27T17:07:22Z Kundry_Wag joined #lisp 2018-09-27T17:07:39Z m00natic quit (Remote host closed the connection) 2018-09-27T17:07:42Z Kundry_Wag quit (Read error: Connection reset by peer) 2018-09-27T17:10:45Z fiddlerwoaroof quit (Quit: Gone.) 2018-09-27T17:16:47Z astalla joined #lisp 2018-09-27T17:21:53Z nsrahmad quit (Remote host closed the connection) 2018-09-27T17:21:58Z doubledup joined #lisp 2018-09-27T17:22:39Z rumbler31 joined #lisp 2018-09-27T17:23:34Z jkordani: wiselord: actually, you're better off putting them in %path 2018-09-27T17:24:42Z jkordani: cffi uses the operating system's dll load mechanism. If any dlls loaded in this way *also* depend on other dlls, the os will attempt to find them using %path 2018-09-27T17:25:04Z jkordani: so if A.dll depends on B.sll 2018-09-27T17:25:50Z jkordani: B.dll, and you put the path to a.dll in cffi:*foreign-library-directories*, loading will still fail because B.dll will also need to be resolved. 2018-09-27T17:26:53Z Jesin quit (Quit: Leaving) 2018-09-27T17:27:26Z jkordani: you can get around this by "cffi loading" dependencies first, as the os machinery will then be able to find the libraries in question, or install them all to a location in %path 2018-09-27T17:28:05Z jkordani: on 64 bit windows, sysWOW64 is where 32 bit libs go, and system32 is where 64 bit libs go 2018-09-27T17:28:14Z jkordani: ask me how I know and how long it took me to realize that 2018-09-27T17:28:46Z doubledup quit (Quit: Leaving) 2018-09-27T17:29:33Z |3b| thinks they go in the msys2 bin dirs :p 2018-09-27T17:29:46Z rumbler31 quit (Remote host closed the connection) 2018-09-27T17:30:13Z jkordani: whatever makes the win32 dlopen call succeed (I forget what it is at the moment) 2018-09-27T17:31:29Z vtomole quit (Ping timeout: 256 seconds) 2018-09-27T17:39:02Z Jesin joined #lisp 2018-09-27T17:40:25Z slyrus1 joined #lisp 2018-09-27T17:40:52Z jackdaniel: dlopen is posix function for opening dynamic libraries (to find functions in them for instance) 2018-09-27T17:42:40Z |3b|: LoadLibrary() ? 2018-09-27T17:42:40Z jkordani: yea I know, can't remember the windows version names at the moment 2018-09-27T17:42:43Z jkordani: yes thank you 2018-09-27T17:42:45Z t0adst00l quit (Ping timeout: 256 seconds) 2018-09-27T17:42:54Z |3b|: probably with an Ex at the end or something 2018-09-27T17:43:26Z jackdaniel: ah, OK 2018-09-27T17:43:50Z jkordani: and specifically wiselord's set of libs, there's a 3rd library that one of those two reference that isn't called out for by the cffi call in cl+sll 2018-09-27T17:43:51Z |3b|: or ExW since we don't have the C preprocessor :) 2018-09-27T17:44:43Z jkordani: since I was shipping a binary I just found all three and made explicit cffi load library calls to all 3 in the proper order and put the dlls in the local directory 2018-09-27T17:50:56Z Achylles quit (Ping timeout: 260 seconds) 2018-09-27T17:54:20Z longshi joined #lisp 2018-09-27T17:54:43Z slyrus2 joined #lisp 2018-09-27T17:54:57Z longshi quit (Client Quit) 2018-09-27T18:03:27Z wiselord: i put libs into my programm dir, and so good, thanks 2018-09-27T18:27:24Z trafaret1 joined #lisp 2018-09-27T18:27:27Z trafaret1: hi there 2018-09-27T18:28:20Z sauvin quit (Read error: Connection reset by peer) 2018-09-27T18:32:10Z jackdaniel: general kenobi 2018-09-27T18:32:17Z jackdaniel: \\\o/// 2018-09-27T18:32:50Z graphene quit (Remote host closed the connection) 2018-09-27T18:32:53Z russellw: what's the most efficient and cleanest way to write a newline as a literal string (or as close as it is possible to get to that)? #\newline is the character form, but what's the appropriate string form? 2018-09-27T18:32:54Z shka_: that would be hello there 2018-09-27T18:33:39Z Bike: you mean a string with just a newline in it? 2018-09-27T18:33:49Z russellw: yes 2018-09-27T18:33:50Z jackdaniel: russellw: (format nil "~%") 2018-09-27T18:34:04Z russellw: jackdaniel, cool, thanks 2018-09-27T18:34:04Z jackdaniel: or, even better, #.(format nil "~%") 2018-09-27T18:34:05Z graphene joined #lisp 2018-09-27T18:34:31Z trafaret1: if I will learn lisp does it give me ability to make million dollars? 2018-09-27T18:34:58Z graphene quit (Remote host closed the connection) 2018-09-27T18:35:01Z jackdaniel: trafaret1: you'll have approximately the same chance as without learning it 2018-09-27T18:35:16Z slyrus2 quit (Ping timeout: 260 seconds) 2018-09-27T18:35:45Z danielxvu quit (Remote host closed the connection) 2018-09-27T18:36:12Z graphene joined #lisp 2018-09-27T18:36:18Z regreg_ joined #lisp 2018-09-27T18:39:10Z danielxvu joined #lisp 2018-09-27T18:41:14Z pjb: russellw: (string #\newline) 2018-09-27T18:41:23Z pjb: with #. 2018-09-27T18:41:31Z russellw: pjb, ah! thanks 2018-09-27T18:41:39Z pjb: (string #\f) #| --> "f" |# 2018-09-27T18:42:35Z pjb: trafaret1: you, I don't know. But Paul Graham made millions with CL, writing a program in clisp, and selling it to Yahoo!. 2018-09-27T18:42:42Z kyby64 joined #lisp 2018-09-27T18:43:17Z pjb: trafaret1: so at least, it's possible, and since lisp is fun, you may be able to do it having fun. With C++, you'd be about to do it, but in hellish tortures. 2018-09-27T18:43:23Z pjb: So your choice. 2018-09-27T18:47:20Z rumbler31 joined #lisp 2018-09-27T18:47:54Z khisanth_ quit (Ping timeout: 264 seconds) 2018-09-27T18:52:22Z robotoad joined #lisp 2018-09-27T19:02:07Z pierpal quit (Ping timeout: 240 seconds) 2018-09-27T19:04:23Z hydan quit (Quit: Connection closed for inactivity) 2018-09-27T19:05:15Z robotoad quit (Quit: robotoad) 2018-09-27T19:07:02Z graphene quit (Remote host closed the connection) 2018-09-27T19:07:15Z ggole quit (Quit: ggole) 2018-09-27T19:07:59Z rumbler31 quit (Remote host closed the connection) 2018-09-27T19:08:17Z graphene joined #lisp 2018-09-27T19:08:36Z vlatkoB quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 2018-09-27T19:10:04Z Jesin quit (Quit: Leaving) 2018-09-27T19:11:05Z edgar-rft quit (Quit: Leaving) 2018-09-27T19:12:17Z Achylles joined #lisp 2018-09-27T19:13:14Z robotoad joined #lisp 2018-09-27T19:14:39Z khisanth_ joined #lisp 2018-09-27T19:21:21Z astalla quit (Ping timeout: 252 seconds) 2018-09-27T19:22:00Z astalla joined #lisp 2018-09-27T19:25:42Z thinkpad quit (Ping timeout: 264 seconds) 2018-09-27T19:26:11Z thinkpad joined #lisp 2018-09-27T19:28:48Z shka_ quit (Ping timeout: 272 seconds) 2018-09-27T19:40:17Z remix2000 quit (Quit: WeeChat 2.2-dev) 2018-09-27T19:41:55Z cage_ quit (Quit: Leaving) 2018-09-27T19:47:27Z asarch joined #lisp 2018-09-27T19:53:30Z thetemplar quit (Ping timeout: 272 seconds) 2018-09-27T19:54:46Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-27T20:01:24Z pierpal joined #lisp 2018-09-27T20:07:20Z igemnace quit (Quit: WeeChat 2.2) 2018-09-27T20:24:03Z FreeBirdLjj joined #lisp 2018-09-27T20:25:53Z angavrilov quit (Remote host closed the connection) 2018-09-27T20:28:23Z FreeBirdLjj quit (Ping timeout: 245 seconds) 2018-09-27T20:28:28Z dented42 joined #lisp 2018-09-27T20:28:40Z edgar-rft joined #lisp 2018-09-27T20:32:57Z orivej joined #lisp 2018-09-27T20:34:55Z rnmhdn joined #lisp 2018-09-27T20:47:05Z Roy_Fokker joined #lisp 2018-09-27T20:50:42Z Achylles quit (Ping timeout: 252 seconds) 2018-09-27T20:52:04Z gravicappa joined #lisp 2018-09-27T20:54:01Z astalla quit (Ping timeout: 246 seconds) 2018-09-27T20:55:07Z warweasle joined #lisp 2018-09-27T20:57:43Z kajo joined #lisp 2018-09-27T21:05:27Z frodef quit (Ping timeout: 240 seconds) 2018-09-27T21:08:29Z rumbler31 joined #lisp 2018-09-27T21:08:33Z aeth: Lisp doesn't give you the ability to make millions. Programming does. 2018-09-27T21:10:51Z aeth: I think Lisp code looks better than code in most languages, but if you're in it for the money, no one's going to see your code's elegance/inelegance amd you can always pay someone to clean up your technical debt later. 2018-09-27T21:11:31Z makomo joined #lisp 2018-09-27T21:12:23Z aeth: *and 2018-09-27T21:13:18Z rumbler31 quit (Ping timeout: 272 seconds) 2018-09-27T21:14:25Z gravicappa quit (Remote host closed the connection) 2018-09-27T21:14:26Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-27T21:15:22Z lemonpepper24 joined #lisp 2018-09-27T21:20:42Z asarch quit (Quit: Leaving) 2018-09-27T21:28:12Z rnmhdn quit (Ping timeout: 252 seconds) 2018-09-27T21:30:54Z slyrus1 quit (Quit: slyrus1) 2018-09-27T21:31:11Z robotoad quit (Quit: robotoad) 2018-09-27T21:36:24Z slyrus1 joined #lisp 2018-09-27T21:36:53Z SenasOzys joined #lisp 2018-09-27T21:37:58Z frgo quit 2018-09-27T21:38:42Z rumbler31 joined #lisp 2018-09-27T21:40:22Z rumbler31 quit (Remote host closed the connection) 2018-09-27T21:56:41Z Bike quit (Ping timeout: 256 seconds) 2018-09-27T21:58:40Z robotoad joined #lisp 2018-09-27T22:07:26Z Folkol quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-27T22:07:59Z thetemplar joined #lisp 2018-09-27T22:12:44Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-27T22:16:19Z graphene quit (Remote host closed the connection) 2018-09-27T22:16:59Z kyby64 quit 2018-09-27T22:17:08Z trafaret1 left #lisp 2018-09-27T22:17:36Z graphene joined #lisp 2018-09-27T22:24:10Z no-defun-allowed: With PG's case, he had a better chance working in Lisp since it was better for prototyping and live development. I'd argue that you have a better chance with Lisp but PG is pretty biased since he didn't fail. 2018-09-27T22:24:20Z no-defun-allowed: Also, PG was riding the internet bubble. 2018-09-27T22:28:45Z robotoad quit (Max SendQ exceeded) 2018-09-27T22:30:34Z lemonpepper24 quit (Ping timeout: 240 seconds) 2018-09-27T22:31:06Z kajo quit (Ping timeout: 252 seconds) 2018-09-27T22:39:15Z aeth: he had lucky timing, selling to Yahoo at its peak (and its peak irrationality) 2018-09-27T22:40:03Z regreg_ quit (Ping timeout: 245 seconds) 2018-09-27T22:40:09Z robotoad joined #lisp 2018-09-27T22:40:17Z aeth: You could argue that he only timed it in time because he wasn't using C++, though 2018-09-27T22:41:15Z no-defun-allowed: Yes, since he was able to develop it faster. 2018-09-27T22:42:29Z aeth: if you're building software to last 20 years, I suspect pg's experience here is irrelevant 2018-09-27T22:43:15Z aeth: You don't want a language where you write things as quickly as possible in that case. 2018-09-27T22:44:02Z aeth: You want a language where you can make sure something is (integer 2 #.(isqrt most-positive-fixnum)) 2018-09-27T22:44:42Z aeth: Or any other range where if you go outside it you'll have issues. 2018-09-27T22:45:59Z robotoad quit (Quit: robotoad) 2018-09-27T22:48:18Z Essadon quit (Quit: Qutting) 2018-09-27T22:54:58Z Bike joined #lisp 2018-09-27T22:55:41Z Pixel_Outlaw joined #lisp 2018-09-27T22:57:23Z Guest5800_ quit (Quit: Connection closed for inactivity) 2018-09-27T23:00:57Z SenasOzys quit (Remote host closed the connection) 2018-09-27T23:01:14Z SenasOzys joined #lisp 2018-09-27T23:09:51Z LiamH quit (Quit: Leaving.) 2018-09-27T23:11:57Z funnel joined #lisp 2018-09-27T23:17:01Z ym quit (Ping timeout: 260 seconds) 2018-09-27T23:19:15Z LdBeth: GG 2018-09-27T23:20:45Z jasom: aeth: very few customers will pay a premium for software that will last 20 years. 2018-09-27T23:21:38Z aeth: jasom: and yet quite a lot of software lasts a lot longer than 20 2018-09-27T23:22:36Z robotoad joined #lisp 2018-09-27T23:23:14Z aeth: I'm using a 16 year old web browser, a 19 year old IRC client, a (probably) 12 year old terminal, a 38 year old compiler (if you count the original branch), a 33 year old editor, etc. 2018-09-27T23:24:02Z aeth: All the software I'm using except maybe the terminal (it's lxterminal and LXDE is moving everything to Qt) has a very good chance to make it past 20 if it's not already past 20 2018-09-27T23:25:29Z jasom: we are using different definitions of "last" then since I suspect most of that software has changes made in the past year or two. 2018-09-27T23:26:39Z jasom: but I really don't want to get into a perseus's ship discussion 2018-09-27T23:26:45Z aeth: jasom: My point is, if something's going to be around for decades anyway, you should optimize for the multi-decade maintenance period, not the first few years of rapid development 2018-09-27T23:27:00Z jasom: s/perseus/theseus 2018-09-27T23:27:13Z aeth: And a lot of website code is probably already at or approaching this 20 year point now in 2018. 2018-09-27T23:27:43Z jasom: aeth: Richard P Gabriel had a lot to say about that 2018-09-27T23:27:57Z aeth: Of course, a language that's mostly compatible with things written 59 years ago is a good choice to write multi-decade software in. 2018-09-27T23:27:58Z jasom: Lisp: Good News Bad News How to Win Big &c. 2018-09-27T23:28:35Z jasom: a core argument was that if you didn't optimize for being successful now, you will be starved of resources by those that do 2018-09-27T23:33:16Z robotoad quit (Quit: robotoad) 2018-09-27T23:34:19Z varjag quit (Ping timeout: 246 seconds) 2018-09-27T23:35:38Z aeth: jasom: on the other hand, that essay was refuted a few years later in Worse is Better is Worse by Richard P Gabriel 2018-09-27T23:35:45Z ym joined #lisp 2018-09-27T23:39:27Z jasom: aeth: which was the rebutted by "Is worse really better" 2018-09-27T23:39:45Z aeth: http://dreamsongs.com/WorseIsBetter.html 2018-09-27T23:39:52Z aeth: looks like it's 3-2 in favor of Worse is Better 2018-09-27T23:40:18Z aeth: but we should check back frequently to see if it gets tied again 2018-09-27T23:40:22Z jasom: "And in preparation for this panel, the organizer, Martine Devos, asked me to write a position paper, which I did, called "Back to the Future: Is Worse (Still) Better?" In this short paper, I came out against worse is better. But a month or so later, I wrote a second one, called "Back to the Future: Worse (Still) is Better!" which was in favor of it. I still can’t decide." 2018-09-27T23:40:53Z rumbler31 joined #lisp 2018-09-27T23:42:08Z asarch joined #lisp 2018-09-27T23:42:10Z aeth: yeah, that's how I got to 3-2 2018-09-27T23:44:12Z aeth: jasom: but I suspect both things are true 2018-09-27T23:44:47Z aeth: jasom: some software has to be successful right away, some software can take its time 2018-09-27T23:45:03Z rumbler31 quit (Ping timeout: 245 seconds) 2018-09-27T23:45:34Z lonjil quit (Ping timeout: 240 seconds) 2018-09-27T23:45:48Z jack_rabbit joined #lisp 2018-09-27T23:51:13Z rumbler31 joined #lisp 2018-09-28T00:01:23Z kajo joined #lisp 2018-09-28T00:06:06Z definite joined #lisp 2018-09-28T00:06:28Z definite: Should I install stumpwm via quicklisp or my distro's package manager? 2018-09-28T00:07:19Z dmiles quit (Remote host closed the connection) 2018-09-28T00:08:57Z no-defun-allowed: quicklisp would be more up to date 2018-09-28T00:09:36Z definite: no-defun-allowed: Thanks. 2018-09-28T00:11:57Z dmiles joined #lisp 2018-09-28T00:16:14Z rumbler31 quit (Remote host closed the connection) 2018-09-28T00:21:27Z aeth: Personally I directly build it from the git repo 2018-09-28T00:22:48Z anewuser joined #lisp 2018-09-28T00:29:33Z FreeBirdLjj joined #lisp 2018-09-28T00:33:35Z FreeBirdLjj quit (Ping timeout: 244 seconds) 2018-09-28T00:34:54Z dale quit (Quit: dale) 2018-09-28T00:40:39Z definite: aeth: Why? 2018-09-28T00:41:08Z Kundry_Wag joined #lisp 2018-09-28T00:50:48Z aeth: because the build process is just ./autogen.sh && ./configure && make 2018-09-28T00:51:01Z aeth: iirc 2018-09-28T00:51:28Z aeth: strange to see something that's 99% Lisp be built that way, though 2018-09-28T00:52:47Z Bike quit (Ping timeout: 252 seconds) 2018-09-28T00:54:08Z lemoinem joined #lisp 2018-09-28T00:55:51Z Bike joined #lisp 2018-09-28T00:56:27Z Blackbeard: definite: you can also use Guix 2018-09-28T01:01:36Z definite: Blackbeard: I was considering installing GuixSD, but everything is difficult with free drivers. I suppose I could use the package manager alone (I've heard that suggestion before, more commonly for Nix + Haskell). 2018-09-28T01:02:32Z aeth: definite: nvidia GPU? 2018-09-28T01:02:40Z definite: Speaking of Guix, why is there a Scheme distro and no Common Lisp one (AFAIK, I'd be happy to be corrected) if CL is always advertised as the "full-featured systems language" of the two? 2018-09-28T01:02:44Z Blackbeard: definite: you don't need guix sd though 2018-09-28T01:02:52Z Blackbeard: you can install guix in top of any distro 2018-09-28T01:03:55Z Blackbeard: definite: probably because it uses Guile, the GNU extension language 2018-09-28T01:04:06Z aeth: definite: What really makes a distro is the package manager and its software respositories... So I guess the only thing is that people haven't written a Unix package manager in CL (or at least not one that has any major adoption) 2018-09-28T01:04:29Z aeth: A modern package manager would need encryption, probably through https://github.com/sharplispers/ironclad if that's mature enough 2018-09-28T01:04:32Z definite: aeth: No, my Thinkpad has a whitelist of available WiFi cards and the one that I got to replace the old one isn't on it. I'm looking into bypassing it, but the only guide I've found which promises not to brick my computer is really old. Blackbeard: More of a question for the CL people. 2018-09-28T01:05:37Z no-defun-allowed: definite: https://www.youtube.com/watch?v=PUaDkQFD7FE 2018-09-28T01:07:20Z definite: no-defun-allowed: Which Thinkpad is that? I got a T400 just to Libreboot it, but apparently you have to take apart the entire thing. I'm considering getting an X200 (only have to take off casing next to keyboard to access flashchip) and relegating this one to server duty. 2018-09-28T01:08:19Z no-defun-allowed: he doesn't say which model 2018-09-28T01:08:29Z no-defun-allowed: it links to a x220 guide though 2018-09-28T01:22:12Z regreg_ joined #lisp 2018-09-28T01:22:36Z Arcaelyx joined #lisp 2018-09-28T01:27:43Z robotoad joined #lisp 2018-09-28T01:27:53Z robotoad quit (Read error: Connection reset by peer) 2018-09-28T01:28:26Z robotoad joined #lisp 2018-09-28T01:31:32Z NB0X-Matt-CA quit (Remote host closed the connection) 2018-09-28T01:32:06Z NB0X-Matt-CA joined #lisp 2018-09-28T01:33:57Z regreg_ quit (Ping timeout: 252 seconds) 2018-09-28T01:36:55Z aeth: ironclad seems pretty cool. 2018-09-28T01:37:02Z warweasle quit (Quit: night) 2018-09-28T01:38:13Z aeth: Strange that it doesn't use setf where it should, though 2018-09-28T01:39:21Z robotoad quit (Ping timeout: 260 seconds) 2018-09-28T01:42:34Z aeth: It does seem to at least on the surface be idiomatic and optimized other than that. 2018-09-28T01:44:04Z Kundry_Wag quit (Remote host closed the connection) 2018-09-28T01:47:49Z lonjil joined #lisp 2018-09-28T01:48:23Z shifty joined #lisp 2018-09-28T01:54:59Z lemonpepper24 joined #lisp 2018-09-28T01:55:02Z robotoad joined #lisp 2018-09-28T02:09:15Z orivej quit (Ping timeout: 252 seconds) 2018-09-28T02:12:10Z pjb quit (Ping timeout: 250 seconds) 2018-09-28T02:13:14Z esrse joined #lisp 2018-09-28T02:14:38Z makomo quit (Ping timeout: 245 seconds) 2018-09-28T02:16:45Z rumbler31 joined #lisp 2018-09-28T02:17:51Z Kundry_Wag joined #lisp 2018-09-28T02:20:47Z rumbler31 quit (Ping timeout: 240 seconds) 2018-09-28T02:22:26Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-28T02:28:41Z definite quit (Ping timeout: 256 seconds) 2018-09-28T02:38:03Z mathrick_ quit (Ping timeout: 252 seconds) 2018-09-28T02:38:24Z robotoad quit (Quit: robotoad) 2018-09-28T02:38:51Z robotoad joined #lisp 2018-09-28T02:38:57Z mathrick_ joined #lisp 2018-09-28T02:39:10Z robotoad quit (Client Quit) 2018-09-28T02:39:43Z robotoad joined #lisp 2018-09-28T02:48:20Z sjl quit (Quit: WeeChat 2.2-dev) 2018-09-28T02:49:50Z Arcaelyx quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-28T02:51:53Z ealfonso quit (Remote host closed the connection) 2018-09-28T02:54:46Z dddddd quit (Read error: Connection reset by peer) 2018-09-28T03:02:39Z jgoss joined #lisp 2018-09-28T03:02:45Z beach: Good morning everyone! 2018-09-28T03:05:42Z earl-ducaine joined #lisp 2018-09-28T03:06:17Z no-defun-allowed: morning beach 2018-09-28T03:14:47Z pierpal quit (Ping timeout: 240 seconds) 2018-09-28T03:15:57Z aeth: good morning beach 2018-09-28T03:28:17Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-28T03:46:24Z Balooga_ joined #lisp 2018-09-28T03:47:43Z dented42 joined #lisp 2018-09-28T03:49:52Z eminhi joined #lisp 2018-09-28T03:50:20Z graphene quit (Remote host closed the connection) 2018-09-28T03:51:36Z graphene joined #lisp 2018-09-28T03:55:18Z graphene quit (Remote host closed the connection) 2018-09-28T03:56:10Z skeuomorf joined #lisp 2018-09-28T03:56:38Z graphene joined #lisp 2018-09-28T04:00:15Z anewuser quit (Ping timeout: 244 seconds) 2018-09-28T04:04:51Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-28T04:09:02Z Bike quit (Quit: Lost terminal) 2018-09-28T04:20:02Z graphene quit (Remote host closed the connection) 2018-09-28T04:20:03Z ggole joined #lisp 2018-09-28T04:21:18Z graphene joined #lisp 2018-09-28T04:28:01Z Balooga_ quit (Quit: Balooga_) 2018-09-28T04:28:21Z graphene quit (Remote host closed the connection) 2018-09-28T04:29:37Z graphene joined #lisp 2018-09-28T04:33:46Z ggole quit (Ping timeout: 260 seconds) 2018-09-28T04:34:49Z FreeBirdLjj joined #lisp 2018-09-28T04:38:47Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-09-28T04:44:21Z sjl joined #lisp 2018-09-28T04:44:21Z itruslove quit (Remote host closed the connection) 2018-09-28T04:44:49Z ggole joined #lisp 2018-09-28T04:57:21Z itruslove joined #lisp 2018-09-28T05:02:13Z scottj joined #lisp 2018-09-28T05:03:22Z igemnace joined #lisp 2018-09-28T05:08:07Z graphene quit (Remote host closed the connection) 2018-09-28T05:09:24Z graphene joined #lisp 2018-09-28T05:14:35Z astronavt quit (Ping timeout: 252 seconds) 2018-09-28T05:16:58Z sauvin joined #lisp 2018-09-28T05:30:04Z frodef joined #lisp 2018-09-28T05:31:19Z emaczen quit (Ping timeout: 246 seconds) 2018-09-28T05:35:32Z jgoss quit (Ping timeout: 272 seconds) 2018-09-28T05:38:26Z NB0X-Matt-CA quit (Remote host closed the connection) 2018-09-28T05:39:01Z NB0X-Matt-CA joined #lisp 2018-09-28T05:50:46Z lemonpepper24 quit (Ping timeout: 260 seconds) 2018-09-28T05:54:47Z doubledup joined #lisp 2018-09-28T05:55:21Z lanu joined #lisp 2018-09-28T05:55:22Z phoe: Morniiing 2018-09-28T05:56:51Z vlatkoB joined #lisp 2018-09-28T05:59:59Z eminhi_ joined #lisp 2018-09-28T06:00:07Z lanu quit (Read error: Connection reset by peer) 2018-09-28T06:01:21Z shka_ joined #lisp 2018-09-28T06:02:19Z doubledup quit (Quit: Leaving) 2018-09-28T06:02:33Z eminhi quit (Ping timeout: 245 seconds) 2018-09-28T06:02:48Z beach: Hello phoe. 2018-09-28T06:03:07Z no-defun-allowed: hi phoe 2018-09-28T06:05:20Z shka_: good morning phoe 2018-09-28T06:07:08Z jgoss joined #lisp 2018-09-28T06:09:38Z jgoss_ joined #lisp 2018-09-28T06:12:16Z jgoss quit (Ping timeout: 272 seconds) 2018-09-28T06:13:39Z varjag joined #lisp 2018-09-28T06:24:06Z LdBeth: good eve 2018-09-28T06:26:37Z varjag quit (Ping timeout: 268 seconds) 2018-09-28T06:32:11Z iomonad quit (Ping timeout: 260 seconds) 2018-09-28T06:32:49Z makomo joined #lisp 2018-09-28T06:36:58Z troydm quit (Ping timeout: 272 seconds) 2018-09-28T06:44:12Z iomonad joined #lisp 2018-09-28T06:45:24Z nanoz joined #lisp 2018-09-28T06:49:47Z varjag joined #lisp 2018-09-28T06:54:36Z igemnace quit (Remote host closed the connection) 2018-09-28T06:55:26Z igemnace joined #lisp 2018-09-28T07:00:11Z gector quit (Ping timeout: 252 seconds) 2018-09-28T07:00:47Z skeuomorf quit (Ping timeout: 240 seconds) 2018-09-28T07:01:59Z Demosthenex: i was just reading https://stackoverflow.com/questions/1403717/how-do-i-iterate-through-a-directory-in-common-lisp where someone says cl-fad doesn't handle symlinks, but the cl-fad docs i was browsing says it can optionally follow them... 2018-09-28T07:02:15Z Demosthenex: so what do they mean the symlink support is broken? 2018-09-28T07:02:26Z Demosthenex: seems like a strong assertion, but i don't see the basis, did i miss something? 2018-09-28T07:02:33Z eminhi_ quit (Ping timeout: 245 seconds) 2018-09-28T07:04:27Z shka_: symlinks in fads are broken? 2018-09-28T07:05:34Z gector joined #lisp 2018-09-28T07:05:53Z jackdaniel: Demosthenex: the thing is that iolib depends on posix interfaces (via ffi) 2018-09-28T07:06:01Z jackdaniel: while cl-fad depends on whatever implementation gives it 2018-09-28T07:06:17Z jackdaniel: I believe that's what David means 2018-09-28T07:07:34Z jackdaniel: osicat is another solution (it is also ffi based, but it doesn't libfixposix) which behaves thesame on all implementations 2018-09-28T07:09:28Z lanu joined #lisp 2018-09-28T07:09:36Z nowhereman_ quit (Ping timeout: 252 seconds) 2018-09-28T07:09:38Z nowhere_man joined #lisp 2018-09-28T07:09:53Z Balooga_ joined #lisp 2018-09-28T07:10:04Z heisig joined #lisp 2018-09-28T07:11:42Z Shinmera: I forget, but do osicat and iolib work on windows? 2018-09-28T07:15:05Z jackdaniel: I'm sure osicat does 2018-09-28T07:15:26Z jackdaniel: and I *think* iolib is posix-specific (so on windows that would be cygwin/msys) 2018-09-28T07:18:39Z robotoad quit (Quit: robotoad) 2018-09-28T07:18:53Z makomo quit (Ping timeout: 252 seconds) 2018-09-28T07:19:26Z nanoz quit (Ping timeout: 260 seconds) 2018-09-28T07:24:25Z asarch quit (Quit: Leaving) 2018-09-28T07:26:28Z jgoss_ quit (Quit: Leaving) 2018-09-28T07:29:09Z rumbler31 joined #lisp 2018-09-28T07:29:54Z Demosthenex: hrm. 2018-09-28T07:30:18Z Demosthenex: i appreciate the feedback. 2018-09-28T07:30:26Z Demosthenex: i thought ffi would be less portable really 2018-09-28T07:30:52Z jackdaniel: ffi gives you uniform behavior, because you aim directly at your operating system interfaces 2018-09-28T07:31:03Z jackdaniel: pathnames and file access otoh are underspecified in CL standard 2018-09-28T07:31:19Z jackdaniel: so there are divergencies on how these chapters are interpreted by different CL vendors 2018-09-28T07:32:10Z Demosthenex: i thought iolib used a library called iolib, not posix. 2018-09-28T07:32:17Z Demosthenex: not sure where i got that impression 2018-09-28T07:32:36Z jackdaniel: iolib uses library called libfixposix which fixes some inconsistencies between POSIX implementations (hah!) 2018-09-28T07:32:38Z gector quit (Ping timeout: 252 seconds) 2018-09-28T07:33:02Z Demosthenex: yeah, so not universally available 2018-09-28T07:33:23Z jackdaniel: that's why I've mentioned osicat as alternative 2018-09-28T07:33:39Z Demosthenex: i'd have used the default or cl-fad, but i don't do much with files atm, still learning 2018-09-28T07:33:56Z Demosthenex: it only came up because i was discussing finding files in a dir via wildcard with Blackbeard 2018-09-28T07:33:59Z jackdaniel: I'm using cl-fad with a great success myself 2018-09-28T07:34:14Z gector joined #lisp 2018-09-28T07:34:48Z Demosthenex: cheap plug: i'm loving stumpwm. its so cool to be able to connect slime to my WM and update it live 2018-09-28T07:36:27Z lanu quit (Remote host closed the connection) 2018-09-28T07:36:46Z lanu joined #lisp 2018-09-28T07:36:49Z Demosthenex: and being able to port over several pages of lua code for awesomewm for my window management into a single function was enlightening 2018-09-28T07:40:21Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-28T07:40:51Z nowhere_man joined #lisp 2018-09-28T07:42:44Z quazimod1 joined #lisp 2018-09-28T07:42:44Z quazimod1 quit (Client Quit) 2018-09-28T07:49:24Z angavrilov joined #lisp 2018-09-28T07:50:07Z |3b| wonders if there is any easy way to get printer to use #n= #n# for keywords too 2018-09-28T07:50:36Z shrdlu68 joined #lisp 2018-09-28T07:51:06Z |3b|: trying to make a large file smaller, currently saves ~50MB with normal *print-circle* on individual forms, but still lots of repeated keywords 2018-09-28T07:51:20Z |3b|: though i guess if N got too large, some of them might get longer 2018-09-28T07:51:42Z shrdlu68: Compress? 2018-09-28T07:52:19Z |3b|: well, it's lisp source, so sort of inconvenient to compress beyond whatever git does 2018-09-28T07:53:57Z heisig: Just for fun, have you tried converting the data to a single quoted literal in a file and compile it to a fasl? Then the compiler would coalesce the shared structure for you :) 2018-09-28T07:54:09Z |3b|: maybe i should just leave it as 108MB of readable source instead of 50MB of line noise :p 2018-09-28T07:54:34Z |3b|: fasl isn't really suitable for checking into git repo though, particularly if i ever want to upgrade my lisp :) 2018-09-28T07:54:43Z |3b|: it's ~15MB .fasl file though 2018-09-28T07:54:55Z heisig: Heh :) 2018-09-28T07:55:51Z scymtym quit (Ping timeout: 244 seconds) 2018-09-28T07:55:53Z |3b| could also try to combine circularity between forms, but that would probably require writing it out and reading back in, which would lose formatting 2018-09-28T07:56:10Z |3b|: (though i guess if i'm losing readability to #x# i might as well dump formatting too) 2018-09-28T07:56:17Z shka_: heisig: yeah, i did that 2018-09-28T07:56:46Z Shinmera: |3b|: Still not as big as the fasl qtools generates if you precompile all qt method wrappers 2018-09-28T07:57:10Z |3b|: something like 4.5k defpackage forms + same # of forms to specify how to call the methods named by the packages 2018-09-28T07:57:51Z orivej joined #lisp 2018-09-28T07:57:55Z ggole: I'll bite: what is it? 2018-09-28T07:58:01Z |3b|: Shinmera: the 15M or the 50/108MB? 2018-09-28T07:58:17Z |3b|: 15MB isn't too bad 2018-09-28T07:58:47Z Shinmera: |3b|: the 15MB. Qtools' q+ file is 50MB for the base libs 2018-09-28T07:59:18Z |3b|: ggole: i'm writing a cl-like compiler targeting dalvik bytecode, and this is the FFI definitions for the android APIs 2018-09-28T07:59:25Z Shinmera: at least, if I remember correctly. Been years since I tried it. 2018-09-28T07:59:49Z |3b|: Shinmera: maybe i should just generate the .fasl directly from the .jar file and check that in instead 2018-09-28T07:59:52Z Shinmera: By default, wrappers are compiled on the fly as needed. 2018-09-28T07:59:56Z |3b|: its only ~31mb i think 2018-09-28T08:01:02Z |3b|: though probably a bit slower to load jar, parse it and generate package defs than to read and compile the generated lisp file 2018-09-28T08:01:23Z ggole: Good old FFI, always elegant and painless 2018-09-28T08:01:29Z |3b|: yeah :/ 2018-09-28T08:01:44Z |3b| can compile hello world though :) 2018-09-28T08:02:00Z ggole: Nice 2018-09-28T08:02:13Z Shinmera: looks like your work is done to me 2018-09-28T08:02:54Z |3b|: compiler has exactly enough to compile calls to a superclass, or to methods of arbitrary class, passing either arguments to the method being defined or literal integers, assuming all have type declarations :p 2018-09-28T08:03:19Z |3b|: and to call constructor of superclass 2018-09-28T08:04:01Z |3b|: which is enough to define an onCreate method that sets the view to a hello world screen defined as a resource 2018-09-28T08:04:33Z anunnaki quit (Ping timeout: 252 seconds) 2018-09-28T08:04:34Z |3b| can't actually build a dex or apk file out of it yet though :( 2018-09-28T08:04:46Z |3b|: though some of that stuff is written too, just not attached to the compiler 2018-09-28T08:05:43Z anunnaki joined #lisp 2018-09-28T08:05:56Z Shinmera: what's your ultimate end-goal? The Android API is so unbearable that I don't know if even writing Lisp could fix that 2018-09-28T08:08:29Z |3b|: few small utilities, like scanning a barcode and sending to a web server, and also playing with the android AR stuff 2018-09-28T08:09:02Z |3b|: maybe some simple games depending on what sort of performance i get out of it 2018-09-28T08:09:15Z Shinmera: Seems a bit extreme to start by writing a compiler to me 2018-09-28T08:09:22Z |3b|: :) 2018-09-28T08:09:39Z beach: I think it's an excellent idea. 2018-09-28T08:09:49Z Shinmera: It's commendable for sure 2018-09-28T08:10:27Z beach: It also means more clients for Cleavir/SICL. :) 2018-09-28T08:12:11Z |3b|: don't really /need/ the barcode thing, and the AR stuff is as much for fun as anything, so if i'm having similar fun writing compilers i might as well :) 2018-09-28T08:12:26Z Shinmera: Fair enough 2018-09-28T08:12:49Z |3b|: hmm, parsing the .jar file is only ~2sec if it doesn't spam debug prints, that isn't too bad 2018-09-28T08:13:05Z Shinmera: I was just having horror flashbacks to writing Ocelot, an Android client for the Lichat protocol 2018-09-28T08:13:29Z |3b| wonders how hard it would be to build the defpackage and ffi info directly from it instead of printing it to a file 2018-09-28T08:13:47Z |3b|: (and how fast) 2018-09-28T08:14:07Z |3b|: hopefully i can at least improve a bit over normal android workflow 2018-09-28T08:14:39Z |3b|: not sure how hard it would be to get a monitor running on android that i could send chunks of code to for interactive dev from slime 2018-09-28T08:16:24Z |3b| things it has an API for runtime loading from memory, but not sure how it interacts with attempts at redefinition. might need a dev mode where stuff calls stubs i can redefine or something 2018-09-28T08:16:52Z |3b|: that and GC of old code, which i think is recent if supported at all 2018-09-28T08:17:09Z |3b|: s/things/thinks/ 2018-09-28T08:18:21Z |3b|: also want nicer DSLs for all the resource stuff, though that will require some thought 2018-09-28T08:18:38Z frgo joined #lisp 2018-09-28T08:21:56Z rumbler31 quit (Remote host closed the connection) 2018-09-28T08:22:11Z thijso joined #lisp 2018-09-28T08:23:02Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-28T08:26:34Z gravicappa joined #lisp 2018-09-28T08:28:06Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-28T08:34:15Z SaganMan quit (Read error: Connection reset by peer) 2018-09-28T08:36:21Z Balooga_ quit (Quit: Balooga_) 2018-09-28T08:42:35Z igemnace quit (Read error: Connection reset by peer) 2018-09-28T08:42:53Z igemnace joined #lisp 2018-09-28T08:44:56Z lavaflow_ quit (Ping timeout: 244 seconds) 2018-09-28T08:45:20Z lanu quit (Quit: lanu) 2018-09-28T09:01:04Z marvin2 quit (Ping timeout: 240 seconds) 2018-09-28T09:07:31Z beach quit (Disconnected by services) 2018-09-28T09:08:10Z Demosthenex: hrm, interesting. https://github.com/joaotavora/sly another slime? 2018-09-28T09:08:18Z beach joined #lisp 2018-09-28T09:08:31Z shifty quit (Ping timeout: 260 seconds) 2018-09-28T09:12:05Z wigust joined #lisp 2018-09-28T09:12:17Z schweers joined #lisp 2018-09-28T09:12:19Z oni-on-ion: yeah 2018-09-28T09:13:42Z kajo joined #lisp 2018-09-28T09:18:28Z trittweiler quit (Ping timeout: 246 seconds) 2018-09-28T09:19:37Z anewuser joined #lisp 2018-09-28T09:23:44Z orivej quit (Ping timeout: 252 seconds) 2018-09-28T09:28:09Z shka_: heisig: hey, i have a question 2018-09-28T09:28:29Z roshanavand joined #lisp 2018-09-28T09:28:41Z shka_: so you were saying that you want to have multithreaded computations in petalisp 2018-09-28T09:29:09Z shka_: is using lparallel for it is a good idea in your opinion? 2018-09-28T09:30:02Z igemnace quit (Quit: WeeChat 2.2) 2018-09-28T09:33:03Z Kaisyu joined #lisp 2018-09-28T09:33:11Z scymtym joined #lisp 2018-09-28T09:33:24Z flamebeard joined #lisp 2018-09-28T09:33:26Z flamebeard quit (Remote host closed the connection) 2018-09-28T09:33:37Z troydm joined #lisp 2018-09-28T09:34:28Z flamebeard joined #lisp 2018-09-28T09:38:28Z flamebeard quit (Remote host closed the connection) 2018-09-28T09:51:55Z phoe: I have a CLOS design question. 2018-09-28T09:53:13Z beach: YES!!!! 2018-09-28T09:53:15Z beach: :) 2018-09-28T09:53:19Z phoe: I have a protocol class named MESSAGE. It's going to be subclassed many times to create concrete classes representing different kinds of the messages in my system. 2018-09-28T09:53:59Z phoe: Messages are also going to have responses - if there's a message named HELLO, then there are going to be responses named (OK HELLO) and (ERROR HELLO). 2018-09-28T09:54:37Z no-defun-allowed: i have a clos/mop question too but it's less interesting 2018-09-28T09:55:03Z phoe: no-defun-allowed: ask it, c'mon 2018-09-28T09:55:34Z no-defun-allowed: well i want to create a class programatically, so i can take a netfarm schema and create an equivalent CLOS class 2018-09-28T09:55:35Z shka_: phoe: cliff hanger ;-) 2018-09-28T09:55:40Z jackdaniel: I have one too: is it spelled like /si/los or /k/los ;] 2018-09-28T09:55:57Z beach: "pronounced" you mean? 2018-09-28T09:56:09Z Shinmera: no-defun-allowed: just use COMPILE instead 2018-09-28T09:56:11Z jackdaniel: yes 2018-09-28T09:56:12Z no-defun-allowed: i pronounce it like clause 2018-09-28T09:56:16Z phoe: I kind of want a dual inheritance scheme, where each message can be named after its class - HELLO, LOGIN, LOGOUT, SEND, ... and so on 2018-09-28T09:56:19Z beach: jackdaniel: Both exist. 2018-09-28T09:56:30Z no-defun-allowed: compile? 2018-09-28T09:56:38Z no-defun-allowed: why compile? 2018-09-28T09:56:49Z jackdaniel: I know, it was a joke (apparently not obvious) 2018-09-28T09:56:55Z Shinmera: no-defun-allowed: produce defclass sexprs and call compile 2018-09-28T09:57:00Z phoe: But I also want each message to have this "state" - it can either be a normal message (NIL), be a confirmation to an earlier message (OK) or an error reply (ERROR) 2018-09-28T09:57:01Z beach: phoe: How is that "dual"? 2018-09-28T09:57:04Z shka_: phoe: operation, query, response? 2018-09-28T09:57:08Z no-defun-allowed: okay, but is there another way of doing it? 2018-09-28T09:57:08Z shka_: like that? 2018-09-28T09:57:09Z Shinmera: (plus funcall) 2018-09-28T09:57:20Z no-defun-allowed: what does defclass actually do? 2018-09-28T09:57:41Z phoe: (setf (find-class 'foo) (make-instance 'class ...)) 2018-09-28T09:57:50Z phoe: this plus some compile-time trickery 2018-09-28T09:57:53Z Shinmera: it does a bunch of implementation-specific stuff 2018-09-28T09:58:03Z no-defun-allowed: okay 2018-09-28T09:58:04Z Shinmera: phoe: surely you meant 'metaclass 2018-09-28T09:58:12Z no-defun-allowed: (make-instance 'class) sounds interesting 2018-09-28T09:58:35Z phoe: Shinmera: did I? DEFCLASS makes a new instance of the CLASS object and gives it a global name 2018-09-28T09:58:36Z Shinmera: no-defun-allowed: class definitions are classes in themselves (under MOP) 2018-09-28T09:58:42Z phoe: so I don't think I meant a metaclass 2018-09-28T09:58:50Z Shinmera: phoe: no, it makes an instance of the metaclass 2018-09-28T09:59:00Z no-defun-allowed: well then 2018-09-28T09:59:07Z Shinmera: it can't instantiate what you're defining 2018-09-28T09:59:34Z no-defun-allowed: i can make an anonymous function with lambda, is there a similar thing for classes? 2018-09-28T09:59:39Z beach: no-defun-allowed: http://metamodular.com/CLOS-MOP/initialization-of-class-metaobjects2.html 2018-09-28T09:59:40Z scroll is now known as hfjvjffju 2018-09-28T09:59:48Z beach: no-defun-allowed: Yes, MAKE-INSTANCE. 2018-09-28T09:59:56Z no-defun-allowed: i see 2018-09-28T09:59:57Z shka_: phoe: i think that you can simply create operation class and then have generic function called message that will simply dispatch on operation and accept &rest arguments 2018-09-28T09:59:59Z m00natic joined #lisp 2018-09-28T10:00:04Z phoe: Anyway - in my use case, I'll have messsages named HELLO, (OK HELLO), (ERROR HELLO), LOGIN, (OK LOGIN), (ERROR LOGIN), ... 2018-09-28T10:00:19Z beach: no-defun-allowed: Try (make-instance 'standard-class) for instance. 2018-09-28T10:00:32Z phoe: Shinmera: you're right 2018-09-28T10:00:36Z no-defun-allowed: okay 2018-09-28T10:00:45Z shka_: phoe: why do you need messages as objects? 2018-09-28T10:00:47Z no-defun-allowed: nice! 2018-09-28T10:00:47Z beach: phoe: So what seems to be the design problem? 2018-09-28T10:00:58Z phoe: Anyway - it makes sense to me to have mixins for MESSAGE, OK-MESSAGE and ERROR-MESSAGE, and then the hierarchy HELLO, LOGIN, LOGOUT, SEND, ... 2018-09-28T10:01:46Z heisig: shka_: I am not sure whether I will use lparallel for managing my threads or not. It is certainly a great library. I use it mostly for its utilities, like queues and promises. 2018-09-28T10:01:53Z phoe: But this means that I'll need to define classes like HELLO, OK-HELLO, ERROR-HELLO, ..., which causes me to define 3*n classes in total. This looks like combinatorial explosion to me. 2018-09-28T10:01:58Z shka_: heisig: thanks for answer! 2018-09-28T10:02:02Z phoe: So it doesn't look like I should do it with mixins. 2018-09-28T10:02:15Z shka_: phoe: can i suggest solution? 2018-09-28T10:02:16Z phoe: shka_: so I can process them with CLOS dispatch. 2018-09-28T10:02:22Z phoe: shka_: yes! That's why I ask the question. 2018-09-28T10:02:40Z shka_: so i would start with operation class, not message 2018-09-28T10:02:47Z Shinmera: phoe: what I do in Lichat is I define error classes for specific circumstances and tag every message with a unique id that others can reference 2018-09-28T10:02:57Z shka_: and operation instances are basicly inmutable 2018-09-28T10:02:57Z no-defun-allowed: okay, so i need to create some slot definitions now 2018-09-28T10:03:01Z Shinmera: so I don't need error and ok variants for every message 2018-09-28T10:03:13Z shka_: then you can define message class that has two slots: operation and status 2018-09-28T10:03:23Z shka_: then you define fundamental-status 2018-09-28T10:03:42Z shka_: once this is done, you can have error-status, ok-status etc. 2018-09-28T10:03:46Z beach: no-defun-allowed: It is a bit involved to do that. You need to read that page and a few more to understand what you need to do. 2018-09-28T10:03:49Z shka_: your message is composed out of those two 2018-09-28T10:03:50Z phoe: shka_: this sounds sane. 2018-09-28T10:04:08Z shka_: since multimethods are awesome, you can manage your logic this way 2018-09-28T10:04:17Z shka_: and simply dispatch on two classes 2018-09-28T10:04:28Z no-defun-allowed: yes, i suppose i will have to do a lot of reading 2018-09-28T10:04:36Z phoe: To avoid creating statuses, I could use keywords and EQL specializers, methinks. (NIL :OK :ERROR) sound like a good choice. 2018-09-28T10:04:38Z shka_: so you have top level of message that is simply wrapper around two objects 2018-09-28T10:04:43Z phoe: Yes, I see. 2018-09-28T10:04:53Z shka_: yes, this is any option 2018-09-28T10:05:07Z shka_: not sure what else would you want 2018-09-28T10:05:16Z no-defun-allowed: "Initialization of Slot Definition Metaobjects" seems most relevant here. 2018-09-28T10:05:28Z shka_: but I would probabbly roll with the classes anyway 2018-09-28T10:05:45Z shka_: it is simply what i prefer 2018-09-28T10:05:49Z Shinmera: no-defun-allowed: slots are also represented by classes, of course 2018-09-28T10:05:59Z shka_: i don't think that this is objectivly better choice 2018-09-28T10:06:02Z phoe: shka_: my status would be a very dumb object though, it's literally a member of (NIL :OK :ERROR). 2018-09-28T10:06:10Z shka_: well, ok 2018-09-28T10:06:10Z Shinmera: or rather slots on a class are represented by slot instances 2018-09-28T10:06:20Z no-defun-allowed: yes, that is what i noticed. 2018-09-28T10:06:30Z phoe: Thanks! 2018-09-28T10:06:37Z shka_: in that case it may be a good idea indeed 2018-09-28T10:07:16Z shka_: anyway, you can simply abstract this in make-message where you are accepting operation and status symbol 2018-09-28T10:07:30Z shka_: underneath you can construct instance (or not) 2018-09-28T10:07:48Z shka_: this way you can quickly swap implementation underneath if needed 2018-09-28T10:09:31Z shka_: because :error appears to be something that should contain some sort of description of what wen wrong 2018-09-28T10:09:50Z phoe: That's what goes in the message body 2018-09-28T10:09:50Z shka_: while operation holds information on what you were trying to do 2018-09-28T10:10:04Z shka_: ok 2018-09-28T10:10:13Z no-defun-allowed: making slots and classes seems quite circular 2018-09-28T10:10:21Z no-defun-allowed: i might need to do more reading but to make the slot you need the class definition and to make the class you need the slot definition 2018-09-28T10:10:25Z phoe: no-defun-allowed: obviously, CLOS is implemented in Lisp 2018-09-28T10:10:44Z phoe: no-defun-allowed: you might want to read AMOP, where a CLOS-like object system is implemented in raw CLOS-less Common Lisp 2018-09-28T10:10:47Z shka_: phoe: glad i could help! 2018-09-28T10:10:48Z no-defun-allowed: yeah, what's that got to do with anything? 2018-09-28T10:10:55Z no-defun-allowed: oh 2018-09-28T10:11:07Z no-defun-allowed: as previously mentioned, i've got no money for books 2018-09-28T10:11:14Z phoe: basically, you can go from a CLOS-less Common Lisp to a CLOS-ful Common Lisp using nothing but the facilities embedded in the language 2018-09-28T10:11:25Z shka_: no-defun-allowed: CLOS is sort of framework to implement all sorts of object systems 2018-09-28T10:11:43Z shka_: it has it's default implementation and it is really nice, but it is not the only possible 2018-09-28T10:12:10Z beach: no-defun-allowed: make-instance does not take slot metaobjects. 2018-09-28T10:12:24Z beach: no-defun-allowed: It take "canonical direct slot specifications" 2018-09-28T10:12:31Z beach: You need to read up on what those are. 2018-09-28T10:13:05Z no-defun-allowed: well, this will be fun. 2018-09-28T10:13:36Z beach: no-defun-allowed: I am in the middle of implementing CLOS, so I have much of that relatively fresh in my head. So let me know if you need help. 2018-09-28T10:13:54Z no-defun-allowed: how do i create a canonical direct slot specification then? 2018-09-28T10:13:55Z igemnace joined #lisp 2018-09-28T10:14:10Z beach: no-defun-allowed: If you had read up on that, you would have seen that they are just lists. 2018-09-28T10:15:02Z no-defun-allowed: yes, sbcl gave me a type error requiring a list 2018-09-28T10:15:15Z beach: http://metamodular.com/CLOS-MOP/the-defclass-macro.html 2018-09-28T10:15:18Z no-defun-allowed: i see 2018-09-28T10:15:32Z beach: "Each canonicalized slot specification is formed from the corresponding slot specification as follows: ..." 2018-09-28T10:15:33Z no-defun-allowed: the example on http://metamodular.com/CLOS-MOP/initialization-of-class-metaobjects.html is handy 2018-09-28T10:15:50Z no-defun-allowed: thankyou 2018-09-28T10:15:58Z beach: no-defun-allowed: That entire site is just the free part of the AMOP book. 2018-09-28T10:16:04Z beach: ... HTML-ized. 2018-09-28T10:17:29Z no-defun-allowed: amazing 2018-09-28T10:18:11Z no-defun-allowed: also double #< notation is quite funny 2018-09-28T10:19:42Z regreg_ joined #lisp 2018-09-28T10:21:00Z Demosthenex: so anyone here using sly? worth trying as a n00b, or functional enough to get by? 2018-09-28T10:21:58Z jackdaniel: some people are using it (here included) and they seem to like it more than slime 2018-09-28T10:22:00Z Xach: Demosthenex: it has a lot of cool features and is probably easier to try for someone new than someone with a lot of slime muscle memory 2018-09-28T10:22:05Z jackdaniel: if I had to gues most people use slime though 2018-09-28T10:22:13Z jackdaniel: guess* 2018-09-28T10:22:27Z rumbler31 joined #lisp 2018-09-28T10:22:28Z Xach: I want to use sly more but I have a tension between wanting to be as productive as I am with slime and learning a different way 2018-09-28T10:22:54Z Shinmera: The one thing I don't know is how well/quickly sly takes over changes to slime 2018-09-28T10:23:12Z Xach: takes over changes? 2018-09-28T10:23:13Z Shinmera: since some implementations like sbcl and clasp change pretty often 2018-09-28T10:23:28Z Shinmera: and the imlementors only fix slime 2018-09-28T10:23:32Z Xach: oh 2018-09-28T10:24:37Z Demosthenex: the main page says they import fixes, but obviously there would be a delay 2018-09-28T10:24:47Z phoe: Is there any way to print only N first characters of an object's printed representation? 2018-09-28T10:24:53Z phoe: *print-length* doesn't seem to do what I want. 2018-09-28T10:25:05Z Demosthenex: phoe: bet there's a format recipe 2018-09-28T10:25:06Z jackdaniel: you could try to print it to string and subseq it 2018-09-28T10:25:29Z phoe: For (1234567890) if I want to print only five chars, I'd like to get "(1234.." or something similar 2018-09-28T10:25:53Z Shinmera: Demosthenex: don't think so. 2018-09-28T10:26:16Z Shinmera: could write a gray stream, of course 2018-09-28T10:26:36Z rumbler31 quit (Ping timeout: 250 seconds) 2018-09-28T10:26:41Z jackdaniel: mere fact that you are not 100% certain shows how large format is 2018-09-28T10:27:48Z jackdaniel: four riders of the apocalypse: loop, format, clos and clim, none intelligible (half joking ;) 2018-09-28T10:28:04Z jruchti quit (Ping timeout: 240 seconds) 2018-09-28T10:28:18Z Demosthenex: i'm hoping to work on clos with my son tonight 2018-09-28T10:28:25Z Demosthenex: he's been making a text game 2018-09-28T10:28:32Z Demosthenex: we got into arrays and starting defstruct... 2018-09-28T10:28:41Z Demosthenex: i may blow thru defstruct and goto classes ;] 2018-09-28T10:28:51Z phoe: good luck! 2018-09-28T10:28:58Z phoe: jackdaniel: xD 2018-09-28T10:29:07Z Demosthenex: blew his mind how i tried to talk about object inheritance 2018-09-28T10:29:16Z Demosthenex: its nice to see someone keen to learn it 2018-09-28T10:32:21Z jruchti joined #lisp 2018-09-28T10:32:48Z jackdaniel: phoe: if you make something of your own, take into account, that if it fits it sits. if you'd like to have at most 5 characters, then it would be "(12.."; but for (123) you should have full "(123)" 2018-09-28T10:33:39Z jackdaniel: having "(12.." would be awkward given 5 char limit and string of length 5 2018-09-28T10:34:23Z Xach: It's even more fun with variable-width glyphs 2018-09-28T10:34:32Z jackdaniel: speaking of a devil 2018-09-28T10:34:40Z jackdaniel: I'm implementing rotations in ttf renderer 2018-09-28T10:35:01Z Xach: like a transform matrix etc? 2018-09-28T10:35:11Z jackdaniel: yes (for mcclim) 2018-09-28T10:35:30Z jackdaniel: based on zpb-ttf of course (and cl-vectors) 2018-09-28T10:35:30Z Xach: fun! i did that for vecto. cl-vectors has no transforms, just rendering. 2018-09-28T10:35:41Z Shinmera: 3d-matrices already has that stuff 2018-09-28T10:36:03Z Xach: trivial-transforms 2018-09-28T10:36:04Z Shinmera: so you could copy its methods since you probably don't use it in itself 2018-09-28T10:36:05Z jackdaniel: Shinmera: do they have xlib glue, glyph-set, text advance stuff etc? 2018-09-28T10:36:15Z jackdaniel: transformation itself is quite trivial indeed 2018-09-28T10:36:21Z Shinmera: no, why would it 2018-09-28T10:36:47Z Xach: Shinmera: you seemed to be offering it as a solution? 2018-09-28T10:36:51Z jackdaniel: McCLIM has quite elaborate transformations api which as everything one would need (given we take only transformations into account) 2018-09-28T10:37:27Z Shinmera: Xach: for matrix transforms, since that was the topic, yea 2018-09-28T10:37:54Z Xach: Shinmera: oh, that is so easy you could almost accidentally write it from scratch every time! 2018-09-28T10:38:04Z Xach: while trying to write a text truncation system! 2018-09-28T10:38:19Z no-defun-allowed: reverse leftpad! 2018-09-28T10:38:41Z Shinmera: yea, which is why there's already so many matrix-y libs out there (plus innumerable ad-hoc ones, I'm sure) 2018-09-28T10:39:33Z igemnace quit (Quit: WeeChat 2.2) 2018-09-28T10:39:58Z Demosthenex: hrm, format has padding but not truncation? 2018-09-28T10:41:35Z lavaflow_ joined #lisp 2018-09-28T10:41:45Z igemnace joined #lisp 2018-09-28T10:47:43Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-09-28T10:49:41Z jackdaniel: Xach: will you accept PR for vecto which would add save-array function? 2018-09-28T10:49:45Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-28T10:49:53Z zfree joined #lisp 2018-09-28T10:50:05Z jackdaniel: currently software renderer uses cl-vectors, but vecto api looks like a hit for it 2018-09-28T10:50:40Z jackdaniel: (I'm asking for the future, I'm not planning to work on that at the moment) 2018-09-28T10:50:50Z cods: Xach: hi. Is someone maintaining cl-vectors these days? I doubt it was perfect as is :) 2018-09-28T10:51:35Z cods: I was supposed to convert the documentation to something more usual at some point, but never took the time to do it. 2018-09-28T10:52:14Z Josh_2 joined #lisp 2018-09-28T10:52:57Z braintropy joined #lisp 2018-09-28T10:53:50Z eminhi joined #lisp 2018-09-28T11:00:13Z braintropy quit (Quit: braintropy) 2018-09-28T11:00:33Z edgar-rft quit (Remote host closed the connection) 2018-09-28T11:07:02Z Xach: jackdaniel: http://report.quicklisp.org/2018-09-27/failure-report/mcclim.html#mcclim-raster-image fyi 2018-09-28T11:07:17Z Xach: jackdaniel: what would save-array do? 2018-09-28T11:07:34Z Xach: cods: it is perfect! 2018-09-28T11:07:36Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-28T11:08:55Z jackdaniel: dump canvas into 32bit array of rgba values (instead of saving png) 2018-09-28T11:10:52Z roshanavand quit (Ping timeout: 252 seconds) 2018-09-28T11:10:53Z ym quit (Ping timeout: 245 seconds) 2018-09-28T11:11:51Z jackdaniel: Xach: mcclim-raster-image fixed, thanks 2018-09-28T11:11:54Z ym joined #lisp 2018-09-28T11:11:56Z jackdaniel: (pushed to master) 2018-09-28T11:12:20Z Xach: jackdaniel: how about mcclim-clx-fb? http://report.quicklisp.org/2018-09-27/failure-report/mcclim.html#mcclim-clx-fb 2018-09-28T11:12:38Z varjag joined #lisp 2018-09-28T11:14:49Z trittweiler joined #lisp 2018-09-28T11:15:07Z kajo joined #lisp 2018-09-28T11:18:38Z jackdaniel: Xach: should be fixed now 2018-09-28T11:19:59Z Xach: jackdaniel: thanks 2018-09-28T11:20:24Z Xach: cods: thank you, by the way, for making cl-vectors etc perfect so quickly, because i have been able to use it for so many happy things over the years 2018-09-28T11:20:29Z shrdlu68 quit (Read error: Connection reset by peer) 2018-09-28T11:20:51Z Xach: cods: my latest project involves making real roadside signs out of vinyl, paint, and wood, and it started from a program powered by cl-vectors 2018-09-28T11:22:41Z jackdaniel: Xach: will you be willing to accept such PR? or there is already a way to achieve that? 2018-09-28T11:23:12Z eminhi: Hi, I'm browsing sbcl source and came across, (declare (explicit-check)). What is this used for? 2018-09-28T11:23:43Z Josh_2 quit (Remote host closed the connection) 2018-09-28T11:23:56Z Josh_2 joined #lisp 2018-09-28T11:24:14Z jackdaniel: eminhi: it looks like sbcl-specific interface. probably enforces checking declared variable types despite (i.e) succesful inference 2018-09-28T11:25:27Z no-defun-allowed: I guessed the opposite but that's less reasonable: type checks are explicitly required. 2018-09-28T11:25:27Z no-defun-allowed: That would be (safety 0) though. 2018-09-28T11:30:37Z scymtym: jackdaniel: eminhi: it means arguments should not be checked against the declared ftype in the function prologue because the function body will perform an explicit check (hence the name) and error signaling itself 2018-09-28T11:31:18Z jackdaniel: scymtym: uhm, thanks for the explanation 2018-09-28T11:37:30Z eminhi: scymtym: jackdaniel: Thank You 2018-09-28T11:38:49Z esrse quit (Ping timeout: 246 seconds) 2018-09-28T11:41:07Z eminhi: sbcl has many instance of code like, (defun 1+ (number) (declare (explicit-check)) (1+ number). recursive without checks? 2018-09-28T11:41:19Z anewuser quit (Quit: anewuser) 2018-09-28T11:41:26Z eminhi: some thing very weird is going on with explicit-check. 2018-09-28T11:42:05Z beach: eminhi: As I understand it, there are primitives that are directly known by the compiler, like CAR and CDR. I guess 1+ must be one of them. 2018-09-28T11:42:31Z beach: eminhi: So no recursion involved. 2018-09-28T11:42:53Z trittweiler quit (Ping timeout: 252 seconds) 2018-09-28T11:43:35Z eminhi: so the namespaces are different for compiler code and defun symbols? 2018-09-28T11:44:20Z beach: No, it's that (1+ number) does not mean "Call the function 1+ with the number" to the compiler. It means, generate code for what you already know about 1+. 2018-09-28T11:44:49Z igemnace quit (Ping timeout: 268 seconds) 2018-09-28T11:45:59Z eminhi: What happens when 1+ is used elsewhere in the same file? compiler generate code or defun application? 2018-09-28T11:46:56Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-09-28T11:47:05Z beach: I am not the right person to answer, because I don't know the details. But, as I understand it, wherever 1+ is used in a function-call position, like (1+ ), the compiler recognizes 1+ and just generates code for what it means. 2018-09-28T11:47:08Z eminhi: is explicit-check enabling this behaviour? 2018-09-28T11:47:14Z no-defun-allowed: The same logic applies. If the function is declared inline, the compiler can optimise as much as it wants out of it. 2018-09-28T11:48:16Z scymtym: eminhi: 1+ is present as an ordinary function (in case it is called indirectly) and as compiler-level construct, a "source transform" (SLIME's M-. will show all of those). the function is implemented in term of the source transform, therefore the apparent recursion 2018-09-28T11:49:13Z scymtym: eminhi: asking SBCL-specific questions in #lisp is not the best approach. study the code and ask in #sbcl if you get stuck 2018-09-28T11:49:46Z igemnace joined #lisp 2018-09-28T11:50:57Z eminhi: scymtym: Thank you. define-source-transform clarifies this a bit. I'll join #sbcl 2018-09-28T11:51:30Z eminhi: beach: Thank you. 2018-09-28T11:52:33Z beach: Sure. 2018-09-28T11:53:40Z no-defun-allowed: How does :initfunction work in the canonical direct slot specification work? 2018-09-28T11:54:10Z no-defun-allowed: By the looks of things initform is pretty useless and initfunction is a thunk which evaluates to the wanted default value. 2018-09-28T11:55:36Z Xach: jackdaniel: i would accept the pr, sure. you can snoop on the 8-bit sample image data by using :: right now but I understand the interest in a supported option. 2018-09-28T12:01:35Z Essadon joined #lisp 2018-09-28T12:03:54Z no-defun-allowed: Goodnight. 2018-09-28T12:04:53Z igemnace_ joined #lisp 2018-09-28T12:06:12Z igemnace quit (Ping timeout: 252 seconds) 2018-09-28T12:06:34Z igemnace_ is now known as igemnace 2018-09-28T12:20:44Z cl-arthur joined #lisp 2018-09-28T12:30:17Z igemnace quit (Quit: WeeChat 2.2) 2018-09-28T12:42:40Z graphene quit (Remote host closed the connection) 2018-09-28T12:43:35Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-28T12:43:59Z graphene joined #lisp 2018-09-28T12:44:47Z SenasOzys quit (Ping timeout: 240 seconds) 2018-09-28T12:47:59Z dddddd joined #lisp 2018-09-28T12:51:16Z SenasOzys joined #lisp 2018-09-28T12:52:19Z astronavt joined #lisp 2018-09-28T12:53:31Z Bike joined #lisp 2018-09-28T12:54:33Z astronavt_ joined #lisp 2018-09-28T12:58:56Z astronavt quit (Ping timeout: 260 seconds) 2018-09-28T12:59:37Z Kundry_Wag joined #lisp 2018-09-28T13:01:21Z random-nick joined #lisp 2018-09-28T13:02:27Z frodef quit (Ping timeout: 240 seconds) 2018-09-28T13:02:35Z heisig quit (Quit: Leaving) 2018-09-28T13:03:39Z roshanavand joined #lisp 2018-09-28T13:06:15Z rnmhdn joined #lisp 2018-09-28T13:06:18Z warweasle joined #lisp 2018-09-28T13:09:57Z P1RATEZ joined #lisp 2018-09-28T13:11:41Z Kundry_Wag quit (Remote host closed the connection) 2018-09-28T13:16:28Z skeuomorf joined #lisp 2018-09-28T13:16:41Z Guest5800_ joined #lisp 2018-09-28T13:25:46Z Younder quit (Quit: Leaving) 2018-09-28T13:26:11Z Younder joined #lisp 2018-09-28T13:27:45Z thetemplar joined #lisp 2018-09-28T13:31:27Z astronavt_ is now known as astronavt 2018-09-28T13:42:53Z cage_ joined #lisp 2018-09-28T13:50:45Z warweasle is now known as warweasle_afk 2018-09-28T14:13:59Z Nephromancer joined #lisp 2018-09-28T14:18:22Z nowhere_man joined #lisp 2018-09-28T14:19:50Z LiamH joined #lisp 2018-09-28T14:29:14Z m00natic quit (Remote host closed the connection) 2018-09-28T14:33:52Z igemnace joined #lisp 2018-09-28T14:35:34Z nowhere_man quit (Ping timeout: 240 seconds) 2018-09-28T14:38:47Z SenasOzys quit (Ping timeout: 240 seconds) 2018-09-28T14:41:11Z skeuomorf quit (Ping timeout: 268 seconds) 2018-09-28T14:42:44Z rnmhdn quit (Ping timeout: 272 seconds) 2018-09-28T14:44:09Z rnmhdn joined #lisp 2018-09-28T14:50:09Z flamebeard joined #lisp 2018-09-28T14:53:40Z flamebeard quit (Remote host closed the connection) 2018-09-28T14:57:37Z asarch joined #lisp 2018-09-28T14:58:16Z flamebeard joined #lisp 2018-09-28T14:58:20Z frodef joined #lisp 2018-09-28T14:58:27Z flamebeard quit (Read error: Connection reset by peer) 2018-09-28T14:59:10Z rippa joined #lisp 2018-09-28T15:00:28Z dale_ joined #lisp 2018-09-28T15:00:47Z dale_ is now known as dale 2018-09-28T15:09:23Z SenasOzys joined #lisp 2018-09-28T15:16:56Z varjag joined #lisp 2018-09-28T15:18:29Z warweasle_afk is now known as warweasle 2018-09-28T15:20:09Z wigust quit (Ping timeout: 252 seconds) 2018-09-28T15:24:15Z lemoinem is now known as Guest70944 2018-09-28T15:24:16Z lemoinem joined #lisp 2018-09-28T15:25:13Z edgar-rft joined #lisp 2018-09-28T15:25:38Z Guest70944 quit (Ping timeout: 252 seconds) 2018-09-28T15:29:22Z lemoinem is now known as Guest60708 2018-09-28T15:29:22Z Guest60708 quit (Killed (hitchcock.freenode.net (Nickname regained by services))) 2018-09-28T15:29:23Z lemoinem joined #lisp 2018-09-28T15:30:14Z gravicappa quit (Ping timeout: 272 seconds) 2018-09-28T15:37:01Z mgsk joined #lisp 2018-09-28T15:37:21Z mgsk: Anybody know how to define a foreign key in postmodern using dao-class? 2018-09-28T15:38:50Z orivej joined #lisp 2018-09-28T15:40:31Z skeuomorf joined #lisp 2018-09-28T15:41:05Z pjb joined #lisp 2018-09-28T16:06:33Z anewuser joined #lisp 2018-09-28T16:07:28Z FreeBirdLjj joined #lisp 2018-09-28T16:12:14Z graphene quit (Remote host closed the connection) 2018-09-28T16:13:29Z graphene joined #lisp 2018-09-28T16:19:25Z zfree quit (Remote host closed the connection) 2018-09-28T16:19:36Z razzy quit (Ping timeout: 260 seconds) 2018-09-28T16:20:50Z kyby64 joined #lisp 2018-09-28T16:26:26Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-28T16:33:57Z FreeBirdLjj quit (Remote host closed the connection) 2018-09-28T16:34:33Z FreeBirdLjj joined #lisp 2018-09-28T16:35:52Z dueyfinster joined #lisp 2018-09-28T16:38:51Z FreeBirdLjj quit (Ping timeout: 260 seconds) 2018-09-28T16:39:35Z orivej quit (Ping timeout: 268 seconds) 2018-09-28T16:51:17Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-28T16:56:21Z schweers quit (Ping timeout: 260 seconds) 2018-09-28T17:00:54Z phoe: mgsk: https://sites.google.com/site/sabraonthehill/postmodern-examples/postmodern-table-management has some data on it 2018-09-28T17:01:06Z phoe: (I was just reading this today) 2018-09-28T17:05:29Z marvin2 joined #lisp 2018-09-28T17:10:18Z hydan joined #lisp 2018-09-28T17:11:11Z roshanavand quit (Quit: Lost terminal) 2018-09-28T17:14:37Z mgsk: phoe: thanks, that helps 2018-09-28T17:17:06Z lavaflow_ is now known as lavaflow 2018-09-28T17:18:32Z shrdlu68 joined #lisp 2018-09-28T17:26:26Z anewuser quit (Quit: anewuser) 2018-09-28T17:27:04Z frodef quit (Ping timeout: 268 seconds) 2018-09-28T17:29:33Z veinofKoRn is now known as veinoflockedout 2018-09-28T17:35:23Z Younder: Does anyone here do DNN's in CL? Seems to me AI has moved on. 2018-09-28T17:38:35Z phoe: Younder: DNN? 2018-09-28T17:38:43Z Younder: MXNet has an interface which is feasible. 2018-09-28T17:38:54Z Younder: phoe, Deep Neural Nets 2018-09-28T17:40:03Z Kundry_Wag joined #lisp 2018-09-28T17:40:36Z bigfondue quit (Ping timeout: 252 seconds) 2018-09-28T17:40:43Z shrdlu68 quit (Ping timeout: 244 seconds) 2018-09-28T17:41:56Z doubledup joined #lisp 2018-09-28T17:43:39Z shrdlu68 joined #lisp 2018-09-28T17:45:32Z Kundry_Wag quit (Remote host closed the connection) 2018-09-28T17:45:53Z Younder: Well, I'll work on that then. An MXNet interface to CL might be instructive. (I normally use Mathematica) 2018-09-28T17:48:07Z razzy joined #lisp 2018-09-28T17:54:20Z nowhere_man joined #lisp 2018-09-28T17:56:14Z vlatkoB quit (Remote host closed the connection) 2018-09-28T17:58:20Z shifty joined #lisp 2018-09-28T18:00:27Z bigfondue joined #lisp 2018-09-28T18:01:06Z rnmhdn quit (Ping timeout: 264 seconds) 2018-09-28T18:02:23Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-28T18:04:47Z frodef joined #lisp 2018-09-28T18:09:23Z veinoflockedout is now known as veinofhashome 2018-09-28T18:09:39Z eminhi quit (Remote host closed the connection) 2018-09-28T18:13:36Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-28T18:14:57Z beach quit (Ping timeout: 252 seconds) 2018-09-28T18:15:35Z X-Scale joined #lisp 2018-09-28T18:18:33Z robotoad joined #lisp 2018-09-28T18:20:34Z cage_ quit (Quit: Leaving) 2018-09-28T18:21:39Z rnmhdn joined #lisp 2018-09-28T18:29:25Z phoe: What would be the best pattern to only capture the kind of errors that happens as a part of DESTRUCTURING-BIND operation? 2018-09-28T18:29:38Z phoe: CLHS says it signals ERROR, which is very non-specific. 2018-09-28T18:30:40Z jasom: phoe: it's going to be implementation-specific unfortunately; this looks like someone needs to write a "trivial-bind-error" package :P 2018-09-28T18:32:41Z phoe: I'm wondering if I can somehow wrap the destructuring-bind body in some handlers that will only apply to whatever happens inside the d-b binding forms. 2018-09-28T18:33:18Z phoe: Some interesting handler-bind trickery. 2018-09-28T18:33:27Z jasom: phoe: that would still catch errors thrown on the "right side" of the binding 2018-09-28T18:33:38Z djeis[m]: Add dynamic variables and you might be able to pull that off... 2018-09-28T18:33:39Z jasom: e.g. (destructuring-bind (foo) (error ...) ...) 2018-09-28T18:33:49Z phoe: jasom: not really - a handler may decline to handle it. 2018-09-28T18:33:55Z phoe: A dynavar might be what I need in that case. 2018-09-28T18:34:17Z djeis[m]: ...gensymmed local special... 2018-09-28T18:34:22Z djeis[m]: Ow. 2018-09-28T18:34:27Z djeis[m]: That hurts me more than a little. 2018-09-28T18:34:30Z phoe: No, that would work, too. 2018-09-28T18:34:32Z jasom: lexical vars are doable too 2018-09-28T18:34:58Z jasom: (let ((in-bind t)) (handler-bind ... (destructuring-bind X Y (setf in-bind nil) ...))) 2018-09-28T18:35:14Z phoe: That sounds good 2018-09-28T18:35:22Z dale_ joined #lisp 2018-09-28T18:35:24Z jasom: but you know with a macro and gensyms and stuff 2018-09-28T18:35:31Z djeis[m]: Yea, I suppose, if you wrap the Y as well in a progn/prog1. 2018-09-28T18:35:38Z dale quit (Disconnected by services) 2018-09-28T18:35:42Z dale_ is now known as dale 2018-09-28T18:36:02Z jasom: djeis[m]: Y doesn't need to be wrapped, as it's identical in usage to destructuring-bind 2018-09-28T18:36:47Z phoe: I assume I could simply shadow CL:DESTRUCTURING-BIND with my own implementation that uses this trickery and is guaranteed to signal some DESTRUCTURING-BIND-ERROR when the binding fails. 2018-09-28T18:36:50Z djeis[m]: Depends if you want to catch errors raised by Y itself and not just the binding process. 2018-09-28T18:37:06Z phoe: But still, (destructuring-bind (x y) (error 'error) ...) 2018-09-28T18:37:13Z phoe: djeis[m]: I wouldn't want to be caught 2018-09-28T18:37:25Z phoe: want that to be caught* 2018-09-28T18:37:51Z jasom: djeis[m]: oh! 2018-09-28T18:38:20Z djeis[m]: Right, so you’d either want to move that outside your handler bind using a gensym or you’d need to wrap that too. 2018-09-28T18:38:23Z jasom: (let (in-bind) (handler-bind ... (destructuring-bind X (prog1 Y (setf in-bind t)) (setf in-bind nil) ...))) 2018-09-28T18:39:12Z djeis[m]: Yea, that could do it. 2018-09-28T18:39:33Z djeis[m]: Well... 2018-09-28T18:39:34Z djeis[m]: No. 2018-09-28T18:39:40Z Bike: you could ask your implementation(s) nicely 2018-09-28T18:40:08Z thetemplar quit (Ping timeout: 244 seconds) 2018-09-28T18:40:08Z phoe: Bike: unless you want a solution that doesn't #+sbcl (...) #+ccl (...) #+ecl (...) 2018-09-28T18:40:10Z djeis[m]: Keep in mind that there could be optional/key rules in the lambda list. 2018-09-28T18:40:18Z Bike: well, i mean, coordinate it 2018-09-28T18:40:22Z phoe: djeis[m]: why should I keep that in mind? 2018-09-28T18:40:24Z Bike: i'm just thinking it's probably not a huge change 2018-09-28T18:40:33Z djeis[m]: Do you want to catch errors from evaluating the defaults? 2018-09-28T18:40:56Z phoe: djeis[m]: hm 2018-09-28T18:41:04Z shrdlu68 quit (Ping timeout: 268 seconds) 2018-09-28T18:41:23Z djeis[m]: And I don’t see a simple way around that one, actually, that doesn’t involve parsing a lambda list. 2018-09-28T18:41:30Z Younder: Look this is all ugly. You gotta restate the problem rather than rephrase the answer. 2018-09-28T18:41:52Z phoe: I am destructuring a list and I want to capture the kind of errors that happen when a list cannot be destructured. 2018-09-28T18:42:18Z phoe: I want to handle the DESTRUCTURING-BIND-ERROR condition that was not included in the CLHS. 2018-09-28T18:45:05Z Younder: The way I would do it is to paste destructing-bind-error, rename it and add it to your program in a portable way. 2018-09-28T18:46:09Z Younder: After adding the functionality. Because the problem will probably turn up again. 2018-09-28T18:46:34Z rnmhdn quit (Ping timeout: 272 seconds) 2018-09-28T18:47:38Z phoe: paste? 2018-09-28T18:50:29Z Younder: ugly, but it works 2018-09-28T18:50:47Z robotoad quit (Quit: robotoad) 2018-09-28T18:51:16Z Younder: I wish we had pjb here. He would have a more elegant solution. 2018-09-28T18:54:18Z dbjergaard joined #lisp 2018-09-28T18:54:43Z phoe: pjb: ^ 2018-09-28T18:55:00Z dbjergaard: Hi, I'm trying to load unit tests using fiasco and I cannot for the life of me get asdf to load it 2018-09-28T18:55:07Z random-nick quit (Ping timeout: 240 seconds) 2018-09-28T18:55:15Z phoe: dbjergaard: are you using Quicklisp? 2018-09-28T18:56:53Z dbjergaard: the package to be tested was made with quickproject 2018-09-28T18:57:50Z dbjergaard: I made the test files/package according to https://github.com/stumpwm/stumpwm/blob/master/stumpwm-tests.asd 2018-09-28T18:58:39Z dbjergaard: I can (ql:quickload "packagename") just fine, but I can't do (ql:quickload "packagename-tests") 2018-09-28T18:59:38Z dbjergaard: I also can't do (asdf:operate 'asdf:load-op 'packagename-tests) 2018-09-28T18:59:41Z phoe: dbjergaard: oh, I see 2018-09-28T18:59:48Z phoe: what file is system packagename-tests declared in? 2018-09-28T18:59:59Z dbjergaard: here's the project: https://github.com/dbjergaard/indras-pearls 2018-09-28T19:00:27Z phoe: oh, (ql:quickload :indras-tests) 2018-09-28T19:00:32Z phoe: what is the result of that? 2018-09-28T19:00:52Z phoe: if it can't find the system, (ql:register-local-projects) and try again 2018-09-28T19:01:17Z phoe: (it's the issue with nested .asd files, ASDF needs to be made aware of them) 2018-09-28T19:01:56Z dbjergaard: ah, so putting that dir in the asdf:*central-registry* isn't enough? 2018-09-28T19:02:27Z gravicappa joined #lisp 2018-09-28T19:02:48Z dbjergaard: https://pastebin.com/s4UXvBBb 2018-09-28T19:02:59Z dbjergaard: is the result of trying to do (ql:quickload :indras-tests) 2018-09-28T19:03:39Z thetemplar joined #lisp 2018-09-28T19:04:06Z dbjergaard: ah! it worked 2018-09-28T19:04:26Z dbjergaard: now I've got another problem, but that's an actual "you wrote wrong code you dummy" problem 2018-09-28T19:04:29Z dbjergaard: thanks! 2018-09-28T19:04:30Z aeth: phoe: If you're only supporting a few implementations you could handle this with #+sbcl, #+ccl, #+ecl, etc. You would still need to think about which kinds of errors could happen, e.g. passing (list) to (a b c) gives an arg-count-error (and it looks like that's for defmacro lambda lists so internally they must have the same or a similar implementation) in SBCL, but that's probably not the only possible error 2018-09-28T19:05:29Z makomo joined #lisp 2018-09-28T19:06:07Z aeth: (If you're doing this as part of an application, then it's probable that your libraries already made the choice for you and your program can probably only run on SBCL and CCL and maybe ECL. If you're doing this as part of a library, you're going to have to support a longer list, but even that's only like 6-8 or so.) 2018-09-28T19:06:26Z robotoad joined #lisp 2018-09-28T19:06:40Z phoe: aeth: I'll try to do it portably. 2018-09-28T19:10:03Z scymtym: if you are willing to invest the effort, maybe try to make a protocol for generating destructuring forms (along the lines of CLtL's PARSE-MACRO, but more specific) instead. only standardizing the error condition seems like a lot of work for comparatively little gain 2018-09-28T19:11:05Z aeth: Well, just run invalid destructuring-binds and see what you get. #+sbcl sb-kernel::arg-count-error #+ccl ccl::simple-program-error #+ecl simple-error #+clisp system::simple-program-error #+abcl program-error 2018-09-28T19:11:20Z aeth: This only is problematic in #+abcl because SLIME isn't giving me the package, just the name, and program-error isn't in cl-user 2018-09-28T19:11:37Z jasom: aeth: apropos 2018-09-28T19:11:46Z orivej joined #lisp 2018-09-28T19:12:00Z jasom: aeth: or you know just (handler-case ...) and return the error 2018-09-28T19:12:26Z aeth: looks like it's system::program-error 2018-09-28T19:13:21Z aeth: There are some issues with just seeing what you get. SBCL might be too specific, i.e. you might get something else with a different invalid list passed in if that's possible (try cases with &key and &rest and &body). 2018-09-28T19:13:37Z aeth: And ECL has the opposite problem... seems away too general. 2018-09-28T19:14:13Z phoe: What did I get wrong in this FORMAT call? 2018-09-28T19:14:14Z phoe: (format t "Failed to destructure ~S against ~S~:[.~;~%~A~]" '(a b) '(2) "haha") 2018-09-28T19:15:00Z jasom: aeth: are your sure it's not cl:program-error? 2018-09-28T19:15:32Z aeth: jasom: it could be both 2018-09-28T19:15:42Z aeth: you're probably right 2018-09-28T19:16:21Z scymtym: phoe: you need ~%~:*~A in the end as ~:[ consumes one argument 2018-09-28T19:16:26Z phoe: scymtym: thanks 2018-09-28T19:16:30Z jasom: phoe: ~[ consumes an argument 2018-09-28T19:16:55Z jasom: you can use ~@[ instead phoe, scymtym 2018-09-28T19:17:27Z jasom: oh no you can't because you're doing ~;, nevermind 2018-09-28T19:20:35Z Kundry_Wag joined #lisp 2018-09-28T19:21:19Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-28T19:22:08Z skeuomorf quit (Ping timeout: 252 seconds) 2018-09-28T19:23:36Z rumbler31 joined #lisp 2018-09-28T19:23:59Z random-nick joined #lisp 2018-09-28T19:24:14Z graphene quit (Remote host closed the connection) 2018-09-28T19:25:27Z graphene joined #lisp 2018-09-28T19:27:40Z rumbler31 quit (Ping timeout: 244 seconds) 2018-09-28T19:30:41Z robotoad quit (Quit: robotoad) 2018-09-28T19:37:32Z lnostdal quit (Ping timeout: 252 seconds) 2018-09-28T19:40:33Z nowhere_man joined #lisp 2018-09-28T19:41:12Z lnostdal joined #lisp 2018-09-28T19:43:57Z ggole quit (Quit: ggole) 2018-09-28T19:48:53Z Kundry_Wag quit (Remote host closed the connection) 2018-09-28T19:50:11Z frodef quit (Ping timeout: 252 seconds) 2018-09-28T19:52:23Z trittweiler joined #lisp 2018-09-28T19:53:37Z Bike quit (Ping timeout: 256 seconds) 2018-09-28T19:54:07Z scottj left #lisp 2018-09-28T20:01:35Z dbjergaard quit (Remote host closed the connection) 2018-09-28T20:02:07Z igemnace quit (Ping timeout: 240 seconds) 2018-09-28T20:03:08Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-28T20:04:10Z robotoad joined #lisp 2018-09-28T20:05:27Z asarch quit (Remote host closed the connection) 2018-09-28T20:06:45Z dented42 joined #lisp 2018-09-28T20:08:19Z phoe: I think I got my destructuring-bind* in a decent shape 2018-09-28T20:08:20Z phoe: https://plaster.tymoon.eu/view/936#936 2018-09-28T20:08:46Z phoe: it can properly handle things like (destructuring-bind* (a &optional (b (error "haha"))) '(2)) 2018-09-28T20:09:02Z phoe: as in, not capturing the error of the optional's default 2018-09-28T20:10:28Z random-nickname joined #lisp 2018-09-28T20:10:31Z Shinmera: phoe: you need to evaluate expression outside the handler-bind. 2018-09-28T20:10:39Z ober joined #lisp 2018-09-28T20:10:47Z Shinmera: or you'll capture errors happening there. 2018-09-28T20:12:11Z random-nick quit (Ping timeout: 252 seconds) 2018-09-28T20:12:13Z phoe: Shinmera: what do you mean? 2018-09-28T20:12:25Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-28T20:12:44Z Shinmera: (destructuring-bind* () (error "hah")) 2018-09-28T20:12:57Z phoe: not captured 2018-09-28T20:13:06Z eschatologist quit (Ping timeout: 264 seconds) 2018-09-28T20:13:11Z Shinmera: how? 2018-09-28T20:13:16Z vaporatorius joined #lisp 2018-09-28T20:13:20Z Shinmera: you set in-body only afterwards 2018-09-28T20:14:02Z phoe: ...oh wait a second 2018-09-28T20:14:18Z Shinmera: so it needs to be `(let ((,v ,expression)) (handler-bind ((error #',handle)) (destructuring-bind ,new ,v ,@body)))) 2018-09-28T20:14:19Z phoe: it used to work a while ago 2018-09-28T20:14:42Z Shinmera: err, forgot the in-body set, but anyway 2018-09-28T20:15:20Z Shinmera: you might also want to wrap ,@body in a locally to retain declarations 2018-09-28T20:15:35Z lnostdal quit (Quit: https://www.Quanto.ga/) 2018-09-28T20:16:04Z eschatologist joined #lisp 2018-09-28T20:17:06Z phoe: oh, I see 2018-09-28T20:17:35Z phoe: https://plaster.tymoon.eu/view/937#937 this should fix it 2018-09-28T20:17:46Z phoe: both the expression error capture and the declarations 2018-09-28T20:18:18Z Shinmera: wont that mean in-body is T during destructuring? 2018-09-28T20:19:51Z Shinmera: if anything do (prog2 (setf ,in-body T) ,expr (setf ,in-body NIL)) 2018-09-28T20:20:13Z Shinmera: but I reall suggest doing the binding as above instead, it's much cleaner 2018-09-28T20:20:15Z phoe: huh, right 2018-09-28T20:20:24Z phoe: one second, let me understand how you did it 2018-09-28T20:21:07Z Shinmera: `(let ((,v ,expression)) (handler-bind ((error #',handle)) (destructuring-bind ,new ,v (setf ,in-body T) ,@body)))) 2018-09-28T20:21:18Z Shinmera: with v being an extra gensym 2018-09-28T20:21:45Z trittweiler: I'm a bit perplexed by what the point of this is, but assuming it's some kind of learning experience: please note LOCALLY won't be enough because locally only supports free declarations, not declarations of bindings. The bind-modify-lambda-list can also probably be written cleaner. 2018-09-28T20:22:17Z phoe: trittweiler: right, I'll need to extract the declarations from the body if there are any 2018-09-28T20:22:32Z phoe: trittweiler: and yes, bind-modify-lambda-list is dirty but works 2018-09-28T20:23:01Z Shinmera: time for form-fiddle (or similar) 2018-09-28T20:23:09Z phoe: trittweiler: also not really a learning experience, I realized that I have a use case where I want to capture errors that may happen during destructuring, and the standard doesn't let me do that easily. 2018-09-28T20:23:27Z phoe: Shinmera: https://plaster.tymoon.eu/view/938#938 2018-09-28T20:23:46Z trittweiler: can't you grab an implementation of destructuring-bind from sicl and use that instead? Seems cleaner imho :) 2018-09-28T20:24:42Z Shinmera: sicl's carries a lot of baggage, if I remember correctly, because lambda list parsing is extensible. 2018-09-28T20:24:44Z phoe: trittweiler: that would make my code depend on SICL and Cleavir 2018-09-28T20:24:54Z phoe: https://github.com/robert-strandh/SICL/blob/master/Code/Data-and-control-flow/destructuring-bind-support.lisp 2018-09-28T20:24:57Z Shinmera: so it's not small 2018-09-28T20:25:20Z Inline joined #lisp 2018-09-28T20:27:06Z Bike joined #lisp 2018-09-28T20:27:32Z Roy_Fokker joined #lisp 2018-09-28T20:27:42Z Inline quit (Read error: Connection reset by peer) 2018-09-28T20:28:10Z Inline joined #lisp 2018-09-28T20:32:00Z thetemplar quit (Ping timeout: 252 seconds) 2018-09-28T20:32:37Z frodef joined #lisp 2018-09-28T20:34:45Z ealfonso joined #lisp 2018-09-28T20:36:29Z Demosthenex: haha! he got structs easy, objects.... got complicated 2018-09-28T20:36:41Z Demosthenex: i think it was suddenly introducing mapcar that confused him, but he got over it 2018-09-28T20:37:01Z skeuomorf joined #lisp 2018-09-28T20:37:05Z cpt_nemo joined #lisp 2018-09-28T20:42:20Z lnostdal joined #lisp 2018-09-28T20:43:15Z tich-k joined #lisp 2018-09-28T20:44:30Z megalography joined #lisp 2018-09-28T20:45:38Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-28T20:48:04Z scymtym quit (Ping timeout: 240 seconds) 2018-09-28T20:48:40Z Blackbeard left #lisp 2018-09-28T20:51:22Z kyby64 quit 2018-09-28T20:56:34Z orivej quit (Ping timeout: 240 seconds) 2018-09-28T20:56:57Z orivej joined #lisp 2018-09-28T20:57:34Z shifty quit (Ping timeout: 244 seconds) 2018-09-28T21:02:00Z doubledup quit (Quit: Leaving) 2018-09-28T21:05:45Z mutenewt joined #lisp 2018-09-28T21:08:07Z rotty quit (Ping timeout: 240 seconds) 2018-09-28T21:12:35Z rotty joined #lisp 2018-09-28T21:20:03Z gravicappa quit (Ping timeout: 245 seconds) 2018-09-28T21:33:02Z astalla joined #lisp 2018-09-28T21:33:18Z Josh_2 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-28T21:33:49Z [X-Scale] joined #lisp 2018-09-28T21:34:35Z skeuomorf quit (Read error: Connection reset by peer) 2018-09-28T21:35:17Z X-Scale quit (Ping timeout: 244 seconds) 2018-09-28T21:35:18Z [X-Scale] is now known as X-Scale 2018-09-28T21:35:46Z pfdietz quit (Ping timeout: 260 seconds) 2018-09-28T21:37:56Z mutenewt quit (Quit: Leaving) 2018-09-28T21:38:56Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-28T21:39:16Z varjag joined #lisp 2018-09-28T21:42:15Z scymtym joined #lisp 2018-09-28T21:43:53Z SenasOzys quit (Remote host closed the connection) 2018-09-28T21:44:33Z rumbler31 joined #lisp 2018-09-28T21:44:42Z rumbler31 quit (Remote host closed the connection) 2018-09-28T21:44:48Z regreg_ quit (Ping timeout: 252 seconds) 2018-09-28T21:45:48Z SenasOzys joined #lisp 2018-09-28T21:49:22Z SenasOzys quit (Remote host closed the connection) 2018-09-28T21:49:44Z SenasOzys joined #lisp 2018-09-28T21:50:50Z phoe: well, https://github.com/phoe/destructuring-bind-star 2018-09-28T21:51:10Z phoe: some basic tests are in place 2018-09-28T21:52:10Z rumbler31 joined #lisp 2018-09-28T21:54:59Z LiamH quit (Quit: Leaving.) 2018-09-28T21:57:34Z slyrus1 quit (Quit: slyrus1) 2018-09-28T21:57:53Z slyrus1 joined #lisp 2018-09-28T22:00:22Z mkolenda quit (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) 2018-09-28T22:01:06Z mkolenda joined #lisp 2018-09-28T22:01:07Z rumbler31 quit (Remote host closed the connection) 2018-09-28T22:03:32Z dmiles quit (Ping timeout: 272 seconds) 2018-09-28T22:04:22Z logicmoo joined #lisp 2018-09-28T22:07:02Z random-nickname quit (Ping timeout: 268 seconds) 2018-09-28T22:08:24Z jack_rabbit joined #lisp 2018-09-28T22:08:59Z random-nickname joined #lisp 2018-09-28T22:10:03Z arbv quit (Ping timeout: 245 seconds) 2018-09-28T22:14:34Z arbv joined #lisp 2018-09-28T22:17:58Z astalla quit (Ping timeout: 245 seconds) 2018-09-28T22:18:02Z random-nickname quit (Read error: Connection reset by peer) 2018-09-28T22:18:18Z Kundry_Wag joined #lisp 2018-09-28T22:19:25Z astalla joined #lisp 2018-09-28T22:22:47Z jasmith quit (Quit: Leaving) 2018-09-28T22:23:56Z nowhere_man quit (Read error: Connection reset by peer) 2018-09-28T22:24:09Z nowhere_man joined #lisp 2018-09-28T22:24:40Z Kundry_Wag quit (Remote host closed the connection) 2018-09-28T22:25:16Z astalla quit (Ping timeout: 246 seconds) 2018-09-28T22:25:34Z skeuomorf joined #lisp 2018-09-28T22:34:42Z skeuomorf quit (Ping timeout: 244 seconds) 2018-09-28T22:34:53Z Josh_2 joined #lisp 2018-09-28T22:36:38Z nowhere_man quit (Ping timeout: 268 seconds) 2018-09-28T22:39:23Z skeuomorf joined #lisp 2018-09-28T22:40:43Z tich-k quit (Remote host closed the connection) 2018-09-28T22:46:37Z angavrilov quit (Remote host closed the connection) 2018-09-28T22:53:39Z panji joined #lisp 2018-09-28T22:58:33Z nowhere_man joined #lisp 2018-09-28T22:59:03Z anewuser joined #lisp 2018-09-28T23:01:43Z skeuomorf quit (Ping timeout: 245 seconds) 2018-09-28T23:10:25Z Achylles joined #lisp 2018-09-28T23:10:46Z panji quit (Read error: Connection reset by peer) 2018-09-28T23:13:55Z nowhere_man quit (Ping timeout: 246 seconds) 2018-09-28T23:17:51Z P1RATEZ quit 2018-09-28T23:18:26Z trittweiler quit (Ping timeout: 260 seconds) 2018-09-28T23:20:52Z trittweiler joined #lisp 2018-09-28T23:25:05Z Essadon quit (Quit: Qutting) 2018-09-28T23:25:16Z Josh_2 quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-28T23:27:24Z rtypo joined #lisp 2018-09-28T23:31:42Z aeth: Oh, cool, someone ported one of Steve Russell's old projects to (a descendant of) another one of Steve Russell's old projects. https://www.guerra-espacial.rufina.link/ 2018-09-28T23:42:49Z mrblack joined #lisp 2018-09-28T23:45:29Z nowhere_man joined #lisp 2018-09-28T23:45:29Z anewuser quit (Ping timeout: 244 seconds) 2018-09-28T23:45:59Z mrblack: hi everyone... I'm following the book "Land of Lisp" on Debian, and it tells me to install the "clisp" package. Unfortunately, this package is not part of Stable anymore, so I installed sbcl after a suggestion I got in #emacs. So my question is: when the book tells me to run "clisp", will I have any trouble if I use "sbcl" instead? I mean, will I be able to follow the same instructions and get the same result? 2018-09-28T23:46:42Z djeis[m]: For a lot of code, very probably. 2018-09-28T23:46:52Z mrblack: cool 2018-09-28T23:46:53Z djeis[m]: Most code is portable. 2018-09-28T23:46:54Z mrblack: another question 2018-09-28T23:47:02Z mrblack: just for the sake of it 2018-09-28T23:47:16Z mrblack: would if too hard to install Clisp from source? 2018-09-28T23:47:33Z mrblack: *would it be to hard 2018-09-28T23:48:12Z djeis[m]: Honestly? No clue. 2018-09-28T23:48:17Z mrblack: I have experience installing stuff from source, as long as there are good instructions for me to follow 2018-09-28T23:49:19Z Bike: i think clisp is reaosnably easy to build 2018-09-28T23:49:31Z jasom: mrblack: IIRC it's ./configure && make && make install 2018-09-28T23:49:36Z djeis[m]: What's clisp master actually like these days? 2018-09-28T23:49:42Z Bike: lisp code that works in clisp will almost certainly work in sbcl. the command line switches will be different, but i don't know if LoL uses those 2018-09-28T23:49:46Z djeis[m]: Cus they haven't had a proper release in a while, IIRC. 2018-09-28T23:50:15Z aeth: mrblack: There is one chapter that requires CLISP iirc. The web server chapter or something like that. 2018-09-28T23:51:12Z mrblack: aeth, yeah, he says that in the introduction. 2018-09-28T23:51:39Z aeth: mrblack: generally ime you'll find things to be the other way around, where they work on SBCL but not on CLISP. 2018-09-28T23:52:19Z mrblack: hummm.... I understand. Even in the context of this book? 2018-09-28T23:52:31Z djeis[m]: I'd suggest just doing the rest of the book on SBCL and figuring out the web server when you get to it tbh. 2018-09-28T23:52:44Z djeis[m]: Because I suspect that anything that book says about web servers is outdated at this point. 2018-09-28T23:52:49Z mrblack: okay! 2018-09-28T23:53:04Z mrblack: so the sbcl is better anyway, is that it? 2018-09-28T23:53:23Z djeis[m]: Well, compared to the last actual release of clisp? Definitely. 2018-09-28T23:53:39Z mrblack: awesome 2018-09-28T23:54:24Z mrblack: one more: do you guys use Emacs for lisp? If so, do you have any links and recommendations for it? 2018-09-28T23:54:36Z aeth: mrblack: ime the issues I've had recently with trying to test a short portable program in CLISP were in LOOP (where CLISP either deviates from the standard or SBCL/CCL/ECL do) and in declaring something to be the type of a struct (not sure if structs don't create a type in CLISP or if I would have to wrap the defstruct in an eval-when to also run it at compile time to get the declaration to be valid) 2018-09-28T23:55:15Z aeth: mrblack: I don't think either would be an issue in the context of working through an introductory book that was written with CLISP in mind 2018-09-28T23:55:19Z oni-on-ion: real lispers dont LOOP 2018-09-28T23:55:24Z djeis[m]: lol 2018-09-28T23:55:27Z mrblack: aeth, I don't know what most of those things mean lol 2018-09-28T23:55:42Z aeth: right, fairly advanced stuff 2018-09-28T23:56:00Z aeth: Portability issues tend to happen in rare corners of the language 2018-09-28T23:56:21Z oni-on-ion: which might make you think CL is such a waste in all the conforming efforts 2018-09-28T23:56:58Z oni-on-ion: undefined behaviors, implementation-dependant functionality, whats the use of a standard? to have a #channel of course 2018-09-28T23:57:15Z djeis[m]: Yea, but for port code portability is both possible and reasonable. 2018-09-28T23:57:20Z djeis[m]: *most code 2018-09-28T23:57:41Z oni-on-ion: that is how i still feel 2018-09-28T23:57:42Z mrblack: aeth, My motivation to learn lisp is to do stuff on Emacs, so I doubt I'll ever get to this advanced stuff that created you problems 2018-09-28T23:57:57Z oni-on-ion: but it is always talked about, implementation this and that. ironically being a CL channel 2018-09-28T23:58:11Z Bike: you are aware that emacs lisp is not what land of lisp is about? 2018-09-28T23:58:23Z mrblack: Bike, yes, of course. 2018-09-28T23:58:28Z Bike: k good 2018-09-28T23:58:29Z oni-on-ion: most of it applies to elisp Bike , it is not too far off. 2018-09-28T23:58:29Z adlai: mrblack: (require 'cl) should get you a workable common lisp within emacs 2018-09-28T23:58:35Z aeth: ah I see what happened 2018-09-28T23:58:39Z aeth: http://www.lispworks.com/documentation/HyperSpec/Body/m_loop.htm#loop 2018-09-28T23:58:42Z Bike: it seems pretty far off to me 2018-09-28T23:58:49Z Bike: more far off than the distance between clisp and sbcl, certainly 2018-09-28T23:59:00Z Oladon joined #lisp 2018-09-28T23:59:01Z oni-on-ion: i feel that CL and elisp are similar in most respects/regards 2018-09-28T23:59:07Z oni-on-ion: ehh really ?? 2018-09-28T23:59:15Z mrblack: Bike, I'm using a Common Lisp resource because it is a good resource, educational wise... I don't like the Elisp specific materials very much 2018-09-28T23:59:25Z Bike: as long as you're aware, it's probably fine 2018-09-28T23:59:28Z adlai: mrblack: be warned that treating emacs as a common lisp compiler will bring along a whole world of unwanted nuisance 2018-09-28T23:59:28Z jgkamat: use cl-lib not cl, cl is deprecated due to namespace conflicts 2018-09-28T23:59:37Z mrblack: thanks, adlai 2018-09-28T23:59:55Z djeis[m]: Elisp is definitely easier to learn knowing CL, but they're still rather different languages. 2018-09-28T23:59:58Z oni-on-ion: adlai: what about slime or sly. 2018-09-29T00:00:31Z mrblack: but anyway, it won't hurt me to know some Clisp, right? 2018-09-29T00:00:58Z oni-on-ion: your CL should run in clisp and sbcl 2018-09-29T00:01:05Z mrblack: cool 2018-09-29T00:01:37Z aeth: According to the HyperSpec syntax specification of LOOP, ':for foo type' has to be ':for foo :of-type bar-type' unless type is 'fixnum | float | t | nil' and I was saying ':for foo double-float' instead of ':for foo :of-type double-float'. I (and SBCL, ECL, and CCL) interpreted 'float' as allowing the various float subtypes (including double-float) but CLISP interprets it strictly and only wants fixnum, float, t, or nil, with no subtype of 2018-09-29T00:01:55Z aeth: , with no subtype of float (or fixnum?) 2018-09-29T00:02:06Z oni-on-ion: all the CL compilers do all the CL like all the C compilers do the C, we can get into implementation-specific features later 2018-09-29T00:02:39Z oni-on-ion: its fun to get all the knowledge and information but sometimes we just want to code and get stuff done and play with computers =) 2018-09-29T00:03:50Z aeth: Put concretely, SBCL, ECL, and CCL accept this, but CLISP does not: (loop :for foo double-float := 0d0 :then (1+ foo) :until (> foo 42d0) :finally (return foo)) 2018-09-29T00:04:20Z aeth: (Also single-float, short-float, and long-float) 2018-09-29T00:04:38Z Bike: skipping of-type is for simonists 2018-09-29T00:04:54Z Bike: i think clisp is also stricter about clause ordering, or maybe the other way around, or maybe it's been fixed 2018-09-29T00:05:11Z aeth: Bike: I wanted to keep more :FORs as one-liners but I didn't want to break the line length limit of 100 2018-09-29T00:05:11Z oni-on-ion: }|" 2018-09-29T00:05:21Z aeth: Bike: as it is I only had to make 2 as two-liners iirc 2018-09-29T00:06:27Z dale quit (Quit: dale) 2018-09-29T00:06:51Z aeth: oh, oops, I was using 80, not 100, and 1 technically went over it by 1 character anyway. 2018-09-29T00:07:13Z mrblack: what programs you use to code lisp? text editor, IDE?... 2018-09-29T00:07:33Z Bike: mostly emacs 2018-09-29T00:07:44Z Bike: with the slime edity developy thing 2018-09-29T00:07:57Z djeis[m]: emacs, with sly for CL. 2018-09-29T00:08:15Z aeth: The majority use SLIME with GNU Emacs. The minority use Sly with GNU Emacs. Notice the pattern: GNU Emacs. 2018-09-29T00:08:22Z mrblack: yep 2018-09-29T00:08:32Z mrblack: do you use paredit? 2018-09-29T00:08:54Z aeth: I suspect it's the same case, where the majority use paredit, but the minority use something roughly equivalent. 2018-09-29T00:09:40Z aeth: note that if you don't (setq paredit-space-for-delimiter-predicates '((lambda (endp delimiter) nil))) then some reader macros break with paredit iirc 2018-09-29T00:10:04Z mrblack: I usually don't do start something looking for lots of tools, but I have a serious case of not being able to parse parenthesis, so I decided to get all the help I can right from the start 2018-09-29T00:10:07Z aeth: (well, it doesn't break them, it just breaks their style, by adding a space afterward) 2018-09-29T00:11:25Z Kundry_Wag joined #lisp 2018-09-29T00:11:31Z nowhere_man quit (Ping timeout: 260 seconds) 2018-09-29T00:11:50Z oni-on-ion: :{ let lisp parse for you 2018-09-29T00:13:09Z djeis[m]: I use a whole bunch of stuff mixed together, some of it my own design lol 2018-09-29T00:13:35Z oni-on-ion: man makes his own workshop -9 2018-09-29T00:13:37Z oni-on-ion: =)** 2018-09-29T00:14:17Z oni-on-ion: we arent setting up pre-fab garages and studios, we make our own, based on our workflow 2018-09-29T00:14:55Z shifty joined #lisp 2018-09-29T00:16:56Z frodef quit (Ping timeout: 252 seconds) 2018-09-29T00:25:17Z warweasle joined #lisp 2018-09-29T00:32:49Z Nephromancer quit (Quit: Connection closed for inactivity) 2018-09-29T00:54:53Z moei quit (Ping timeout: 252 seconds) 2018-09-29T00:58:28Z varjag quit (Ping timeout: 268 seconds) 2018-09-29T00:58:49Z Kundry_Wag quit (Remote host closed the connection) 2018-09-29T01:13:51Z Oladon quit (Quit: Leaving.) 2018-09-29T01:14:25Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-29T01:15:26Z cl-arthur quit (Quit: Lost terminal) 2018-09-29T01:24:26Z varjag joined #lisp 2018-09-29T01:29:07Z pjb quit (Read error: No route to host) 2018-09-29T01:29:20Z varjag quit (Ping timeout: 244 seconds) 2018-09-29T01:38:57Z warweasle joined #lisp 2018-09-29T01:40:34Z Achylles quit (Ping timeout: 240 seconds) 2018-09-29T01:43:15Z bmansurov left #lisp 2018-09-29T01:49:21Z phao joined #lisp 2018-09-29T01:49:59Z hydan quit (Quit: Connection closed for inactivity) 2018-09-29T01:51:14Z robotoad quit (Quit: robotoad) 2018-09-29T02:00:01Z shifty quit (Ping timeout: 260 seconds) 2018-09-29T02:12:06Z skeuomorf joined #lisp 2018-09-29T02:13:54Z robotoad joined #lisp 2018-09-29T02:14:32Z anewuser joined #lisp 2018-09-29T02:15:46Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-29T02:17:13Z moei joined #lisp 2018-09-29T02:22:34Z Oladon joined #lisp 2018-09-29T02:27:09Z eminhi joined #lisp 2018-09-29T02:31:41Z orivej quit (Ping timeout: 252 seconds) 2018-09-29T02:38:59Z astronavt quit (Ping timeout: 268 seconds) 2018-09-29T03:03:29Z rnmhdn joined #lisp 2018-09-29T03:10:45Z rtypo quit (Ping timeout: 252 seconds) 2018-09-29T03:15:03Z Pixel_Outlaw joined #lisp 2018-09-29T03:16:33Z Roy_Fokker quit (Read error: Connection reset by peer) 2018-09-29T03:30:08Z jkordani quit (Read error: Connection reset by peer) 2018-09-29T03:31:31Z lopan5 joined #lisp 2018-09-29T03:36:58Z phao quit (Quit: Leaving) 2018-09-29T03:39:25Z dddddd quit (Remote host closed the connection) 2018-09-29T03:40:49Z jinkies joined #lisp 2018-09-29T03:41:14Z MetaYan: mrblack: A nice Lisp environment based on Emacs and SBCL: https://portacle.github.io 2018-09-29T03:43:56Z ober: nice for when you're on windows 2018-09-29T03:44:56Z MetaYan: mrblack: There is also #clschool and #clnoobs 2018-09-29T03:45:38Z lopan5 left #lisp 2018-09-29T03:46:29Z trittweiler quit (Ping timeout: 252 seconds) 2018-09-29T03:47:16Z trittweiler joined #lisp 2018-09-29T03:47:26Z MetaYan: ober: Good to know. I use it on Mac - constantly. 2018-09-29T03:54:13Z ober: if you don't use the emacs normally, I could see the value 2018-09-29T03:54:28Z mrblack: MetaYan, oh, I know about Portacle, but I'm an Emacs user already, I think there's no turning back :P 2018-09-29T04:00:16Z mrblack: I guess a well configured Emacs will have everything there's in Portacle, right? 2018-09-29T04:00:55Z ober: typically. 2018-09-29T04:01:25Z ober: one rarely just kisses emacs, and then breaks up with it. 2018-09-29T04:01:32Z MetaYan: Yes, Portacle is Emacs, SBCL, Quicklisp put together in a nice ease-to install package. 2018-09-29T04:01:46Z MetaYan: easy-to-install 2018-09-29T04:02:03Z ober: and on some platforms it's a god send. where setting those up can be quite a pain 2018-09-29T04:02:11Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-29T04:05:20Z FreeBirdLjj joined #lisp 2018-09-29T04:07:11Z jeosol quit (Ping timeout: 256 seconds) 2018-09-29T04:07:18Z adlai: portmanteau of porthole barnacle? 2018-09-29T04:08:00Z mrblack: oh... should I install quicklisp? 2018-09-29T04:08:07Z no-defun-allowed: yes 2018-09-29T04:08:22Z MetaYan: mrblack: Highly recommended 2018-09-29T04:08:47Z mrblack: do I have to configure it on Emacs or something? 2018-09-29T04:09:35Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2018-09-29T04:09:45Z no-defun-allowed: using quicklisp you should install slime then use that slime to load quicklisp so kinda 2018-09-29T04:09:58Z regreg_ joined #lisp 2018-09-29T04:10:05Z mrblack: okay 2018-09-29T04:10:15Z mrblack: I already set up slime with SBLC on Emacs 2018-09-29T04:11:24Z mrblack: I used apt on Debian... maybe it's plug-n-play? 2018-09-29T04:12:26Z ober: (ql:quickload :quicklisp-slime-helper) then be sure to source in ~/quicklisp/slime-helper.el in emacs 2018-09-29T04:13:41Z mrblack: ober, is this command to run on SBCL? 2018-09-29T04:13:49Z mrblack: ober, cause it is throwing an error 2018-09-29T04:16:00Z mrblack: https://hastebin.com/olocaxufug.coffeescript 2018-09-29T04:16:26Z MetaYan: https://www.quicklisp.org/beta/ 2018-09-29T04:16:32Z no-defun-allowed: did you load quicklisp first? 2018-09-29T04:17:24Z mrblack: nope... I don't know how to load. I instaled via apt and "whereis" it won't tell me where it is. May I should not use the apt version? 2018-09-29T04:17:42Z Bike: quicklisp isn't in debian 2018-09-29T04:18:04Z mrblack: I thought it was this one: cl-quicklisp 2018-09-29T04:18:14Z Bike: huh 2018-09-29T04:18:30Z Bike: well, honestly most people around here at least avoid the debian packages 2018-09-29T04:18:40Z mrblack: really? good to know 2018-09-29T04:18:42Z Bike: a few years ago they were always super out of date and finicky. dunno about now. 2018-09-29T04:19:50Z no-defun-allowed: debian is usually out of data 2018-09-29T04:19:51Z ober: yeah, unless you want 100% compat with PCL common lisp. :P 2018-09-29T04:19:51Z no-defun-allowed: *date 2018-09-29T04:20:02Z mrblack: how's the command to load quicklisp from SBCL? 2018-09-29T04:20:27Z Bike: it's just (load "/path/to/quicklisp/setup.lisp") 2018-09-29T04:20:35Z mrblack: awesome, thanks 2018-09-29T04:20:41Z Bike: i couldn't tell you where debian put setup.lisp, though 2018-09-29T04:21:55Z mrblack: it's in the same folder 2018-09-29T04:22:10Z mrblack: its working 2018-09-29T04:22:54Z mrblack: should I load Quicklisp every time I start Lisp? 2018-09-29T04:23:53Z Bike: yeah. you can do (ql:add-to-init-file) and it'll put it in sbcl's init file so you don't have to do it yourself 2018-09-29T04:24:09Z mrblack: great 2018-09-29T04:25:51Z ober: yeah, most of us have become use to the curl/ql/sbcl/emacs loop 2018-09-29T04:26:31Z ober: learn that slime. there are a load of features that are use by many, but not obvious to new folks. 2018-09-29T04:27:26Z mrblack: I think I finished the main configurations 2018-09-29T04:28:22Z Oladon quit (Quit: Leaving.) 2018-09-29T04:32:14Z trittweiler quit (Ping timeout: 244 seconds) 2018-09-29T04:32:30Z mrblack: wow... the slime repl well configure is very very nice 2018-09-29T04:33:02Z rnmhdn quit (Ping timeout: 272 seconds) 2018-09-29T04:36:59Z anewuser quit (Quit: anewuser) 2018-09-29T04:37:35Z adlai: at which point mrblack discovers that there's a special circle of hell wherein slime addicts are forced to program lisp verbally, and each day a different one has to act as stenographer - using a mechanical typewriter 2018-09-29T04:37:58Z ober: gateway drug. 2018-09-29T04:38:14Z oni-on-ion: agh/ugh 2018-09-29T04:39:07Z [X-Scale] joined #lisp 2018-09-29T04:40:02Z adlai occupies the fixed point in that circle where you have to untangle the key jams 2018-09-29T04:41:07Z X-Scale quit (Ping timeout: 240 seconds) 2018-09-29T04:41:07Z [X-Scale] is now known as X-Scale 2018-09-29T04:41:14Z oni-on-ion: dracula 2018-09-29T04:42:15Z mrblack: adlai, :D 2018-09-29T04:43:02Z mrblack: I was considering using sbcl in the command line. I WAS A FOOL. 2018-09-29T04:43:34Z adlai: supposedly clisp is quite a useful standalone 2018-09-29T04:43:36Z ober: yeah, command line for only exists because they have not gotten around to removing it. 2018-09-29T04:44:31Z razzy quit (Ping timeout: 260 seconds) 2018-09-29T04:47:05Z mrblack: very very nice 2018-09-29T04:48:38Z mrblack: why would someone use anything other than Emacs/Portacle for lisp? 2018-09-29T04:49:18Z djeis[m]: So they don’t need to learn a new editor at the same time as learning a new programming language. 2018-09-29T04:49:19Z no-defun-allowed: cause climacs is a thing 2018-09-29T04:49:27Z mrblack: djeis[m], makes sense 2018-09-29T04:51:02Z djeis[m]: Don’t get me wrong- love emacs. Do think it’ll probably stay the best lisp env going forward. But that doesn’t mean everyone should be expected to take the time to learn it. Better if at least a good subset of the CL-specific functionality were in more editors. 2018-09-29T04:51:33Z mrblack: I agree 2018-09-29T04:51:54Z djeis[m]: Now if only I had infinite time... 2018-09-29T04:52:01Z ober: and sbcl is not used by everyone 2018-09-29T04:52:03Z mrblack: Emacs is awesome, but I'd never recommend it to a "normal" person :P 2018-09-29T04:52:23Z mrblack: one must go to Emacs by itself, 2018-09-29T04:52:29Z mrblack: one must hear the calling 2018-09-29T04:52:41Z mrblack: It is written 2018-09-29T04:53:35Z ober: gateway to lisp 2018-09-29T04:56:31Z MetaYan: SBCL command line can become quite nice with sbcl-readline - just git clone https://github.com/jini-zh/sbcl-readline in quicklisp/local-projects , (ql:register-local-projects) once and then (ql:quickload :sbcl-readline) 2018-09-29T04:57:34Z jeosol joined #lisp 2018-09-29T04:57:34Z mrblack: is it possible to prevent Slime from writing those messages when it starts? 2018-09-29T04:58:03Z MetaYan: What messages? 2018-09-29T04:59:48Z Pixel_Outlaw quit (Remote host closed the connection) 2018-09-29T05:00:57Z beach joined #lisp 2018-09-29T05:00:59Z MetaYan: If you mean the animation, you can put (setq slime-startup-animation nil) in .emacs 2018-09-29T05:01:42Z beach: Good morning everyone! 2018-09-29T05:02:24Z MetaYan: Good norning! 2018-09-29T05:02:33Z MetaYan: /morning/ 2018-09-29T05:03:04Z jeosol: Good morning beach 2018-09-29T05:03:23Z definite joined #lisp 2018-09-29T05:03:26Z no-defun-allowed: morning beach 2018-09-29T05:03:28Z definite quit (Client Quit) 2018-09-29T05:03:53Z ntalin joined #lisp 2018-09-29T05:04:21Z ntalin quit (Client Quit) 2018-09-29T05:04:48Z ntalin joined #lisp 2018-09-29T05:05:01Z ntalin is now known as definite 2018-09-29T05:05:04Z definite left #lisp 2018-09-29T05:05:34Z LdBeth: GG 2018-09-29T05:05:40Z mrblack: MetaYan, no.. I think it's loading stuff. But it goes away quick so I can't paste. 2018-09-29T05:06:40Z asarch joined #lisp 2018-09-29T05:08:29Z adlai: mrblack: messages to which buffer? 2018-09-29T05:08:49Z mrblack: adlai, slime-repl sbcl 2018-09-29T05:09:01Z MetaYan: mrblack: Maybe check the *inferior-lisp* buffer? 2018-09-29T05:09:44Z adlai: mrblack: eh it shouldn't be sending any messages there during startup. you're probably noticing the inferior lisp buffer where slime talks to sbcl, or maybe the emacs message buffer 2018-09-29T05:10:53Z mrblack: yeah... I don't know how to solve this. It's of no consequence, really. Just a little OCD on my part. 2018-09-29T05:14:36Z cmatei quit (Remote host closed the connection) 2018-09-29T05:15:59Z jack_rabbit joined #lisp 2018-09-29T05:18:13Z skeuomorf quit (Ping timeout: 244 seconds) 2018-09-29T05:18:15Z graphene quit (Remote host closed the connection) 2018-09-29T05:19:32Z graphene joined #lisp 2018-09-29T05:19:35Z dented42 joined #lisp 2018-09-29T05:22:25Z dented42 quit (Client Quit) 2018-09-29T05:23:30Z Bike quit (Quit: Lost terminal) 2018-09-29T05:30:07Z rnmhdn joined #lisp 2018-09-29T05:35:44Z rnmhdn quit (Ping timeout: 272 seconds) 2018-09-29T05:40:13Z graphene quit (Remote host closed the connection) 2018-09-29T05:41:32Z graphene joined #lisp 2018-09-29T05:42:28Z ggole joined #lisp 2018-09-29T05:55:53Z regreg_ quit (Ping timeout: 245 seconds) 2018-09-29T05:56:34Z regreg_ joined #lisp 2018-09-29T06:02:41Z phoe: Morniiing 2018-09-29T06:03:28Z rnmhdn joined #lisp 2018-09-29T06:07:03Z doubledup joined #lisp 2018-09-29T06:08:34Z regreg_ quit (Quit: Konversation terminated!) 2018-09-29T06:08:43Z Kevslinger quit (Quit: Connection closed for inactivity) 2018-09-29T06:10:24Z eminhi quit (Quit: leaving) 2018-09-29T06:11:07Z rnmhdn quit (Ping timeout: 268 seconds) 2018-09-29T06:17:21Z beach: Hello phoe. 2018-09-29T06:20:43Z beach quit (Disconnected by services) 2018-09-29T06:20:48Z no-defun-allowed: hi phoe 2018-09-29T06:21:29Z beach joined #lisp 2018-09-29T06:22:23Z no-defun-allowed: welcome back beach 2018-09-29T06:22:36Z beach: Thanks. 2018-09-29T06:22:36Z mrblack quit (Ping timeout: 252 seconds) 2018-09-29T06:23:41Z jinkies quit (Ping timeout: 260 seconds) 2018-09-29T06:25:08Z wiselord quit (Ping timeout: 272 seconds) 2018-09-29T06:26:28Z mrblack joined #lisp 2018-09-29T06:37:14Z phoe: Hey hi beach no-defun-allowed 2018-09-29T06:37:25Z no-defun-allowed: o/ 2018-09-29T06:42:25Z angavrilov joined #lisp 2018-09-29T06:44:58Z logicmoo is now known as dmiles 2018-09-29T06:45:32Z dented42 joined #lisp 2018-09-29T06:46:18Z Guest5800_ quit (Quit: Connection closed for inactivity) 2018-09-29T06:54:21Z vlatkoB joined #lisp 2018-09-29T07:05:57Z heisig joined #lisp 2018-09-29T07:14:19Z rippa joined #lisp 2018-09-29T07:15:49Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-29T07:19:34Z quipa joined #lisp 2018-09-29T07:19:51Z quipa quit (Remote host closed the connection) 2018-09-29T07:29:04Z phoe: Are there any papers on implementing a condition system in Lisp that doesn't have a condition system? 2018-09-29T07:29:19Z phoe: I'm interested in the basics of implementing handler-bind, for instance. 2018-09-29T07:32:12Z wiselord joined #lisp 2018-09-29T07:33:53Z beach: As I recall, the condition system can be implemented entirely in a portable way. But I haven't thought about it for some time. 2018-09-29T07:38:18Z adlai: phoe: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.100.7504 (warning: the helpful answer would've been "no", but go on, click the link :) 2018-09-29T07:41:30Z phoe: beach: AFAIK, handlers are just functions, and handler-bind simply conses another handler on top of a dynamic variable. handler-case adds a THROW to achieve non-local exit. 2018-09-29T07:41:49Z beach: Sounds right. 2018-09-29T07:41:55Z phoe: SIGNAL searches the handler list for matching ones and invokes them; ERROR is signal on top of invoke-debugger. 2018-09-29T07:42:30Z phoe: And there are restarts on top of this. 2018-09-29T07:46:45Z adlai: clhs error 2018-09-29T07:46:45Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/a_error.htm 2018-09-29T07:47:30Z phoe: like, literally, (defun error (e) (signal e) (invoke-debugger e)) 2018-09-29T07:47:43Z phoe: (except ERROR also accepts format controls) 2018-09-29T07:47:46Z adlai was always under the impression that this behavior could be implemented as a handler of last resort 2018-09-29T07:48:07Z phoe: a handler of last resort would always trigger even in case of SIGNAL 2018-09-29T07:48:22Z robotoad quit (Quit: robotoad) 2018-09-29T07:48:29Z adlai: not if it punts nonerrors 2018-09-29T07:48:31Z phoe: (signal (make-condition 'condition)) doesn't usually invoke a debugger; (error (make-condition 'condition)) always does unless the condition is handled 2018-09-29T07:48:49Z asarch quit (Quit: Leaving) 2018-09-29T07:48:50Z phoe: same with (signal (make-condition 'error)) - no debugger here 2018-09-29T07:51:24Z adlai stands corrected 2018-09-29T07:51:58Z phoe: signaling a condition means "hey, I got this state in the program, you could run some code now if you'd like to"; invoking a debugger on a condition means "oh no, boy, you're *NOT* getting away with this, the program execution is halted" 2018-09-29T07:52:51Z phoe: which means, signal + invoke-debugger is equivalent to "hey, either you handle this thing, or your program stops in an unpleasant way" 2018-09-29T07:53:04Z phoe: which is exactly what #'ERROR does 2018-09-29T07:54:45Z phoe: handlers are just simple callbacks that you are able to specify dynamically; they are pretty useful for non-local exits, though, which is what they are often used for 2018-09-29T07:55:41Z robotoad joined #lisp 2018-09-29T07:55:58Z phoe: see (let ((x 2)) (handler-bind ((condition (lambda (e) (declare (ignore e)) (incf x 2)))) (print x) (signal 'condition) (print x))) 2018-09-29T07:56:06Z phoe: that's a silly and simple example 2018-09-29T07:56:49Z phoe: you can substitute anything you want for the lambda body, and use the condition object for passing arguments to that callback. 2018-09-29T07:56:56Z definite joined #lisp 2018-09-29T07:57:04Z beach quit (Ping timeout: 240 seconds) 2018-09-29T07:59:27Z beach joined #lisp 2018-09-29T08:02:13Z definite left #lisp 2018-09-29T08:03:09Z frodef joined #lisp 2018-09-29T08:24:55Z dddddd joined #lisp 2018-09-29T08:28:38Z moei quit (Ping timeout: 252 seconds) 2018-09-29T08:32:05Z oni-on-ion: clhs horror 2018-09-29T08:32:06Z specbot: Couldn't find anything for horror. 2018-09-29T08:36:18Z nanoz joined #lisp 2018-09-29T08:38:35Z quipa joined #lisp 2018-09-29T08:55:15Z arbv quit (Ping timeout: 252 seconds) 2018-09-29T08:56:58Z makomo: morning 2018-09-29T09:00:34Z oni-on-ion: hillo 2018-09-29T09:01:42Z SaganMan joined #lisp 2018-09-29T09:01:43Z marvin2 quit (Ping timeout: 245 seconds) 2018-09-29T09:03:12Z runejuhl quit (Quit: WeeChat 2.1) 2018-09-29T09:04:01Z robotoad quit (Quit: robotoad) 2018-09-29T09:05:04Z beach: Hello makomo. 2018-09-29T09:05:22Z makomo: hello 2018-09-29T09:13:44Z adlai: clhs extreme-prejudice 2018-09-29T09:13:44Z specbot: Couldn't find anything for extreme-prejudice. 2018-09-29T09:14:37Z adlai gives up looking for the halt state precursor state, it appears to be the case that contrary to popular belief, common lisp actually is turing-complete. 2018-09-29T09:16:23Z robotoad joined #lisp 2018-09-29T09:16:47Z oni-on-ion: what 2018-09-29T09:17:19Z aeth: Not only is Common Lisp turing complete, it has like 10 turing complete surprising areas (well, would be surprising in other languages). 2018-09-29T09:19:24Z russellw: aeth, oh, what are they? 2018-09-29T09:19:56Z aeth: #.(loop) ; for when you want the reader to infinite-loop 2018-09-29T09:20:05Z aeth: (eval-when (:compile-toplevel) (loop)) ; for when you want to the compiler to infinte loop 2018-09-29T09:20:11Z runejuhl joined #lisp 2018-09-29T09:20:59Z Shinmera: infinite loops have nothing to do with turing completeness. 2018-09-29T09:21:26Z doubledup quit (Quit: Leaving) 2018-09-29T09:21:55Z russellw: It's an example. You see his point: the reader and compiler can both be instructed to run general code, which is an interesting and unusual feature. Most languages don't have that 2018-09-29T09:22:23Z aeth: (defun foo (&rest rest) (declare (ignore rest)) (loop)) (deftype foo () `(satisfies foo)) ; for when you want the type system to infinite loop 2018-09-29T09:22:26Z aeth: etc 2018-09-29T09:22:37Z russellw: cool! 2018-09-29T09:22:39Z aeth: Shinmera: yeah, but usually the stated reason why you can't do these sorts of things in $language is to avoid infinite looping 2018-09-29T09:23:33Z aeth: Technically, I should be doing calls to my Brainfuck implementation instead, since that's a good proof of Turing completeness, but that's actually less fun. 2018-09-29T09:23:53Z mrblack quit (Remote host closed the connection) 2018-09-29T09:23:56Z russellw: :) 2018-09-29T09:24:03Z oni-on-ion: heh type system 2018-09-29T09:24:13Z Shinmera: russellw: if you can evaluate arbitrary forms the turing comleteness isn't surprising, it's obvious. 2018-09-29T09:24:43Z russellw: Shinmera, exactly. So it suffices to pick an example that demonstrates you can evaluate arbitrary forms in those places 2018-09-29T09:25:02Z mrblack joined #lisp 2018-09-29T09:25:17Z Shinmera: russellw: he specifically talked about surprising areas though. 2018-09-29T09:25:27Z Shinmera: but whatever 2018-09-29T09:26:16Z aeth: Shinmera: Usually languages that offer compile time evaluation offer a restricted subset of the language or some other, restricted language. 2018-09-29T09:26:53Z aeth: Because they don't want turing completeness because they don't want things like infinite loops. 2018-09-29T09:27:22Z aeth: It's surprising to be able to evaluate arbitrary forms in certain areas. 2018-09-29T09:27:53Z oni-on-ion: reader, compiler, type system; what other areas? 2018-09-29T09:28:15Z aeth: macro expansion, but that's kind of cheating because most languages don't even have that 2018-09-29T09:28:48Z russellw: C does, and does not allow evaluating arbitrary code in it, so I think that's a fair example 2018-09-29T09:28:50Z aeth: eval-when also can make code run at ":load-toplevel" 2018-09-29T09:28:51Z runejuhl quit (Quit: WeeChat 2.1) 2018-09-29T09:30:15Z oni-on-ion: CL typesystem could be documented more for justice 2018-09-29T09:34:20Z aeth: I'm trying to think of where else... probably something to do with CLOS or conditions 2018-09-29T09:35:40Z Shinmera: russellw: C does not have macros, it has reader macros. 2018-09-29T09:35:43Z oni-on-ion: the human brain o_o 2018-09-29T09:36:05Z Shinmera: or they're closer to that concept, anyway 2018-09-29T09:36:15Z aeth: oh and I wouldn't count reader macros on my list because #. pretty much covered it 2018-09-29T09:36:22Z mrblack_ joined #lisp 2018-09-29T09:36:38Z mrblack quit (Read error: Connection reset by peer) 2018-09-29T09:42:12Z moei joined #lisp 2018-09-29T09:48:27Z moei quit (Ping timeout: 240 seconds) 2018-09-29T09:54:50Z quipa_ joined #lisp 2018-09-29T09:57:13Z quipa quit (Ping timeout: 244 seconds) 2018-09-29T09:57:18Z runejuhl joined #lisp 2018-09-29T09:58:47Z robotoad quit (Quit: robotoad) 2018-09-29T10:02:37Z beach quit (Ping timeout: 252 seconds) 2018-09-29T10:04:23Z orivej joined #lisp 2018-09-29T10:05:05Z random-nick joined #lisp 2018-09-29T10:07:17Z beach joined #lisp 2018-09-29T10:10:46Z random-nick quit (Remote host closed the connection) 2018-09-29T10:13:12Z phoe: Style question: (in-package :foo) or (in-package #:foo)? 2018-09-29T10:13:27Z beach: (cl:in-package #:foo) 2018-09-29T10:14:38Z Shinmera: phoe: as long as you're consistent it really doesn't matter anymore 2018-09-29T10:16:49Z random-nick joined #lisp 2018-09-29T10:18:14Z jackdaniel: bueuty of confusion, I've spent last hour writing a comment which strives to spare that confusion future generations 2018-09-29T10:18:25Z jackdaniel: beauty* 2018-09-29T10:18:34Z phoe: jackdaniel: show me 2018-09-29T10:19:00Z jackdaniel: comment is relatively short. I was just trying to first grok why it behaves the way I observe it 2018-09-29T10:20:10Z jackdaniel: (basically: x-origin/y-origin are relative to pen position in glyph coordinate system, which is the first-quadrant -- Y grow upwards), that's why we negate left distance and not top one 2018-09-29T10:20:14Z jackdaniel: ) 2018-09-29T10:21:07Z phoe: yes, in the first quadrant, X goes leftwards to negative infinity 2018-09-29T10:21:15Z phoe: so it's logical that the values there are negative 2018-09-29T10:21:29Z jackdaniel: erm, no 2018-09-29T10:21:33Z jackdaniel: first quadrant is what you know from math 2018-09-29T10:21:38Z jackdaniel: when you draw charts 2018-09-29T10:21:53Z jackdaniel: bottom-left is origin and grows upward-right 2018-09-29T10:22:02Z ggole quit (Remote host closed the connection) 2018-09-29T10:22:04Z phoe: https://cdn.kastatic.org/ka-perseus-graphie/5ccb3c65bfc404595f924ce51a0ef166e2a17163.svg 2018-09-29T10:22:06Z jackdaniel: what is often in computer graphics is second quadrant 2018-09-29T10:22:32Z phoe: oh wait a second, I confused the second with the fourth 2018-09-29T10:22:43Z jackdaniel: bleh, Computer graphics are IV quadrant, sorry 2018-09-29T10:22:53Z jackdaniel: either way: https://en.wikipedia.org/wiki/Quadrant_(plane_geometry) 2018-09-29T10:22:59Z phoe: ...wait, did I not? 2018-09-29T10:23:28Z phoe: I did not - yes, I understand what you mean, computer graphics often use fourth quadrant 2018-09-29T10:23:56Z jackdaniel: either way X grows to the right, not towards infinity in both :) 2018-09-29T10:24:02Z jackdaniel: (minus infinity) 2018-09-29T10:24:23Z jackdaniel: so, now time for kerning in McCLIM 2018-09-29T10:24:28Z phoe: good luck! 2018-09-29T10:24:38Z jackdaniel: that will be the easy part (luckily) 2018-09-29T10:26:03Z SaganMan quit (Quit: WeeChat 1.6) 2018-09-29T10:29:56Z phoe: Where exactly does the standard specify that (setf (find-class 'condition-type) nil) is the way to remove a condition type from the global environment? 2018-09-29T10:31:05Z Shinmera: It doesn't and it isn't. 2018-09-29T10:31:28Z Shinmera: In practice it is because usually conditions are classes, but there's no promise about that 2018-09-29T10:31:45Z Shinmera: so even find-class on a condition type is implementation specific 2018-09-29T10:32:05Z varjag joined #lisp 2018-09-29T10:32:18Z phoe: So, I assume, there is no portable way to remove a condition from the global environment? 2018-09-29T10:32:23Z Shinmera: No. 2018-09-29T10:32:56Z Shinmera: CL has real weird edge cases where some definition information is available only for certain kinds of definitions. 2018-09-29T10:33:12Z Shinmera: well, information and operations. 2018-09-29T10:33:46Z Shinmera: Reminds me, I should add a protocoll to Definitions to update or remove definitions. 2018-09-29T10:33:58Z Shinmera: *protocol, even 2018-09-29T10:34:06Z phoe: Well then, I'll lead the implementation-defined behavior and assume that condition classes exist, no matter what they are. 2018-09-29T10:39:09Z beach: I detect an opportunity to specify that conditions are classes in WSCL. 2018-09-29T10:39:25Z beach: Is there any implementation that does not do it that way? 2018-09-29T10:40:14Z orivej quit (Quit: No Ping reply in 180 seconds.) 2018-09-29T10:40:24Z no-defun-allowed: Is there anything describing why people shouldn't use the Unix "philosophy"? 2018-09-29T10:40:49Z beach: What is the Unix "pholosophy"? 2018-09-29T10:41:15Z no-defun-allowed: "worse is better" is the first accurate name I found. 2018-09-29T10:41:33Z beach: The Unix-haters handbook is a good start. 2018-09-29T10:41:37Z phoe: beach: I haven't found one. 2018-09-29T10:41:50Z phoe: no-defun-allowed: http://simson.net/ref/ugh.pdf 2018-09-29T10:42:17Z jackdaniel: no-defun-allowed: you may want to read http://www.dreamsongs.com/WIB.html 2018-09-29T10:42:20Z phoe: beach: I know that SBCL, CCL, ECL, ABCL use condition classes. Only SBCL out of these four doesn't have conditions as standard-objects. 2018-09-29T10:42:27Z jackdaniel: commonly referred as "worse is better" 2018-09-29T10:42:47Z graphene quit (Remote host closed the connection) 2018-09-29T10:42:48Z beach: phoe: Good to know, thanks! 2018-09-29T10:43:16Z no-defun-allowed: Thankyou. 2018-09-29T10:43:34Z phoe: beach: I don't know about other implementations, particularly the commercial ones. 2018-09-29T10:43:57Z beach: Right. 2018-09-29T10:44:07Z graphene joined #lisp 2018-09-29T10:44:20Z phoe: gendl: do you have access to LispWorks and ACL? Could you give us the results of (describe (make-instance 'condition)) on these two platforms? 2018-09-29T10:44:21Z beach: Remind me and I'll ask Martin in Genoa. 2018-09-29T10:47:30Z phoe: ...wait a second, I'll actually do that myself. 2018-09-29T10:49:44Z phoe: LispWorks conditions are standard-objects. 2018-09-29T10:49:53Z beach: OK. 2018-09-29T10:50:00Z beach: I am a bit surprised though. 2018-09-29T10:50:28Z scymtym quit (Ping timeout: 268 seconds) 2018-09-29T10:50:51Z beach: I would have expected the existence of a condition-object and condition-class just as there is standard-object and standard-class and also funcallable-standard-object and funcallable-standard-class. 2018-09-29T10:51:27Z d4ryus1 joined #lisp 2018-09-29T10:52:03Z beach: Well, not condition-object, just condition. 2018-09-29T10:52:19Z phoe: So does ACL. 2018-09-29T10:52:27Z phoe: https://plaster.tymoon.eu/view/939#939 2018-09-29T10:52:38Z White__Flame joined #lisp 2018-09-29T10:52:41Z phoe: So, effectively, ACL, LW, CCL, ECL, ABCL all use standard-objects for conditions. 2018-09-29T10:52:51Z jackdaniel: that's laziness of course 2018-09-29T10:53:25Z beach: phoe: Er, hold on a sec... 2018-09-29T10:53:40Z phoe: jackdaniel: laziness? 2018-09-29T10:53:42Z nonlinear joined #lisp 2018-09-29T10:54:17Z beach: phoe: I don't think the fact that CONDITION is a standard class implies that instances of that class are standard objects. 2018-09-29T10:55:15Z beach: phoe: I mean, built-in-class is a standard class, and there are certainly instances of built-in-class that are not standard objects. 2018-09-29T10:55:58Z phoe: (typep (make-instance 'condition) 'standard-object) ;=> T on both LW and ACL. 2018-09-29T10:56:17Z phoe: You're right. I double-checked this. 2018-09-29T10:56:20Z stux|RC-only quit (Ping timeout: 240 seconds) 2018-09-29T10:56:20Z ober quit (Ping timeout: 240 seconds) 2018-09-29T10:56:20Z flip214 quit (Ping timeout: 240 seconds) 2018-09-29T10:56:20Z eagleflo quit (Ping timeout: 240 seconds) 2018-09-29T10:56:20Z mgsk quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z Intensity quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z varjag quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z NB0X-Matt-CA quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z d4ryus quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z snits quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z luis quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z karstensrage quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z eschatologist quit (Ping timeout: 240 seconds) 2018-09-29T10:56:21Z saturn2 quit (Ping timeout: 240 seconds) 2018-09-29T10:56:22Z H4ns quit (Ping timeout: 240 seconds) 2018-09-29T10:56:22Z White_Flame quit (Ping timeout: 240 seconds) 2018-09-29T10:56:33Z beach: phoe: OK, that's good. 2018-09-29T10:56:38Z eschatologist joined #lisp 2018-09-29T10:56:46Z jackdaniel: phoe: making conditions standard objects (given you have clos already) is easy and you have no push from the standard to givem them a separate hierarchy like condition-class 2018-09-29T10:57:28Z moei joined #lisp 2018-09-29T10:57:35Z phoe: jackdaniel: yes, and I actually enjoy the fact that they obey the instance creation protocol - I have my personal use-case for defining INITIALIZE-INSTANCE :AFTER on conditions which only SBCL doesn't obey. 2018-09-29T10:57:44Z saturn2 joined #lisp 2018-09-29T10:58:02Z phoe: https://bugs.launchpad.net/sbcl/+bug/1761735 2018-09-29T10:58:27Z jackdaniel: I'm not saying that such unification is bad thing, only that doing it that way is most likely due to a said laziness 2018-09-29T10:58:41Z phoe: yes, I understand that one 2018-09-29T10:59:48Z jackdaniel: as of defining initialize-instance :after on condition - it is just not common lisp, so I'd hardly call it a bug 2018-09-29T10:59:54Z iomonad quit (Ping timeout: 252 seconds) 2018-09-29T11:00:09Z jackdaniel: (when you do that yo udo no better than people who cast pointers in C ;-) 2018-09-29T11:00:58Z phoe: jackdaniel: I know, I simply wish I could do that 2018-09-29T11:01:36Z phoe: conditions as second-class CLOS objects don't float my boat 2018-09-29T11:02:43Z White__Flame is now known as White_Flame 2018-09-29T11:10:32Z orivej joined #lisp 2018-09-29T11:13:35Z ggole joined #lisp 2018-09-29T11:17:11Z panji joined #lisp 2018-09-29T11:18:58Z phoe: wow! classes are type specifiers 2018-09-29T11:19:01Z phoe: (typep 2 (find-class 'integer)) ;=> T 2018-09-29T11:24:04Z jackdaniel: you don't need find-class here 2018-09-29T11:24:22Z jackdaniel: (defclass foo () ()) (typep (make-instance 'foo) 'foo) ; -> t 2018-09-29T11:24:50Z phoe: jackdaniel: I know 2018-09-29T11:24:59Z iomonad joined #lisp 2018-09-29T11:25:03Z phoe: I knew that (typep 2 'integer) works 2018-09-29T11:25:15Z phoe: I didn't know that (typep 2 (find-class 'integer)) works 2018-09-29T11:25:29Z phoe: that class objects are valid type specifiers 2018-09-29T11:27:21Z beach: clhs 4.2.3 2018-09-29T11:27:21Z specbot: Type Specifiers: http://www.lispworks.com/reference/HyperSpec/Body/04_bc.htm 2018-09-29T11:28:41Z phoe: "...or defining a class by using defclass or define-condition automatically causes the name of the structure or class to be a new type specifier symbol." 2018-09-29T11:29:00Z phoe: woah, the standard just said that define-condition defines classes" 2018-09-29T11:29:32Z jackdaniel drops off the amusement train to make a spaghetti \o 2018-09-29T11:30:49Z |3b|: if i'm generating all the code at compile time (basically compiling a file that looks like "(foo:generate-all-the-code)"), is there any benefit to generating a defpackage form over generating code for building the packages incrementally? 2018-09-29T11:31:03Z phoe: debuggability 2018-09-29T11:31:26Z |3b|: you mean i can generate a defpackage to test manually? 2018-09-29T11:31:32Z phoe: DEFPACKAGE is much easier to parse by humans in case something goes wrong (and Murphy's law says it most likely will) 2018-09-29T11:31:38Z |3b|: humans never see it 2018-09-29T11:31:45Z phoe: unless something goes wrong 2018-09-29T11:32:16Z |3b|: (foo:generate-all-the-code) is literally the contents of the source file (probably better named and with argument, but still a 1 line macro call) 2018-09-29T11:32:34Z phoe: technically, there's absolutely no difference 2018-09-29T11:33:05Z phoe: but if I ever were to debug code generated by a machine, I'd prefer a DEFPACKAGE where all package information is stored in one place rather than seeing bits of EXPORTs and IMPORTs thrown all over the place 2018-09-29T11:33:08Z |3b|: but i guess users can macroexpand it (and then watch emacs break on the 100+MB of output) 2018-09-29T11:33:28Z phoe: ...do you want to feed 100MB of source code into the compiler at once? 2018-09-29T11:33:48Z |3b|: well, probably would still be pretty close together, but probably not hard to build a defpackage form 2018-09-29T11:33:54Z |3b|: yeah, i already do 2018-09-29T11:34:02Z phoe: good lords 2018-09-29T11:34:17Z |3b|: just don't want to put it in git (and also not sure about the legality of doing so once i thought about it) 2018-09-29T11:34:29Z |3b|: it is package definitions and ffi info for the entire android API 2018-09-29T11:34:51Z |3b|: gnerated from a 30MB or so .jar file from the android sdk 2018-09-29T11:35:44Z |3b|: so rather than try to figure out the legality of shipping the jar or code derived from it (and deal with 100MB files in git, or making them smaller), i can just say "download the SDK or this file, and put a path to it here" 2018-09-29T11:35:59Z phoe: yes, I see 2018-09-29T11:36:01Z |3b|: and generate the ffi data into a .fasl directly from the .jar 2018-09-29T11:36:20Z |3b|: (.fasl is more reasonable 15mb) 2018-09-29T11:40:21Z |3b|: takes ~30sec to compile from file, but hopefully that won't have to happen often. just loading the .fasl is ~1-2sec 2018-09-29T11:40:37Z Xof: .slol 2018-09-29T11:40:44Z |3b|: also hopefully generating the code won't be much slower than READing it 2018-09-29T11:41:14Z |3b|: nah, seems like reasonable time for 100MB of source, and some of that might be my code being slow 2018-09-29T11:41:22Z panji quit (Remote host closed the connection) 2018-09-29T11:41:51Z |3b|: since it has to process the ffi info while it loads 2018-09-29T11:42:36Z |3b|: and if not, loading 4.5k packages from from a single .fasl file isn't really something i'd expect sbcl to worry about optimizing :) 2018-09-29T11:42:40Z scymtym joined #lisp 2018-09-29T11:58:22Z gravicappa joined #lisp 2018-09-29T12:04:22Z SenasOzys quit (Remote host closed the connection) 2018-09-29T12:06:18Z SenasOzys joined #lisp 2018-09-29T12:07:24Z SenasOzys quit (Remote host closed the connection) 2018-09-29T12:07:53Z nowhere_man joined #lisp 2018-09-29T12:08:02Z SenasOzys joined #lisp 2018-09-29T12:26:43Z Nephromancer joined #lisp 2018-09-29T12:27:53Z SaganMan joined #lisp 2018-09-29T12:33:56Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-29T12:38:18Z makomo quit (Quit: WeeChat 2.2) 2018-09-29T12:41:36Z Bike joined #lisp 2018-09-29T12:50:38Z phoe: beach: if you want to note one more interesting trait of modern implementations, it seems that all of them allow to create condition instances via MAKE-INSTANCE. 2018-09-29T12:50:51Z phoe: (princ (make-instance 'simple-condition :format-control "foo ~A" :format-arguments '("bar"))) prints "foo bar" 2018-09-29T12:51:29Z phoe: Tested on SBCL, CCL, ABCL, LW, ACL; about to test on ECL. 2018-09-29T12:53:19Z phoe: Tested on ECL as well. 2018-09-29T12:54:28Z phoe: And using MAKE-INSTANCE instead of MAKE-CONDITION allows INITIALIZE-INSTANCE :AFTER to fire, which works around my issue. 2018-09-29T12:54:50Z phoe: So, if I refrain from using MAKE-CONDITION, I can actually make conditions obey the instance creation protocol on SBCL. 2018-09-29T12:55:10Z phoe: Undefined behavior, here I come! 2018-09-29T12:56:12Z oni-on-ion: where CL shines 2018-09-29T12:56:55Z phoe: When it comes to UB, Lisp still doesn't shine as hard as some other languages 2018-09-29T12:58:21Z oni-on-ion: but those have only one or zero implementatois 2018-09-29T12:58:48Z phoe: not really - C has surprisingly many implementations that disagree a real lot on what UB means 2018-09-29T12:59:19Z phoe: compared to that, Lisp implementations are surprisingly converging 2018-09-29T13:00:38Z oni-on-ion: hm idk C impls agree on a lot of things also 2018-09-29T13:00:46Z oni-on-ion: never ever been an issue 2018-09-29T13:01:01Z phoe takes this to #lispcafe 2018-09-29T13:03:38Z moei quit (Ping timeout: 252 seconds) 2018-09-29T13:08:09Z warweasle joined #lisp 2018-09-29T13:12:41Z |3b| tries to test the "generate 100MB of code" function, crashes slime connection :/ 2018-09-29T13:13:26Z |3b|: at least i can just reconnect 2018-09-29T13:13:48Z |3b|: (and clear *inferior-lisp* once in a while, since it is still printing out there) 2018-09-29T13:14:24Z phoe: may your heap take the beating 2018-09-29T13:14:46Z |3b|: turns out i actually need 2 forms in the actual source though (i think), one to make packages and other to build forms using symbols from them 2018-09-29T13:14:58Z |3b| built with 20GB heap, so hopefully not a problem 2018-09-29T13:15:21Z |3b|: currently using 3GB 2018-09-29T13:15:27Z phoe: |3b|: something along the lines of "you can't (progn (defpackage foo) (foo:bar)) because the reader will complain"? 2018-09-29T13:15:52Z |3b|: something like that 2018-09-29T13:16:10Z |3b|: calling find-symbol myself when generating the progn, but same issue i think 2018-09-29T13:16:15Z phoe: you could work around this by using UIOP:SYMBOL-CALL everywhere you need a funcall, which will decrease readability but make this thing work 2018-09-29T13:16:32Z |3b|: or just split into 2 forms :) 2018-09-29T13:16:38Z phoe: yep, that 2018-09-29T13:16:42Z phoe: it would be much better I guess 2018-09-29T13:17:16Z |3b|: don't have to think about it that way (and can time them separately if i care) 2018-09-29T13:17:17Z makomo joined #lisp 2018-09-29T13:18:46Z gendl: phoe: ACL: 2018-09-29T13:19:06Z igemnace joined #lisp 2018-09-29T13:19:19Z gendl: https://www.irccloud.com/pastebin/bFeSLNpX/ 2018-09-29T13:20:29Z gendl: lw: 2018-09-29T13:21:01Z gendl: https://www.irccloud.com/pastebin/VcJ3y9Hp/ 2018-09-29T13:21:12Z beach: phoe: I see, yes. Well, in SICL, I can do (make-instance 'symbol :name ... :package ...) :) 2018-09-29T13:21:35Z |3b|: seems to be generating packages and ffi defs correctly from casual inspection at least, time to figure out how to hook it into macros 2018-09-29T13:21:38Z phoe: gendl: thanks. 2018-09-29T13:21:51Z gendl: Good morning everyone, 2018-09-29T13:21:55Z phoe: beach: yep. Thought you might want to add this behavior to WSCL. 2018-09-29T13:21:56Z beach: phoe: But symbols are not standard objects. 2018-09-29T13:22:06Z phoe: Yep, they're built-in. 2018-09-29T13:22:06Z |3b|: (complicated by needing 2 macros but wanting to only parse things once) 2018-09-29T13:22:07Z beach: Hello gendl. 2018-09-29T13:22:28Z gendl: if you were making an in-browser thing for editing CL or CL-based code, what editor would you use? 2018-09-29T13:22:32Z gendl: So far I have found: 2018-09-29T13:22:47Z phoe: gendl: you mean a web browser, right? 2018-09-29T13:22:57Z gendl: yes web browser. 2018-09-29T13:23:08Z gendl: I've found http://www.ymacs.org 2018-09-29T13:23:25Z gendl: also https://codemirror.net 2018-09-29T13:23:31Z gendl: the seconds seems much more actively maintained 2018-09-29T13:23:38Z gendl: second* 2018-09-29T13:24:07Z gendl: and it has a CL mode - but i just tried their example and simple things like C-y don't work (hopefully can be customized) 2018-09-29T13:24:32Z phoe: hm, I forgot how to write CL code without a slime connection to a Lisp image 2018-09-29T13:24:52Z |3b|: looks like tab just inserts tabs too :/ 2018-09-29T13:24:55Z phoe: even indentation won't work too well in that case 2018-09-29T13:25:21Z gendl: phoe: yeah, me too. Slime connection to the lisp always has to be there as a "power user" option 2018-09-29T13:25:38Z gendl: the web-based editor would be for quick & small edits 2018-09-29T13:25:38Z orivej quit (Ping timeout: 252 seconds) 2018-09-29T13:26:34Z scymtym: gendl: are you looking for a stand-alone solution or something that talks to a CL backend? 2018-09-29T13:26:56Z gendl: scymtym: stand-alone. I'll do my own talking to the CL backend. 2018-09-29T13:27:15Z gendl: (for now that will consist of a simple "compile & load" button and not much else) 2018-09-29T13:28:31Z |3b|: ymacs seems much nicer for lisp out of the box 2018-09-29T13:29:02Z gendl: |3b| I remember seeing ymacs in production use somewhere recently, i forget where though... 2018-09-29T13:29:03Z |3b| wonders how hard it would be to have both as options, default to ymacs, with other for people that expect 'normal' editors 2018-09-29T13:29:09Z scymtym: gendl: that sounds like "yes" and "no" at the same time :) i'm asking because one option could be the "Monaco" Javascript editor combined with a "Language Server" (that is implementation of Language Server Protocol) for and in CL 2018-09-29T13:29:39Z gendl: because if you look at the ymacs project page it hasn't been touched in 3 years... maybe that's misleading somehow. 2018-09-29T13:30:50Z gendl: scymtym - thanks, i'l l check that out. I saw something about LSP a while ago. That sounds like a whole new protocol which hopefully can be targeted with some kind of Slime-compatible thing some day (it's not already, is it?) 2018-09-29T13:31:01Z phoe: LSP is inferior to Slime. 2018-09-29T13:31:19Z phoe: https://news.ycombinator.com/item?id=18090611 2018-09-29T13:33:02Z scymtym: gendl: it is a new protocol. its advantage is being compatible with basically all editors and IDEs. an implementation does exist for CL to some extend (or two, rather) 2018-09-29T13:34:35Z gendl: scymtym: thanks, LSP sounds like it's worth watching. 2018-09-29T13:34:52Z gendl: the LSP functionality would be orthogonal to what I'm looking for here though, I think 2018-09-29T13:34:53Z scymtym: phoe: in don't think comparing LSP to SLIME make sense 2018-09-29T13:35:45Z thetemplar joined #lisp 2018-09-29T13:36:12Z gendl: The LSP can apply to any editor, one running locally or (in theory) a web-based one. 2018-09-29T13:36:31Z gendl: in my case the CL will be one and the same with the webserver serving the page 2018-09-29T13:37:04Z gendl: so I won't need any fancy protocols just to have a "compile/load" action for the code in the browser editor textarea. 2018-09-29T13:37:34Z gendl: But down the road, to do fancy feedback, autocompletion, etc, then it will need to get fancy. 2018-09-29T13:38:18Z gendl: it would be great if someday we can re-use some or all of our current Slime customizations in an in-browser editor scenario. Maybe LSP will end up being one route to getting some of that. 2018-09-29T13:38:41Z gendl: Or if an in-browser editor like Ymacs ever gets real elisp support. 2018-09-29T13:40:05Z gendl: anyway my idea for now for casual users is to do most common "editing" things without the need to edit actual text... 2018-09-29T13:40:17Z regreg joined #lisp 2018-09-29T13:40:21Z gendl: then fall back to editing just little expressions (like for one slot at a time) 2018-09-29T13:40:33Z gendl: then fall back to editing actual chunks of code with full definitions, 2018-09-29T13:41:02Z gendl: then fall back to "power user" mode which will be basically the traditional Slime/Swank setup, where the user can just run emacs locally and connect with Slime. 2018-09-29T13:43:24Z gendl: anyway i was up way too late last night and got woken up too early, rambling half asleep now, i'd better shut up and get some water/coffee/meditation/more sleep. 2018-09-29T13:44:04Z gendl: last night i was trying to get a decent menu system working for the web-based thing i'm working on. Then i got carried away trying to make it mimic the MacOS menus. Check it out: 2018-09-29T13:44:25Z gendl: https://codepen.io/genworks/details/aRzmjR/ 2018-09-29T13:44:45Z gendl: https://codepen.io/genworks/pen/aRzmjR/ 2018-09-29T13:45:22Z gendl: that's just a snapshot of HTML/CSS/JS from the application -- the HTML is all coming from the application with cl-who etc. 2018-09-29T13:47:07Z gravicappa quit (Ping timeout: 240 seconds) 2018-09-29T13:47:47Z roshanavand joined #lisp 2018-09-29T13:47:52Z gendl: sorry, that's probably off-topic since there's no visible Lisp involved at this point. I'll bring it up again when there's a live demo to check out. 2018-09-29T13:49:44Z varjag joined #lisp 2018-09-29T13:50:01Z gendl: |3b|: yeah, ymacs at least support C-k , C-y out of the box. 2018-09-29T13:51:35Z gendl: but I have to get outside myself for a minute and realize this is for casual users, only some of whom will every have heard of or touched emacs 2018-09-29T13:52:10Z regreg quit (Remote host closed the connection) 2018-09-29T13:55:44Z gendl: |3b|: I think your idea of giving an option will be the way to go. At least an option of emacs-mode or "normal" mode -- because we do want to attract brand totally new users (people who've never heard of emacs), but there inevitably be some users (at least myself) who will always need/want/expect some level of emacs compatibility because those keystrokes are baked into finger memory... 2018-09-29T13:58:07Z trittweiler joined #lisp 2018-09-29T13:58:58Z jackdaniel: I like the idea of such neutral editor 2018-09-29T14:00:38Z Essadon joined #lisp 2018-09-29T14:00:44Z lavaflow joined #lisp 2018-09-29T14:13:44Z FreeBirdLjj joined #lisp 2018-09-29T14:17:50Z phoe: siiiigh 2018-09-29T14:17:59Z gendl: phoe: what? 2018-09-29T14:18:18Z phoe: if I wanted to put a constraint that all subclasses of a class must have different symbol names, I could use MOP trickery to achieve that 2018-09-29T14:18:22Z Roy_Fokker joined #lisp 2018-09-29T14:18:25Z phoe: I mean 2018-09-29T14:18:35Z phoe: they must have different names under STRING= 2018-09-29T14:18:47Z phoe: so FOO:BAR and QUUX:BAR would collide with each other 2018-09-29T14:19:06Z phoe: can't easily do the same with conditions 2018-09-29T14:19:08Z jackdaniel: this sounds like something really bad (form the programmer perspective) 2018-09-29T14:19:42Z phoe: yep, I'm looking for better ideas than that 2018-09-29T14:19:57Z jackdaniel: I don't think you should limit programmer too much of what he can or can't do 2018-09-29T14:20:05Z beach: phoe: Why the constraint? 2018-09-29T14:21:28Z jackdaniel: note that CL deliberely permits some ugly things if you know what you are doing: slot-value, :: package accessor etc. and that's much in line with how CL programmers often want to feel - unrestrained by arbitrary limitations 2018-09-29T14:21:45Z phoe: beach: I'm being silly, don't mind me too much. 2018-09-29T14:22:33Z beach: OK. 2018-09-29T14:22:55Z jeosol: morning guys, what is the better way to update a variable e.g., via setf and automatically call some function afterwards. Currently, I am calling an update function to achieve this, but would like to just use (setf var-name value) if possible 2018-09-29T14:23:54Z phoe: jeosol: this looks like a symbol macro use case 2018-09-29T14:24:00Z jackdaniel: maybe with (setf (with-hook var-name) vlaue) ? then you could define (setf with-hook) function which expands to what you like 2018-09-29T14:24:02Z Achylles joined #lisp 2018-09-29T14:24:49Z jackdaniel: I don't think that having (setf var-name value) execute some post-step would be a good thing (because *reading* it would look like ordinary setf on a symbol, hence without post-step) 2018-09-29T14:25:00Z phoe: hm, right 2018-09-29T14:25:09Z jeosol: thanks phoe: jackdaniel 2018-09-29T14:25:29Z SenasOzys quit (Remote host closed the connection) 2018-09-29T14:25:31Z jeosol: I didn't mean the (setf var-name value) does that, just that I would like to have it that way. 2018-09-29T14:25:48Z jeosol: if possible, I guess I'll try the options 2018-09-29T14:25:50Z SenasOzys joined #lisp 2018-09-29T14:25:51Z phoe: beach: does http://metamodular.com/CLOS-MOP/ensure-class-using-class.html load for you? It takes a long while for me 2018-09-29T14:26:04Z phoe: jeosol: it gives the idea that you're setting a variable and that's all, nothing else happens 2018-09-29T14:26:29Z phoe: if anything, I would find it more readable to have something like (update-my-var newval) 2018-09-29T14:26:31Z jeosol: phoe: that's true. not helpful for another user 2018-09-29T14:26:34Z gendl: phoe: loads for me right away. 2018-09-29T14:26:52Z phoe: it's a function call that isn't a mere SETF call, so it reads like something else is going on there 2018-09-29T14:26:55Z nowhere_man quit (Ping timeout: 268 seconds) 2018-09-29T14:26:56Z jeosol: phoe: that's the mechanism I use currently, maybe I'll just use that then 2018-09-29T14:26:57Z phoe: gendl: oh right, my network had a hiccup. 2018-09-29T14:27:24Z gendl: you guys know about this one right: https://clos-mop.hexstreamsoft.com/ 2018-09-29T14:27:34Z beach: phoe: "load"? 2018-09-29T14:27:43Z beach: phoe: What are you doing in order to load it? 2018-09-29T14:28:11Z |3b|: what's the best way to share a time-consuming calculation between 2 macros? just eval-when a global? (ideally something that would avoid redoing the calculation when loading from .fasl, but would work when loading the .lisp) 2018-09-29T14:28:15Z phoe: beach: nothing, my web browser had a hiccup. 2018-09-29T14:28:26Z beach: phoe: ? 2018-09-29T14:28:34Z beach: How were you trying to load it? 2018-09-29T14:28:50Z maximjaffe joined #lisp 2018-09-29T14:28:57Z phoe: Using a web browser, but it hung while loading the website for a minute. 2018-09-29T14:29:01Z |3b|: other thing i can think of is doing it in reader (and possibly stored in a symbol macro) 2018-09-29T14:29:03Z phoe: gendl: I know about it, yes. 2018-09-29T14:29:38Z phoe: |3b|: I have things like (defparameter *foo* #.(compute-stuff)) - but it's a single function call. 2018-09-29T14:30:42Z |3b|: yeah, reader + symbol macro seems like easiest to get working the way i want 2018-09-29T14:31:00Z beach: gendl: Yes, I believe that was made by Jean-Philippe Paradis. 2018-09-29T14:31:08Z |3b|: (not that i actually expect people to load it, so maybe just eval-when :compile would be OK) 2018-09-29T14:31:21Z quipa_ quit (Ping timeout: 260 seconds) 2018-09-29T14:31:33Z |3b| also doesn't want the calculation result stored in the .fasl 2018-09-29T14:31:58Z |3b|: just seems a bit ugly to do things in the reader :) 2018-09-29T14:32:45Z phoe: |3b|: oh, mine actually *does* store the result in the fasl 2018-09-29T14:33:08Z |3b|: yeah, that's why symbol-macro vs special for this 2018-09-29T14:33:27Z |3b|: or symbol-macrolet in hopes it gets GCd 2018-09-29T14:33:59Z |3b|: (symbol-macrolet ((a #.(whatever))) (macrolet ((foo () (macroexpand 'a))))) 2018-09-29T14:34:15Z |3b|: or however that works, think i need the env parameter too 2018-09-29T14:34:44Z Bike: wait, so, you want the calculation result to be usable from the macroexpander, but for it /not/ to be in the fasl? 2018-09-29T14:34:49Z |3b|: right 2018-09-29T14:34:57Z |3b|: macroexpander makes the stuff that should be in the fasl 2018-09-29T14:35:10Z |3b| is generating code based on contents of a separate file 2018-09-29T14:35:30Z |3b|: maybe i should make this an asdf extension instead 2018-09-29T14:35:35Z gendl: beach: Yes, Jean-philippe seems eager to spread awareness of this clos-mop version he's done. I've taken him to task on twitter regarding his rants, though (maybe shouldn't have opened that can of worms but I felt like somebody had to face him head on). I still acknowledge that he's indeed put real work into something intended to be beneficial for CL people, so I don't mind posting a link to his clos-mop version here occasionally. 2018-09-29T14:36:39Z |3b|: any thoughts on how an asdf system that depends on an external file the user needs to acquire (for example by installing an sdk) should work? 2018-09-29T14:37:29Z |3b|: or possibly give user option to specify path to sdk if they have it, and DL the file from version control for them if they don't 2018-09-29T14:37:30Z jackdaniel: |3b|: I'd go after "defsystem-depends-on" and this file would define this system 2018-09-29T14:37:56Z |3b|: file is in android SDK, i doubt they will add asd files for me :) 2018-09-29T14:38:31Z |3b|: so i could have something like the debian "we can't distribute this so here's a package that will DL it for you" packages 2018-09-29T14:38:56Z phoe: |3b|: sure, there are some systems that do things like that 2018-09-29T14:39:16Z phoe: Shinmera's qt-libs for example, that download Qt binaries and unpack them properly as a part of loading the ASDF system 2018-09-29T14:39:23Z phoe: you could use them for reference 2018-09-29T14:40:34Z |3b|: any thoughts on whether i should just have a system that automatically downloads the version of the file i tested with from version control (~30MB), or if i should also have some way to let them use their own path if they have the SDK already? 2018-09-29T14:40:44Z |3b|: and how the latter would work 2018-09-29T14:41:04Z phoe: they likely have the android SDK defined somewhere 2018-09-29T14:41:14Z jackdaniel: |3b|: adding option to load their own SDK is certainly a good idea 2018-09-29T14:41:14Z |3b|: check env vars you mean? 2018-09-29T14:41:24Z Shinmera: How it works in qt-libs is that there's a directory in the source tree it downloads things to 2018-09-29T14:41:34Z Shinmera: if you want your own versions, just put them there 2018-09-29T14:41:37Z jackdaniel: sometimes software compile and works only against certain sdk/ndk version 2018-09-29T14:41:48Z jackdaniel: (especially on android) 2018-09-29T14:42:05Z Shinmera: In any case, make sure that downloading automatically is allowed by the license and that you only download via ssl. 2018-09-29T14:42:26Z |3b|: jackdaniel: yeah, though that probably applies to my thing too :) 2018-09-29T14:42:34Z phoe: tell them to define a package called android-sdk-config with a variable named *sdk-path*; if the package exists and the symbol exists and the variable named by that symbol is bound, use that value as the SDK path 2018-09-29T14:42:41Z phoe: that would be the long road 2018-09-29T14:42:57Z jackdaniel: |3b|: sure, but give them means to try their version :) 2018-09-29T14:42:57Z Lycurgus joined #lisp 2018-09-29T14:43:05Z |3b|: Shinmera: well, it would be downloaded from google vcs servers, presumably they wouldn't put it there if downloading it wasn't allowed 2018-09-29T14:43:18Z jackdaniel: if it fails it will be something what meats their expectations (which are certainly low for android) 2018-09-29T14:43:36Z jackdaniel: for instance bionic for years had memset version, which ignored value and always set to 0 ;-) 2018-09-29T14:43:46Z Shinmera: |3b|: I'm talking about potential license agreements that the user might have to explicitly sign off on to use the software. 2018-09-29T14:45:05Z Lycurgus: "meat" is a typo a native speaker of English wouldn't make, glad to see that confirmed 2018-09-29T14:45:05Z |3b| isn't really sure what the license for the specific file is, which is one reason i don't just include it directly 2018-09-29T14:45:31Z Lycurgus: s/wouldn't/would be unlikely to/ 2018-09-29T14:45:47Z |3b|: i /think/ the use that would be made by someone using my code if it downloaded it for them is OK 2018-09-29T14:45:47Z jackdaniel: how is my mistake a confirmation? 2018-09-29T14:45:58Z jackdaniel: it could be a datapoint at best 2018-09-29T14:46:22Z Bike: why wouldn't a native english speaker do that 2018-09-29T14:46:22Z Lycurgus: true, but it's not the first such observation 2018-09-29T14:46:32Z |3b|: (and i presumably google wouldn't go after things for using just API definitions after the java case, which is all that's left after my code parses it) 2018-09-29T14:46:45Z Shinmera: Better question: why is this being discussed, it has nothing to do with Lisp 2018-09-29T14:46:59Z Bike: i am undone... 2018-09-29T14:47:29Z pjb joined #lisp 2018-09-29T14:48:00Z Lycurgus: yeah, you chatted 2018-09-29T14:48:26Z Shinmera: |3b|: As phoe pointed out, people generally seem ok with what I do in qt-libs 2018-09-29T14:48:30Z jackdaniel: let's continue discussing legal issues with file distribution ;) 2018-09-29T14:48:42Z Shinmera: |3b|: So maybe you can take some inspiration from that 2018-09-29T14:49:12Z Lycurgus: there was something interesting about scieener lisp wasn't there? 2018-09-29T14:50:35Z phoe: yes, its webside died some time ago 2018-09-29T14:50:41Z razzy joined #lisp 2018-09-29T14:50:49Z Lycurgus: you did that on purpose 2018-09-29T14:50:49Z jackdaniel: Lycurgus: I think it used multithreading in its innards for performance 2018-09-29T14:51:00Z |3b|: hmm, maybe it isn't allowed :/ 2018-09-29T14:51:31Z Lycurgus: jackdaniel, ah 2018-09-29T14:51:34Z |3b|: at least from the obvious license, which may not apply to the specific files 2018-09-29T14:52:16Z |3b|: file in question is https://android.googlesource.com/platform/prebuilts/sdk/+/master/current/public/ top dir of that repo has https://android.googlesource.com/platform/prebuilts/sdk/+/master/NOTICE 2018-09-29T14:52:32Z beach: gendl: What he did is based on what I did, which is fine. 2018-09-29T14:53:11Z beach: gendl: But then he wanted me to push for his version and remove mine. He also wanted me to teach specbot about his version rather than mine. 2018-09-29T14:53:20Z Shinmera: |3b|: Things like the android studio do automate downloading that stuff, but they display license agreements first, so if you replicate that you should be good 2018-09-29T14:53:43Z |3b|: Shinmera: but that might forbid what i'm trying to do :/ 2018-09-29T14:53:52Z Shinmera: Ah? 2018-09-29T14:53:55Z phoe: what are you trying to do? 2018-09-29T14:54:00Z |3b|: (generic "no ... decompile ... etc" clause) 2018-09-29T14:54:01Z beach: gendl: I told him that I had no ambition to do any further work with it. It fulfills its purpose fine, so he would have to do that himself. 2018-09-29T14:54:09Z |3b|: possibly derivative works part 2018-09-29T14:54:11Z Shinmera: |3b|: I see. 2018-09-29T14:54:13Z beach: gendl: He did not seem happy with that at all. 2018-09-29T14:54:39Z |3b|: but that file might be under AOSP license (apache), or maybe not 2018-09-29T14:55:51Z |3b|: i think a good chunk of that file is https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/Activity.java and similar 2018-09-29T14:56:01Z |3b|: which are apache2 2018-09-29T14:56:38Z |3b| supposes i'll just say "download it yourself, here's a URL" for now, not like i'm expecting users at the moment :p 2018-09-29T14:57:16Z cage_ joined #lisp 2018-09-29T15:00:22Z Lycurgus quit (Quit: Exeunt) 2018-09-29T15:01:46Z gendl: beach: your position is completely understandable. Jean-phillip’s irrational outbursts are not. 2018-09-29T15:02:59Z gendl: Normally I would say leave him alone, but his twitter rants were not helpful 2018-09-29T15:03:22Z beach: Yes, I see. 2018-09-29T15:05:10Z gendl: His rants are a bit of a wake up 2018-09-29T15:05:37Z beach: What were they about? 2018-09-29T15:05:40Z Pixel_Outlaw joined #lisp 2018-09-29T15:05:41Z skeuomorf joined #lisp 2018-09-29T15:06:25Z Oladon joined #lisp 2018-09-29T15:06:50Z gendl: wake up call for the CL community to cooperate a bit better, and maybe that has a place to an extent, but personal name calling and blaming was beyond the pale and just shows his breathtaking sense of entitlement to have other magically people do as he wishes. 2018-09-29T15:07:11Z beach: Wow. 2018-09-29T15:07:59Z Shinmera: He's now calling Xach a sociopath, among other things 2018-09-29T15:08:02Z gendl: rants were claiming to “expose” corruption, conspiracies, “mafia” in the CL community. 2018-09-29T15:08:44Z beach: How bizarre. 2018-09-29T15:08:58Z Shinmera: It is baffling. 2018-09-29T15:09:05Z beach: Indeed. 2018-09-29T15:09:25Z jeosol: I probably missed this, not been on twitter for a while. When did it happen? 2018-09-29T15:09:35Z Shinmera: Been happening for years 2018-09-29T15:09:42Z jeosol: Oh I see. 2018-09-29T15:10:01Z jeosol: I am not sure I know the guy or have seen those threads. I tend to ignore such things 2018-09-29T15:10:09Z cl-arthur joined #lisp 2018-09-29T15:10:19Z Shinmera: It's for the best 2018-09-29T15:10:46Z gendl: Indeed I think ignoring such things is mostly for the best. 2018-09-29T15:12:13Z jeosol: It's the best way to respond to these type of people especially if they have narcissitic tendencies. It just causes stresses for everyone and no one needs that. 2018-09-29T15:12:35Z gendl: But on the other hand, totally ignoring him probably feeds his conspiracy theories. 2018-09-29T15:13:02Z Shinmera: Does that matter? 2018-09-29T15:13:25Z jeosol: gendl: to an extent yes, but the more you respond, the more they get power that their crap is working 2018-09-29T15:14:09Z jeosol: taking time to respond is just feeding the madness. if there are happy users, we should just keep moving. There's already too much crap to deal with. 2018-09-29T15:15:53Z asarch joined #lisp 2018-09-29T15:16:56Z jeosol: These language wars never end. I was in a place in LA couple of weeks, they are a python shop and some guy hinted (read complained) why one lady uses R, and I'm describing workflows i did in CL. One guy asked how I deal with all the parentheses and why use an old language. 2018-09-29T15:17:57Z Shinmera: another endless and largely pointless battle 2018-09-29T15:18:16Z |3b| notes CL is 6 years older than python 2018-09-29T15:18:20Z |3b|: such an old language 2018-09-29T15:18:45Z |3b|: ansi CL is 3 years newer than python :p 2018-09-29T15:18:46Z jeosol: Shinmera: my point exactly. I just kept on explaining, and not feeding it. 2018-09-29T15:19:18Z |3b|: ansi CL is 6 years older than python 2 2018-09-29T15:19:19Z phoe: Haskell is six years older than CLtL1 2018-09-29T15:19:30Z phoe: I mean 2018-09-29T15:19:33Z phoe: Haskell is six years younger than CLtL1 2018-09-29T15:19:41Z phoe: and four years older than ANSI CL 2018-09-29T15:19:44Z gendl: jeosol: language wars are one thing and can be dealt with somewhat rationally. This infighting and conjuring of conspiracies within CL is another thing entirely, and I agree 99% it deserves to be ignored and users and well-wishers should focus on positives and productive things (which exist everywhere if you have the right eyes and attitude). 2018-09-29T15:20:04Z phoe: gendl: ...and even if you don't 2018-09-29T15:20:34Z PuercoPop: scymtym: comparing SLIME and LSP makes no sense, but one can compare the wire protocol of swank with the LSP Protocol. The swank one could use a little bit more structure (like not communicate where the cursor is by sending ===> ... <===. LSP Using JSON means they have 'poorer' data types 2018-09-29T15:20:52Z jeosol: gendl: I must admit, I never saw of any of the said "person" comments about infighting or conspiracies, just pointing something similar, and my approach is not feed it in general. 2018-09-29T15:22:15Z gendl: anyway, as repulsive as this guy’s rants are, they do help me to keep in mind that transparency and communication are so important for any civic minded activities. I’ve been failing in this regard with Common Lisp Foundation - 2018-09-29T15:22:57Z gendl: the site is in shambles, financial reports are old, were months overdue for the planned ASDF appreciation fundraiser - 2018-09-29T15:23:00Z heisig quit (Ping timeout: 252 seconds) 2018-09-29T15:25:18Z nonlinear is now known as NB0X-Matt-CA 2018-09-29T15:25:47Z gendl: but none of this is due to malice or conspiracies - just lots of competing priorities, lack of organizational skills, some laziness... 2018-09-29T15:25:57Z gendl: but I can understand how from 2018-09-29T15:26:16Z Shinmera: As usual, Hanlon's razor applies. 2018-09-29T15:27:01Z gendl: shinmera: exactly. 2018-09-29T15:27:40Z Shinmera: Speaking of improving CL community stuff, I hope I'll get time to tackle some els-web issues soon. 2018-09-29T15:29:11Z Shinmera: Mostly the one about sharing information for people between editions 2018-09-29T15:29:35Z Shinmera: Will require me to go over all the data again and clean it up, sigh 2018-09-29T15:30:57Z maximjaffe quit (Quit: Leaving) 2018-09-29T15:32:04Z Josh_2 joined #lisp 2018-09-29T15:41:07Z heisig joined #lisp 2018-09-29T15:41:29Z skeuomorf quit (Ping timeout: 252 seconds) 2018-09-29T15:46:27Z scymtym: PuercoPop: i agree about comparing, if anything, then the wire protocols. one thing i like is that LSP has a specification (even if it is terrible) 2018-09-29T15:52:43Z beach: Is the quality of the specification terribly, or that which it specifies? 2018-09-29T15:54:04Z grobe0ba quit (Quit: ZNC 1.7.0 - https://znc.in) 2018-09-29T15:58:00Z kyby64 joined #lisp 2018-09-29T15:58:17Z PuercoPop: scymtym: There is also the NREPL specification from Clojure (sjl has a CL implementation). Which richer data types than JSON 2018-09-29T15:58:39Z scymtym: beach: i have issues with both. that said, the /idea/ is good and something that has been long overdue 2018-09-29T15:58:48Z beach: OK. 2018-09-29T16:00:45Z scymtym: PuercoPop: i think, i looked at that at some point. maybe i should look again. thanks for mentioning it. do you know which editors support it? 2018-09-29T16:02:06Z grobe0ba joined #lisp 2018-09-29T16:05:04Z terpri quit (Ping timeout: 240 seconds) 2018-09-29T16:09:32Z makomo quit (Ping timeout: 252 seconds) 2018-09-29T16:13:22Z skeuomorf joined #lisp 2018-09-29T16:28:33Z gravicappa joined #lisp 2018-09-29T16:35:31Z skeuomorf quit (Read error: Connection reset by peer) 2018-09-29T16:37:02Z d4ryus1 is now known as d4ryus 2018-09-29T16:42:40Z heisig quit (Quit: Leaving) 2018-09-29T17:02:47Z CEnnis91 quit (Quit: Connection closed for inactivity) 2018-09-29T17:11:13Z graphene quit (Remote host closed the connection) 2018-09-29T17:12:31Z graphene joined #lisp 2018-09-29T17:12:43Z Achylles quit (Ping timeout: 252 seconds) 2018-09-29T17:12:47Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-09-29T17:29:51Z khisanth_ quit (Ping timeout: 252 seconds) 2018-09-29T17:32:04Z scymtym quit (Ping timeout: 240 seconds) 2018-09-29T17:40:15Z ealfonso quit (Disconnected by services) 2018-09-29T17:40:41Z ealfonso joined #lisp 2018-09-29T17:41:07Z lucca joined #lisp 2018-09-29T17:41:13Z orivej joined #lisp 2018-09-29T17:41:37Z Achylles joined #lisp 2018-09-29T17:43:09Z ealfonso: in cl-json, can I decode to a specific class without using the {"prototype": {"lispClass":..., "lispPackage": ...}} json key mechanism? How can I specify the "lispClass" in lisp? 2018-09-29T17:43:22Z khisanth_ joined #lisp 2018-09-29T17:49:22Z Oladon quit (Quit: Leaving.) 2018-09-29T17:52:50Z steiner joined #lisp 2018-09-29T17:53:29Z phoe: ealfonso: lispClass in Lisp? 2018-09-29T17:53:35Z phoe: you create an instance of a particular class 2018-09-29T17:53:55Z phoe: and that class's name is what becomes lispClass in JSON, AFAIU 2018-09-29T17:54:45Z phoe: also I know about https://github.com/gschjetne/json-mop 2018-09-29T17:58:44Z ealfonso: looking at their tests here, the way they specify into which class to decode JSON is by modifying the JSON to add the prototype key: https://github.com/hankhero/cl-json/blob/6dfebb9540bfc3cc33582d0c03c9ec27cb913e79/t/testdecoder.lisp but I'm wondering if I can do that without modifying the JSON 2018-09-29T18:00:53Z Oladon joined #lisp 2018-09-29T18:02:48Z robotoad joined #lisp 2018-09-29T18:04:14Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-29T18:09:30Z scymtym joined #lisp 2018-09-29T18:15:18Z oni-on-ion: lispClass.. 2018-09-29T18:17:29Z ealfonso: can a clos object have multiple meta-classes? I'm trying to make a class both json-serializable as well as a db data-acess-object: postmodern:dao-class json-mop:json-serializable-class 2018-09-29T18:20:52Z Shinmera: ealfonso: gotta create a new metaclass that inherits from both 2018-09-29T18:20:53Z ealfonso: s/clos object/clos class 2018-09-29T18:21:22Z steiner quit (Remote host closed the connection) 2018-09-29T18:21:37Z Shinmera: note that due to the way slots and such work, more in-depth code might need to be written in order to properly combine the behaviour. 2018-09-29T18:22:03Z Shinmera: so the answer is yes, but it likely requires some thought and effort. 2018-09-29T18:23:07Z phoe: https://github.com/gschjetne/json-mop/blob/master/src/json-mop.lisp 2018-09-29T18:23:12Z phoe: doesn't seem like much code here 2018-09-29T18:23:41Z Shinmera: it defines its slot and I'm assuming so does dao 2018-09-29T18:23:52Z Shinmera: so you need to merge slot classes too 2018-09-29T18:24:10Z phoe: some more code in postmodern's dao-class, https://github.com/marijnh/Postmodern/blob/263bc8969088103c1ff6b9386bf70800bab9bc58/postmodern/table.lisp#L3 2018-09-29T18:24:22Z phoe: yes, it also has its slot definitions 2018-09-29T18:32:07Z jack_rabbit joined #lisp 2018-09-29T18:32:27Z oni-on-ion: oh my 2018-09-29T18:35:45Z meepdeew joined #lisp 2018-09-29T18:37:35Z rumbler31 joined #lisp 2018-09-29T18:38:32Z vlatkoB quit (Remote host closed the connection) 2018-09-29T18:39:36Z phoe: the most crazy thing about Lisp is that it allows you to actually merge them 2018-09-29T18:47:24Z Achylles quit (Ping timeout: 252 seconds) 2018-09-29T18:49:04Z jmercouris joined #lisp 2018-09-29T18:49:52Z SaganMan quit (Read error: Connection reset by peer) 2018-09-29T18:50:40Z random-nick quit (Read error: Connection reset by peer) 2018-09-29T18:53:24Z Younder: Thats is a consequence of CLOS 2018-09-29T18:54:03Z jmercouris: Good evening everyone 2018-09-29T18:54:08Z Younder: See sonya Keen's book 2018-09-29T18:57:13Z nowhere_man joined #lisp 2018-09-29T19:04:23Z zxcvz joined #lisp 2018-09-29T19:12:08Z random-nick joined #lisp 2018-09-29T19:19:58Z ealfonso: phoe for simplicity I tried creating a json-serializable subclass of the dao object, and changing a dao instance to the subclass, but (json-mop:encode obj) => {}. I assume it only considers direct slots 2018-09-29T19:24:20Z rumbler31 quit (Remote host closed the connection) 2018-09-29T19:27:32Z ebzzry_ quit (Ping timeout: 252 seconds) 2018-09-29T19:39:57Z ealfonso: https://github.com/gschjetne/json-mop/issues/1 I guess it's a bug 2018-09-29T19:40:23Z Bike: that's a hell of a bug 2018-09-29T19:41:32Z Bike: pretty small program though. seems like you could change the class-direct-slots call in encode, and then most of the actual change would be setting upa json encodable effective slot class 2018-09-29T19:43:12Z warweasle quit (Quit: be back later?) 2018-09-29T19:49:57Z ealfonso: Bike yeah. or maybe I am lazy and I end up switching back to cl-json, and just dynamically adding the "prototype" key that they require to specify the lisp class to which to encode 2018-09-29T19:50:42Z jmercouris: cl-json is a good library, that's my vote 2018-09-29T19:50:47Z jmercouris: for whatever it is worth... 2018-09-29T19:52:46Z ealfonso: yeah. I find the way to specify the lisp transformation by adding a "prototype" key to the json a bit weird. why not just specify it in lisp itself without requiring changing the json object? maybe it is supported but I couldn't figure it out from the doc 2018-09-29T19:52:54Z mrblack_ quit (Remote host closed the connection) 2018-09-29T20:05:39Z ggole quit (Quit: ggole) 2018-09-29T20:07:55Z nanoz quit (Ping timeout: 244 seconds) 2018-09-29T20:11:00Z orivej quit (Ping timeout: 272 seconds) 2018-09-29T20:15:34Z orivej joined #lisp 2018-09-29T20:15:57Z nos joined #lisp 2018-09-29T20:19:53Z warweasle joined #lisp 2018-09-29T20:21:57Z nos: Hello. I have spent several hours on the assumption that https://github.com/cbaggers/glsl-spec is a plugin which populates ctags usable through cl-neovim. I am starting to suspect that this is not the case but I don't yet understand what the project is for, then, since that is not mentioned anywhere that I have looked. Could someone with more experience please take a look at that project and tell me what it is f 2018-09-29T20:22:02Z nos: or, or if it belongs to a class of projects whith better documenttation that I can adapt. 2018-09-29T20:23:41Z nos: I should mention that this is my first exposure to the lisp ecosystem. 2018-09-29T20:24:50Z Shinmera: it is a translation of the glsl standard libraries into lisp data/code. 2018-09-29T20:25:12Z Shinmera: it has nothing to do with ctags or c code. 2018-09-29T20:26:12Z Shinmera: Its purpose is to allow lisp systems to understand the standard library functions, and it's used in one part to support a compiler of a CL subset into GLSL code. 2018-09-29T20:33:30Z nos: So the GLSL documentation it formalizes isn't accessible from an IDE? - I am looking to learn GLSL, and constantly having to search for definitions is tedious. I don't have to use any particular IDE. 2018-09-29T20:34:03Z Shinmera: It is, if the IDE learns to parse the format. 2018-09-29T20:34:56Z Shinmera: It is machine readable after all. In lisp all you need to do is load the files. In everyithing else, you're gonna need a parser. 2018-09-29T20:35:06Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-29T20:35:27Z Balooga_ joined #lisp 2018-09-29T20:41:30Z thetemplar quit (Ping timeout: 244 seconds) 2018-09-29T20:42:23Z Shinmera: As I understand, the repository also includes the data in json format, which may be easire to handle from other languages 2018-09-29T20:44:12Z dale joined #lisp 2018-09-29T20:45:28Z nos: I didn't think of that. Perhaps that would be the best strategy for me. 2018-09-29T20:45:30Z cage_ quit (Quit: Leaving) 2018-09-29T20:50:46Z Achylles joined #lisp 2018-09-29T20:52:30Z loli is now known as dolores 2018-09-29T20:53:00Z dolores is now known as Guest45821 2018-09-29T20:53:19Z quipa joined #lisp 2018-09-29T20:54:13Z Guest45821 left #lisp 2018-09-29T20:54:56Z nos: Thank you for your help Shinmera. Have a nice weekend. :) 2018-09-29T20:54:59Z nos left #lisp 2018-09-29T20:57:13Z katyusha joined #lisp 2018-09-29T21:01:44Z meepdeew quit (Remote host closed the connection) 2018-09-29T21:09:16Z alchem1st joined #lisp 2018-09-29T21:13:32Z frodef quit (Ping timeout: 244 seconds) 2018-09-29T21:17:10Z Kundry_Wag joined #lisp 2018-09-29T21:17:30Z quipa quit (Ping timeout: 272 seconds) 2018-09-29T21:18:15Z lisbeths joined #lisp 2018-09-29T21:18:25Z lisbeths: Does the common lisp hyperspec include hash tables true or false. 2018-09-29T21:20:23Z Josh_2: hash-table-p? 2018-09-29T21:20:41Z lisbeths left #lisp 2018-09-29T21:21:14Z Shinmera: The hell was that 2018-09-29T21:21:45Z jmercouris: it's a conversation on #lispcafe 2018-09-29T21:21:49Z jmercouris: it honestly doesn't make sense 2018-09-29T21:22:35Z jmercouris: https://pastebin.com/syn3urQn 2018-09-29T21:22:40Z jmercouris: that's the conversation for context 2018-09-29T21:24:50Z rumbler31 joined #lisp 2018-09-29T21:25:16Z Shinmera: That's a line of conversation I wouldn't even bother with 2018-09-29T21:25:33Z jmercouris: Yes, my latest response is "I'm sorry, I'm done with this conversation" 2018-09-29T21:25:36Z warweasle quit (Quit: exit) 2018-09-29T21:28:50Z gravicappa quit (Ping timeout: 252 seconds) 2018-09-29T21:29:05Z rumbler31 quit (Ping timeout: 252 seconds) 2018-09-29T21:33:59Z frodef joined #lisp 2018-09-29T21:34:04Z quipa joined #lisp 2018-09-29T21:34:27Z quipa quit (Remote host closed the connection) 2018-09-29T21:40:00Z lucca quit (Ping timeout: 252 seconds) 2018-09-29T21:45:32Z gendl: what is #lispcafe. 2018-09-29T21:45:45Z jmercouris: gendl: a channel for off-topic conversation with #lisp users 2018-09-29T21:46:18Z CEnnis91 joined #lisp 2018-09-29T21:49:23Z Josh_2: or random people talking about big vs small compilers 2018-09-29T22:02:23Z ealfonso quit (Ping timeout: 252 seconds) 2018-09-29T22:06:54Z Balooga_ quit (Quit: Balooga_) 2018-09-29T22:06:58Z rtypo joined #lisp 2018-09-29T22:07:13Z random-nick quit (Read error: Connection reset by peer) 2018-09-29T22:08:38Z dented42 joined #lisp 2018-09-29T22:10:44Z kyby64 left #lisp 2018-09-29T22:13:55Z asarch quit (Quit: Leaving) 2018-09-29T22:14:02Z kjeldahl quit (Ping timeout: 276 seconds) 2018-09-29T22:23:44Z Arcaelyx joined #lisp 2018-09-29T22:25:55Z Kundry_Wag quit (Remote host closed the connection) 2018-09-29T22:28:10Z cl-arthur quit (Quit: Lost terminal) 2018-09-29T22:31:27Z Balooga_ joined #lisp 2018-09-29T22:32:38Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-29T22:34:39Z robotoad quit (Quit: robotoad) 2018-09-29T22:38:14Z varjag quit (Remote host closed the connection) 2018-09-29T22:38:25Z varjag joined #lisp 2018-09-29T22:39:00Z kjeldahl joined #lisp 2018-09-29T23:00:56Z robotoad joined #lisp 2018-09-29T23:03:46Z Arcaelyx quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-29T23:06:10Z ealfonso joined #lisp 2018-09-29T23:08:58Z ealfonso: how do I package a non-lisp data file with asdf? 2018-09-29T23:13:06Z jmercouris: ealfonso: into a binary? or what do you mean? 2018-09-29T23:13:49Z Bike: what do you want to do with it? 2018-09-29T23:14:40Z jmercouris: ealfonso: here is an example of someone accessing a data file within their lisp program: https://github.com/fukamachi/quri 2018-09-29T23:15:01Z jmercouris: they access https://github.com/fukamachi/quri/tree/master/data 2018-09-29T23:15:12Z jmercouris: I think they use a system-relative directory or something, I can't remember 2018-09-29T23:15:33Z jmercouris: in that sense, you are using ASDF to load a non-lisp file, but I'm not sure exactly what your question is, so I can't give a better answer 2018-09-29T23:16:30Z jmercouris: ealfonso: ASDF:SYSTEM-SOURCE-DIRECTORY may be of interest to you 2018-09-29T23:16:45Z jmercouris: so that you can locate files relative to the source directory 2018-09-29T23:17:32Z Josh_2 quit (Ping timeout: 244 seconds) 2018-09-29T23:17:54Z ealfonso: it is to include an xml database changelog file that needs to be passed to liquibase on startup. currently I'm using (UIOP/LISP-BUILD:CURRENT-LISP-FILE-PATHNAME), which works in a repl to locate the file relative to the current file, but not when loading the asdf. yes, I'll give that a try 2018-09-29T23:19:19Z lavaflow quit (Read error: Connection reset by peer) 2018-09-29T23:19:47Z lavaflow joined #lisp 2018-09-29T23:20:07Z Kundry_Wag joined #lisp 2018-09-29T23:23:42Z alchem1st quit (Ping timeout: 252 seconds) 2018-09-29T23:31:58Z Josh_2 joined #lisp 2018-09-29T23:38:36Z dale quit (Quit: dale) 2018-09-29T23:39:22Z Oladon quit (Quit: Leaving.) 2018-09-29T23:40:27Z varjag quit (Ping timeout: 252 seconds) 2018-09-29T23:40:54Z pfdietz joined #lisp 2018-09-29T23:41:05Z Balooga_ quit (Quit: Balooga_) 2018-09-29T23:41:06Z jmercouris quit (Ping timeout: 252 seconds) 2018-09-29T23:49:13Z frodef quit (Ping timeout: 245 seconds) 2018-09-29T23:52:53Z siraben joined #lisp 2018-09-29T23:53:56Z graphene quit (Remote host closed the connection) 2018-09-29T23:55:14Z graphene joined #lisp 2018-09-30T00:00:01Z kozy_ quit (Remote host closed the connection) 2018-09-30T00:00:55Z kozy joined #lisp 2018-09-30T00:04:06Z skeuomorf joined #lisp 2018-09-30T00:05:59Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T00:07:44Z dented42 joined #lisp 2018-09-30T00:09:12Z siraben quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-30T00:10:00Z siraben joined #lisp 2018-09-30T00:22:38Z ealfonso quit (Ping timeout: 252 seconds) 2018-09-30T00:23:14Z skeuomorf quit (Ping timeout: 268 seconds) 2018-09-30T00:24:51Z rstoye joined #lisp 2018-09-30T00:26:03Z Nephromancer quit (Quit: Connection closed for inactivity) 2018-09-30T00:27:47Z jack_rabbit joined #lisp 2018-09-30T00:28:33Z rstoye left #lisp 2018-09-30T00:28:34Z rstoye joined #lisp 2018-09-30T00:30:39Z rstoye left #lisp 2018-09-30T00:38:40Z dddddd quit (Remote host closed the connection) 2018-09-30T00:42:26Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-30T00:46:55Z katyusha quit (Quit: WeeChat 2.2) 2018-09-30T00:48:54Z Josh_2 quit (Remote host closed the connection) 2018-09-30T00:51:17Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T00:52:58Z katyusha joined #lisp 2018-09-30T00:56:58Z Oladon joined #lisp 2018-09-30T01:00:18Z Achylles quit (Ping timeout: 252 seconds) 2018-09-30T01:03:50Z Essadon quit (Quit: Qutting) 2018-09-30T01:13:34Z housel quit (Ping timeout: 240 seconds) 2018-09-30T01:33:14Z travv0 quit (Remote host closed the connection) 2018-09-30T01:48:29Z robotoad quit (Quit: robotoad) 2018-09-30T01:50:33Z rtypo quit (Ping timeout: 252 seconds) 2018-09-30T01:52:42Z Roy_Fokker quit (Quit: Leaving) 2018-09-30T01:56:22Z lemoinem is now known as Guest80180 2018-09-30T01:56:22Z Guest80180 quit (Killed (tolkien.freenode.net (Nickname regained by services))) 2018-09-30T01:56:24Z lemoinem joined #lisp 2018-09-30T02:16:15Z robotoad joined #lisp 2018-09-30T02:25:00Z Kundry_Wag quit (Quit: Leaving...) 2018-09-30T02:44:47Z Pixel_Outlaw quit (Quit: Leaving) 2018-09-30T02:57:37Z Oladon quit (Quit: Leaving.) 2018-09-30T03:18:54Z pjb quit (Ping timeout: 252 seconds) 2018-09-30T03:33:18Z Oladon joined #lisp 2018-09-30T03:37:16Z Lycurgus joined #lisp 2018-09-30T03:38:32Z asarch joined #lisp 2018-09-30T03:50:16Z dale joined #lisp 2018-09-30T03:54:30Z pjb joined #lisp 2018-09-30T03:55:37Z beach: Good morning everyone! 2018-09-30T03:58:09Z no-defun-allowed: morning beack 2018-09-30T03:58:21Z no-defun-allowed: interesting typo. 2018-09-30T03:58:24Z no-defun-allowed: morning, beach 2018-09-30T03:59:18Z Bike quit (Quit: Lost terminal) 2018-09-30T04:15:55Z dented42 joined #lisp 2018-09-30T04:28:26Z pjb quit (Ping timeout: 260 seconds) 2018-09-30T04:30:03Z LdBeth: good morning to you/evening to me 2018-09-30T04:30:40Z no-defun-allowed: hi LdBeth 2018-09-30T04:32:02Z orivej quit (Ping timeout: 252 seconds) 2018-09-30T04:34:27Z LdBeth: after git pulled CLX my wm breaks 2018-09-30T04:35:54Z LdBeth: a undefined function (supposed to be generated by defstruct) is called in CLX. 2018-09-30T04:39:07Z Oladon quit (Quit: Leaving.) 2018-09-30T04:47:49Z beach: LdBeth: You might want to ask jackdaniel. I think he has been working on CLX lately. 2018-09-30T04:48:10Z megalography quit (Quit: Leaving.) 2018-09-30T04:48:47Z LdBeth: https://github.com/sharplispers/clx 2018-09-30T04:48:54Z LdBeth: stable branch works fine 2018-09-30T04:52:03Z ggole joined #lisp 2018-09-30T05:02:57Z nanoz joined #lisp 2018-09-30T05:06:23Z rippa joined #lisp 2018-09-30T05:14:36Z space_otter joined #lisp 2018-09-30T05:14:45Z moei joined #lisp 2018-09-30T05:15:50Z nanozz joined #lisp 2018-09-30T05:16:36Z quazimodo joined #lisp 2018-09-30T05:17:51Z makomo joined #lisp 2018-09-30T05:19:51Z nanoz quit (Ping timeout: 268 seconds) 2018-09-30T05:20:21Z nowhere_man quit (Ping timeout: 252 seconds) 2018-09-30T05:38:03Z slyrus quit (Quit: slyrus) 2018-09-30T05:38:04Z slyrus1 is now known as slyrus 2018-09-30T05:42:40Z sjl quit (Quit: WeeChat 2.2-dev) 2018-09-30T05:58:55Z housel joined #lisp 2018-09-30T06:00:01Z nanozz quit (Ping timeout: 244 seconds) 2018-09-30T06:02:54Z slyrus1 joined #lisp 2018-09-30T06:07:49Z asarch quit (Quit: Leaving) 2018-09-30T06:10:22Z space_otter quit (Remote host closed the connection) 2018-09-30T06:13:41Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T06:17:17Z jackdaniel: LdBeth: try using just display. that said it is a legitimate bug, thank you for the report 2018-09-30T06:18:38Z dented42 joined #lisp 2018-09-30T06:24:35Z pjb joined #lisp 2018-09-30T06:26:02Z rumbler31 joined #lisp 2018-09-30T06:30:37Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T06:31:02Z rumbler31 quit (Ping timeout: 272 seconds) 2018-09-30T06:35:54Z no-defun-allowed: hi pjb 2018-09-30T06:40:41Z dale quit (Quit: dale) 2018-09-30T06:52:25Z nika joined #lisp 2018-09-30T06:55:50Z makomo: hello \o 2018-09-30T06:56:04Z phoe: heyyyy 2018-09-30T06:57:42Z pjb quit (Ping timeout: 252 seconds) 2018-09-30T07:01:42Z dented42 joined #lisp 2018-09-30T07:02:00Z dented42 quit (Client Quit) 2018-09-30T07:10:16Z arduo joined #lisp 2018-09-30T07:13:01Z vlatkoB joined #lisp 2018-09-30T07:16:16Z angavrilov quit (Remote host closed the connection) 2018-09-30T07:16:33Z angavrilov joined #lisp 2018-09-30T07:21:08Z trittweiler quit (Ping timeout: 244 seconds) 2018-09-30T07:24:48Z pjb joined #lisp 2018-09-30T07:28:20Z makomo quit (Ping timeout: 252 seconds) 2018-09-30T07:28:49Z makomo joined #lisp 2018-09-30T07:32:59Z v0|d quit (Ping timeout: 252 seconds) 2018-09-30T07:39:29Z dale joined #lisp 2018-09-30T07:43:23Z gravicappa joined #lisp 2018-09-30T07:48:37Z dented42 joined #lisp 2018-09-30T07:49:00Z robotoad quit (Quit: robotoad) 2018-09-30T07:58:09Z robotoad joined #lisp 2018-09-30T07:58:12Z pjb quit (Ping timeout: 252 seconds) 2018-09-30T07:58:32Z frodef joined #lisp 2018-09-30T08:00:59Z lanu joined #lisp 2018-09-30T08:02:51Z lanu quit (Client Quit) 2018-09-30T08:11:16Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T08:16:20Z dented42 joined #lisp 2018-09-30T08:16:47Z Kundry_Wag joined #lisp 2018-09-30T08:18:07Z jackdaniel: okey dokey, here comes kerning for McCLM: http://i.imgur.com/Qh6aKXl.png 2018-09-30T08:18:12Z jackdaniel: McCLIM * 2018-09-30T08:18:35Z no-defun-allowed: nice 2018-09-30T08:18:55Z jackdaniel: not very impressive with dejavu kerning tables, but works for any ttf fonts 2018-09-30T08:21:52Z Kundry_Wag quit (Ping timeout: 272 seconds) 2018-09-30T08:23:38Z beach: Great! 2018-09-30T08:25:20Z graphene quit (Remote host closed the connection) 2018-09-30T08:26:44Z graphene joined #lisp 2018-09-30T08:29:27Z phoe: bravo! 2018-09-30T08:30:24Z beach: Heh. 2018-09-30T08:30:33Z kaun joined #lisp 2018-09-30T08:35:20Z roshanavand quit (Ping timeout: 268 seconds) 2018-09-30T08:35:20Z frodef quit (Read error: Connection reset by peer) 2018-09-30T08:35:37Z doubledup joined #lisp 2018-09-30T08:35:59Z roshanavand joined #lisp 2018-09-30T08:37:00Z kaun left #lisp 2018-09-30T08:41:30Z roshanavand quit (Ping timeout: 272 seconds) 2018-09-30T08:41:50Z roshanavand joined #lisp 2018-09-30T08:42:46Z zxcvz quit (Ping timeout: 244 seconds) 2018-09-30T08:44:15Z phoe: Am I allowed to define my own :AFTER methods on ENSURE-CLASS-USING-CLASS, specializing on the second argument? 2018-09-30T08:49:59Z roshanavand quit (Ping timeout: 252 seconds) 2018-09-30T08:50:40Z roshanavand joined #lisp 2018-09-30T08:50:49Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T08:51:12Z phoe: I don't see why I can't, but I'm nonetheless curious. 2018-09-30T08:51:22Z mn3m joined #lisp 2018-09-30T08:52:22Z robotoad quit (Quit: robotoad) 2018-09-30T08:52:23Z beach: Your method must not be applicable when given only standard arguments. 2018-09-30T08:52:38Z beach: So you must specialize also on the first parameter. 2018-09-30T08:53:06Z dented42 joined #lisp 2018-09-30T08:53:36Z no-defun-allowed: how is throw/catch implemented? 2018-09-30T08:53:45Z phoe: no-defun-allowed: implementation-dependent 2018-09-30T08:54:13Z beach: no-defun-allowed: Typically, CATCH puts some stuff on the stack. 2018-09-30T08:54:16Z no-defun-allowed: ok, what's a reasonable way to implement it? 2018-09-30T08:54:30Z beach: no-defun-allowed: THROW looks for the most recently pushed stuff that matches. 2018-09-30T08:54:32Z phoe: no-defun-allowed: in what kind of language? 2018-09-30T08:54:34Z no-defun-allowed: my first guess is similar to longjmp which does stack unwinding 2018-09-30T08:54:41Z no-defun-allowed: i see 2018-09-30T08:54:49Z no-defun-allowed: we're in #lisp, so CL it is 2018-09-30T08:54:52Z beach: no-defun-allowed: That would not fly, because there is UNWIND-PROTECT. 2018-09-30T08:54:54Z phoe: yes, it's similar to longjmp - you have to take all unwind-protect forms into account 2018-09-30T08:55:05Z phoe: but unwind-protect also puts stuff on the stack 2018-09-30T08:55:22Z no-defun-allowed: right 2018-09-30T08:55:28Z beach: phoe: But setjmp/longjmp skips all intervening stack frames. 2018-09-30T08:55:31Z phoe: so, compute all the unwind-protect forms between the THROW and the CATCH, execute them in proper order, and then longjmp 2018-09-30T08:55:55Z phoe: beach: yep, that's why they need to be taken into account before the jump 2018-09-30T08:55:58Z no-defun-allowed: gotcha 2018-09-30T08:56:00Z phoe: s/compute/execute/ 2018-09-30T08:56:10Z beach: phoe: You can't do it that way. 2018-09-30T08:56:22Z phoe: beach: can't I? what's the problem? 2018-09-30T08:56:23Z beach: phoe: References to special variables may be wrong then. 2018-09-30T08:56:55Z phoe: oh right, you need to execute them in the proper environments of the stack 2018-09-30T08:56:57Z beach: I mean VALUES of special variables. 2018-09-30T08:56:59Z beach: Yes. 2018-09-30T08:57:09Z phoe: so, first, check if there's a matching CATCH tag 2018-09-30T08:57:28Z beach: Then start unwinding. 2018-09-30T08:57:33Z phoe: second, unwind the stack to each UNWIND-PROTECT cleanup form and execute it 2018-09-30T08:57:43Z beach: clhs 5.2 2018-09-30T08:57:43Z specbot: Transfer of Control to an Exit Point: http://www.lispworks.com/reference/HyperSpec/Body/05_b.htm 2018-09-30T08:57:43Z phoe: third, stop when you reach the CATCH tag and continue execution from there 2018-09-30T08:58:40Z beach: Notice the "Events 2 and 3 are actually performed interleaved, in the order corresponding to the reverse order in which they were established. The effect of this is that the cleanup clauses of an unwind-protect see the same dynamic bindings of variables and catch tags as were visible when the unwind-protect was entered." 2018-09-30T08:58:46Z phoe: beach: regarding ENSURE-CLASS-USING-CLASS, what should I specialize on in case of the first parameter? 2018-09-30T08:58:52Z no-defun-allowed: somewhat related: do you prefer block/return-from or catch/throw? they seem somewhat similar. 2018-09-30T08:59:07Z beach: phoe: Your own subclass of some standard class. 2018-09-30T08:59:07Z phoe: (find-class 'my-class) ? 2018-09-30T08:59:26Z phoe: after I've done (defclass my-class ...), that is 2018-09-30T08:59:35Z phoe: no-defun-allowed: block-return from are legical 2018-09-30T08:59:38Z phoe: lexical 2018-09-30T08:59:41Z phoe: catch/throw is dynamic 2018-09-30T08:59:56Z beach: no-defun-allowed: What phoe said. So block/return is typically faster. 2018-09-30T09:00:03Z no-defun-allowed: right 2018-09-30T09:00:05Z phoe: so (block nil (return-from nil 42)) 2018-09-30T09:00:10Z beach: And also more predictable. 2018-09-30T09:00:15Z phoe: catch/throw will also work there 2018-09-30T09:00:23Z no-defun-allowed: should check quickly if i use throw in anything important 2018-09-30T09:00:44Z beach: no-defun-allowed: Sometimes you don't have a choice. 2018-09-30T09:01:02Z no-defun-allowed: that's true 2018-09-30T09:01:05Z phoe: generally: you shouldn't, unless you have very good reason to 2018-09-30T09:01:14Z beach: If the "catch" is in one module and the "throw" in another, then you can't use block/return. 2018-09-30T09:01:23Z no-defun-allowed: yes, that is correct 2018-09-30T09:01:31Z no-defun-allowed: for the most part i do have a choice i think 2018-09-30T09:01:59Z phoe: in most of the cases where one could use THROW they should use SIGNAL instead 2018-09-30T09:02:44Z phoe: since conditions (HANDLER-CASE in particular) are a more general and more useful abstraction built on top of THROW/CATCH. 2018-09-30T09:03:07Z beach: phoe: To determine what methods you are allowed to define, imagine that your software is going to be distributed and that it will coexist with other software. If there is a potential conflict with some other software doing the same as yours, then you are not allowed to do it. 2018-09-30T09:03:14Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T09:03:49Z phoe: beach: E-C-U-C has two mandatory arguments, the second of which is going to be (EQL 'SOME-SYMBOL-OF-MINE) in my :AFTER method. 2018-09-30T09:04:18Z beach: Hmm. OK, that might fly. 2018-09-30T09:04:25Z phoe: Where 'SOME-SYMBOL-OF-MINE is in my package. 2018-09-30T09:04:32Z beach: Yes, I understand. 2018-09-30T09:05:17Z phoe: I assume that also specializing the class on (EQL (FIND-CLASS 'SOME-SYMBOL-OF-MINE)) won't hurt, though. 2018-09-30T09:05:33Z beach: Er, hold on... 2018-09-30T09:06:07Z beach: Never mind. 2018-09-30T09:06:12Z beach: Yes, that might fly as well. 2018-09-30T09:09:35Z Kundry_Wag joined #lisp 2018-09-30T09:14:44Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-30T09:18:42Z phoe: 2018-09-30T09:20:21Z nowhere_man joined #lisp 2018-09-30T09:26:36Z phoe: Okay, so, so far I've burned myself on MAKE-CONDITION not calling INITIALIZE-INSTANCE, DEFINE-CONDITION not calling ENSURE-CLASS-USING-CLASS, and CHANGE-CLASS being useless on condition objects 2018-09-30T09:28:06Z kushal quit (Remote host closed the connection) 2018-09-30T09:28:25Z kushal joined #lisp 2018-09-30T09:31:40Z phoe: It's hard to go 100% CLOS+MOP when you have this historical luggage of conditions not being standard-objects poking at you 2018-09-30T09:32:00Z beach: I maintain that I think they should not be standard objects. 2018-09-30T09:32:20Z beach: But instead a separate pair like funcallable-standard-object and funcallable-standard-class. 2018-09-30T09:32:54Z beach: ... so condition and condition-class in this case. 2018-09-30T09:33:06Z beach: But they could still use the MOP machinery of course. 2018-09-30T09:33:38Z dented42 joined #lisp 2018-09-30T09:33:51Z phoe: No no, as far as I understand, SBCL's PCL is built at the very end of their build order while conditions are baked-in very early. 2018-09-30T09:34:10Z beach: Yes, but there is no particular reason to do it that way. 2018-09-30T09:34:17Z beach: ... other than historical. 2018-09-30T09:34:30Z phoe: https://github.com/sbcl/sbcl/blob/master/build-order.lisp-expr 2018-09-30T09:34:33Z beach: In SICL, the MOP hierarchy is built first. 2018-09-30T09:34:56Z phoe: That's because you flip the build priorities around. (: 2018-09-30T09:35:06Z beach: I don't care about SBCL. My opinion remains valid, until someone convinces me otherwise. 2018-09-30T09:36:57Z phoe: I understand your opinion and agree with it. I'm now thinking of what and how to do about this. 2018-09-30T09:37:03Z zxcvz joined #lisp 2018-09-30T09:37:09Z beach: There are huge advantages to maintenance by using the MOP machinery for other aspects of the standard. 2018-09-30T09:38:50Z beach: Of course, if, for reasons of bootstrapping, you first have to implement things without the MOP, there is no particular reason to implement things a second time, this time using the MOP. 2018-09-30T09:39:02Z graphene quit (Remote host closed the connection) 2018-09-30T09:40:21Z graphene joined #lisp 2018-09-30T09:41:08Z roshanavand quit (Ping timeout: 252 seconds) 2018-09-30T09:42:09Z roshanavand joined #lisp 2018-09-30T09:45:39Z beach is off to the biennial neighborhood party, and will be away most of the afternoon. 2018-09-30T09:47:37Z dale quit (Quit: dale) 2018-09-30T09:49:45Z no-defun-allowed: have fun! 2018-09-30T09:51:51Z nika quit (Quit: Leaving...) 2018-09-30T09:52:14Z pjb joined #lisp 2018-09-30T09:52:15Z nanoz joined #lisp 2018-09-30T09:53:15Z mn3m quit (Ping timeout: 252 seconds) 2018-09-30T09:58:24Z aeth: phoe: It looks like you've discovered a place where the language is underspecified imo 2018-09-30T10:00:50Z igemnace quit (Quit: WeeChat 2.2) 2018-09-30T10:01:31Z varjag joined #lisp 2018-09-30T10:05:05Z lavaflow quit (Ping timeout: 252 seconds) 2018-09-30T10:05:25Z pjb: hi 2018-09-30T10:07:34Z rstoye joined #lisp 2018-09-30T10:07:39Z rstoye left #lisp 2018-09-30T10:11:17Z phoe: aeth: it's not underspecified. Conditions were left out of CLOS purposefully; to the best of my understanding, that happened because X3J13 did not have enough time to integrate the condition system into CLOS. 2018-09-30T10:11:59Z phoe: AFAIR they also suspected that a subset of CL would be delivered "without CLOS". 2018-09-30T10:12:23Z dddddd joined #lisp 2018-09-30T10:13:10Z pjb: On the other hand, most implementation define conditions as clos objects, AFAIK. 2018-09-30T10:13:33Z phoe: pjb: CCL, ECL, ABCL, LW, ACL do. 2018-09-30T10:13:38Z phoe: SBCL doesn't. 2018-09-30T10:13:53Z pjb: yes, definitely most. 2018-09-30T10:14:31Z marvin2 joined #lisp 2018-09-30T10:24:33Z gravicappa quit (Ping timeout: 244 seconds) 2018-09-30T10:26:38Z lnostdal quit (Ping timeout: 272 seconds) 2018-09-30T10:36:03Z cage_ joined #lisp 2018-09-30T10:36:08Z random-nick joined #lisp 2018-09-30T10:41:45Z GoldRin joined #lisp 2018-09-30T10:46:04Z dented42 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-09-30T10:47:30Z frodef joined #lisp 2018-09-30T10:51:47Z lnostdal joined #lisp 2018-09-30T10:57:27Z varjag quit (Quit: ERC (IRC client for Emacs 26.1)) 2018-09-30T10:57:56Z varjag joined #lisp 2018-09-30T10:59:02Z v0|d joined #lisp 2018-09-30T11:02:06Z scymtym quit (Ping timeout: 268 seconds) 2018-09-30T11:07:15Z orivej joined #lisp 2018-09-30T11:11:23Z random-nick: is QUOTE supposed to return the same object that was passed to it or just an object that is equal? 2018-09-30T11:11:46Z phoe: random-nick: EQ 2018-09-30T11:11:49Z phoe: the same object. 2018-09-30T11:12:12Z phoe: or rather 2018-09-30T11:12:15Z phoe: THE object. 2018-09-30T11:13:50Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-30T11:15:26Z quazimodo joined #lisp 2018-09-30T11:16:33Z random-nick: how can the compiler put literal lists into the function object? shouldn't it be a reference to the list allocated by the reader? 2018-09-30T11:17:01Z random-nick: is that possible because of the line "The consequences are undefined if literal objects (including quoted objects) are destructively modified."? 2018-09-30T11:17:48Z phoe: random-nick: what do you mean, literal lists into the function object? 2018-09-30T11:18:11Z phoe: by the time the compiler operates, there's nothing to be read; everything was already read and allocated. 2018-09-30T11:18:21Z phoe: including lists that were allocated by the reader. 2018-09-30T11:19:15Z Bike joined #lisp 2018-09-30T11:19:30Z phoe: that line is a limitation for the programmer; (setf (cdr '(1 . 2)) 3) is undefined behavior. 2018-09-30T11:23:03Z random-nick: phoe: well, what I wanted to know is if the compiler can consider quoted objects to be constants 2018-09-30T11:24:42Z Bike: yeppers. 2018-09-30T11:25:38Z flazh quit (Ping timeout: 252 seconds) 2018-09-30T11:26:01Z phoe: clhs constantp 2018-09-30T11:26:01Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_consta.htm 2018-09-30T11:26:15Z phoe: "quote forms are always considered constant forms and must be recognized as such by constantp." 2018-09-30T11:29:01Z random-nick: huh, I didn't know about constantp 2018-09-30T11:29:03Z random-nick: thank you 2018-09-30T11:30:02Z razzy quit (Ping timeout: 252 seconds) 2018-09-30T11:33:57Z p_l: random-nick: since quoted forms are considered constant, compiler can move them however it wants 2018-09-30T11:34:14Z p_l: For example, SBCL will put them into "constants vector" before the function code in memory 2018-09-30T11:34:23Z p_l: ... but with (safety 0) you can write to them 2018-09-30T11:34:35Z p_l: (yes, this was a hard to find bug once for me -_-;) 2018-09-30T11:35:56Z jackdaniel: you deserve it for having (safety 0) in your environment 2018-09-30T11:36:05Z jackdaniel: so-called fair punishment 2018-09-30T11:36:06Z scymtym joined #lisp 2018-09-30T11:36:27Z p_l: yep! 2018-09-30T11:36:47Z p_l: (it was a learning moment, though) 2018-09-30T11:38:22Z flazh joined #lisp 2018-09-30T11:38:58Z Kundry_Wag joined #lisp 2018-09-30T11:40:30Z orivej quit (Ping timeout: 244 seconds) 2018-09-30T11:44:00Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-30T11:51:51Z Lycurgus quit (Quit: Exeunt) 2018-09-30T12:01:44Z lavaflow joined #lisp 2018-09-30T12:03:53Z phoe: Is there any MOP trickery that will allow me access to the method that is currently being executed? 2018-09-30T12:04:09Z phoe: (defmethod foo ((bar baz)) (print *current-method*)) ;; something like this 2018-09-30T12:04:30Z _death: write your own method combination? 2018-09-30T12:04:53Z phoe: Can't - the GF I'm using is using the standard method combination. 2018-09-30T12:05:25Z phoe: I mean, I know the method qualifiers and specializers, so I could go the long way and find the method - but I wonder if there is any dynavar or function that already serves this purpose. 2018-09-30T12:07:13Z _death: maybe a backtrace, but too hacky.. maybe you don't really want to solve _that_ problem 2018-09-30T12:07:49Z Bike: there is not. 2018-09-30T12:08:05Z phoe: Thanks. I'll go the long road then. 2018-09-30T12:08:47Z zxcvz_ joined #lisp 2018-09-30T12:09:46Z zxcvz quit (Quit: zxcvz) 2018-09-30T12:09:46Z zxcvz_ is now known as zxcvz 2018-09-30T12:21:06Z pjb: I still read GF as girlfriend, not as generic function… 2018-09-30T12:23:03Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-30T12:24:34Z pjb quit (Remote host closed the connection) 2018-09-30T12:26:47Z cage_ quit (Quit: Leaving) 2018-09-30T12:27:06Z cage_ joined #lisp 2018-09-30T12:33:16Z _death: generic functions are your friends.. whether they're girls or not is implementation-dependent 2018-09-30T12:35:22Z Nephromancer joined #lisp 2018-09-30T12:38:18Z Inline: lol 2018-09-30T12:41:44Z zxcvz quit (Quit: zxcvz) 2018-09-30T12:42:04Z SenasOzys joined #lisp 2018-09-30T12:43:13Z phoe: _death: is there a portability library that can be used to check this behavior? 2018-09-30T12:43:32Z phoe: some kind of TRIVIAL-GIRLFRIEND:GIRLFRIENDP? 2018-09-30T12:45:12Z orivej joined #lisp 2018-09-30T12:52:37Z cage_ quit (Remote host closed the connection) 2018-09-30T12:54:42Z eminhi joined #lisp 2018-09-30T12:55:02Z cage_ joined #lisp 2018-09-30T12:55:34Z orivej quit (Ping timeout: 268 seconds) 2018-09-30T12:59:42Z xuxuru joined #lisp 2018-09-30T13:04:58Z _death: you can check if it's a feminist using the mop ;) 2018-09-30T13:05:30Z Inline: lol 2018-09-30T13:11:17Z SaganMan joined #lisp 2018-09-30T13:16:09Z phoe: how? 2018-09-30T13:21:47Z Essadon joined #lisp 2018-09-30T13:24:02Z _death: well, in practice generic functions are never girls, and so the early controversy about CLOS being object oriented was settled, and so this discussion doesn't belong to #lisp ;) 2018-09-30T13:24:53Z Achylles joined #lisp 2018-09-30T13:29:59Z nika joined #lisp 2018-09-30T13:48:25Z cl-arthur joined #lisp 2018-09-30T13:49:44Z flazh quit (Ping timeout: 252 seconds) 2018-09-30T13:51:23Z flazh joined #lisp 2018-09-30T13:58:09Z kushal quit (Remote host closed the connection) 2018-09-30T13:58:26Z kushal joined #lisp 2018-09-30T13:58:50Z quazimodo quit (Ping timeout: 252 seconds) 2018-09-30T14:00:13Z graphene quit (Remote host closed the connection) 2018-09-30T14:01:41Z graphene joined #lisp 2018-09-30T14:13:15Z beach: pjb: There is no such thing as a "CLOS object" in the standard. In fact, the best definition of that term would be "any Common Lisp datum". 2018-09-30T14:13:55Z pjb joined #lisp 2018-09-30T14:15:44Z GoldRin quit (Ping timeout: 268 seconds) 2018-09-30T14:32:26Z igemnace joined #lisp 2018-09-30T14:33:00Z nebunez joined #lisp 2018-09-30T14:33:31Z nebunez quit (Remote host closed the connection) 2018-09-30T14:35:32Z nebunez joined #lisp 2018-09-30T14:39:07Z nebunez quit (Remote host closed the connection) 2018-09-30T14:41:59Z SenasOzys quit (Remote host closed the connection) 2018-09-30T14:42:48Z SenasOzys joined #lisp 2018-09-30T14:48:23Z josemanuel joined #lisp 2018-09-30T14:57:03Z trittweiler joined #lisp 2018-09-30T14:57:04Z random-nick quit (Ping timeout: 240 seconds) 2018-09-30T15:00:42Z random-nick joined #lisp 2018-09-30T15:01:18Z ealfonso joined #lisp 2018-09-30T15:01:26Z warweasle joined #lisp 2018-09-30T15:04:50Z bendersteed joined #lisp 2018-09-30T15:06:06Z Achylles quit (Ping timeout: 252 seconds) 2018-09-30T15:12:31Z graphene quit (Remote host closed the connection) 2018-09-30T15:13:49Z graphene joined #lisp 2018-09-30T15:19:11Z zfree joined #lisp 2018-09-30T15:22:09Z nanoz quit (Ping timeout: 252 seconds) 2018-09-30T15:25:14Z Achylles joined #lisp 2018-09-30T15:26:27Z igemnace quit (Ping timeout: 252 seconds) 2018-09-30T15:29:52Z igemnace joined #lisp 2018-09-30T15:32:48Z Kundry_Wag joined #lisp 2018-09-30T15:37:19Z Kundry_Wag quit (Ping timeout: 246 seconds) 2018-09-30T15:37:46Z cage_ quit (Remote host closed the connection) 2018-09-30T15:38:13Z cage_ joined #lisp 2018-09-30T15:44:06Z zxcvz joined #lisp 2018-09-30T15:45:55Z Josh_2 joined #lisp 2018-09-30T15:45:57Z warweasle is now known as warweasle_afk 2018-09-30T15:51:51Z nika quit (Quit: Leaving...) 2018-09-30T15:52:41Z SenasOzys quit (Ping timeout: 252 seconds) 2018-09-30T15:56:08Z bendersteed quit (Quit: bye) 2018-09-30T15:58:45Z bendersteed joined #lisp 2018-09-30T16:02:55Z SenasOzys joined #lisp 2018-09-30T16:04:57Z bendersteed quit (Quit: bye) 2018-09-30T16:10:17Z warweasle_afk quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-09-30T16:12:17Z v0|d quit (Ping timeout: 268 seconds) 2018-09-30T16:18:40Z doubledup quit (Read error: Connection reset by peer) 2018-09-30T16:18:53Z doubledup joined #lisp 2018-09-30T16:20:47Z jack_rabbit joined #lisp 2018-09-30T16:21:42Z doubledup quit (Read error: Connection reset by peer) 2018-09-30T16:22:02Z doubledup joined #lisp 2018-09-30T16:23:25Z igemnace quit (Read error: Connection reset by peer) 2018-09-30T16:23:58Z igemnace joined #lisp 2018-09-30T16:27:50Z mkolenda quit (Remote host closed the connection) 2018-09-30T16:28:35Z mkolenda joined #lisp 2018-09-30T16:32:50Z Kundry_Wag joined #lisp 2018-09-30T16:34:06Z Achylles quit (Ping timeout: 260 seconds) 2018-09-30T16:34:27Z Jesin joined #lisp 2018-09-30T16:37:42Z Kundry_Wag quit (Ping timeout: 252 seconds) 2018-09-30T16:41:12Z graphene quit (Remote host closed the connection) 2018-09-30T16:42:32Z graphene joined #lisp 2018-09-30T16:50:10Z Oladon joined #lisp 2018-09-30T17:01:55Z Achylles joined #lisp 2018-09-30T17:02:33Z razzy joined #lisp 2018-09-30T17:04:50Z random-nick quit (Read error: Connection reset by peer) 2018-09-30T17:11:53Z jack_rabbit quit (Ping timeout: 252 seconds) 2018-09-30T17:18:24Z xuxuru quit (Quit: xuxuru) 2018-09-30T17:19:50Z oni-on-ion quit (Ping timeout: 252 seconds) 2018-09-30T17:20:49Z oni-on-ion joined #lisp 2018-09-30T17:27:46Z scymtym quit (Ping timeout: 260 seconds) 2018-09-30T17:29:29Z razzy quit (Ping timeout: 252 seconds) 2018-09-30T17:31:36Z Bike quit (Ping timeout: 272 seconds) 2018-09-30T17:34:34Z tripty quit (Ping timeout: 252 seconds) 2018-09-30T17:37:01Z edgar-rft quit (Remote host closed the connection) 2018-09-30T17:37:16Z tripty joined #lisp 2018-09-30T17:42:32Z nanoz joined #lisp 2018-09-30T17:43:08Z roscoe_tw joined #lisp 2018-09-30T17:44:45Z scymtym joined #lisp 2018-09-30T17:45:08Z nowolfer joined #lisp 2018-09-30T17:49:54Z kajo joined #lisp 2018-09-30T17:55:03Z xuxuru joined #lisp 2018-09-30T18:05:14Z graphene quit (Remote host closed the connection) 2018-09-30T18:05:29Z roshanavand quit (Ping timeout: 252 seconds) 2018-09-30T18:06:34Z graphene joined #lisp 2018-09-30T18:20:33Z X-Scale quit (Ping timeout: 252 seconds) 2018-09-30T18:22:18Z k3nu joined #lisp 2018-09-30T18:22:23Z k3nu: hi 2018-09-30T18:22:33Z oni-on-ion: hi 2018-09-30T18:23:00Z k3nu: why it doesn't work 2018-09-30T18:23:00Z k3nu: CL-USER> (let ((ala (list :ble 1 :ble2 2))) (remprop 'ala 'ble) ala) 2018-09-30T18:23:01Z k3nu: (:BLE 1 :BLE2 2) 2018-09-30T18:23:24Z k3nu: I mean I was expecting (:BLE2 2 2018-09-30T18:23:29Z k3nu: ) 2018-09-30T18:23:46Z Xach: k3nu: becuase 'ble and :ble are not the same thing. 2018-09-30T18:24:00Z Xach: but 2018-09-30T18:24:14Z Xach: remprop is also for symbol property lists, not plist lists. 2018-09-30T18:24:44Z Xach: k3nu: so it is the wrong function for the job, used wrongly 2018-09-30T18:25:18Z Xach: k3nu: remf might be more what you want 2018-09-30T18:25:30Z bendersteed joined #lisp 2018-09-30T18:25:31Z k3nu: ok... so apart from the typo, what function should be used? 2018-09-30T18:28:52Z jackdaniel: borodust: atomic operations are coming to ECL soon™ (Marius implemented them here https://gitlab.com/embeddable-common-lisp/ecl/merge_requests/122/diffs , review pending) 2018-09-30T18:29:09Z borodust: jackdaniel: yay! thanks a lot 2018-09-30T18:29:25Z robotoad joined #lisp 2018-09-30T18:29:37Z p_l: jackdaniel: has anyone compiled ECL with musl yet? 2018-09-30T18:29:59Z vlatkoB quit (Remote host closed the connection) 2018-09-30T18:30:23Z jackdaniel: p_l: I had reports (mind, not recent) that it has been compiled succesfully with musl and uclibc 2018-09-30T18:30:37Z kajo quit (Ping timeout: 250 seconds) 2018-09-30T18:30:43Z p_l: I guess I need to sit down and build that build environment I need 2018-09-30T18:31:00Z p_l: though I suspect SBCL will be primary development system and ECL the delivery one 2018-09-30T18:32:04Z jackdaniel: if you have ecl-specific questions just drop by on #ecl 2018-09-30T18:32:59Z X-Scale joined #lisp 2018-09-30T18:33:07Z kajo joined #lisp 2018-09-30T18:33:45Z slyrus1 quit (Ping timeout: 252 seconds) 2018-09-30T18:41:46Z quipa joined #lisp 2018-09-30T18:46:45Z kajo quit (Ping timeout: 252 seconds) 2018-09-30T18:46:59Z zfree quit (Quit: zfree) 2018-09-30T18:54:21Z gravicappa joined #lisp 2018-09-30T19:01:29Z rjid joined #lisp 2018-09-30T19:04:59Z aeth: Took me a while to find the correct answer to what beach says about there being no "CLOS object". If by "CLOS object" you mean "instance of a [standard-]class (created by defclass)", that is a "standard-object". Otherwise, "object". 2018-09-30T19:05:04Z aeth: (He's said this before.) 2018-09-30T19:06:09Z cl-arthur quit (Quit: Lost terminal) 2018-09-30T19:06:28Z Achylles quit (Ping timeout: 252 seconds) 2018-09-30T19:06:42Z aeth: Imo, it's incorrect to correct people who say "CLOS object" by saying "there is no CLOS object" when 9 times out of 10 they probably mean "standard-object" when they say "CLOS object". http://www.lispworks.com/documentation/HyperSpec/Body/t_std_ob.htm 2018-09-30T19:07:20Z aeth: ("CLOS object" *is* incorrect, though.) 2018-09-30T19:13:38Z aeth: The advantage of using the exactly correct term is that you can say (typep (make-condition 'error) 'standard-object) is NIL in major implementations only in SBCL. Now you have something people can run in their REPL. 2018-09-30T19:14:39Z aeth: pjb: ^ 2018-09-30T19:16:10Z aeth: (And, actually, it's also NIL in CMUCL, obviously) 2018-09-30T19:17:57Z cage_ quit (Quit: Leaving) 2018-09-30T19:18:32Z aeth: (I should have said "instance of a standard-class (created by defclass)" or "instance of a [standard-]class created by defclass". The combination of parens and brackets is a bit misleading.) 2018-09-30T19:21:41Z rjid quit (Ping timeout: 256 seconds) 2018-09-30T19:24:05Z ggole quit (Quit: ggole) 2018-09-30T19:24:48Z dueyfinster joined #lisp 2018-09-30T19:26:42Z orivej joined #lisp 2018-09-30T19:30:31Z pjb: aeth: instances of standard-class are classes. 2018-09-30T19:30:42Z pjb: instances of instances of standard-class are standard-objects. 2018-09-30T19:31:31Z aeth: pjb: thank you 2018-09-30T19:31:39Z aeth: I knew I still had a mistake in there 2018-09-30T19:31:43Z aeth: Being this meta gets... tricky to talk about 2018-09-30T19:32:08Z pjb: Just study Smalltalk. 2018-09-30T19:33:13Z pjb: http://pharo.gforge.inria.fr/PBE1/PBE1ch14.html 2018-09-30T19:33:54Z ealfonso quit (Disconnected by services) 2018-09-30T19:34:03Z djeis[m]: Strictly speaking instances of standard-class are also standard-object's :p 2018-09-30T19:34:17Z pjb: The funny thing of course, is that classes are instances of objects that are classes. But the loop is only apparent, since the arrow going down is an is-instance-of, not a is-subclass-of. 2018-09-30T19:34:19Z djeis[m]: Given class is a subclass of standard-object. 2018-09-30T19:35:31Z djeis[m]: (typep (find-class 'integer) 'standard-object) ;; => t 2018-09-30T19:36:33Z aeth: Now how do structures fit in? 2018-09-30T19:37:30Z Achylles joined #lisp 2018-09-30T19:38:23Z djeis[m]: That is exceedingly implementation dependent. 2018-09-30T19:39:24Z djeis[m]: I mean, presumably every structure would have some associated class which would be an instance of class, so (typep (class-of ) 'standard-object) ;; => t 2018-09-30T19:39:57Z djeis[m]: But exactly what that class is or inherits from is hard to say. 2018-09-30T19:40:15Z trittweiler: it's a subclass of structure-class 2018-09-30T19:40:26Z djeis[m]: On SBCL 2018-09-30T19:40:54Z djeis[m]: Oh, my bad. 2018-09-30T19:40:59Z trittweiler: structure-class and structure-object are in the standard :) 2018-09-30T19:41:04Z djeis[m]: For some reason I lost that one when I checked the index lol 2018-09-30T19:41:21Z djeis[m]: Answers my question tho- structure-class is a subclass of class. 2018-09-30T19:41:35Z trittweiler: and is a standard-object :) 2018-09-30T19:41:50Z azimut_ joined #lisp 2018-09-30T19:41:52Z aeth: My impression of structures is that because redefinition is undefined, they *can* have a special allocation strategy (taking a slot's :type into account) with inline accessors (which can give the slot's :type information to the using function, for use in type inference), and that's the part that's undefined. (Some implementations just type check, and CLISP probably doesn't even do that.) 2018-09-30T19:41:56Z djeis[m]: Yup, as weird as that may be. 2018-09-30T19:42:13Z djeis[m]: aeth: yes, exactly. 2018-09-30T19:43:11Z k3nu quit (Ping timeout: 268 seconds) 2018-09-30T19:43:23Z azimut quit (Ping timeout: 245 seconds) 2018-09-30T19:49:56Z doubledup quit (Quit: Leaving) 2018-09-30T19:55:52Z trittweiler: I think, you could have special allocation strategies also for objects. The physical size of the slot should always be at least 1 lisp-word, though, though (which is not worse than for T), so that it can change to an arbitrary Lisp-pointer. If the physical size was multiple lisp-words, you just use the first one upon change, and NOP the remaining ones. 2018-09-30T19:58:42Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-09-30T19:58:49Z anewuser joined #lisp 2018-09-30T19:59:38Z dale joined #lisp 2018-09-30T20:00:43Z random-nick joined #lisp 2018-09-30T20:00:47Z zxcvz quit (Quit: zxcvz) 2018-09-30T20:02:03Z dueyfinster quit (Quit: Textual IRC Client: www.textualapp.com) 2018-09-30T20:02:27Z dueyfinster joined #lisp 2018-09-30T20:02:34Z dueyfinster quit (Client Quit) 2018-09-30T20:07:52Z nanoz quit (Ping timeout: 244 seconds) 2018-09-30T20:09:46Z djeis[m]: Given you can add and remove slots from standard-objects anyway there's no reason they couldn't have a specialized allocation strategy too, you just can't inline the accessor code for it. 2018-09-30T20:10:12Z djeis[m]: And it'd potentially make the accessor code a lot more complicated. 2018-09-30T20:11:18Z djeis[m]: But worries about being able to fit the new object layout inside the old one are already moot. 2018-09-30T20:14:39Z Bike joined #lisp 2018-09-30T20:19:50Z robotoad quit (Max SendQ exceeded) 2018-09-30T20:20:23Z oni-on-ion: is there more to close than defclass/defmethod/defgeneric and slots, ie is standard-object documented, could one display applicable methods for builtin classes if any? 2018-09-30T20:25:45Z robotoad joined #lisp 2018-09-30T20:26:02Z Bike: that's kind of incoherent 2018-09-30T20:26:11Z Bike: except the last part. you can find methods specialized on builtin classes 2018-09-30T20:26:16Z Bike: same way you do for any specializer 2018-09-30T20:26:24Z Bike: there's mop:class-direct-methods e.g. 2018-09-30T20:26:33Z Bike: or was it specializer-direct-methods. yeah, that one. 2018-09-30T20:27:20Z Bike: compoute-applicable-methods(-using-classes) also works the same on builtin (classes) same as others 2018-09-30T20:30:42Z dueyfinster joined #lisp 2018-09-30T20:30:51Z kajo joined #lisp 2018-09-30T20:34:29Z aeth: defclass has :type, too. It's just not as respected as defstruct's :type (e.g. SBCL at default implementation levels ignores it) because it doesn't optimize the code and probably slows it. 2018-09-30T20:34:43Z aeth: s/defclass has/defclass slots have/ 2018-09-30T20:36:54Z aeth: So no reason why you could have a special allocation strategy afaik. It would just slow down redefinition. The inlining afaik would be the only part that can't be done, yes. 2018-09-30T20:37:48Z aeth: If that happened then a structure class is just a standard class with non-generic, inlinable accessors (not necessarily inline, could just have a constant ftype... I think in SBCL it's mostly or entirely the latter, but a similar result with the type inference). 2018-09-30T20:37:51Z Bike: without compiler support, slot access would have to box and unbox, so it would be slower. 2018-09-30T20:38:09Z aeth: Bike: good point 2018-09-30T20:41:03Z aeth: You'd need those inline or constant ftype accessors so you don't have to box if the thing doesn't leave the scope of the accessing function, so e.g. (defun foo (a) (declare ((simple-array double-float (1)) a)) (aref a 0)) is bad but (defun foo (a) (declare ((simple-array double-float (1)) a)) (setf (aref a 0) (1+ (aref a 0))) a) is OK 2018-09-30T20:43:59Z light2yellow joined #lisp 2018-09-30T20:46:18Z bendersteed quit (Quit: bye alls) 2018-09-30T20:48:20Z xuxuru quit (Quit: xuxuru) 2018-09-30T20:51:20Z mn3m joined #lisp 2018-09-30T20:51:30Z ym quit (Quit: Leaving) 2018-09-30T20:53:10Z robotoad quit (Quit: robotoad) 2018-09-30T20:54:59Z robotoad joined #lisp 2018-09-30T20:55:19Z Balooga_ joined #lisp 2018-09-30T20:59:28Z gravicappa quit (Remote host closed the connection) 2018-09-30T21:00:06Z dueyfinster quit (Quit: My iMac has gone to sleep. ZZZzzz…) 2018-09-30T21:03:30Z random-nick quit (Read error: Connection reset by peer) 2018-09-30T21:10:54Z Achylles quit (Ping timeout: 252 seconds) 2018-09-30T21:11:35Z jasmith joined #lisp 2018-09-30T21:13:04Z mfiano[m] joined #lisp 2018-09-30T21:20:53Z dented42 joined #lisp 2018-09-30T21:22:23Z robotoad quit (Quit: robotoad) 2018-09-30T21:29:22Z Oladon quit (Quit: Leaving.) 2018-09-30T21:38:28Z josemanuel quit (Quit: leaving) 2018-09-30T21:44:02Z v0|d joined #lisp 2018-09-30T21:44:22Z robotoad joined #lisp 2018-09-30T21:47:44Z Copenhagen_Bram joined #lisp 2018-09-30T21:54:19Z Achylles joined #lisp 2018-09-30T22:06:28Z Essadon quit (Ping timeout: 272 seconds) 2018-09-30T22:08:05Z Essadon joined #lisp 2018-09-30T22:09:54Z mn3m quit (Remote host closed the connection) 2018-09-30T22:10:50Z light2yellow quit (Quit: wake up forgiven) 2018-09-30T22:12:38Z Kevslinger joined #lisp 2018-09-30T22:14:27Z Roy_Fokker joined #lisp 2018-09-30T22:15:37Z Arcaelyx joined #lisp 2018-09-30T22:27:06Z rtypo joined #lisp 2018-09-30T22:27:12Z pjb quit (Ping timeout: 252 seconds) 2018-09-30T22:31:48Z igemnace quit (Ping timeout: 272 seconds) 2018-09-30T22:31:59Z eminhi quit (Remote host closed the connection) 2018-09-30T22:34:10Z vaporatorius quit (Ping timeout: 246 seconds) 2018-09-30T22:37:00Z robotoad quit (Quit: robotoad) 2018-09-30T22:40:09Z GoldRin joined #lisp 2018-09-30T22:41:20Z anewuser quit (Quit: anewuser) 2018-09-30T22:45:19Z igemnace joined #lisp 2018-09-30T22:45:27Z Essadon quit (Ping timeout: 252 seconds) 2018-09-30T22:47:23Z frodef quit (Ping timeout: 252 seconds) 2018-09-30T22:48:33Z varjag quit (Ping timeout: 244 seconds) 2018-09-30T22:49:30Z dented42 quit (Ping timeout: 252 seconds) 2018-09-30T22:49:55Z kajo quit (Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.) 2018-09-30T22:51:27Z kajo joined #lisp 2018-09-30T22:52:31Z robotoad joined #lisp 2018-09-30T22:53:09Z GoldRin quit (Remote host closed the connection) 2018-09-30T22:54:11Z GoldRin joined #lisp 2018-09-30T22:54:22Z Essadon joined #lisp 2018-09-30T22:54:59Z Elon_Satoshi joined #lisp 2018-09-30T22:56:55Z Copenhagen_Bram quit (Ping timeout: 252 seconds) 2018-09-30T23:00:06Z igemnace quit (Quit: WeeChat 2.2) 2018-09-30T23:01:43Z pjb joined #lisp 2018-09-30T23:05:22Z Balooga_ quit (Quit: Balooga_) 2018-09-30T23:06:21Z trittweiler quit (Ping timeout: 252 seconds) 2018-09-30T23:06:47Z jinkies joined #lisp 2018-09-30T23:12:31Z Josh_2 quit (Remote host closed the connection) 2018-09-30T23:12:37Z Arcaelyx_ joined #lisp 2018-09-30T23:16:01Z kajo quit (Ping timeout: 260 seconds) 2018-09-30T23:16:04Z Arcaelyx quit (Ping timeout: 240 seconds) 2018-09-30T23:18:47Z Balooga_ joined #lisp 2018-09-30T23:20:33Z LdBeth: hello 2018-09-30T23:20:57Z no-defun-allowed: hi 2018-09-30T23:25:05Z Elon_Satoshi quit (Quit: So long, and thanks for all the fish! 2.2 Weechat is best Weechat) 2018-09-30T23:28:10Z Copenhagen_Bram joined #lisp 2018-09-30T23:34:47Z robotoad quit (Quit: robotoad) 2018-09-30T23:35:24Z pjb quit (Ping timeout: 252 seconds) 2018-09-30T23:45:56Z r1b joined #lisp 2018-09-30T23:47:20Z GoldRin quit (Ping timeout: 252 seconds) 2018-09-30T23:49:14Z graphene quit (Remote host closed the connection) 2018-09-30T23:50:36Z graphene joined #lisp 2018-09-30T23:52:11Z Kaisyu joined #lisp 2018-09-30T23:55:25Z robotoad joined #lisp 2018-09-30T23:58:36Z arduo quit (Ping timeout: 252 seconds)