rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
robdog has quit [Ping timeout: 264 seconds]
makomo has quit [Ping timeout: 240 seconds]
wusticality has joined #lisp
anewuser has joined #lisp
nirved has quit [Ping timeout: 260 seconds]
robdog has joined #lisp
pierpal has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
ryan_vw has joined #lisp
robdog has joined #lisp
warweasle has quit [Quit: exit]
robdog has quit [Ping timeout: 252 seconds]
rozenglass has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
arescorpio has joined #lisp
fikka has quit [Ping timeout: 268 seconds]
ryan_vw has quit [Ping timeout: 246 seconds]
pjb has quit [Remote host closed the connection]
rozenglass has quit [Remote host closed the connection]
pjb has joined #lisp
Mr-Potter has quit [Ping timeout: 250 seconds]
pjb has quit [Ping timeout: 252 seconds]
fikka has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 240 seconds]
MightyJoe has quit [Remote host closed the connection]
wigust has quit [Ping timeout: 244 seconds]
MetaYan has quit [Ping timeout: 252 seconds]
ryan_vw has joined #lisp
pjb has joined #lisp
Elephant454 has joined #lisp
holycow has quit [Quit: leaving]
Cymew has joined #lisp
Cymew has quit [Ping timeout: 268 seconds]
dale has quit [Quit: dale]
rumbler31 has joined #lisp
lmy9900 has joined #lisp
pjb has quit [Ping timeout: 252 seconds]
ryan_vw has quit [Ping timeout: 240 seconds]
lmy9900 has quit [Max SendQ exceeded]
robotoad has quit [Quit: robotoad]
igemnace has joined #lisp
lmy9900 has joined #lisp
pjb has joined #lisp
robotoad has joined #lisp
orivej has joined #lisp
cyraxjoe has joined #lisp
pjb has quit [Ping timeout: 252 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
FreeBird_ has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
lmy9900 has quit [Max SendQ exceeded]
MightyJoe has joined #lisp
lmy9900 has joined #lisp
cyraxjoe has quit [Ping timeout: 268 seconds]
MightyJoe is now known as cyraxjoe
ryan_vw has joined #lisp
shinzo has joined #lisp
arescorpio has quit [Read error: No route to host]
Oladon has joined #lisp
dale has joined #lisp
drduck has left #lisp [#lisp]
margaritamike has joined #lisp
robdog has joined #lisp
<margaritamike>
Anyone feel like bribing the owners of Timus online judge, Kattis online judge, or Codeforces to include SBCL in their list of supported languages? :p
<margaritamike>
I wonder, really though, what it would take to get languages support added to one of those sites.
<margaritamike>
It would do wonders for lisp I think
robdog has quit [Ping timeout: 252 seconds]
lmy9900 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
wusticality has quit [Ping timeout: 268 seconds]
sword has quit [Ping timeout: 245 seconds]
Kundry_Wag has joined #lisp
robdog has joined #lisp
igemnace has quit [Quit: WeeChat 2.3]
Kundry_Wag has quit [Ping timeout: 252 seconds]
shinzo has quit [Quit: leaving]
robdog has quit [Ping timeout: 264 seconds]
Petit_Dejeuner has joined #lisp
vlatkoB has joined #lisp
Cymew has joined #lisp
Cymew has quit [Ping timeout: 268 seconds]
Petit_Dejeuner has quit [Quit: Leaving]
ggole has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 260 seconds]
Bike has quit [Quit: Lost terminal]
SaganMan has joined #lisp
nanoz has joined #lisp
robdog has joined #lisp
dddddd has quit [Remote host closed the connection]
robdog has quit [Ping timeout: 252 seconds]
shka_ has joined #lisp
wusticality has joined #lisp
nanozz has joined #lisp
<beach>
Good morning everyone!
ebrasca has quit [Read error: Connection reset by peer]
nanoz has quit [Ping timeout: 246 seconds]
nanoz has joined #lisp
wusticality has quit [Ping timeout: 240 seconds]
nanozz has quit [Ping timeout: 272 seconds]
nanoz has quit [Ping timeout: 245 seconds]
nanoz has joined #lisp
nanozz has joined #lisp
nanoz has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
dale has quit [Quit: dale]
nanozz has quit [Ping timeout: 268 seconds]
nanoz has joined #lisp
nanoz has quit [Ping timeout: 246 seconds]
shifty has joined #lisp
igemnace has joined #lisp
nanoz has joined #lisp
nanoz has quit [Ping timeout: 244 seconds]
fikka has quit [Ping timeout: 240 seconds]
rippa has joined #lisp
nikos_ has joined #lisp
<LdBeth>
good morning
<splittist>
good morning
kooga has left #lisp [":"]
nirved has joined #lisp
ryan_vw has quit [Ping timeout: 240 seconds]
nanoz has joined #lisp
robotoad has quit [Quit: robotoad]
Elephant454 has left #lisp ["ERC (IRC client for Emacs 26.1)"]
nanoz has quit [Ping timeout: 250 seconds]
makomo has joined #lisp
shka_ has quit [Ping timeout: 245 seconds]
razzy has quit [Ping timeout: 246 seconds]
<luis>
margaritamike: are those sites similar to Hacker Rank? That one supports Lisp.
<X-Scale>
margaritamike: also check several other online judges here -> https://vjudge.net/
<X-Scale>
Several of them support SBCL
Kundry_Wag has quit [Ping timeout: 244 seconds]
Kundry_Wag has joined #lisp
elderK has quit [Ping timeout: 252 seconds]
Necktwi has quit [Quit: leaving]
Kundry_Wag has quit [Ping timeout: 244 seconds]
Necktwi has joined #lisp
FreeBird_ has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
Necktwi has quit [Quit: leaving]
Necktwi has joined #lisp
froggey has quit [Ping timeout: 250 seconds]
frodef has joined #lisp
froggey has joined #lisp
frodef has quit [Read error: No route to host]
Necktwi has quit [Quit: leaving]
fikka has joined #lisp
fikka has quit [Ping timeout: 268 seconds]
random-nick has joined #lisp
makomo has quit [Ping timeout: 250 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
lmy9900 has joined #lisp
xkapastel has joined #lisp
anewuser has quit [Quit: anewuser]
makomo has joined #lisp
nikos_ has quit [Quit: Konversation terminated!]
lmy9900 has quit [Remote host closed the connection]
Mr-Potter has joined #lisp
rumbler31 has quit [Remote host closed the connection]
lmy9900 has joined #lisp
rumbler31 has joined #lisp
hugh_marera has joined #lisp
varjag has joined #lisp
hugh_marera has quit [Remote host closed the connection]
rumbler31 has quit [Ping timeout: 240 seconds]
hugh_marera has joined #lisp
lumm has joined #lisp
hugh_marera has quit [Quit: hugh_marera]
solyd has joined #lisp
hiroaki has joined #lisp
funnel has quit [Ping timeout: 272 seconds]
funnel has joined #lisp
heisig has joined #lisp
hiroaki has quit [Remote host closed the connection]
robdog has quit [Remote host closed the connection]
hugh_marera has joined #lisp
Mr-Potter has quit [Remote host closed the connection]
Mr-Potter has joined #lisp
Grue` has quit [Ping timeout: 252 seconds]
pjb has joined #lisp
ebrasca has joined #lisp
Mr-Potter has quit [Ping timeout: 272 seconds]
rumbler31 has joined #lisp
hugh_marera has quit [Quit: hugh_marera]
hugh_marera has joined #lisp
Necktwi has joined #lisp
hugh_marera has quit [Client Quit]
shifty has quit [Ping timeout: 252 seconds]
scymtym has quit [Ping timeout: 240 seconds]
rumbler31 has quit [Ping timeout: 245 seconds]
ski has joined #lisp
dddddd has joined #lisp
Bike has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
Wojciech_K has joined #lisp
irdr has quit [Remote host closed the connection]
irdr has joined #lisp
lmy9900 has quit [Max SendQ exceeded]
robdog has joined #lisp
lmy9900 has joined #lisp
libre-man has quit [Ping timeout: 264 seconds]
robdog has quit [Ping timeout: 252 seconds]
cage_ has quit [Quit: Leaving]
varjag has quit [Ping timeout: 240 seconds]
libre-man has joined #lisp
random-nick has quit [Read error: Connection reset by peer]
igemnace has quit [Quit: WeeChat 2.3]
heisig has quit [Quit: Leaving]
Essadon has joined #lisp
doubledup has joined #lisp
random-nick has joined #lisp
scymtym has joined #lisp
lavaflow has quit [Quit: WeeChat 2.2]
lavaflow has joined #lisp
razzy has joined #lisp
rozenglass has joined #lisp
nanoz has joined #lisp
lmy9900 has quit [Max SendQ exceeded]
lmy9900 has joined #lisp
<margaritamike>
luis X-Scale: The thing is that those existing judges which do support SBCL only do so to a very limited extent. SBCL is not supported for even a majority of the problems on the judges, for example. Additionally, the ones I've listed -- Kattis, Timus, Codeforces -- are the judges which really have some of the highest quality problems to solve.
fikka has joined #lisp
<margaritamike>
If I were a wealthy person, I would try to get those online judges to support SBCL, to give more people a platform to practice using the language on high quality problems that judge your solution, especially the youth. I would then likely try to campaign very hard to get the language added as an optical language to compete with in the ioi or the icpc, but that would be much harder (maybe not worth the effort idk).
<margaritamike>
Having SBCL on those judges would be so beneficial, though. It benefits the communities of the languages it supports so much imo.
fikka has quit [Ping timeout: 272 seconds]
Inline has quit [Quit: Leaving]
<margaritamike>
Still trying though. I've emailed Kattis, recently, and posted on the Timus forum (may email them as well). Planning to try to post on Codeforces forum as well.
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
rumbler31 has quit [Ping timeout: 240 seconds]
khisanth_ has quit [Ping timeout: 240 seconds]
lmy9900 has quit [Max SendQ exceeded]
lmy9900 has joined #lisp
sunshavi has quit [Ping timeout: 240 seconds]
robdog has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
khisanth_ has joined #lisp
robdog has quit [Ping timeout: 260 seconds]
FreeBirdLjj has quit [Ping timeout: 268 seconds]
FreeBirdLjj has joined #lisp
jmercouris has joined #lisp
<jmercouris>
this is an opinion question, I have a system file where I have a base system next, with systems next/cocoa and next/gtk. next/cocoa includes customizations necessary for next/cocoa
<jmercouris>
you CANNOT load next by itself because it assumes some functions will exist, should I provide default implementations of those functions?
<jmercouris>
those functions it assumes to exist are within next/gtk and next/cocoa
<|3b|>
if you can meaningfully
<|3b|>
though sounds more like it would be better to rename it to be more obviously not the whole thing
<jmercouris>
I see
<loke`>
jmercouris: you could always create three systems: root/gtk, next/gtk and next. root/gtk would depend on next/gtk followed by next. SO the thing you'd load is root/gtk if you want the gtk one.
<|3b|>
maybe add another system that tries to guess which of gtk or cocoa would be more useful
<jmercouris>
here's another good question, do you think I should use conditional reader macros, or separate sytems?
<jmercouris>
I want the user to be able to just (ql:quickload :next) and it automatically loads the appropriate files depending on OS
<|3b|>
or else rearrange them so next/gtk and next/cocoa are what you load to get a working setup (so would load internal /gtk or /cocoa system, then load main system)
Mr-Potter has joined #lisp
<jmercouris>
which is why I'm leaning away from using 3 systems, as I currently have, and just using conditional macros
varjag has joined #lisp
<jmercouris>
the /gtk and /cocoa customizations depend on existence of core system
<|3b|>
you can probably conditionalize the system, asdf has some facilities for that
<jmercouris>
I already spooke yesterday with jackdaniel about if-feature
<jmercouris>
but I don't think there is an if-feature :release or something
<jmercouris>
otherwise I would keep literally everything in one system
<|3b|>
if it is just 1 file, and you can easily detect it from *features* (like always cocoa on osx, otherwise gtk), i'd probably just move the specific file to :next system with :if-feature
<jmercouris>
|3b|: so something like what (:file "ports/cocoa" :if-feature :darwin)?
<|3b|>
then you would have a next/release with similar feature check to load the correct -release file
<jmercouris>
yes, I like that
<jmercouris>
simply next and next/release
<jmercouris>
and I'll make the if-feature check gtk for linux and bsd, and then cocoa for darwin
<jmercouris>
that makes me feel a lot better for some reason
sunshavi has joined #lisp
<jmercouris>
|3b|: did I have that syntax correct for :if-feature?
<jmercouris>
then cffi has to also be set-up with the correct system library paths
<jmercouris>
it seems that we would be going down a rabbit hole
<makomo>
what's the usual way to configure a build in the lisp world (well, ASDF world), i.e. the equivalent of CMake's configuring process or Make's ./configure script?
<makomo>
what are the equivalents for --with-X, --without-X, etc.
<jmercouris>
pjb: I'm going to go with your first solution, way simpler :D
<jackdaniel>
makomo: there isn't (except pushing features and doing what jmercouris does) or adding some ad-hoc method to asdf
<pjb>
jmercouris: you can modify it to configure cffi too.
<jmercouris>
but I don't want to use any foreign libraries
<jmercouris>
I am trying to strip them of my code
<jmercouris>
the names are a red herring, they are just compatibility layers for how to interpret keybindings from those systems
MichaelRaskin has joined #lisp
varjag has quit [Remote host closed the connection]
<jackdaniel>
wait, you don't want to use any foreign libraries and you depend on gtk?
<jackdaniel>
since when it was rewritten in CL?
<jmercouris>
correct.
<jmercouris>
there is a separate GTK program that runs
<jmercouris>
this GTK program is the GUI frontend
<makomo>
jackdaniel: ah :/, so basically you would have some project-specific features you would push then?
<jmercouris>
do you remember the conversation beach and I had?
<pjb>
jmercouris: perhaps you could avoid using gtk (at least directly). Have a look at: https://cliki.net/pgl
<jackdaniel>
no, I'm not following all your conversations
<jmercouris>
the work is done!
<jmercouris>
jackdaniel: I didn't imply you were, I just assumed you had read it
<jmercouris>
my apologies, I assume too much
<jmercouris>
okay, so I have a cross-platform lisp core that depends on absolutely nothing at all
<jmercouris>
on Linux I've written a GTK front-end GUI that listens via XML-RPC, on MacOS I've written a Cocoa front-end GUI that listens via XML-RPC
<jmercouris>
these programs are controlled by the Lisp Core
<pjb>
jmercouris: pgl is written in pure lisp, with as only dependencies the packages: "TRIVIAL-GRAY-STREAMS" "BORDEAUX-THREADS" "ORG.MAPCAR.PARSE-NUMBER".
<pjb>
(and com.informatimago of course).
<pjb>
ah uiop too.
<pjb>
(for getenv).
<jmercouris>
for it to make any sense to run Next on a non-darwin system, GTK must exist so that the GTK front-end can run
<jmercouris>
so no, my Lisp program does not directly depend on GTK, only on its sister program, its port
<pjb>
It uses the run-program of the various implementations supported. (ccl clisp for now).
<pjb>
I'm not sure it could us uiop:run-program.
<pjb>
use.
<jackdaniel>
so you have basically replaced efficient ffi with inefficient rpc
<pjb>
Yes, and a java backgroupd process implementing the GUI portabily.
<jackdaniel>
that doesn't mean you don't depend on a foreign library
<jmercouris>
that's one way of looking at it, yes
heisig has joined #lisp
<pjb>
more indirection :-)
<jmercouris>
I see it as a different way, I am agnostic of any FFI implementation, and I can run across a network etc
<jmercouris>
I don't depend on the front-end not crashing, the Lisp core will always be stable
<jmercouris>
and it is a sort of daemon client model
<jmercouris>
I think it is a very intelligent design, and I get to say that, since it is not my own
<jmercouris>
the only interface one must implement is a simple API within the Port to support some commands from the Lisp core such as make window, make buffer, etc, it is all abstracted on a very high level
<jmercouris>
I didn't spend 9 months contemplating this to do something absolutely idiotic, perhaps think for a few minutes why I might have done this before dismising my work
pw_ has joined #lisp
<jackdaniel>
people spend decades working on things which are not very smart; but since it seems to tick you off, I'll get back to whatever I was doing
<jmercouris>
I'm not angry, I'm upset
elderK has joined #lisp
<jmercouris>
I'm upset because I have worked many hours with a lot of thought, and you come in, without any context or understanding of the program architecture and make a blanket statement, it wasn't one with intent to understand, but with intent to injure
<elderK>
Moin all :)
<makomo>
ello
<elderK>
makomo: Hey! :D How are you doing?
<makomo>
i'm good, you?
<elderK>
I'm okay. Fresh out of bed. Just starting on my morning coffee.
<jackdaniel>
I've criticized the approach, not you, but I'm not much into drama so I'll step aside. keep in mind, that bashing out at people who criticize things leaves you either in hostile environment or in an echo chamber
fikka has joined #lisp
<jmercouris>
you appear sincere in your statement, I take it as a criticism of the approach, then
<jmercouris>
I know I can get quite defensive at times
<loke`>
jmercouris: What does your application do?
<jmercouris>
and I'm hardly one to stick in an echo chamber ignoring feedback from others, Next has been now rewritten 5 or 6 times at the behest of the suggestions from people in this channel
<jmercouris>
loke`: the backend is agnostic, there will be multiple built, the first one is GTK
<loke`>
I mean next
<jmercouris>
then there will be a QT blink based one
<loke`>
jmercouris: so even the html renderer backend is pluggable?
<jmercouris>
loke`: that's correct
<loke`>
I see
<loke`>
So it would be possible to get it to play nicely with CLIM too
fikka has quit [Ping timeout: 245 seconds]
<jmercouris>
Yes, if you implement the API
<jmercouris>
it's really a quite simple API
<jmercouris>
if you look in the file called remote.lisp, you can see the whole API
<jmercouris>
something like 10 functions or so
<loke`>
jmercouris: for it to actually play nicely with CLIM, the individual components needs to be represented as CLOS objects somehow though. Like buttons on a web page, or even a DIV, for example.
<loke`>
I'm guessing that can't be done?
<jmercouris>
Of course it can
<jmercouris>
you just need to keep track of them in your port
<jmercouris>
and give them some unique ID
<jmercouris>
if you are so inclined you could pass a blob of the whole object
<loke`>
I see
<jmercouris>
there is a lot to say about the port architecture and how to implement a port, I think we'll write a blog article
Kundry_Wag has quit [Remote host closed the connection]
<loke`>
jmercouris: Might be an interesting experiment. A CLIM-based full operating environment is something that would be really nice, and something I'd like to work on at some point. I am, however, realistic enough to note that an environment without a "full" browser is not going to be complete, and I'm certainly not going to be able to write a full browser in Lisp, so this may be a workable alternative.
<jmercouris>
loke`: yes, that is my reasoning as well, that is why I leverage the work of other port maintainers, otherwise I would be constantly chasing the html spec, which in ofitself would be hard to implement efficiently
<jmercouris>
that is something that I see as "down-the-road" work, if possible, and if there is a lot of money available
Kundry_Wag has joined #lisp
cage_ has quit [Quit: Leaving]
augfab has quit [Ping timeout: 264 seconds]
Kundry_Wag has quit [Ping timeout: 250 seconds]
kyby64 has joined #lisp
lmy9900 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
robdog has quit [Remote host closed the connection]
doubledup has quit [Quit: Leaving]
benjamin-l has quit [Ping timeout: 245 seconds]
nanozz has joined #lisp
MetaYan has joined #lisp
nanoz has quit [Ping timeout: 272 seconds]
jmercouris has quit [Remote host closed the connection]
rumbler31 has joined #lisp
<dim>
pjb: pgl seems quite interesting, thanks for the link
<dim>
well, I'd rather try if McCLIM works with XQuartz
rumbler31 has quit [Ping timeout: 250 seconds]
nanozz has quit [Ping timeout: 250 seconds]
fikka has joined #lisp
bradfonseca has joined #lisp
Necktwi has quit [Quit: leaving]
Necktwi has joined #lisp
rumbler31 has joined #lisp
hiroaki has quit [Ping timeout: 250 seconds]
nika has joined #lisp
rumbler31 has quit [Ping timeout: 244 seconds]
razzy has quit [Ping timeout: 272 seconds]
kajo has quit [Ping timeout: 252 seconds]
heisig has quit [Quit: Leaving]
FreeBird_ has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 252 seconds]
Necktwi has quit [Ping timeout: 268 seconds]
Necktwi has joined #lisp
ebrasca has quit [Remote host closed the connection]
<jcowan>
I do wish I could coerce eval-when into properly marking a macro-expansion-time only function, but I can't find any combination that works.
<margaritamike>
Hey, folks! Good news! Someone is having a look at the submission of using SBCL for Kattis! There is one issue, though. The output of the given solution is spitting out an unnecessary newline. Does anyone know how I could fix the solution to not spit that newline out at the beginning? The solution I'm talking about is here: https://github.com/optimisticlisper/kattis_sbcl_different/blob/master/accepted.lisp
<margaritamike>
If you were to provide the input in a file named 'in', it can be run with the following command sbcl --dynamic-space-size 1024 --control-stack-size 64 --script accepted.lisp < in > out
<margaritamike>
Or if you prefer to see results printed in terminal, sbcl --dynamic-space-size 1024 --control-stack-size 64 --script accepted.lisp < in
<margaritamike>
I am not very good at common lisp, but am trying to get it added to the Kattis platform to use as a learning tool on the wonderful problem base Kattis has. I believe it will be beneficial for others too, seeing it as an available language to solve high quality problems on this online judge and help in increasing its popularity.
<margaritamike>
Would anyone happen to know how I could avoid that first new line from being spit out when running it against test data?
<jcowan>
It's because PRINT for hysterical raisins is implemented as a newline followed by the things to be printed, unlike print/println in most languages which put the newline at the end.
fikka has quit [Ping timeout: 252 seconds]
<margaritamike>
Is there an alternative to print that does not print a newline first? One of the admin/owner of Kattis has mentioned it is likely to break a lot of problems if there is not a reasonable way to avoid this newline.
<margaritamike>
ohh
<margaritamike>
prin1?
<jcowan>
yes
<margaritamike>
Ehh no replacing that with print gets rid of all of the new lines lol.
<margaritamike>
I just need the first newline removed, not all of them.
<|3b|>
add (terpri) after (prin1 ...)
<jcowan>
(defun println (x) (princ x) (terpri)) should do what youy expect
<|3b|>
or (format t "~a~%" (abs ...))
<margaritamike>
great!
* |3b|
would probably get rid of the --control-stack-size 64 too unless you have some specific need for it
<margaritamike>
|3b|: I am keeping that stacksize because some problems can be pretty memory intensive.
<margaritamike>
Also because java uses that on Kattis
<margaritamike>
This is their runtime settings: -XX:+UseSerialGC -Xss64m -Xms{memlim}m -Xmx{memlim}m -Dfile.encoding=UTF-8 -cp {path}
<|3b|>
i guess if you aren't planning to start lots of threads it might not matter
<margaritamike>
Does slime have a command to auto pretty format your lisp?
<|3b|>
(which is probably a reasonable assumption, those sorts of things tend to not need threads, or at most 1 per core)
<|3b|>
emacs has M-q
<|3b|>
use it on opening ( of a form to reindent it
fikka has joined #lisp
dale has joined #lisp
<|3b|>
and CL has pprint, which might layout forms reasonably (or might not, depending on implementation and forms)
<|3b|>
(might want to bind *print-case* to :downcase around PPRINT call)
<margaritamike>
What executes faster? (format t "~a~%" (abs ...)) or just using (terpri) after (prin1 ...)?
* |3b|
wouldn't expect much noticeable difference
<|3b|>
and probably lose more to character coding anyway
<jackdaniel>
I think that terpri should be faster, format is a best function
<jackdaniel>
beast*
<jackdaniel>
though it may have a sensible compiler macro and may be "just as fast"
<margaritamike>
Luckily this platform will be able to show memory usage and time taken to execute a program, so good for testing things! :)
* |3b|
would expect format with constant format string to use formatter to generate something reasonably fast for simple cases like that
<Inline>
uhuh, i just read fatemans advances.pdf
<|3b|>
*use compiler macro + formatter
<Inline>
oh man
<jackdaniel>
yes, but it boils down to producing basically prin1 + terpri (and there is no guarantee of that)
<|3b|>
yeah
<jcowan>
|3b|: You'd hardly be printing symbols in the solution to a portable (i.e. lowest common denominator) problem
<|3b|>
jcowan: you mean about :downcase and pprint?
<jcowan>
yes
<|3b|>
that was in response to "auto pretty format your lisp"
<jcowan>
ah, sorry
fikka has quit [Ping timeout: 272 seconds]
<random-nick>
is the "destructuring" of toplevel PROGNs recursive?
<jackdaniel>
destructuringof progns?
<jackdaniel>
what is that?
<jackdaniel>
s/ingof/ing of/
<random-nick>
treating forms in a toplevel PROGN as toplevel
<Bike>
yes, it's recursive.
<Bike>
it's not called "destructuring" though.
<random-nick>
well, I couldn't think of a better name
<jackdaniel>
common lisp language is marked with common-lisp.net logo
<|3b|>
margaritamike: expect much higher base memory use, and slow I/O with normal code :/
<|3b|>
(compared to fast C solutions)
<|3b|>
or c++
<margaritamike>
I also want to see how it compares to python in speed
<dim>
jackdaniel: where can I find hints starter-kit about doing things in the McCLIM listener like drawing simple shapes or custom presentations? say I want to code a game of minehunt
<margaritamike>
So SBCL is how many times slower than C and C++?
<margaritamike>
I thought it was sometimes on par with C or C++ in speed, and mostly faster than Java.
<|3b|>
should compete well with puthon for things where python isn't just calling C
<jackdaniel>
dim: I don't know about the game of minehunt, but in clim-listener you may treat *standard-output* as a CLIM stream
<jackdaniel>
so for instance you may call (draw-rectangle* *standard-output* 100 100 150 150)
<jackdaniel>
ah
<dim>
mmm, seems there's no copy-paste in the listener
<|3b|>
it can compete well with C/C++, but for example default I/O might be be doing things you wouldn't have in C (like UTF8, with restarts for handling decode failures) that slow it down
<jackdaniel>
I think that best place to learn are Examples/ (quickload clim-examples and run (clim-demo:demodemo) )
<jackdaniel>
and pick whichever suits you best
<jackdaniel>
copy paste works, but has different shortcuts (subject of change)
<dim>
yeah I began clicking around
<|3b|>
but well optimized computation can get close to C/C++
<jackdaniel>
I'll tell you in a minute
<margaritamike>
|3b|: what about with Java?
* |3b|
doesn't know as much about java, so harder to say
<jackdaniel>
Shift+Mouse-M to paste
<jackdaniel>
dim: check out file Core/clim-basic/text-selection.lisp ; shortcuts are listed there
SaganMan has quit [Quit: WeeChat 1.6]
<|3b|>
also SBCL has a relatively slow compiler (at least compared to other CLs), and you are probably compiling code for every run which might slow things down if C is getting a separate free compile step not counted in the timing
<jackdaniel>
these things are semi-internal right now, when we get to it we may change the gestures or how they are handled)
<|3b|>
(but more fair compared to things like python or java)
<dim>
hehe I don't have Mouse-M (yet)
<elderK>
Guys, are there any particular rules about what the predicates for satisfies can expect?
<elderK>
:) I'm trying to make a type that ensures that values are a non-zero multiple of eight :)
<Bike>
what do you mean expect
<Bike>
the predicates get any object and they return whether it's a whatever
<dim>
ok I found my Mouse-M in Xquartz preferences
<dim>
anyway I have to be AFK for awhile, I will try and learn things with McCLIM and maybe do some visual programming in CL, games and things suitable for teaching programming to the kids ;-)
<elderK>
Bike: Thanks :)
notzmv has joined #lisp
flazh has quit [Ping timeout: 272 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<margaritamike>
|3b|: When you say SBCL compiles code for every run, what do you mean?
<margaritamike>
So everytime you want to pass it input, it has to recompile instead of reference an executable like a.out with C?
<|3b|>
i mean --script will compile the code before evaluating it
<|3b|>
which is easiest way to use it, so probably what you want for that sort of thing
<|3b|>
but will add a bit of overhead
random-nick has quit [Read error: Connection reset by peer]
wanz has joined #lisp
jochens has quit [Read error: Connection reset by peer]
jochens has joined #lisp
<margaritamike>
ahh shit
<margaritamike>
i think the build params i gave them werent for compiling
<|3b|>
(well, sbcl has some heuristics to try to avoid compiling trivial things, but generally it compiles everything)
<margaritamike>
but it has to be continously re-ran against input?
<|3b|>
but i think you want --script rather than --load anyway
<margaritamike>
there is no executable to reference?
<margaritamike>
why --script instead of --load?
<|3b|>
it does some things like disabling the debuggers, and exiting when it finishes instead of leaving you in a rfepl
<margaritamike>
--load does?
<margaritamike>
or --script
<|3b|>
--script
<|3b|>
on errors you want it to just print some message and exit, so disabling debuggers is good
robotoad has joined #lisp
<margaritamike>
so instead of sbcl --dynamic-space-size {memlim} --control-stack-size 64 --load {path}
<margaritamike>
i want sbcl --dynamic-space-size {memlim} --control-stack-size 64 --script {path}
<margaritamike>
?
jochens has quit [Ping timeout: 272 seconds]
<|3b|>
right
<margaritamike>
Oh nvm the admin/owner knows
<margaritamike>
he included in the email he was using --script
<margaritamike>
i need to push changes to that repo to reference --script instead of load, though
<margaritamike>
ty for that
razzy has joined #lisp
<jcowan>
elderK: The main thing with SATISIFIES is to be sure the predicate can accept *any* object and not, say, just numbers.
<jcowan>
so you may need to say something like (and (numberp x) (foo x)) in the definition of the predicate (it won't work to use AND in the type expression because it is unordered)
<elderK>
jcowan: Thank you jcowan. Knowing this, is there any reason to use and in combination with satisfies in a deftype?
<jcowan>
(and (satisfies thisp) (satisfies thatp)) comes to mind. Just make sure there is no dependency between the two
<jackdaniel>
if object is known to not be of type foo, then you may decide without invoking arbitrary function
<jackdaniel>
i.e (and integer (satisfies bloop)) ; bloop may be expensive, but we may know that #\c is not an integer
<jackdaniel>
so you don't need to call bloop ,)
<jcowan>
True, though I would wnat to see an assert or equivalent backing that up.
random-nick has joined #lisp
wanz has quit [Quit: wanz]
kajo has joined #lisp
gxt has joined #lisp
<aeth>
jcowan, elderK: Depending on the compiler, (and (integer 0 32) (satisfies foo)) might be the way to go even if #'foo then repeats the test because now the compiler knows it's an integer from 0 to 32.
<aeth>
The compiler might not optimize based on satisfies (it probably doesn't afaik)
<aeth>
If this is the case, the repetition would be worth it for non-bignums and for arrays.
benjamin-l has joined #lisp
<aeth>
(You'd pay more in the test, but get faster generated code in those two cases, and maybe just those two cases. I'm counting all numeric types that aren't bignum as "non-bignum numbers" here, not just fixnums.)
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
razzy has quit [Ping timeout: 246 seconds]
hiroaki has quit [Ping timeout: 250 seconds]
<margaritamike>
Anyone know if common lisp is a suitable language for cyber security, or know of instances of it being used for such?
<jcowan>
aeth: Good point
<Inline>
nope
<Inline>
it's not good for security
<margaritamike>
I see python is starting to be used as a generic scripting language as a replacement for bash and windows scripting
<Inline>
well actually it is but not in the sense you think
Lycurgus has quit [Quit: Exeunt]
<margaritamike>
Inline: in what sense then? Obscurity? In what since do you think i'm referring to? I was asking in terms of being a fast automation tool as a replacement for what python is typically being used for in cyber right now
<xkapastel>
well, that's scheme. but people have done this with lisp
<random-nick>
for scheme there's also the scheme shell, scsh
<margaritamike>
i'm more asking about generic for windows and linux
fikka has quit [Ping timeout: 272 seconds]
<Xach>
i like to do script-type system stuff with lisp instead of shell scripts, usually.
<Xach>
i like working with real objects and real conditions and stuff. sbcl's run-program makes it nice and it is easy to wrap to make common things simpler.
<margaritamike>
Can SBCL run stuff like embedded bash or embedded batch?
<Xach>
I don't know what that is, sorry.
<aeth>
It depends on the length of the program. Nothing beats bash for one-liner scripts. bash does in 1-20 lines what anything else would do in hundreds. Once you're doing something substantial, though, I definitely wouldn't want to touch bash. (I say bash because bash's extensions make sh more usable so usually such scripts specifically run bash)
<Xach>
I'd really really like to wrap the pty capability of run-program into something like Expect but for SBCL.
<aeth>
margaritamike: As far as running bash from SBCL, you could use uiop:launch-program
<Xach>
unfortunately the pty stuff seems to be broken on macos for me, and that's where i do 99% of my hacking to start.
<margaritamike>
x_x
varjag has joined #lisp
<v0|d>
I dont prospect anybody building a replacement for autotools in near future, hence bash will stay as it is.
nowhere_man has quit [Ping timeout: 252 seconds]
nowhereman has joined #lisp
nowhereman is now known as Guest47970
ryan_vw has joined #lisp
scymtym has joined #lisp
<makomo>
the solution is to develop a lisp -> autotools compiler! :-D
<jcowan>
With the drastic shrinkage of platforms and increasing standardization, autotools is IMO obsolete. Set up the sensible cases and if someone wants to run it on their VAX running 4.0bsd, tell them to provide their own Makefile.
kyby64 has quit [Quit: Leaving]
shifty has quit [Ping timeout: 252 seconds]
jasmith has quit [Quit: Leaving]
notzmv has quit [Ping timeout: 250 seconds]
bradfonseca has quit [Quit: Konversation terminated!]
<elderK>
Man, I'm having trouble wrapping my head around what I need to be available at compile time, load time and execute time :|
* |3b|
thinks it usually isn't worth bothering, since those times tend to overlap too much
<elderK>
Like, I've written a bunch of stuff. And, most of my macros expand into stuff that doesn't have an eval-when. Because, well, it's not necessary.
<elderK>
Like, it expands into forms that create stuff and add it to a hash table, etc.
<elderK>
But for another macro, my define-binary-structure, I need a bunch of that information available at compile-time.
<elderK>
So that I can verify that the type are sane, and stuff.
<elderK>
I've determined I don't need it /all/ at compile time. Just the names.
angavrilov_ has quit [Remote host closed the connection]
<elderK>
Iono.
<elderK>
I need to study more on this.
<|3b|>
yeah, i guess that might be a reasonable place to use eval-when
<elderK>
|3b|: See, I've been creating my own version of binary-types.
<jcowan>
elderK: If a function is called by a macro, wrap it in triple eval-when; otherwiser not.
<jcowan>
All the other cases of eval-when are basically useless to harmful
<|3b|>
nah, defining things is a reasonable use
<|3b|>
(though i'd still pretty much always use all 3 times if you use eval-when at all)
<elderK>
The thing is, like, so far at least, all these "type metathings" are being added to a hash table at runtime, I guess.
<elderK>
Like, macros expand into that effect.
<elderK>
but, it seems kind of stupid to populate them all at runtime.
<elderK>
It would be smarter to persist that information, if you say, save your stuff to a FASL.
<elderK>
No need to run through all the same "build this thing" stuff when you load.
<elderK>
Iono. Kind of confused. :(
<jcowan>
The cost is insignificant compred to the burning of your brain by eval-when.
<|3b|>
yeah, i wouldn't worry about that side of it too much
<|3b|>
unless you have some really huge data or it costs a lot to build
<elderK>
This does raise a question though: What exactly is a FASL? What is its point?
<elderK>
Is it just the saved output of the compiler?
<|3b|>
"FASt Load" file
<|3b|>
something like that
<|3b|>
it isn't quite like a .o file in C, since loading it still has all the side effects you would get from LOADing the original .lisp file
<elderK>
And, like, let's say you ARE doing a bunch of stuff at runtime that's costing a lot of time. Now for a binary-types type library, a lot of the types a user defines will be known when they compile their program. That information could be persisted, and somehow... thawed on load, without having to go through re-executing all the stuff to recreate hte metadata. If you /did/ wanna persist it, so that loading was
<elderK>
fast, how would you go about it?
<|3b|>
and it can store some fairly complex data structures, which requires more effort than just mmapping it into memory
<pfdietz>
eval-when is one of the squirrelier parts of the spec.
<|3b|>
probably depends on specifics, maybe just a variable in .fasl, maybe in a separate file
jochens has joined #lisp
<pfdietz>
elderK: MAKE-LOAD-FORM might be what you're looking for?
<pfdietz>
Also LOAD-TIME-VALUE
<|3b|>
for example in the case of binary parsers, it would be complicated since you'd probably have data from a bunch of different files
<|3b|>
so you couldn't for example just have a variable in the .fasl of the main lib
<|3b|>
but maybe you could do something like caching them per thing that uses it in a way that was quick to merge into the main data set
orivej has quit [Ping timeout: 240 seconds]
sword has joined #lisp
<elderK>
:| Man. What started off as something so simple (define-binary-structure), I've wond up spending like, four hours just thinking...
<elderK>
And kind of spinning a little.
<elderK>
There are a lot of details to think about
<|3b|>
writing a good binary parser lib is hard :/
<jcowan>
Is there any straightforward way to load the whole of Quicklisp so it can be searched?
<Bike>
i think pfdietz is the one to ask
<pfdietz>
The problem is that various systems in quicklisp are incompatible, due to package name collisions.
<elderK>
|3b|: This is my first "real thing" other than, like, the school assignments I was redoing.
<elderK>
|3b|: I don't have any ambitious things in my little binary library, just the same stuff that's in binary-types really.
<pfdietz>
I have 'kind of' loaded all of quicklisp, but only in a quick and dirty way to get stuff that looks like lisp for mutation testing purposes. This doesn't have to really read the lisp, and bails out if it encounters any reader errors.
<elderK>
Just, it's my one. And it has a few things different that are more suited for what I want to do, and how I Want to use it
gxt has quit [Quit: WeeChat 2.3]
<jcowan>
pfdietz: Sounds good to me. Mostly what I want to do is just grep it.
<pfdietz>
I think it should be possible to do better, using Eclector and being smarter about things. But in general reading a lisp file may depend on setting up arbitrary lisp capabilities for the reader macros.
* jcowan
nods.
<jcowan>
So how did you load it all?
<Xach>
I think the way to go is to load each in turn and use sbcl's introspection to dump a searchable offline database.
<Xach>
It would be great for someone to make a hypertext source crossreference a la lxr.
<|3b|>
elderK: yeah, just a potentially complicated task if you want to handle all the odd things various binary formats do
<Xach>
(as a different project)
<jcowan>
Xach: Thanks. Can you provide a convenient recipe?
<pfdietz>
It was pretty hacky. I had to be able to handle undefined packages, so I hacked the SBCL reader to just use *package* when it found a package it couldn't recognize.
<jcowan>
I don't even know how to enumerate all projects
<pfdietz>
I was just reading all files matching **/*.lisp
<pfdietz>
I put in a ticket to enhance the SBCL reader so there were some useful restarts for the package not found error, but that hasn't happened yet.
<pfdietz>
(a restart to use another specified package, in particular)
<pfdietz>
If I recall correctly the CCL reader has more there.
<pfdietz>
And, of course, eclector could be modified to do what I want there.
<Xach>
I've mentioned it before, I'd really like a query system for the image so you could ask things like "show me all functions with two arguments" or "show me all functions with an argument named DOG" or other things (not necessarily only about function argument lists!)
<Xach>
And it would also be nice to be able to dump that into something queryable offline
<pfdietz>
That would be a way of getting around package collisions.
vlatkoB has quit [Remote host closed the connection]
<Xach>
i think the advantage of load + dump is you don't have to try to fake loading and work around reader macros and package problems.
dale has quit [Quit: dale]
<Xach>
it has to know everything because it's doing everything
<pfdietz>
For my use, I just needed raw material for testing; it could sometimes fail.
<Xach>
there is possibly some useful bookkeeping that isn't tracked though
<Xach>
"what special variables are defined in a source file named config.lisp"
<Xach>
that's not an example of something not tracked, just a non-arglist query
<Xach>
the stuff needed to support M-. and who-calls and who-references could be fun to query arbitrarily
<fiddlerwoaroof>
elderK: I wrote a little thing that's sort of like what you're doing, if I understand correctly
random-nick has quit [Read error: Connection reset by peer]
nika has quit [Quit: Konversation terminated!]
trocado has joined #lisp
<jcowan>
Xach: Interlisp Macroscope is the thing, then
* jcowan
digs up the pointer
<jcowan>
Of course the code has long since rotted and was never Maclisp compatible in the first place, but it shows what could be done by introspection