<jcowan>
If you had a sandbox, you could statically examine what it does and see if you are willing to load it into the live image, but of course there are no guarantees about what crimes it might commit dynamically.
frodef has quit [Ping timeout: 246 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 240 seconds]
shifty has quit [Ping timeout: 245 seconds]
johnjay has joined #lisp
azimut has quit [Ping timeout: 245 seconds]
aindilis has joined #lisp
rumbler31 has joined #lisp
rumbler31 has quit [Remote host closed the connection]
phoe has quit [Ping timeout: 268 seconds]
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
Oladon has joined #lisp
azimut has joined #lisp
cylb has quit [Ping timeout: 268 seconds]
mejja has quit [Quit: mejja]
azimut has quit [Ping timeout: 264 seconds]
sjl has quit [Quit: WeeChat 2.2-dev]
Kundry_Wag has joined #lisp
dented42 has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
Lycurgus has joined #lisp
dale has quit [Quit: dale]
lumm has quit [Ping timeout: 252 seconds]
robotoad has joined #lisp
robotoad has quit [Read error: Connection reset by peer]
robotoad has joined #lisp
<no-defun-allowed>
also, erm, can i get a worker id from lparallel workers?
<no-defun-allowed>
maybe it's KERNEL-WORKER-INDEX
<no-defun-allowed>
yep
azimut has joined #lisp
azimut has quit [Ping timeout: 244 seconds]
ryan_vw has quit [Ping timeout: 250 seconds]
azimut has joined #lisp
astronavt has quit [Quit: Leaving]
astronavt has joined #lisp
astronavt has quit [Remote host closed the connection]
slyrus1 has joined #lisp
slyrus has quit [Ping timeout: 240 seconds]
slyrus1 is now known as slyrus
rumbler31 has joined #lisp
rumbler31 has quit [Remote host closed the connection]
azimut has quit [Ping timeout: 240 seconds]
stardiviner has joined #lisp
Kundry_Wag has joined #lisp
azimut has joined #lisp
Kundry_Wag has quit [Ping timeout: 264 seconds]
Lycurgus has quit [Quit: Exeunt]
robotoad has quit [Quit: robotoad]
warweasle has joined #lisp
esrse has joined #lisp
azimut has quit [Quit: Adios]
ryan_vw has joined #lisp
myrkraverk has quit [Ping timeout: 246 seconds]
robotoad has joined #lisp
stardiviner has quit [Ping timeout: 252 seconds]
Josh_2 has quit [Quit: ERC (IRC client for Emacs 26.1)]
nckx has quit [Remote host closed the connection]
nckx has joined #lisp
astronavt has joined #lisp
azimut has joined #lisp
astronavt has quit [Client Quit]
azimut has quit [Ping timeout: 264 seconds]
Kundry_Wag has joined #lisp
azimut has joined #lisp
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
azimut has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Ping timeout: 268 seconds]
devon has joined #lisp
azimut has joined #lisp
<devon>
Has slime-media ever worked?
graphene has quit [Remote host closed the connection]
<r0sebush>
question from a sbcl newbie.. What's is the best method to include libraries, like cl-ppcre into your lisp code for production release? .sbclrc or include (ql:quickload ...) in your code base?
dddddd has quit [Remote host closed the connection]
stereosphere has quit [Ping timeout: 252 seconds]
stereosphere has joined #lisp
graphene has quit [Remote host closed the connection]
azimut has joined #lisp
graphene has joined #lisp
graphene has quit [Remote host closed the connection]
sjl has joined #lisp
graphene has joined #lisp
wanz has joined #lisp
Roy_Fokker has quit [Read error: Connection reset by peer]
shifty has joined #lisp
wanz has quit [Client Quit]
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
sauvin has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
wanz has joined #lisp
<gendl>
r0sebush: The best way is:
<gendl>
1. have a .asd file for your application which has a :depends-on (:cl-ppcre ...)
<gendl>
2. When ready for release, use (asdf:operate 'asdf:monolithic-compile-bundle-op <your-application-system-name>)
<gendl>
that will produce one big .fasl with your whole application including its depended-upon stuff, presumably in the right order.
sauvin has joined #lisp
Kundry_Wag has quit [Ping timeout: 264 seconds]
<gendl>
then start a fresh sbcl image, load this .fasl, then dump image. (I'm not sure the specifics of that with sbcl). ASDF also has built-in operators for doing that.
<gendl>
it was suggested earlier today that someone needs to make a do's-and-don'ts for production application release and maybe a how-to. It's something which should be pretty routine and well known at this point but doesn't seem to be.
astronavt has joined #lisp
stereosphere has quit [Ping timeout: 252 seconds]
stereosphere has joined #lisp
<r0sebush>
thank you.
Bike has quit [Quit: Lost terminal]
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
orivej has quit [Ping timeout: 268 seconds]
r0sebush has left #lisp [#lisp]
shka_ has joined #lisp
wanz has quit [Quit: wanz]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
wanz has joined #lisp
<shka_>
good morning
rumbler31 has joined #lisp
Kundry_Wag has joined #lisp
rumbler31 has quit [Remote host closed the connection]
Kundry_Wag has quit [Ping timeout: 240 seconds]
anewuser has joined #lisp
jochens has joined #lisp
arescorpio has joined #lisp
Inline has quit [Quit: Leaving]
jochens has quit [Ping timeout: 268 seconds]
<LdBeth>
Morning
<no-defun-allowed>
morning LdBeth
<jdw4000>
(good morning) ;)
<jackdaniel>
unbound variable: morning
<jdw4000>
hehe, maybe it a function?
<jackdaniel>
unbound variable: morning
<jackdaniel>
ops, sorry for repeat
<jackdaniel>
(mouse gesture)
<jdw4000>
=)
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 246 seconds]
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
arescorpio has quit [Quit: Leaving.]
Lord_of_Life has quit [Ping timeout: 252 seconds]
linack has quit [Ping timeout: 252 seconds]
makomo has joined #lisp
froggey has quit [Ping timeout: 252 seconds]
froggey has joined #lisp
Kundry_Wag has joined #lisp
wanz has quit [Quit: wanz]
ryan_vw has quit [Ping timeout: 252 seconds]
Kundry_Wag has quit [Ping timeout: 252 seconds]
<no-defun-allowed>
okay terrible idea of the month:
<no-defun-allowed>
- write bot in common lisp
<no-defun-allowed>
- use burgled-batteries to interface python module that interfaces opencv for images
dented42 has joined #lisp
pierpal has joined #lisp
pierpal has quit [Client Quit]
wanz has joined #lisp
dented42 has quit [Ping timeout: 240 seconds]
pierpal has joined #lisp
dented42 has joined #lisp
vlatkoB has joined #lisp
phoe has joined #lisp
astronavt_ has joined #lisp
astronavt has quit [Read error: Connection reset by peer]
makomo has quit [Ping timeout: 264 seconds]
dented42 has quit [Ping timeout: 252 seconds]
dented42 has joined #lisp
igemnace has joined #lisp
shka_ has quit [Ping timeout: 268 seconds]
frodef has joined #lisp
robotoad has quit [Quit: robotoad]
pierpal has quit [Read error: Connection reset by peer]
gector has quit [Read error: Connection reset by peer]
<no-defun-allowed>
still, most of this box-mangling and vision stuff would read better in lisp but common-cv is just a very fine wrapper over C unfortunately
gector has joined #lisp
<beach>
Good morning everyone!
<no-defun-allowed>
o/
trittweiler has joined #lisp
pierpal has joined #lisp
rumbler31 has joined #lisp
trittweiler has quit [Ping timeout: 252 seconds]
Kundry_Wag has joined #lisp
rumbler31 has quit [Ping timeout: 244 seconds]
CYBERLARD is now known as cyberlard
Folkol has joined #lisp
cylb has joined #lisp
Kundry_Wag has quit [Ping timeout: 264 seconds]
cylb has quit [Ping timeout: 245 seconds]
astronavt_ has quit [Ping timeout: 244 seconds]
v0|d has quit [Remote host closed the connection]
shka_ has joined #lisp
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
mingus has quit [Read error: Connection reset by peer]
graphene has quit [Remote host closed the connection]
mingus has joined #lisp
nowhere_man has quit [Ping timeout: 250 seconds]
Kundry_Wag has joined #lisp
wanz has quit [Quit: wanz]
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
wanz has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
orivej has joined #lisp
phoe has quit [Ping timeout: 264 seconds]
White_Flame has quit [Ping timeout: 246 seconds]
heisig has joined #lisp
orivej has quit [Ping timeout: 245 seconds]
angavrilov has joined #lisp
Jesin has quit [Ping timeout: 264 seconds]
Jesin has joined #lisp
JohnMS_WORK has joined #lisp
Folkol has quit [Ping timeout: 240 seconds]
pierpal has quit [Read error: Connection reset by peer]
scymtym has quit [Remote host closed the connection]
Folkol has joined #lisp
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
dented42 has joined #lisp
jochens has joined #lisp
fikka has joined #lisp
DataLinkDroid has joined #lisp
hhdave has joined #lisp
asymptotically has joined #lisp
jcowan has quit [Quit: Connection closed for inactivity]
ravndal has quit [Remote host closed the connection]
nowhere_man has quit [Ping timeout: 240 seconds]
ravndal has joined #lisp
shka_ has quit [Quit: WeeChat 1.9.1]
scymtym has quit [Ping timeout: 276 seconds]
shifty has quit [Ping timeout: 264 seconds]
fikka has joined #lisp
jack_rabbit has quit [Ping timeout: 264 seconds]
fikka has quit [Ping timeout: 264 seconds]
fikka has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
warweasle is now known as warweasle_afk
jack_rabbit_ has joined #lisp
emaczen has quit [Read error: Connection reset by peer]
redeemed has quit [Quit: q]
beach has quit [Disconnected by services]
beach has joined #lisp
aydio has joined #lisp
kajo has joined #lisp
edgar-rft has quit [Remote host closed the connection]
<didi>
Can I extend function `coerce'? That is, define my own coercion.
<sjl_>
I don't think so
kdas_ has joined #lisp
<didi>
sjl_: Thanks.
<sjl_>
You could certainly define your own generic function that falls back to COERCE, but I don't think you can extend COERCE itself.
kushal has quit [Ping timeout: 256 seconds]
varjag has joined #lisp
<didi>
I see.
charh has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 264 seconds]
<|3b|>
if i'm defining an asdf module type that processes a directory of files, what do i need to do to get asdf to reprocess it when files in the dir change?
<|3b|>
right now i have (additional-input-files compile-op) that returns list of files (as relative pathnames) in the dir currently, and (perform compile-op) sees them, but it doesn't re-run compile-op if i reload the system after changing input files
kdas_ is now known as kushal
Inline has joined #lisp
robotoad has joined #lisp
warweasle_afk is now known as warweasle
<griddle>
in lisp, is there a differentiation between the idea of a "scope" and an "environment"
<beach>
Yes.
<beach>
Hold on...
<beach>
scope n. the structural or textual region of code in which references to an object, a binding, an exit point, a tag, or an environment (usually by name) can occur.
<beach>
environment n. 1. a set of bindings. See Section 3.1.1 (Introduction to Environments). 2. an environment object. ``macroexpand takes an optional environment argument.''
<griddle>
so a scope is a subset of the idea of an environment, but a scope can contain environments?
fikka has joined #lisp
Folkol has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<beach>
Scope is defined in terms of program text.
<beach>
Not so with an environment.
<beach>
Scope is not an object, so it can't contain anything.
<griddle>
which concept maps closer to a more imperative program's scope?
<griddle>
I'm thinking in terms of variable scoping
<beach>
scope.
<beach>
Most programming languages don't have the concept of an environment the way Common Lisp does.
<Inline>
lol
<beach>
And most programming languages define scope the same way as Common Lisp does.
Lycurgus has quit [Quit: Exeunt]
sunset_NOVA has quit [Quit: leaving]
nowhere_man has joined #lisp
zfree has quit [Quit: zfree]
azimut has quit [Ping timeout: 252 seconds]
zmt00 has joined #lisp
cage_ has joined #lisp
wanz has quit [Quit: wanz]
DGASAU has quit [Read error: Connection reset by peer]
akovalenko has joined #lisp
DGASAU has joined #lisp
scymtym has joined #lisp
LiamH has joined #lisp
m00natic has quit [Remote host closed the connection]
solyd has joined #lisp
Lord_of_Life has joined #lisp
rk[ghost] has joined #lisp
solyd has quit [Remote host closed the connection]
frgo has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 240 seconds]
<|3b|>
apparently my problem was returning relative paths from additional-input-files, so it failed to find timestamps
DataLinkDroid has quit [Ping timeout: 256 seconds]
nirved is now known as Guest25210
Guest25210 has quit [Killed (leguin.freenode.net (Nickname regained by services))]
nirved has joined #lisp
nowhere_man has quit [Remote host closed the connection]
Kaisyu has quit [Quit: Connection closed for inactivity]
nowhere_man has joined #lisp
DGASAU has quit [Ping timeout: 250 seconds]
jochens_ has quit [Remote host closed the connection]
jochens has joined #lisp
shka_ has joined #lisp
jochens has quit [Ping timeout: 264 seconds]
meepdeew has joined #lisp
DGASAU has joined #lisp
meepdeew has quit [Ping timeout: 252 seconds]
hhdave has quit [Quit: hhdave]
nicdev has joined #lisp
stereosphere has joined #lisp
ym has joined #lisp
ggole has quit [Quit: ggole]
nicdev has quit [Remote host closed the connection]
nirved has quit [Quit: Leaving]
rippa has joined #lisp
pjb has joined #lisp
DataLinkDroid has joined #lisp
gigetoo has quit [Ping timeout: 272 seconds]
frgo has joined #lisp
gigetoo has joined #lisp
frgo has quit [Ping timeout: 240 seconds]
warweasle is now known as warweasle_afk
SenasOzys has joined #lisp
SenasOzys has quit [Remote host closed the connection]
phoe has joined #lisp
spm_ has joined #lisp
fikka has quit [Ping timeout: 244 seconds]
sebboh has joined #lisp
orivej has joined #lisp
jack_rabbit_ has quit [Ping timeout: 272 seconds]
<sebboh>
Hi. I don't understand systems. Still. I'm writing a simple script for local use at the command line and I want to use iterate. Do I need to get that via quicklisp?
Lord_of_Life_ has joined #lisp
<sebboh>
to be clear, I don't understand "systems", cf. "packages".
<Bike>
if it's just for the command line quickload might be okay
<sebboh>
I invoke my script with `sbcl --script ~/src/foo/foo.lsp`. Yeah, I use (ql:quickload "foo" :silent t) in other, similar scripts.
<sebboh>
first line. I don't have any ASDF stuff of my own defined in my scripts.
anewuser has quit [Quit: anewuser]
Lord_of_Life has quit [Ping timeout: 244 seconds]
<sebboh>
But when I try to (ql:quickload "iterate").. then call (iter (for ...) ...) ... I get warning function not defined on ITER and FOR.
<sebboh>
when I try to (use-package 'iterate).. I get a conflict between iterate:iterate and common-lisp-user::iterate? So.. I'm doing something wrong, I'm trying to do something I don't need to do. I think.
<Bike>
if you do --script, quicklisp won't exist
<Bike>
so there's that
<Josh_2>
That's important
<Bike>
--script skips the sbcl init files that load asdf and stuff
<Bike>
now, even if iterate is loaded, you need to get the packages straight
<sebboh>
oh, right, --script skipts the sbcl init file. Right. Right now, I'm in slime. For actual --script use, I did this: http://paste.debian.net/1048669/ To be clear.. I wrote a couple scripts last year and now I'm trying to add a new one and I'm ... slowly remembering how I put these together. :)
<sjl>
because like Bike notes, you still need to figure out that in addition to the --script/startup stuff
<sebboh>
yes, the packages stuff is my problem. The --script vs quicklisp stuff I think I can handle. I have a working example.
<sebboh>
and hi sjl V.v.V
<sjl>
the symbol conflict is an unfortunate interaction between read/intern and the package system that always ends up biting new people eventually.
<sjl>
one of the package tutorials floating around describes it -- I forget which one
<sebboh>
I might be having a problem I don't need to have. Does iterate exist in CL, without resorting to quicklisp?
<sjl>
I mean, you could use LOOP instead (which is built in) but it's worth figuring this out, because *eventually* you'll probably want something that's not built in.
<phoe>
you'll want that much sooner rather than later
<sebboh>
is (ql:quickload "iterate") identical to (ql:quickload :iterate)?
<phoe>
yes, it seems to do the same thing
robotoad has quit [Ping timeout: 252 seconds]
robotoad_ has joined #lisp
<aeth>
LOOP is basically required for conditional :collect/:append as far as built-ins are concerned. It also behaves differently than do/do* when stepping through variables so knowing all three there is useful if you have a complicated iteration
<sebboh>
phoe, ok, I did (ql:quickload "iterate") (use-package :iterate) in slime, and that's when I got ... dammit, it was a heisenbug.
<sjl>
sebboh: the bug you saw was the symbol conflict, which happens when:
<sjl>
1. You try to use a symbol like iterate without importing it first.
<sebboh>
no, sorry, that's more specific. it was a timing-related problem. I remember this now. I have to wait a second when using slime and ql:quickload'ing something before doing the use-package or it fails.
<phoe>
oh yes
<sjl>
2. This means the reader reads in the string iterate, notices it hasn't seen this symbol yet, interns it in the current package.
<phoe>
you can't do (progn (ql:quickload :iterate) (iterate:iterate ...))
<phoe>
was it that?
<sjl>
3. Then you say "oops, I forgot" and use-package it, but now there's already a symbol iterate (the one it just interned) and oops: conflict.
DataLinkDroid2 has joined #lisp
<sebboh>
sjl OH! it's not timing... sjl is right, I *did* intern a symbol called iter *before* the ql:quickload... much less the use-package! And I do that like.. every time I use slime. *face palm*
<sebboh>
yep, you got it! 1, 2, 3.
<phoe>
yep
warweasle_afk is now known as warweasle
<sebboh>
ok.. why did I think it goes away after some time? What is 4. here, does my use-package succeed when I try it a second time or something?
meepdeew has joined #lisp
<sjl>
sebboh: did you select one of the first two restarts?
DataLinkDroid has quit [Ping timeout: 256 seconds]
anamorphic has quit [Quit: anamorphic]
<sebboh>
... I don't read the restarts much, I just mash 2 or 5 until the screen goes away. I withdraw my question.
<phoe>
well
<phoe>
that's an interesting approach
<sjl>
Either of those would "fix" the problem, which would let use-package finish successfully. The one that would actually fix the problem the way you want is 1 -- unintern the old, mistakenly-interned symbol and keep the new one (from iterate itself).
<sebboh>
Perhaps I will try something else next time it comes up. >_>
<sjl>
Restarts are usually worth reading. The Lisp system is trying to help you out.
<phoe>
^
<phoe>
even if you don't need them, do try to understand them
<sebboh>
obvs ^^ I agree.
<phoe>
the debugger is one of the friendliest tools in Lisp, actually
meepdeew has quit [Ping timeout: 260 seconds]
<phoe>
once you're in trouble, it has a lot of tools to help you get back up and running quickly
<sjl>
This isn't Scala where the compiler tells you to eat shit because it stack overflowed while typechecking -- CL errors are often quite good, and the restarts will sometimes let you fix the problem without having to restart whatever you were trying to do.
<sjl>
(don't ask me how we managed to make the scala typechecker blow the stack -- I have no idea)
<sebboh>
I am familar with restarts. I even have a better understanding of 'abort, retry, or fail?' as seen in DOS for PCs, now that I saw how restarts work. I got in the habit of disregarding the restarts when I realized that even if I, for example, provide a value... I'm still going to have to edit the code otherwise I'll *always* have to provide the value (for example) when I run it. So I might as well abort and
<sjl>
And you can get lots of that nice error handling support in your own code by taking advantage of things like ccase, ctypecase, check-type, assert, etc.
<sebboh>
go edit now.
<sjl>
Yeah, that is sometimes the case. If it's a long computation it's nice to have the option to not have to restart the entire thing.
<sebboh>
right!
<sjl>
An example of a "long computation" might be the main loop of a video game, which is one reason I like Lisp for gamedev.
<pjb>
sebboh: to answer to both your questions (that you don't understand systems, systems vs. packages, and whether you need to get iterate via quicklisp), no, you must not get iterate via quicklisp.
<sebboh>
thanks for all the support all. Oh, here comes pjb
<pjb>
sebboh: try to locate a git repository, or a tarball with the sources of iterate. download it, unpack it. Read the README.
<sjl>
s/must not/are not required to/
<pjb>
sebboh: this will be the best way to learn about all this.
<sebboh>
oh. Uh, certainly. But if I do that, I'll end up authoring yet-another-asdf-abstraction-layer
<pjb>
Well, not exactly. Because I bet the tarball or git repo of iterate will already contain an asd file.
Copenhagen_Bram has quit [Ping timeout: 272 seconds]
<sebboh>
presently if I am going to git clone some CL system that is already in the quicklisp manifest, I'm going to git clone it straight into quicklisp/local-projects ... ;)
<phoe>
yes, it will
<phoe>
sure, but iterate is already in quicklisp
FreeBirdLjj has quit [Remote host closed the connection]
<phoe>
so unless you are modifying iterate, you don't need to put it in local-projects.
<pjb>
sebboh: the point of the exercise, is indeed to make you realize what you would have to author as tools. So you will understand the point of quicklisp and asdf, what systems are, vs. packages and the rest of the lisp code.
<Josh_2>
sebboh: if you have already quickloaded iterate it'll already exist in ~/quicklisp
DataLinkDroid3 has joined #lisp
<sebboh>
I mean if I do pjb's suggestion and do the exercise, then I'll -- yes, to see the landscape from the point of view of the author of cl systems meant to be shared.
Kundry_Wag has joined #lisp
edgar-rft has joined #lisp
Copenhagen_Bram has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
DataLinkDroid2 has quit [Ping timeout: 256 seconds]
<anamorphic>
Would something like (group-by seq &key test/predicate key) belong in alexandria?
<phoe>
anamorphic: serapeum:partition
<anamorphic>
Oh very cool. I wasn't aware of that project
fikka has quit [Ping timeout: 244 seconds]
zmt00 has quit [Ping timeout: 260 seconds]
aydio has quit [Quit: WeeChat 2.2]
aydio has joined #lisp
aydio has quit [Client Quit]
aydio has joined #lisp
fikka has joined #lisp
<cgay>
phoe: serapeum doesn't show up in the "utilities" category on quickdocs: http://quickdocs.org/search?q=utilities you can find it by search for serapeum, but you have to know the name first. not sure if you're the author...might be worth fixing.
<fouric>
My first thought is start with a hash table, and then replace it with a struct + hash table using macros
<fouric>
well yes but i mean how
<fouric>
(where the struct holds (1) the hash table and (2) all of the keys that can be determined at compile-time)
<fouric>
...but i don't know how i would even begin to build up some global table of keys at macro-expansion time
<fouric>
...is this possible?
<phoe>
hmm
frodef has quit [Ping timeout: 264 seconds]
<Bike>
how much is moved to compile time, exactly? is (gethash 'whatever table) reduced to a constant, an array lookup,what?
maarhart has joined #lisp
<phoe>
compile-time lookups are detected and turned into constant accesses from what I see
orivej has quit [Ping timeout: 240 seconds]
<phoe>
and runtime lookups are backed by a standard hashmap
<Bike>
"constant accesses" meaning an array lookup or a constant?
orivej has joined #lisp
maarhart has quit [Client Quit]
<Bike>
i mean like, if you just want to do sxhash at compile time that's fairly easy
<Bike>
(if you have your own hash table implementation)
<Bike>
implementation might even do it foryou
<phoe>
uh, a compiler macro around gethash?
<phoe>
I assume that it can detect when keys are literals
<phoe>
which is what this utility seems to solve
<Bike>
yeah.
<phoe>
but we'd also need a compiler macro around SETF GETHASH
<phoe>
because (setf (gethash ...) "foo") - we need to access "foo"
<didi>
Oh, pity. `format' can use a different _char_ to separate groups of digits with ~D, but I want to use more than one char.
<Bike>
yeah. easy.
<phoe>
can we write compiler macros around SETF forms?
<Bike>
you can write compiler macros for setf functions.
<Bike>
or you can implement setf gethash with a setf expander
<Bike>
in which case you can do whatever at compile time anyway
<phoe>
Bike: my question is, by a time a compiler macro function runs, does it have access to the argument it is called with? like, can it detect whether it is a literal?
<phoe>
......I think I just asked a silly question
<phoe>
of course it does, that's the whole point of compiler macros
<Bike>
it has access to the forms, like a macro does
<Bike>
you can use constantp and eval to get the value
<Bike>
(or constant-form-value for eval if your implementation is nice)
Selwyn has joined #lisp
<phoe>
cgay: serapeum author will look into it.
orivej_ has joined #lisp
orivej has quit [Ping timeout: 268 seconds]
<anamorphic>
separeum:partition wasn't quite what I was after. I was hoping to group by a predicate and have a hashtable with keys that are the values passed to the predicate. e.g. (group-by '(11 22 33) #'oddp) => hastable with t -> (11, 33) and nil -> (22). Basically what group-by does in clojure
<phoe>
anamorphic: serapeum:assort
fikka has quit [Ping timeout: 245 seconds]
didi has quit [Remote host closed the connection]
<fouric>
wait, in order to implement this, though, wouldn't you need to actually track individual semimaps around? like, if i create a semimap "foo" in one scope and then pass it to a function, doesn't it become incredibly difficult to connect the inferences in the function (e.g. in function bar which was called with the semimap foo, we see that there's a constant access of a key :baz, but then how do we "propagate"
<fouric>
that back to the caller, which has the LET which created foo?)
<cgay>
cool, thanks phoe
<Bike>
i would put that in give up and go to runtime, yes
fikka has joined #lisp
Josh_2 has quit [Read error: Connection reset by peer]
<anamorphic>
phoe: Thanks! That get's me most of the way there
<fouric>
one of the things that jumps to mind is porting this stuff to another language
<cgay>
fouric: i'm writing a package manager and workspace tool for Dylan
<sjl_>
Just to be clear: quickdocs is just a random site that programatically generates documentation for everything in quicklisp, it's not maintained by the same people (person) as quicklisp, doesn't have a way to customize/redirect what gets shown, etc.
<fouric>
i c
<Xach>
Dylan!!
<fouric>
oh gosh it has bad syntax
<cgay>
here we go...
<cgay>
strap in everyone.
<sjl_>
anamorphic: might be worth letting it take a :test arg to speficy the test of the resulting hashtable
<fouric>
cgay: you came to a lisp channel, what did you expect? :P
<anamorphic>
sjl_: very good idea
<sjl_>
in case you're trying to group by a string or whatever
<cgay>
you guys have more interesting discussions. :)
* Xach
used to work with some dylan people
<cgay>
Xach, I think you hung out in #dylan for a time, about 10 years ago?
<Xach>
cgay: That doesn't seem too likely, but it's possible. I never seriously looked into Dylan. For a while I worked with Andrew Shalit and he of course is one of the authors of the reference manual.
* Xach
should have gotten a copy at the time
<cgay>
I can link you. :) But I'm not giving you one of my precious copies unless you do some Dylan work.
<Xach>
I have nothing against dylan but don't want to discuss it in #lisp - there is sometimes a tendency of people working on their own language or language tools to come here and discuss their own things and only thinly disguise it as CL discussion. or not even attempt the disguise...
<cgay>
yup. 'nuff said.
<Xach>
7 ago today nikodemus and I and a few others were in a late night chip shop in amsterdam trying to think of a name for a new project, and settled on sharplispers
<Xach>
"7 years" rather
<fouric>
"chip" being of the potato or the silicon kind?
<Xach>
silicon - all the hottest computer shops are open late in amsterdam!
jkordani_ has joined #lisp
jkordani has quit [Ping timeout: 240 seconds]
<jcowan>
Dylan is on-topic in ##lisp, though
<cgay>
I'm not even sure what that is.
<fouric>
another channel
<fouric>
for general lisp conversation - #lisp is CL-only
<cgay>
Have I mentioned naming issues?
devon has quit [Ping timeout: 268 seconds]
dddddd has joined #lisp
anamorphic has quit [Quit: anamorphic]
Selwyn has quit [Remote host closed the connection]
nlyy is now known as nly
frodef has joined #lisp
lumm has joined #lisp
cage_ has quit [Quit: Leaving]
warweasle_afk has quit [Quit: rcirc on GNU Emacs 24.4.1]
<cgay>
jcowan: yup, I just meant I didn't know how it differed from #lisp.
<jcowan>
It's about All The Lisps
mejja has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
rumbler31 has joined #lisp
fikka has joined #lisp
rumbler31 has quit [Ping timeout: 244 seconds]
fikka has quit [Ping timeout: 272 seconds]
dale_ has joined #lisp
dale_ is now known as dale
aydio has quit [Quit: WeeChat 2.2]
Josh_2 has joined #lisp
<pjb>
cgay: phoe: yes, currently it's not in quicklisp, because new sbcl releases detect compilation errors in it, and I'm not paid by sbcl to update my software each time they issue new releases. I'm not against correct it, but it takes time that I don't have.
<pjb>
Of course, it's free software, pull requests will be considered.
rumbler31 has joined #lisp
rumbler31 has quit [Remote host closed the connection]
Roy_Fokker has joined #lisp
<phoe>
What are the methods for Lisp syntax highlighting in LaTeX?
bendersteed has joined #lisp
lavaflow has quit [Read error: No route to host]
<phoe>
Got it - it's minted.
Bike has quit [Ping timeout: 256 seconds]
hjudt has quit [Ping timeout: 252 seconds]
warweasle has joined #lisp
<aeth>
Yes.
<phoe>
Huuh, now the question is, how do I teach it proper Lisp highlighting...
<aeth>
oni-on-ion: You can replace the hash with "master" and it will work for now, it just won't be permanent
<oni-on-ion>
kk
<aeth>
i.e. blob/master/data
hjudt has joined #lisp
AroPar has joined #lisp
<oni-on-ion>
yea =)
<oni-on-ion>
hm eww doesnt like gitlab
<aeth>
Anyway, the proper way to write in a Lisp-2 is to use the Lisp-2ness of it. A variable of type symbol should be called symbol if there's only one. (So glsl-name a few lines down is probably a better example of this.)
* oni-on-ion
firefox browses
<aeth>
But people who write syntax highlighting probably are using Foo-1s where Foo is their language family
<oni-on-ion>
hm ok i see it. define-function == scheme defun ?
<aeth>
I wouldn't be surprised if it also highlights if/let/etc. incorrectly when using that as a variable (could happen in macros)
<aeth>
oni-on-ion: define-function is my defun macro that combines type declarations
<oni-on-ion>
ah. i'm on dark mode nothing is highlighted. not sure why i checked
<aeth>
oni-on-ion: I could call it defun* but there are several dozen of those already :-)
slightlycyborg has joined #lisp
<oni-on-ion>
i like it =)
<oni-on-ion>
especially if using lisp at the speed of thought - d-f <TAB> -> define-function
<slightlycyborg>
Hello. I setf *standard-output* but it keeps getting reset to swank. What gives?
eddof13 has joined #lisp
<aeth>
Basically, it takes keyword arguments in the name if there are any, so (define-function (foo :inline t) ...) instead of (declaim (inline foo)) (defun foo ...)
<oni-on-ion>
slightlycyborg: try a let
<oni-on-ion>
keywords? agh *runs*
<aeth>
And it combines the type declarations in with the lambda-list in a very similar way to the classes in defmethod (the main difference is it supports keyword and optional, but defmethod does not)
<slightlycyborg>
oni-on-ion ah, but I want it redefined for my entire session
<aeth>
oni-on-ion: It uses keywords because it's basically a destructuring-bind with a &key. (Not quite that because it has to handle the case of (define-function foo ...) as well as (define-function (foo ...) ...))
<aeth>
If I didn't support the flat version, I could just put the keywords in the macro lambda-list directly.
bendersteed has quit [Read error: Connection reset by peer]
Bike has joined #lisp
<oni-on-ion>
slightlycyborg: hmmm
<oni-on-ion>
i dont fully quite understand yet why i dont like keywords, actively figuring this out
azimut has joined #lisp
jebes has joined #lisp
sjl_ has quit [Quit: WeeChat 2.3-dev]
<sebboh>
function all-maxed returns T or nil. It's the answer to the question "are all these maxed out?" Do I named it all-maxed-p or all-maxedp ?
Josh_2 has quit [Ping timeout: 240 seconds]
<oni-on-ion>
latter, i feel
<oni-on-ion>
(in scheme it would be a ?, so imagine all-maxed-?)
<aeth>
sebboh: Easiest way to handle things is to consistently use a -p (or even ?) imo
<aeth>
even foo-p
<sebboh>
I figured it would come down to feelings. :) I invite further feedback. yeah I like -p over p. But listp...
<aeth>
I'm biased against names that cannot be handled by an algorithm, though.
<oni-on-ion>
aeth: he is asking about the last hyphen
<oni-on-ion>
stringp, evenp, numberp ...
<aeth>
oni-on-ion: If you consistently write foo-p then there's no issue with foo-bar-p vs. foo-barp
<oni-on-ion>
but it is not .. notp, andp, orp ...
<oni-on-ion>
barp =P
<sebboh>
barp ; returns true if it is five o'clock somewhere
<aeth>
sebboh: the standard in the standard is to have foop if it's one word and foo-bar-p if it's two words, with some rare edge cases where the prefix modifies it in such a way that foo-barp makes more sense
<sebboh>
aeth: sold! I'll use all-maxed-p
<oni-on-ion>
makes sense. not disagreeing
<sebboh>
thanks!
<aeth>
So if you're doing foo-zerop that makes sense. or e.g. string-lessp
<sebboh>
wait
<aeth>
But... if you consistently use "-p" even for one word you never have to think about the edge cases.
phoe has quit [Ping timeout: 244 seconds]
<aeth>
sebboh: It would be all-maxed-p
<aeth>
sebboh: Because you're saying (all-maxed)? not all-(maxed?)
<sebboh>
oh foo-zerop is the edge case, because... foo is a prefix?
<aeth>
in this case foo would be e.g. a type
<aeth>
so if zerop wasn't generic you could have complex-zerop
<oni-on-ion>
let's ask the whole community at large
<aeth>
sebboh: but a minority style (and it's probably 60/40 so only a slight minority) that simplifies all of this is to consistently write "foo-p". Then everything ends in "-p" and there are no edge cases.
<sebboh>
I fear clicking those links because I am happy with all-maxed-p. ...damn, how many minutes have I been picking the name? I should have wrote the defun while I had it in mind and named it afterwards.
<sebboh>
aeth: I support your -p paradigm.
<oni-on-ion>
the main answer is basically as aeth says, if its one word than P, if its multi than -P
<oni-on-ion>
have no feer i think we all agree heer
<oni-on-ion>
=)
<sebboh>
while recognizing the existant foop.
<oni-on-ion>
help =P
<aeth>
Personally I use "foo?" most of the time and "foo-p" almost every other time. The most recent "foop" I wrote was actually the edge case I was talking about, three-zerop, which is just (defun three-zerop (a b c) (and (zerop a) (zerop b) (zerop c)))
<aeth>
If I'm trying to be very idiomatic I'll use "-p" consistently, even for "foo-p" and if I'm already writing code people will complain about (e.g. using define-function) I'll just go ahead and use foo? most of the time. I use foo? in variable names that hold booleans even in idiomatic code.
<aeth>
I also tend to consistently use define-foo instead of the deffoo/define-foo-bar divide that the standard usually (but not entirely, see define-condition) uses.
<cgay>
I've always liked the -p convention better than the ? convention because occasionally I want to have a verbal conversation about some code and saying foo-pee is clearer than saying "foo" with question intonation. I freely admit this is not a strong argument.
<aeth>
Consider the case of syntax highlighters. (foo-p 1 2) and (foo? 1 2) could highlight the function names if you chose to do so for some reason. (foop 1 2) cannot be highlighted unless it's a known special case, so that would only happen to a big list of predicates in the package CL
<aeth>
Also e.g. grepping your code.
<cgay>
I guess I could say "foo-q" though. Is saying "foo-q" a thing in the Scheme community? :)
<Xach>
¿que?
<Bike>
qredicate
<Xach>
ha
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jcowan>
Schemers don't really have a problem with writing `foo?` and saying "foo p"
<cgay>
ah, i see
Trystam has joined #lisp
<Bike>
it could just be like mandarin and indicate a rising tone
<oni-on-ion>
or teenager making casual statement with uncertainty
<cgay>
English questions are basically mandarin second tone. I just don't think it works very well verbally.
<cgay>
But since I've never been ensconsed in the Scheme community and there basically is no Dylan community it's mostly a problem I made up in my head.
<jcowan>
also we don't use ? if the truthy value is actually useful for something
orivej_ has quit [Ping timeout: 264 seconds]
<oni-on-ion>
we can say numberp? =)
orivej has joined #lisp
<cgay>
This being #lisp I felt ensconsed was the correct spelling.
anamorphic has joined #lisp
AroPan has joined #lisp
* jcowan
chortles
<aeth>
jcowan: What is your title in the Scheme community, btw? Lead Schemer?
<jcowan>
Chair of Working Group Two is fine
<jcowan>
not a title, just a role
<jcowan>
certainly not any title that would be inconsistent with a fair amount of ignorance
AroPan has quit [Client Quit]
AroPar has quit [Ping timeout: 264 seconds]
rumbler31 has joined #lisp
varjag has quit [Ping timeout: 252 seconds]
dvdmuckle has quit [Quit: Bouncer Surgery]
dvdmuckle has joined #lisp
anamorphic has quit [Quit: anamorphic]
Copenhagen_Bram has quit [Read error: Connection reset by peer]
Copenhagen_Bram has joined #lisp
frodef has quit [Ping timeout: 244 seconds]
pjb has quit [Ping timeout: 264 seconds]
Copenhagen_Bram has quit [Ping timeout: 240 seconds]
ym has quit [Quit: Leaving]
Copenhagen_Bram has joined #lisp
LiamH has quit [Quit: Leaving.]
pierpa has joined #lisp
Bike has quit [Ping timeout: 256 seconds]
eddof13 has quit [Quit: eddof13]
<oni-on-ion>
=p
rumbler31 has quit [Remote host closed the connection]
anamorphic has joined #lisp
eddof13 has joined #lisp
eddof13 has quit [Client Quit]
anamorphic has quit [Client Quit]
robotoad_ has quit [Quit: robotoad_]
meepdeew has joined #lisp
shifty has joined #lisp
igemnace has quit [Quit: WeeChat 2.3]
ryan_vw has joined #lisp
dale has quit [Quit: dale]
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]