<slightlycyborg>
where side-effect always returns nil
<no-defun-allowed>
what's side-effect do?
<aeth>
no-defun-allowed: Oh I see what you did there. The examples all have make, but you just directly called SBCL instead of a make file. That's also why you asked about make
<no-defun-allowed>
yep
<aeth>
I had a .gitlab-ci.yml from a while back that I didn't commit yet and it had a make, which is unnecessary
smokeink has joined #lisp
<no-defun-allowed>
i didn't want a Makefile since that might confuse people
<aeth>
no-defun-allowed: You might want to fail the CI if there are style warnings or compilation errors. You could verbose the quickload but that also makes... everything else verbose
<no-defun-allowed>
good idea
<aeth>
So what I did wrong in my YAML from earlier is I had the wrong clone syntax and I was relying on a make file
<no-defun-allowed>
how could i catch those?
<no-defun-allowed>
oh wait those are just warnings
<no-defun-allowed>
nope, handler-case doesn't seem to catch style-warnings
<no-defun-allowed>
wait yes it does i think i really don't know
<aeth>
no-defun-allowed: I'd ask in SBCL how to catch everything except notes
Balooga_ has quit [Read error: Connection reset by peer]
pjb has joined #lisp
<slightlycyborg>
ok. thnx
Oladon has quit [Quit: Leaving.]
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
igemnace has joined #lisp
<stylewarning>
slightlycyborg: it's a short way to say "if the argument is nil, move on, otherwise do what's in the brackets"
<stylewarning>
slightlycyborg: the designers of FORMAT were pretty well aware of the kind of use-case you're looking at: a function which returns useful stuff most of the time but NIL sometimes
smokeink has quit [Ping timeout: 252 seconds]
space_otter has joined #lisp
Oladon has joined #lisp
robotoad has joined #lisp
rumbler31 has quit [Remote host closed the connection]
aindilis has quit [Remote host closed the connection]
arescorpio has quit [Remote host closed the connection]
pjb has quit [Ping timeout: 252 seconds]
igemnace has quit [Read error: Connection reset by peer]
slightlycyborg has quit [Ping timeout: 244 seconds]
fikka has joined #lisp
ryan_vw has joined #lisp
<flip214>
good morning... once in a lifetime up before beach!
<flip214>
;)
igemnace has joined #lisp
<Ober>
morning
linack has joined #lisp
fikka has quit [Ping timeout: 276 seconds]
smokeink has joined #lisp
<Josh_2>
Does being up before beach count if you haven't been to sleep?
Josh_2 has quit [Remote host closed the connection]
eminhi has joined #lisp
doesthiswork has quit [Ping timeout: 244 seconds]
n3k0_t has joined #lisp
pjb has joined #lisp
_whitelogger has joined #lisp
meepdeew has joined #lisp
asarch has joined #lisp
linack has quit [Quit: Leaving]
pjb has quit [Ping timeout: 250 seconds]
Bike has quit [Quit: Lost terminal]
ryan_vw has quit [Ping timeout: 272 seconds]
shka_ has joined #lisp
robotoad has quit [Max SendQ exceeded]
didi has joined #lisp
robotoad has joined #lisp
igemnace has quit [Ping timeout: 244 seconds]
charh has joined #lisp
<makomo>
morning!
pjb has joined #lisp
didi has left #lisp ["O bella ciao bella ciao bella ciao, ciao, ciao."]
igemnace has joined #lisp
<no-defun-allowed>
morning makomo
<makomo>
hello :-)
Roy_Fokker has quit [Read error: Connection reset by peer]
shka_ has quit [Ping timeout: 268 seconds]
azimut has quit [Ping timeout: 244 seconds]
robotoad has quit [Max SendQ exceeded]
azimut has joined #lisp
<no-defun-allowed>
aeth: good point.
robotoad has joined #lisp
vlatkoB has joined #lisp
froggey has quit [Ping timeout: 252 seconds]
froggey has joined #lisp
pjb has quit [Ping timeout: 250 seconds]
<russellw>
Is there a portable way to catch an array index out of bounds error?
pjb has joined #lisp
robotoad has quit [Max SendQ exceeded]
<jack_rabbit>
Good question.
frodef has joined #lisp
quazimodo has quit [Ping timeout: 268 seconds]
slac-in-the-box has joined #lisp
robotoad has joined #lisp
quazimodo has joined #lisp
slac-in-the-box has quit [Quit: leaving]
themsay has quit [Ping timeout: 252 seconds]
Oladon has quit [Quit: Leaving.]
themsay has joined #lisp
themsay has quit [Read error: Connection reset by peer]
<jackdaniel>
or handle file-error, access fire-error-pathname, check it out with probe-file and signal your own condition if it does not exist (otherwise resignal condition you have received)
<russellw>
Suppose you are generating errors yourself - say writing a parser, that must signal errors. For that, you could use handle-case and define a suitable error, right? But is there a reason not to just use throw and catch instead? That would seem simpler?
<jackdaniel>
common lisp condition system is so much more than throw/catch
<jackdaniel>
I think I have bookmarked some nice tutorial about it, let me see
<aeth>
I should correct myself, type errors are warnings, not style-warnings. But not compilation errors, either.
<jackdaniel>
I have this: https://lisper.in/restarts but I'm not sure if this is the one I have remembered being so good
<russellw>
thanks!
<jackdaniel>
if all you need is throw/catch, then you need a throw/catch and claiming otherwise would be denying a tautology ;-)
<russellw>
:)
<jackdaniel>
example of what condition system may be used for:
<aeth>
jack_rabbit: That's a flaw in the spec imo. It's really random what kind of error you could see for common things.
<jackdaniel>
I've been debugging McCLIM internal mechanism (one of the downstream functions which does not have access to the screen - no medium argument)
arduo has joined #lisp
<jackdaniel>
and I wanted to display a rectangle of the pixarray size (without disrupting computation)
<jackdaniel>
so I've defined a display-rectangle-condition and signalled it from this function. it was handled higher on the call stack with handler-bind, rectangle was displayed and downstream function working has been continued after that
<jackdaniel>
when I didn't want to handle it I've simply removed handler bind and despite being signalled condition was ignored
fikka has joined #lisp
robotoad has joined #lisp
xificurC has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
JohnMS_WORK has joined #lisp
mkolenda has quit [Remote host closed the connection]
mkolenda has joined #lisp
shka_ has joined #lisp
<shka_>
good morning
<no-defun-allowed>
hi shka_
<LdBeth>
Bye bye
<beach>
Good morning everyone!
<frodef>
morn
<no-defun-allowed>
morning beach
<no-defun-allowed>
hi frodef
scymtym has quit [Ping timeout: 268 seconds]
<russellw>
morning!
ryan_vw has joined #lisp
ryan_vw has quit [Ping timeout: 260 seconds]
ryan_vw has joined #lisp
eminhi_ has joined #lisp
eminhi has quit [Ping timeout: 252 seconds]
Fare has joined #lisp
robotoad has quit [Max SendQ exceeded]
fikka has joined #lisp
robotoad has joined #lisp
eminhi_ has quit [Ping timeout: 252 seconds]
<splittist>
morning
Cymew has joined #lisp
orivej has joined #lisp
larme has joined #lisp
themsay has quit [Ping timeout: 244 seconds]
mange has quit [Remote host closed the connection]
angavrilov has joined #lisp
voidlily has quit [Ping timeout: 260 seconds]
nowhere_man has joined #lisp
scymtym has joined #lisp
heisig has joined #lisp
ryan_vw has quit [Ping timeout: 252 seconds]
Fare has quit [Quit: Leaving]
voidlily has joined #lisp
orivej has quit [Read error: Connection reset by peer]
<nly>
Is there any way to apply list operations to strings?
<jackdaniel>
no, because string is not a list
<jackdaniel>
but there are many operations which work on sequences
<jackdaniel>
and both list and string are sequences
<jackdaniel>
for instance nth and map work on any sequence
<no-defun-allowed>
*elt
larme has quit [Ping timeout: 250 seconds]
<jackdaniel>
hum, yes, my bad
<nly>
Cool thanks :D
<nly>
Why is a string not considered a list?
<no-defun-allowed>
Cause strings aren't represented as lists.
<no-defun-allowed>
If you want that, Haskell has that by default. Even their wiki admits that's a bad idea for big strings.
<nly>
Oh
<nly>
Thanks
<jackdaniel>
nly: array representation and list representation are different things in common lisp, but both are sequences
<jackdaniel>
some CL implementations provide extension called "extensible sequences" as well, to define your own sequence types
<nly>
Thanks
<_death>
you can also coerce a string to a list of characters, though that's usually not what you should want
<nly>
I am learning guile scheme
<nly>
_death: how is that?
<_death>
(coerce "foo" 'list) => (#\f #\o #\o)
<no-defun-allowed>
Best me to it.
<_death>
(coerce '(#\f #\o #\o) 'string) => "foo"
<no-defun-allowed>
You can coerce back too.
<beach>
nly: It allocates memory.
<nly>
Oh that output looks a lot familiar compared to string->list procedure
<_death>
but we're talking about Common Lisp here, not Scheme.
<nly>
Yes
<nly>
Thanks
<shka_>
learn common lisp! :-)
<shka_>
it is awesome
<nly>
I'll take a look :-)
<nly>
Thanks all
<no-defun-allowed>
I finished the parser/renderer for Netfarm today.
<no-defun-allowed>
I solved the problem of not having a Netfarm MOP yet by using a hash table as an intermediate form for schemas.
<no-defun-allowed>
Goodnight everyone
Josh_2 has joined #lisp
<beach>
'night no-defun-allowed.
flamebeard has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
<no-defun-allowed>
Thanks c:
flamebeard has quit [Remote host closed the connection]
<no-defun-allowed>
Happy hacking, beach.
zfree has joined #lisp
fikka has joined #lisp
kajo has quit [Ping timeout: 252 seconds]
kajo has joined #lisp
flamebeard has joined #lisp
semz has quit [Quit: Leaving]
dddddd has joined #lisp
esrse has quit [Ping timeout: 246 seconds]
Josh_2 has quit [Quit: ERC (IRC client for Emacs 26.1)]
rumbler31 has joined #lisp
rumbler31 has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 244 seconds]
fikka has joined #lisp
DGASAU has quit [Ping timeout: 246 seconds]
nly has quit [Ping timeout: 245 seconds]
beach has quit [Ping timeout: 252 seconds]
beach has joined #lisp
igemnace has quit [Quit: WeeChat 2.2]
DGASAU has joined #lisp
Bike has joined #lisp
beach has quit [Ping timeout: 252 seconds]
beach has joined #lisp
Josh_2 has joined #lisp
trittweiler has quit [Ping timeout: 272 seconds]
rumbler31 has joined #lisp
Essadon has joined #lisp
didi has joined #lisp
<didi>
So... if I call `with-open-file' with a filespec like "foo.png" and :direction :output, my implementation could generate an output stream with :element-type byte, right?
<Josh_2>
If you set element-type to unsigned-byte 8 yes
<didi>
Nice.
<didi>
No, wait...
<didi>
I want it automatically.
<Bike>
"automatically"?
<didi>
Yes. If I read the manual correctly, it should be possible.
<didi>
Let me fetch the quote.
<Josh_2>
To do what automatically?
<didi>
Open the stream with the correct type, based on the name of my file.
<Bike>
i kind of doubt it
nowhere_man has quit [Ping timeout: 252 seconds]
<Josh_2>
you could write a function that determines the filetype based on the extension and use that in place of 'unsigned-byte?
<Bike>
it's possible an implementation does that, but i wouldn't count on it. file type extensions are kind of unregulated, for one.
astronavt has joined #lisp
<didi>
Indeed. The manual says the implementation _might_ do it. (where is this quote...)
nowhere_man has joined #lisp
<Bike>
"The element-type specifies the unit of transaction for the file stream. If it is :default, the unit is determined by file system, possibly based on the file."
z0d has quit [Quit: leaving]
<didi>
Yes!
<ggole>
Based on the file is pretty vague
<didi>
Bike: Thank you.
<didi>
ggole: True.
<ggole>
I'm guessing this is for file systems with metadata
<knobo>
Is there a way to make emacs indent cond clauses like body?
fikka has quit [Ping timeout: 250 seconds]
z0d has joined #lisp
z0d has quit [Client Quit]
DGASAU has quit [Read error: Connection reset by peer]
<Bike>
sbcl seems to treat :default as 'character, regardless of anything about the file
<knobo>
(cond (clause \n "-- indent some extra spaces here -->" body))
<didi>
Seems like a cool thing to do, tho I have no idea on how many things would break after such change.
z0d has joined #lisp
<scymtym>
Bike: :default should actually mean bivalent as in (with-open-file (stream "/etc/motd" :direction :input :element-type :default) (list (read-char stream) (read-byte stream)))
warweasle has joined #lisp
<Bike>
oh. i misunderstood the source then.
<scymtym>
the representation of element-type and bivalentity is pretty confusing
fikka has joined #lisp
DGASAU has joined #lisp
<didi>
I hit the quote because I'm trying to use `uiop:run-program' to run a program that reads text from :input and outputs bytes to :output, but I'm struggling. Silly mismatching streams.
asymptotically has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 268 seconds]
asymptotically has joined #lisp
rumbler31 has quit [Remote host closed the connection]
<didi>
`uiop:run-program' seems to apply :element-type to both streams, even if I supply a stream for :output.
fikka has joined #lisp
<didi>
Hum, and according to SBCL manual, the same applies to `sb-ext:run-program': ‘:external-format’ The external-format to use for ‘:input’, ‘:output’, and ‘:error’ :STREAMs.
<didi>
Oh, well.
<_death>
if you supply a stream, you don't use :stream
<didi>
Hum.
<didi>
_death: Thank you.
astronavt_ has joined #lisp
astronavt has quit [Ping timeout: 246 seconds]
<didi>
Nice, it worked. SBCL making it hard to write portable programs.
<_death>
it's easy.. just wrap the behavior in your own function and use that
astronavt_ is now known as astronavt
<didi>
_death: How do you mean?
<_death>
have a portable interface layer.. implementation portability is overrated
<didi>
_death: In some way, this is true. I only use SBCL.
<splittist>
I like the example in stream-element-type of '(integer 0 1) to allow for (but not mandate) bitwise output (as it were)
<_death>
uiop's interface is terrible, so have your own simpler one
<didi>
_death: What's the name of the construct that restrict evaluation of forms to certain compiler features?
Oddity has quit [Ping timeout: 250 seconds]
eminhi has joined #lisp
<splittist>
with-standard-io-syntax ?
<didi>
splittist: No no. I'm probably butchering the definition. Let me try find it.
<_death>
I'm guessing you're referring to reader conditionals
<didi>
_death: Yes!
<_death>
but there are better ways to do that.. for example have a file per implementation/platform and have a reader conditional or :if-feature (or whatever it's called) in the asdf definition
Josh_2 has quit [Quit: ERC (IRC client for Emacs 26.1)]
<jcowan>
nly: try #scheme or #guile
Josh_2 has joined #lisp
DataLinkDroid has quit [Ping timeout: 256 seconds]
<didi>
_death: Cool. Thank you.
wanz has quit [Quit: wanz]
* didi
enjoys lisp articles
Selwyn has joined #lisp
shifty has quit [Ping timeout: 244 seconds]
frodef has quit [Ping timeout: 252 seconds]
fikka has quit [Ping timeout: 250 seconds]
<didi>
How would you connect a function that writes to a stream and one that reads from a stream? I'm using a combination of `with-output-to-string', `make-string-input-stream', and `with-open-stream', but I feel there might be a better way.
<shka_>
didi: flexistreams, maybe?
<didi>
shka_: Something standard?
<shka_>
flexistreams are not standard
<shka_>
but they are portable
<didi>
I know.
<shka_>
oh, ok
<shka_>
sorry, i misunderstood
<didi>
Sorry, I was too dense.
frodef has joined #lisp
<shka_>
well, i don't know about the standard way
<shka_>
i would just use flexistreams...
moei has quit [Ping timeout: 252 seconds]
<didi>
shka_: My hack works, but it feels weird.
<didi>
shka_: Thank you.
<shka_>
well, i didn't help
<didi>
You did. You gave me an option.
wanz has joined #lisp
moei has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
<splittist>
make-two-way-stream? You still have to open streams for input and output.
<didi>
splittist: Interesting. Thank you. I'll look into it.
<didi>
splittist: Hum. It needs two streams. I don't think this is it.
<didi>
Ah, threads. I should have thought it. I think I kinda wished streams could accumulate stuff.
voidlily has quit [Ping timeout: 260 seconds]
Josh_2 has quit [Remote host closed the connection]
fikka has joined #lisp
FreeBirdLjj has joined #lisp
Josh_2 has joined #lisp
igemnace has joined #lisp
wanz has quit [Remote host closed the connection]
Josh_2 has quit [Remote host closed the connection]
robotoad has joined #lisp
voidlily has joined #lisp
themsay has quit [Ping timeout: 252 seconds]
dale has quit [Quit: dale]
fikka has quit [Ping timeout: 252 seconds]
jack_rabbit has quit [Ping timeout: 252 seconds]
vtomole has joined #lisp
asarch has joined #lisp
Josh_2 has joined #lisp
Selwyn has quit [Ping timeout: 252 seconds]
themsay has joined #lisp
shka_ has quit [Quit: WeeChat 1.9.1]
d4ryus1 has joined #lisp
d4ryus has quit [Ping timeout: 252 seconds]
<didi>
How do I rewrite https://paste.debian.net/hidden/01f61fd9 to remove the duplicated `with-open-file'? I feel like I need `macrolet', but I can't figure it out. I don't want to always pass `if-exists' to `with-open-file' because it behaves differently whenever it receives `if-exists' or not.
robotoad has quit [Quit: robotoad]
<Xach>
didi: one option: instead of defaulting to NIL, default to the default value of if-exists
<didi>
Xach: The thing is, as far as I understand, there's no default value, because `with-open-file' behaves differently if it doesn't receive a value at all for :if-exists.
flamebeard has quit []
<didi>
"if-exists---one of :error, :new-version, :rename, :rename-and-delete, :overwrite, :append, :supersede, or nil. The default is :new-version if the version component of filespec is :newest, or :error otherwise. "
<Xach>
didi: I don't think that is the case.
<Xach>
didi: You could duplicate that logic.
<didi>
Xach: Indeed, tho I want to avoid that.
<Xach>
Time to pick your poison
<didi>
True.
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
fikka has joined #lisp
FreeBirdLjj has quit [Ping timeout: 252 seconds]
heisig has quit [Quit: Leaving]
zfree has quit [Quit: zfree]
<_death>
you can use open with apply
<didi>
Hum. And then manually close the stream. Interesting.
<_death>
there's with-open-stream
<didi>
Better yet.
<didi>
Thank you.
n3k0_t has quit [Ping timeout: 244 seconds]
<didi>
Heh, SBCL calls the first argument of OPEN as FILENAME. It confused me a little as I expected FILESPEC.
robotoad has joined #lisp
Nikotiini has quit [Quit: WeeChat 1.4]
shka_ has joined #lisp
Nikotiini has joined #lisp
<gendl>
Hi, is there anything in SBCL and/or CCL which can get the real time in microseconds?
<gendl>
(that is, I believe, millionths of a second)
<gendl>
or even milliseconds (thousandths)
<shka_>
gendl: somebody asked about that lately
<gendl>
Sorry, I should have searched the log.
<shka_>
no worries
<shka_>
from what i remember, sbcl uses underlying OS for that
<Shinmera>
gendl: sbcl has a sb-ext:get-time-of-day
<shka_>
so on linux, you should be fine by using standard time functions
<Shinmera>
and I think stas was considering making that the default for internal time
<shka_>
there is also constant
<shka_>
internal-time-units-per-second
<shka_>
you can check if it is thousand or a million
<Shinmera>
it's a thousand
<gendl>
I'm looking at Allegro's (excl::acl-internal-real-time)
<shka_>
well, that would be a millisecond
<gendl>
it returns multiple values, apparently an offset in seconds then an incremental value in milliseconds
<Josh_2>
How about the project local-time?
<shka_>
gendl: btw, why do you need this?
<Josh_2>
seems to have the ability to format to microseconds
<gendl>
They've added this microtime stuff to AllegroServe - I'm trying to resolve latest AllegroServe with zacl
<gendl>
I think I'll have to punt for now and have zacl-aserve not keep track of microtime.
ravndal has quit [Ping timeout: 272 seconds]
<dim>
is there a way to edit-in-place list elements when looping through them? I think I forgot how to do that with for/on/by cddr and setf
<Josh_2>
yeh I think local-time lets you get time in microseconds
<gendl>
Josh_2: oh yeah? In SBCL?
<Josh_2>
Yexs
<Josh_2>
"Produces a timestamp instance with the current time. Under sbcl, the new timestamp will be precise to the microsecond. Otherwise, the precision is limited to the second."
<_death>
dim: if you use ON then you have the cons, so you can alter its car.. but maybe you actually want MAP-INTO
igemnace has quit [Read error: Connection reset by peer]
igemnace has joined #lisp
rippa has joined #lisp
astronavt_ is now known as astronavt
FreeBirdLjj has joined #lisp
SenasOzys has joined #lisp
SenasOzys has quit [Remote host closed the connection]
<gendl>
(local-time:now) seems to be returning microseconds on CCL and SBCL on Windows as well (despite the documentation saying microseconds only works on POSIX systems and only on SBCL)
astronavt has quit [Quit: Leaving]
<gendl>
windows 10, at least... (is Windows 10 a POSIX system?)
varjag has joined #lisp
<gendl>
Well, i'm running these in a cygwin shell - maybe i'm getting a false positive here...
<gendl>
lemme try in a cmd shell
fitzsim has joined #lisp
fikka has joined #lisp
<gendl>
they both still work for (local-time:nsec-of ...) in cmd as well as cygwin...
<gendl>
only difference on Windows is the timestamps are coming back in Zulu time, like @2018-10-16T16:27:42.833074Z
<gendl>
instead of showing a timezone offset like @2018-10-16T12:27:42.833074-04:00.
<gendl>
But that might just be my Windows configuration (and the fact that I keep my Windows VM cut off from being able to see the outside Internet)...
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
makomo has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
orivej has quit [Quit: No Ping reply in 180 seconds.]
nowhere_man has joined #lisp
orivej has joined #lisp
emaczen has joined #lisp
Josh_2 has quit [Ping timeout: 244 seconds]
makomo has joined #lisp
<gendl>
mornin'
kyby64 has joined #lisp
eminhi has quit [Remote host closed the connection]
esperos has quit [Read error: Connection reset by peer]
ggole has quit [Quit: ggole]
orivej has quit [Ping timeout: 252 seconds]
vtomole has quit [Quit: Page closed]
alfosici has joined #lisp
<oni-on-ion>
good morning
<makomo>
hmm, does trivia's MATCH have a "default clause"?
orivej has joined #lisp
cylb has joined #lisp
pfdietz has quit [Quit: pfdietz]
alfosici has quit [Quit: Leaving]
<dlowe>
gendl: there's no way I know of to get the windows timezone. You'll want to download the tzinfo files and load the timezone yourself
zxcvz has joined #lisp
<gendl>
dlowe: Ah, I see. Thanks.
<gendl>
Hi, is any .asd file in any Quicklisp repo supposed to be loadable with (ql:quickload) ?
<Xach>
gendl: No.
<Xach>
gendl: only those indexed in the metadata are loadable.
<gendl>
Ok. The one i'm after at the moment is :zacl-aserve
<gendl>
it's there inside zacl, but I guess not indexed.
<gendl>
Can I do something to fix that?
<Xach>
That's only for loading allegro's aserve, which is not part of quicklisp (and can't be until it's portable).
<gendl>
I'm working on that. They did finally accept your longstanding pull requests.
<gendl>
Now there are a few other incompatibilities which have crept up in latest original allegroserve - most of them will be fixed with a few updates to zacl (I'll be submitting a pull request for those) - a couple others look like they'll need pull requests to original aserve itself, which I'll also submit.
<gendl>
that will leaves the longstanding issue of renaming the legacy portableallegroserve to make room for mirroring pristine current original allegroserve in quicklisp.
charh has quit [Ping timeout: 244 seconds]
<Xach>
What's franz's incentive to accept patches to make allegroserve portable to not-Allegro?
<gendl>
which in principle I think the handful of legacy portableallegroserve users have agreed to, but I guess i have to tie up loose ends with everyone and get actually to happen in their official repo (still at sourceforge, I guess).
charh has joined #lisp
<gendl>
I can't really speak for Franz, but I can speculate that they see that it's already portable, with just a few tweaks,
<gendl>
there are already #+allegro's in their own code - so apparently someone over there is already running it on other Lisps too
<Xach>
The biggest obstacle I remember was a handful of allegro-specific feature expressions. They can be worked around by clobbering the readtable to handle them specially, but still a pain.
<gendl>
from their perspective, having more people exposed to aserve in the wild (maybe on other Lisps) means some percentage of those folks might eventually check out commercial Allegro CL
<Xach>
That's aside from the things that were nearly impossible to emulate in non-supporting lisps, like foo::(bar baz) syntax
<Xach>
I think those are gone if the patches were applied
<gendl>
The feature expressions are already handled by current zacl.
<gendl>
The main things remaining (which can't be fixed with a few zacl enhancements) are the addition of some #+allegro's in their code.
moei has quit [Quit: Leaving...]
<Xach>
They're "handled" in the sense that it can be forced to load, but it cannot be loaded standalone.
pfdietz has joined #lisp
<gendl>
that's because zacl itself seems to insert :allegro into the *features* list while loading
<Xach>
It can't be considered portable if it can only be loaded by a readtable-clobbering shim.
<gendl>
So it can never be in Quicklisp as long as they have stuff like #+allegro-version> ?
<Xach>
gendl: Yes.
charh has quit [Ping timeout: 252 seconds]
<Xach>
That's the difference between "make it work, no hack too gross" and "suitable for general portable use"
<gendl>
Then I guess we have no choice but to maintain a fork for Quicklisp.
<gendl>
because I can pretty much guarantee that those #+allegro-version<= aren't going away (I can still ask, though).
<gendl>
maybe they don't have so many of them - i'll have another look.
<gendl>
Some of them are looking for ancient ancient Allegro's, like version 6.
<Xach>
gendl: Thta's my impression, too. But maybe they'd be swayed by patches that use Xof-style feature flags instead? Where you test for a specific functionality, rather than a specific version, to handle incompatibility.
<gendl>
Ok i'll check into it. But I'm thinking in the meantime, make a portable fork (call it paserve2 or something) just as an interim solution, to be able to have a working setup in Quicklisp...
<gendl>
then work toward getting rid of that (and Franz might be swayed to help get rid of it, in the interest of limiting the number of aserve forks floating around)
<Shinmera>
could also have a #+allegro file that translates the version checks to regular features and then use those throughout
<gendl>
the other issue with getting original aserve into QL is the name clash with legacy portableaserve. One of the two has to be renamed (I've already reached out to anyone who I think cares, and in principle we're good to rename the old one paserve, but hasn't happened yet).
<gendl>
have to step out, thanks for the feedback..
charh has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
ravndal has joined #lisp
<emaczen>
does #'bt:make-thread inherit lexical variables in the current scope?
<pjb>
nope.
<pjb>
make-thread is a function, it's oblivious of the scope from which it's called.
<pjb>
Notice the use of the special operator FUNCTION to create a closure.
kozy has quit [Quit: No Ping reply in 180 seconds.]
kozy has joined #lisp
<emaczen>
Bike: That is what I have
<Bike>
right, so the bt:make-thread is irrelevant. it's just a closure the same as any other closure.
charh has quit [Ping timeout: 245 seconds]
<emaczen>
Bike: Alright, just making sure and trying to iron out some bugs!
arduo has quit [Remote host closed the connection]
charh has joined #lisp
asarch has quit [Ping timeout: 272 seconds]
didi has quit [Ping timeout: 252 seconds]
Bike has quit [Quit: Page closed]
<gendl>
Xach: what would it actually mean for aserve to be able to load “standalone?” I mean, it will always need zacl on non-allegro lisps, so how could it ever be wholly “standalone?”
<gendl>
how about just packaging it for quicklisp together with zacl, and call the whole thing “zaserve” or something?
wilfredh has joined #lisp
<gendl>
and get the aserve part of it as close as possible to the canonical franzinc version (maybe not 100%) and someone “hopefully” (me for the foreseeable future) will just keep merging the upstream franzinc one into it every month or so.
d4ryus1 is now known as d4ryus
dddddd has quit [Ping timeout: 246 seconds]
frodef has quit [Ping timeout: 244 seconds]
<Posterdati>
hi
<Posterdati>
was anyone able to make sbcl run on netbsd?
<Ober>
Posterdati: yes it is in pkgsrc
<Ober>
with thread support and all
<Posterdati>
I wasn
<Ober>
Posterdati: what arch?
<Posterdati>
I wasn't able to compile it
<Posterdati>
amd64
robotoad has quit [Quit: robotoad]
<Ober>
ok. will check it out
<whartung>
can aserve load in a generic lisp (not run, but load)? Will it build, compile, and (ideally) fail tests? or does the “read table hacks” prevent it from loading?
<Posterdati>
it uses clisp to bootstrap
<Ober>
email asau@netbsd.org or ober@
dddddd has joined #lisp
<Posterdati>
?
frodef has joined #lisp
<Posterdati>
anyway it does not compile
moei has joined #lisp
astronavt has joined #lisp
astronavt has quit [Remote host closed the connection]
vaporatorius has joined #lisp
dale has joined #lisp
vaporatorius has quit [Client Quit]
<Posterdati>
Ober: tried?
<Xach>
gendl: truly standalone would mean load aserve and it loads its own prerequisites and runs.
<Xach>
gendl: bundling it with zacl and calling it zaserve seems to me the same strategy as paserve, which introduced the allegro-compat library.
<gendl>
...and as long as we’re trying to use pristine franzinc aserve, that’ll by definition never be possible, bcos pristine aserve will never have a :depends-on (:zacl) in its aserve.asd.
<gendl>
(“never be possible” referring to your first remark above)
<gendl>
yep, we’re pretty much landing back at “new & improved portableaserve”... but I can’t really see another way, unless Franz will accept :depends-on (#-allegro :zacl) in their official aserve.asd
<gendl>
— which they actually might, because I doubt they use that .asd themselves. I’m not sure why it was actually added. I’ll try to find out.
<gendl>
Looks like it was originally made by Gary King for some reason.
<gendl>
It also disables output-translations, which borders on malicious and needs to be deleted.
ealfonso has quit [Disconnected by services]
ealfonso has joined #lisp
eschatologist has quit [Ping timeout: 240 seconds]
ealfonso` has joined #lisp
<Posterdati>
pjb: binary does not work either
<Posterdati>
pjb: it complains about memory limits, but if you change them, you've get the same error
orivej has quit [Ping timeout: 252 seconds]
orivej has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
Bike has joined #lisp
eschatologist has joined #lisp
pfdietz has quit [Remote host closed the connection]
charh has quit [Quit: zZZzzZ]
orivej has quit [Ping timeout: 245 seconds]
MichaelRaskin has joined #lisp
ThJ has joined #lisp
<ThJ>
i had a look at the book Practical Common Lisp, and the example programs were relevant about 20 years ago. then i looked at Slime and the screenshot on the main page is also ancient (macOS hasn't used that style of scrollbars in at least a decade). also, all the documentation i can find looks like it was made in the 90s and would load in the Lynx browser... should i just continue expecting this kind of thing?
<_death>
yes
<_death>
but please don't do it here
<shka_>
ThJ: hyperspec was done in the 90s and because it is copyrighted nobody can publish it in more modern form
<warweasle>
Is that why that effort failed a couple years ago?
<shka_>
warweasle: i am not aware of such effort in the recent history
<shka_>
other then ultraspec
<shka_>
but that was last year
<_death>
I guess you could have some react.js thingy lazy load the text, so that you won't be able to view it in lynx
<warweasle>
Is that what happened to the ultraspec?
<ThJ>
i've been programming for about 26 years, but things have changed a lot.
<ThJ>
and i've changed along with it, to a certain extent, so my expectations have changed.
<_death>
you could add a few cat (and cdt) pics here and there
<ThJ>
no car pics? :p
varjag has joined #lisp
<_death>
well, if you want your programs to work in 10, 20, 30 years.. maybe stability is a good thing.. if you think your program will be worhtless by next year, as it will be rewritten ("better").. then javascript makes sense
<ThJ>
haha, i'm not here to have that argument...
xificurC has joined #lisp
<ThJ>
i don't think you can compare.
charh has joined #lisp
<shka_>
ThJ: anyway, thing is that stuff written years back is still relevant today
<shka_>
so although it looks outdated, it is useful
<ThJ>
but even languages that do try to be stable over time have made adjustments to the ecosystem.
<shka_>
so is CL
<ThJ>
well, the information isn't outdated as such.
<shka_>
quicklisp did not exist in the 90s
ealfonso` has quit [Ping timeout: 252 seconds]
<shka_>
neither quickref
<shka_>
or asdf
<shka_>
but that did not invalidate old content
<ThJ>
but it surprises me that searches for pretty basic lisp concepts don't turn up near the top of google search results, etc.
jkordani_ has joined #lisp
<ThJ>
it's a bit more hidden away so you have to surf to find stuff
<shka_>
ThJ: this is unfortunate, perhaps but there is a better option: irc! ;-)
<ThJ>
bug people constantly?
<ThJ>
i try to not waste people's time too much...
<shka_>
well, it's not like you are forcing anybody to help you
<ThJ>
no, but i was pretty much told to go away by _death, which was my first impression.
<shka_>
from my experience people here and at #clschool are rather helpful
<ThJ>
granted, i didn't start it on the most positive note, but i don't feel that i was particularly harsh either, and it was a genuine first impression..
jkordani has quit [Ping timeout: 244 seconds]
<shka_>
ThJ: nah _death simply pointed out futility of discussing this topic
<shka_>
it is simply how it is
<shka_>
and the main issue here is that those things are not obsolete
<_death>
this is a technical channel
<shka_>
*most of the time ;-)
m3tti has joined #lisp
<ThJ>
well, i'm a technical person, but i'm not a robot...
<ThJ>
unfortunately, perhaps.
<ThJ>
anyway...
<_death>
if you want to discuss the lisp language, that's one thing.. if you want to vent about failure to satisfy the need for new it's another
<ThJ>
will i get shot at noon if i say that i've mostly been a vim user, and the thought of switching to emacs to use slime doesn't seem terribly alluring?
nowhere_man has quit [Ping timeout: 244 seconds]
<shka_>
ThJ: there is slimv, but i don't use it so i can't tell how good it is
<shka_>
from what i understand new vim and neovim integrate with external process much better nowdays so it may be actually acceptable
<ThJ>
ah, neovim, i keep hearing about that
<ThJ>
haven't found a reason to switch yet
<shka_>
or you can configure emacs to behave like vim
<shka_>
which i did
<_death>
I think some vim people are ok with emacs modes that make it closer to what they're used to
<ThJ>
the wonders of emulation
<shka_>
not sure if emulation is the right word
<ThJ>
well, informally speaking
sauvin has quit [Ping timeout: 250 seconds]
<ThJ>
not in the strict technical sense
<shka_>
well, evil mode is what i am using, and it is good enough for me
<ThJ>
lol
LiamH has joined #lisp
<ThJ>
of course they had to name it that
<shka_>
obviously :D
<_death>
I think an older mode was called viper
<shka_>
yes, viper
sauvin has joined #lisp
<shka_>
evil is literally vim
<shka_>
i mean: everything works
<shka_>
including whole ex
<shka_>
ThJ: emacs is kinda crazy because people are writing EVERYTHING for it
<shka_>
there is a http server for emacs
<ThJ>
i'm not a particularly advanced vim user. yes, my vimrc has a fair bit of stuff in it, but i haven't got a bajillion vim commands committed to muscle memory.
<ThJ>
ah, yes, the old quote about emacs being an excellent operating system only lacking a decent editor
<_death>
and hey, you can program emacs with lisp too..
<shka_>
ThJ: there is a decent editor, it is called evil ;-)
vlatkoB has quit [Remote host closed the connection]
<shka_>
_death: oddly enough you can program neovim with lisp nowadays
<ThJ>
yeah, emacs is written in it, so that figures...
<shka_>
ThJ: if you want to try emacs, you can try to install spacemacs
<_death>
shka: how does that look like?
<ThJ>
macOS seems to come with a copy of vanilla emacs, for what that's worth.
<ThJ>
definitely didn't sneak itself in with homebrew since that lives in /opt
<ThJ>
Thors-Hackintosh:~ thor$ ls -la /usr/bin/emacs
<ThJ>
-r-xr-xr-x 1 root wheel 50905952 28 Mar 2018 /usr/bin/emacs
<shka_>
anyway, installing spacemacs is easy (copy one file), then you will be asked to choose your preferences (vim style, emacs style, hybrid style)
<shka_>
then you are adding one line in the config and it will install common lisp style
<shka_>
*stuff
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
<ThJ>
but i reckon i'll need to break out my META keys if i'm going to actually use Slime or such, right?
<shka_>
by default, yes
<shka_>
you can change keyboard bindings to mitigate that
<shka_>
it is documented
<shka_>
also, i use like 3 slime shortcuts…
jmercouris has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<ThJ>
that quit message... i, too, remember dialup.
<shka_>
i am going to sleep now
<shka_>
good night!
<ThJ>
shka_: thanks for your tips
<shka_>
you are welcome!
sauvin has quit [Ping timeout: 276 seconds]
trittweiler has joined #lisp
sauvin has joined #lisp
pent has joined #lisp
fikka has joined #lisp
<jcowan>
Now I wonder if I should write my exx editor in Emacs instead of stand-alone
<jcowan>
exx = ex extended, ex with new bells, whistles, and gongs
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
<ecraven>
you might be able to leverage evil-mode, which might make things easier
<emaczen>
ThJ: It looks like you are using OSX? You may want to check out CCL, a common-lisp implementation that can interoperate with the cocoa libraries
<emaczen>
ThJ: That includes the cocoa GUI libraries too.
cage_ has quit [Quit: Leaving]
shka_ has quit [Ping timeout: 252 seconds]
orivej has joined #lisp
PuercoPop has quit [Ping timeout: 252 seconds]
zxcvz has quit [Quit: Leaving]
m3tti has quit [Remote host closed the connection]
m3tti has joined #lisp
PuercoPop has joined #lisp
<sukaeto>
evil user here, fwiw
<sukaeto>
even forgetting about Lisp+SLIME, I found the switch to be worthwhile
<sukaeto>
Emacs' buffer management is much better, IMO. And setting up Emacs to run in daemon mode and then aliasing emacsclient (to, say, vi) has been a lot more convenient for me than trying to locate that one file I know I've got open in one of these tabs in one of these vim windows
<sukaeto>
dunno, if one random dude's experience is all that useful for anyone else, though
robotoad has joined #lisp
angavrilov has quit [Remote host closed the connection]
buffergn0me has quit [Ping timeout: 276 seconds]
buffergn0me has joined #lisp
scymtym has quit [Ping timeout: 250 seconds]
rumbler31 has joined #lisp
rumbler31 has quit [Remote host closed the connection]
<slightlycyborg>
Anyone familiar with SBCL sockets? I want to use a socket-stream on a UDP client, but I don't know if it is possible. I can use a stream on the server after I bind, but I may just have to use the socket-send function.
frodef has quit [Remote host closed the connection]
Roy_Fokker has joined #lisp
m3tti has quit [Ping timeout: 252 seconds]
<jmercouris>
slightlycyborg: I'm not very familiar, but I remember there being some basic documentation in the source IIRC
<jmercouris>
are you trying to use bsd style sockets or what?
<slightlycyborg>
Ya. I am in the documentation, I just cant find what I am looking for
scymtym has joined #lisp
<jmercouris>
I wish I could help you, I gave up (temporarily) on using bsd sockets in SBCL, as it is an ext and I didn't want to be too tightly married to SBCL