yauhsien has quit [Remote host closed the connection]
yauhsien has joined #commonlisp
lisp123 has quit [Ping timeout: 268 seconds]
yauhsien has quit [Remote host closed the connection]
frgo has quit [Ping timeout: 248 seconds]
aartaka has quit [Ping timeout: 246 seconds]
aartaka has joined #commonlisp
epony has quit [Quit: QUIT]
rotateq has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
yauhsien has joined #commonlisp
aartaka has joined #commonlisp
prokhor__ has joined #commonlisp
aartaka has quit [Read error: Connection reset by peer]
aartaka has joined #commonlisp
pillton has joined #commonlisp
orestarod has joined #commonlisp
shka has joined #commonlisp
Psybur has quit [Ping timeout: 260 seconds]
yauhsien has quit [Remote host closed the connection]
yauhsien has joined #commonlisp
MajorBiscuit has joined #commonlisp
MajorBiscuit has quit [Ping timeout: 240 seconds]
hhdave has quit [Ping timeout: 246 seconds]
yauhsien has quit [Remote host closed the connection]
yauhsien has joined #commonlisp
epony has joined #commonlisp
MajorBiscuit has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 268 seconds]
lawt has quit [Ping timeout: 260 seconds]
Psybur has joined #commonlisp
attila_lendvai has joined #commonlisp
cosimone has quit [Remote host closed the connection]
lawt has joined #commonlisp
ecraven has quit [Quit: quit]
hhdave has joined #commonlisp
<zacque>
Hi, can I modify the argument values in SLIME debugger?
ecraven has joined #commonlisp
<zacque>
I tried `(setf <argument> <new-value>)` but it doesn't work
<zacque>
Oh, seems like it does work, but I couldn't restart from the frame with the new-value
aartaka has quit [Ping timeout: 248 seconds]
aartaka has joined #commonlisp
cosimone has joined #commonlisp
perrierjouet has quit [Ping timeout: 260 seconds]
orestarod has quit [Ping timeout: 250 seconds]
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
yauhsien has quit [Remote host closed the connection]
yauhsien has joined #commonlisp
yauhsien has quit [Remote host closed the connection]
yauhsien has joined #commonlisp
kevingal has joined #commonlisp
prokhor_ has joined #commonlisp
dickbar__ has joined #commonlisp
kevingal has quit [Ping timeout: 250 seconds]
kevingal has joined #commonlisp
<dickbar__>
minion: Tell me about yourself.
<minion>
dickbar__: what's up?
<dickbar__>
minion: I'm oke.
<minion>
please stop playing with me... i am not a toy
prokhor__ has quit [Ping timeout: 248 seconds]
<dickbar__>
minion: neither am i.
<minion>
would you want to be
<dickbar__>
minion: no!
<minion>
why not?
<beach>
dickbar__: Please do these conversations using /msg.
<dickbar__>
oke:-)
<beach>
dickbar__: Minion is mostly useful for showing other participants important information that would otherwise have to be looked up and retyped.
<dickbar__>
Beach: I understand. I was looking for how much Eliza like minion is.
<beach>
Not much.
lisp123 has joined #commonlisp
lisp123 has quit [Read error: Connection reset by peer]
dickbar__ has quit []
<rotateq>
beach: I watched the rest of an interview film with Joseph Weizenbaum (cause Eliza was mentioned) some days ago, very interesting personality. Iirc he wrote it in MACLisp like Terry Winograd did with SHRDLU.
<beach>
I see.
yauhsien has quit [Remote host closed the connection]
yauhsien has joined #commonlisp
yauhsien has quit [Ping timeout: 246 seconds]
opcode has quit [Ping timeout: 240 seconds]
treflip has joined #commonlisp
opcode has joined #commonlisp
<prokhor_>
rotateq: could you pls give a link to that interview?
<rotateq>
prokhor_: No sorry, it is a DVD Film someone borrowed me (from 2006) and in German.
<prokhor_>
ah... I am Swiss btw, so i understand German..
sterni has quit [Quit: WeeChat 3.3]
sterni has joined #commonlisp
yauhsien has joined #commonlisp
monaaraj has quit [Ping timeout: 248 seconds]
monaaraj has joined #commonlisp
frgo has joined #commonlisp
frgo has quit [Ping timeout: 246 seconds]
<prokhor_>
beach: what is your opinion on Mezzano btw? (besides not being what you intend wth closos)
yauhsien has quit [Remote host closed the connection]
Oddity has quit [Ping timeout: 260 seconds]
yauhsien has joined #commonlisp
perrierjouet has joined #commonlisp
yauhsien has quit [Ping timeout: 240 seconds]
treflip has left #commonlisp [ERC (IRC client for Emacs 27.2)]
Cymew has joined #commonlisp
orestarod has joined #commonlisp
random-nick has joined #commonlisp
yauhsien has joined #commonlisp
pillton has quit [Remote host closed the connection]
s-liao has joined #commonlisp
aartaka has quit [Ping timeout: 248 seconds]
aartaka has joined #commonlisp
<beach>
prokhor_: It looks like a fine system. I haven't used it myself, but it is certainly impressive work.
tyson2 has joined #commonlisp
aartaka has quit [Ping timeout: 248 seconds]
aartaka has joined #commonlisp
jeko has joined #commonlisp
s-liao has quit [Ping timeout: 250 seconds]
monaaraj has quit [Remote host closed the connection]
<hayley>
lisp123, beach: Following a prior discussion, I found this paper "CoCo: Sound and Adaptive Replacement of Java Collections" which describes a technique for trying to pick the best implementation of abstract data types: <https://web.cs.ucla.edu/~harryxu/papers/xu-ecoop13.pdf>
s-liao has joined #commonlisp
Posterdati has quit [Read error: Connection reset by peer]
<beach>
hayley: Interesting!
Posterdati has joined #commonlisp
aartaka has quit [Ping timeout: 246 seconds]
Psybur has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
yewscion has joined #commonlisp
agrosant has quit [Read error: Connection reset by peer]
agrosant has joined #commonlisp
Psybur has joined #commonlisp
aartaka has quit [Ping timeout: 248 seconds]
aartaka has joined #commonlisp
<hayley>
Today I decided to work on an assignment for the C++ class at university (though I don't take the class, I just heard enough questions about the assignment to warrant taking a look). The final part, which people were working on, was path finding in a maze.
aeth has quit [Ping timeout: 250 seconds]
<hayley>
It took something like 100 lines of Common Lisp to parse the input file, perform pathfinding, and produce some visualisations using CLIM (which I used for debugging). And it was thousands of times faster than C++ code, since I had used a better algorithm than what was specified for the assignment.
aeth has joined #commonlisp
<hayley>
I have two observations. First, it's funny that students are taught C++ because it is a "fast" language, but they are taught to solve problems with bad data structures and algorithms. Second, my code seemed impressive to the other students until I provided some of that code, where they did the...usual reaction to reading Lisp code.
aartaka has quit [Read error: Connection reset by peer]
aartaka has joined #commonlisp
lisp123 has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
yauhsien has quit [Remote host closed the connection]
<rotateq>
hayley: They didn't say "It's unreadable."?
yauhsien has joined #commonlisp
<jackdaniel>
they said: I've read last 30% of the file and it was all ')'
<hayley>
Both.
<_death>
lots of irritating si pluses
<hayley>
It was more like seven close parens, but still. Everything's great until they see the code.
<hayley>
It's like that episode of The Simpsons where Bart does ballet. Everything is good until he takes off the mask, and his identity is revealed. How odd.
<empwilli>
Shinmera: sounds interesting :) have you considered crossposting to the fediverse? i'd love to follow but twitter :/
<Shinmera>
I have a mastodon account but don't really post there, nor does anyone really follow me there.
<Shinmera>
So no, have not.
<empwilli>
so at least some interest would be there :)
lisp123 has quit [Quit: Leaving...]
perrierjouet has quit [Ping timeout: 272 seconds]
<Shinmera>
I'm not going to start cross-posting myself, sorry. But feel free to do it if you feel like it.
<empwilli>
k thank :)
<empwilli>
*thanks
razetime has joined #commonlisp
<beach>
hayley: Your first observation is similar to what goes on in industry. People choose C++ because the compiler is known to generate fast code, but then because of lack of automatic memory management, they blow it by using smart pointers, object copying, or reference counters.
hisacro has quit [Ping timeout: 256 seconds]
<hayley>
Yes, there is also the requirement that basically every object is deep copied somewhere.
<beach>
In the assignment? Oh wow!
<flip214>
hayley: to ensure "functional programming", perhaps?
<hayley>
A friend also noted that there were pointers where they were not necessary at all, other than to make students suffer with manual memory management. I think "new int" even comes up somewhere.
<hayley>
flip214: The algorithms used (in the assignment requirements, and my code too) were entirely imperative. I started working on a port to Standard ML, but decided that the code was too imperative.
<empwilli>
be careful not to confuse *language X is bad* with *the task of the assignment is to make so. comfortable with new concepts*; pedagogic tasks must not necessarily be super sensible and the more trivial albeit less optimal algorithm might be more suitable to demonstrate how things work
<hayley>
Apparently the teacher has very...interesting ideas on clean code, including banning multiple return statements, switch-case, breaking out of loops, etc. I don't think they would begin with good techniques, by using functional programming.
aartaka has quit [Ping timeout: 260 seconds]
<hayley>
@empwilli: Sure. But (as I might have said in prior years of study) these choices of algorithms and data structures make problems far harder than they need to be. To an extent, I find that the best data structures make code simpler.
aartaka has joined #commonlisp
<empwilli>
can't judge w/o seeing the assignment; but to be honest if it were for a aoc assignment or sth. similar I would likely rely to depth first search via stack or similar
<empwilli>
and then my datastructure is implicit :)
<hayley>
But this behaviour strikes me as odd. They hear that I made a program in one afternoon, and it runs thousands of times faster (I'm not kidding), but then lose it when they see some parentheses.
<_death>
show them lisp-to-dylan output instead ;)
<hayley>
empwilli: It is a breadth first search of sorts. The algorithm was specified in the assignment, and it manages to be slow and difficult to write simultaneously.
<empwilli>
hey that's not easy to achieve!
<flip214>
hayley: when you just learn your first language, anything different looks fearsome. only when they have more experience (and found out that different syntaxes/styles/conventions make sense!), they'll become more open.
<beach>
This psychological phenomenon is well documented.
aartaka has quit [Ping timeout: 250 seconds]
aartaka has joined #commonlisp
<hayley>
There is a "traversal" algorithm which is like Dijkstra's algorithm, I guess. There are "open" and "closed" sets, represented as adjustable vector. However, the open set never has elements removed, and both lists require a sequential search to find membership. It's terribly slow and convoluted. And the algorithm produces another such "set" represented as a vector.
Bike has joined #commonlisp
<empwilli>
ugh
<hayley>
There is a much more natural data structure for the closed set, and returned value, namely a two-dimensional array, with the same dimensions as the maze to solve. It's plain weird.
<hayley>
But, anyway, everything goes well until someone sees the damn parentheses. It's very unfortunate.
<_death>
a 2d array would make sense if it's dense, but it's probably not..
<hayley>
It's pretty dense, and space is not an issue for this size of maze.
aartaka has quit [Ping timeout: 250 seconds]
<_death>
another option is to make it intrusive, so that each cell in the maze stores the flag
aartaka has joined #commonlisp
<hayley>
With regards to the syntax, still, I wonder how manual memory management and some weird overloading (like << to print) is considered "normal", but prefix notation is not. I am sure the former has caused many more defects than the latter.
<empwilli>
i'd argue that manual memory management is not the status quo in modern c++
<hayley>
Sure. Though the students have only been taught pointers.
<empwilli>
and it's likely not the prefix notion for lisp; yes you can program imperatively but at least for me (as a beginner) it feels significantly harder than in _any_ imperative programming language i've encountered so far
<empwilli>
what level of students are they?
<hayley>
All the complaints I got were due to prefix notation.
<hayley>
All second year in a Bachelor degree.
<empwilli>
ok then its really odd :D
<empwilli>
(however I learned prolog in my first year so maybe I was used to "odd" languages :D)
<_death>
if you see foo[i], complain that it's not i[foo]
<hayley>
Maybe, more generally, the students aren't taught how to avoid failure. They have to write out the loop, rather than calling memcpy. They cannot use assert() (or similar) to test preconditions. But that is more off-topic. I just don't get how their perception turns to shit that quickly.
yauhsien has quit [Remote host closed the connection]
<hayley>
Here is a little visualisation I made in CLIM, too. Someone asked how much stopping traversal early would help, when the goal in the maze was found. It would help about that much.
<_death>
in fact, you can complain that they don't write in Bourne style
<jdz>
hayley: Have you asked them how is an ordinary function call not a prefix notation? Like how is (foo x y z) really different from foo(x, y, z)?
<jdz>
I'd really know the answer.
<jdz>
*like to
<hayley>
_death: Using the C preprocessor for anything other than #include is an immediate fail, as with any other style violation.
<hayley>
jdz: If I had to guess, that control structures get {}, and operators get precedence rules instead.
<jdz>
Right. And have is memorizing precedence rules good again? A rhetorical question.
hisacro has joined #commonlisp
<hayley>
Right.
<_death>
well, what about #include <iso646.h>
<hayley>
I'll also add that memory management is the biggest cause of bugs in this course (of course). And someone told them about how to use valgrind and -fsanitize, to avoid the cases where programs with bugs just so happen to work. But it's definitely the parentheses that are a problem here.
<hayley>
(That someone was not the lecturer, too, of course.)
<beach>
hayley: Is this going in the direction where you are going to suggest a syntax for Lisp without parentheses in order to persuade your class mates to use Lisp? It is not going to work; it has been tries multiple times.
<hayley>
I am aware, and I am not going to do that.
<beach>
Whew!
<hayley>
I'm just curious about how syntax appears to be a larger problem than everything else.
<beach>
hayley: Look at it this way... the class mates with a sufficiently closed mindset to reject a factor 1000 performance improvement because of parentheses are probably not the ones you would want to use Common Lisp in the first place.
<_death>
it's the surface, they can't see anything beneath it
Cymew has quit [Ping timeout: 260 seconds]
<beach>
Exactly, and they have no desire to.
<hayley>
That is true.
<_death>
it can take time to understand that programming languages are more than syntax
yauhsien has quit [Remote host closed the connection]
<hayley>
I would think learning Java and then C++ would go some way to that, still.
VincentVega has joined #commonlisp
s-liao has quit [Quit: Client closed]
<empwilli>
beach: it's not the performance improvement that comes with the different language, though
<hayley>
Right, the performance difference was due to different algorithms and data structures. But I only had code written in Common Lisp.
rotateq has quit [Quit: ERC (IRC client for Emacs 26.3)]
aartaka has quit [Ping timeout: 268 seconds]
<empwilli>
of course :)
kevingal has quit [Ping timeout: 252 seconds]
Inline has quit [Quit: Leaving]
Psybur has quit [Ping timeout: 268 seconds]
Psybur has joined #commonlisp
Inline has joined #commonlisp
aartaka has joined #commonlisp
zacque has quit [Quit: Goodbye :D]
tyson2 has quit [Read error: Connection reset by peer]
tyson2 has joined #commonlisp
<jackdaniel>
hayley: very cool visualisation
<jackdaniel>
I agree with empwilli - when the purpose of an assignemnt to implement linked lists is to get confused and finally understand how pointer works then using #'cons, #'find and #'remove kind of misses the point (still it must be very impressive for the assignee)
<VincentVega>
jackdaniel: but I like HANDLE too. The sheer decisiveness of it. It's resolution, the confidence. If I had to choose a function to defy gods, that's what I would name it.
Lord_Nightmare has joined #commonlisp
kevingal has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Devon has joined #commonlisp
eddof13 has joined #commonlisp
jeko has quit [Ping timeout: 260 seconds]
dra has joined #commonlisp
razetime has quit [Ping timeout: 250 seconds]
jeko has joined #commonlisp
Psybur has quit [Ping timeout: 260 seconds]
Psybur has joined #commonlisp
<Nilby>
Hmm... android runs genera, but does genera run android?
mon_aaraj has joined #commonlisp
jeko has quit [Ping timeout: 268 seconds]
razetime has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jeosol has joined #commonlisp
jeko has joined #commonlisp
eddof13 has joined #commonlisp
tfb has joined #commonlisp
<dbotton>
Is there a value to genera outside of historical curiosity today?
<dbotton>
(and of course value of reading any code)
<dbotton>
Like does it have a permissive license to make its code worth spending time on?
<prokhor_>
not atm, that's why it's bitrotting
<prokhor_>
but its beatiful & innovative code for sure IMHO
<dbotton>
I am sure, but it seems its greatest value was being part of the instigating of opensource
<dbotton>
but I may be misunderstanding some of its history and legal posturing
<jackdaniel>
afaik there is an ongoing effort to opensource it
<tfb>
dbotton: I don't think so. It was fun to use and for a while it was worth using to write code for stock hardware lisps, but I think those days are gone.
<tfb>
by which I mean 'gone for me': may differ for others of course.
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
<tfb>
I think the interlisp-D environment is far more interesting in many ways as a 'there could have been another world' experience
cage has joined #commonlisp
<Guest74>
hayley: parentheses resemble snakes and therefore strike fear in the average person. The most they can handle is usually two side by side. Anything more and you need to insert newlines. Preferably at offsets so when you scroll down the page it appears the snake is slithering off to the side.
poselyqualityles has joined #commonlisp
treflip has joined #commonlisp
hhdave has quit [Quit: hhdave]
aartaka has quit [Ping timeout: 240 seconds]
<dbotton>
Is there a simple way to make a handler-case optional? For example I want to in production handle all conditions but during dev to not do so?
yewscion has quit [Ping timeout: 268 seconds]
Psybur has quit [Read error: Connection reset by peer]
<tfb>
A macro built on handler-bind is likely the answer.
Psybur has joined #commonlisp
<Bike>
you could do something like (deftype production-condition () (if *production* 't 'nil)) and then have your handler on (and my-error production-condition)?
<dbotton>
I was looking for something "standard"
yauhsien has quit [Remote host closed the connection]
<dbotton>
Most languages/compilers have a "switch"
<Bike>
do they? news to me
<Bike>
you could also use *break-on-signals*
<Bike>
set it to 'error or something while developing, and then as soon as ERROR is called it will drop into the debugger
<Nilby>
dbotton: something like wrapping in #-development and recompiling is most like what you're probably thinking about from ada compilers. Of course you can make a macro for it
<dbotton>
something like that
<dbotton>
I will likely just invoke the debugger based on a flag *development*, that seems easiest
<tfb>
dbotton: there is almost never any purpose in invoking the debugger unless you're doing it using handler-bind (or *break-on-signals* or letting error do it for you etc), because in handler-case the stack is already unwound
triffid has quit [Quit: triffid]
MajorBiscuit has quit [Ping timeout: 268 seconds]
<dbotton>
ok, if that is case I may need to create a macro using handler case when in production only
<tfb>
It's very easy to write something like assert/dev which checks a variable and does an assert (and hence signals an error if the assertion fails) if it's in some condition and just (say) logs a warning if it's not
hhdave has joined #commonlisp
razetime has quit [Ping timeout: 240 seconds]
szkl has joined #commonlisp
<contrapunctus>
Is there an existing way to define `foo` as an alias to function `bar` in such a way that tools like eldoc display the lambda list for `bar` , and without copying the lambda list manually?