libera/#lisp - IRC Chatlog
Search
15:06:05
Josh_2
When connected to a remote lisp image can I get output to from functions like trace to go into my sly repl instead of having to view it with journalctl?
15:18:54
rain3
then why doesn't it output to the repl when you actually trace the functions? check the value of *trace-output* during those funcalls
15:32:31
rain3
This variable controls the global redirection of the the standard streams (*standard-output*, etc) to the REPL in Emacs. https://joaotavora.github.io/sly/
15:44:41
Josh_2
https://plaster.tymoon.eu/view/2567#2567 how do I fix this?? Getting an condition telling me that urandom was shut by save-lisp-and-die...
16:01:30
rain3
does that error happen when you load a fresh sbcl image and quicload ironclad and eval (ironclad:random-bits 13) ?
16:02:02
xaltsc
Hey, having used macros only in LaTeX and, to a lesser extent, in C, I had a really bad opinion of them. Now that I'm learning several Lisp dialects, I see that they are an important idiom, yet, I still see them as a bad programming practice, quite antiquated, just like gotos. Can someone explain me why I am wrong ? Thanks :D
16:04:53
dash[m]
xaltsc: It's a tradeoff of power vs readability. Lisps tend to be biased towards power/flexibility instead of towards readability/auditabilty
16:06:55
Josh_2
There is nothing inherently dangerous about a macro.. in fact I would argue that lots of the time its more dangerous to *not* use them
16:07:25
Josh_2
if you find yourself writing the same piece of code over and over and over you are more likely to make a mistake by doing that than hiding that piece of code behind a macro.
16:08:07
rain3
xaltsc: lisp macros don't operate on text, they operate on the abstract syntax tree of the program . so it's programming the program itself
16:09:39
dash[m]
Josh_2: I recommend this classic essay. http://www.erights.org/data/irrelevance.html
16:21:09
xaltsc
Josh_2: if you find yourself writing the same code, why use make a macro rather than a function. Concerning the "danger" macro pose, it kind of the same thing I guess that untyped languages vs languages with a powerful typesystem (eg. python vs haskell)
16:24:14
xaltsc
But there would always be a workaround with functions, deep down, it's nothing but Turing machines or Lambda calculus. Do macros really save time ? So far, I haven't witnessed a single instance of that, but I've probably only seen really simple examples.
16:25:49
Josh_2
I have 96 'commands' that are invokable by an external user, each time I need a new command I simply write (new-X-command <command-name> (<variables and their validators>) <body>) and I have a new command that is accessible to the relevant user by authentication level
16:27:10
jcowan
xaltsc: I recommend reading https://google.github.io/styleguide/lispguide.xml#Macros carefully
16:29:10
Josh_2
Now I have a nice syntactic abstraction for defining external commands that are validated when invoked, provide a few universal arguments that can be used in body and automatically grabs all output that is sent to *standard-output* and sends it to the room where the command was invoked
16:29:33
Josh_2
Sure I could do this with a function, but why? You dont need to know the workings of the macro to see how to use it by example
16:32:23
jcowan
you have let-bindings for a couple of gensyms, which is a style I haven't seen before.
16:35:06
wasamasa
xaltsc: so when you are limited by your lisp of choice and a function does not help, you can write a macro generating that code for you
16:35:23
Josh_2
jcowan: you can see the gensyms in use here https://plaster.tymoon.eu/view/2569#2569