<no-defun-allowed>
a turing complete machine might run JS
<no-defun-allowed>
but a smart machine would refuse to run it
<dwrngr`>
I think of it like the street slang of programming. It has a consistency to it and you have to keep up somewhat in order to fit in. But it gets in the way in a professional setting :P
<dwrngr`>
I guess Typescript is supposed to make it more tolerable there, but personally the limited times I have to use it I've found parenscript to make life a lot simpler
<dwrngr`>
different means to different ends I suppose
wheelsucker has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
<aeth>
note that even typescript can't give JS a sane type system
<aeth>
(And if you wanted to do a TypeScript-like-thing in CL all you'd need is a handful of macros)
siraben has joined #lisp
chipolux has quit [Quit: chipolux]
dwrngr` has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Ping timeout: 240 seconds]
kajo has quit [Ping timeout: 265 seconds]
kajo has joined #lisp
stardiviner has joined #lisp
Kundry_Wag has joined #lisp
fowlduck has joined #lisp
Kundry_Wag has quit [Ping timeout: 256 seconds]
allcr has joined #lisp
jinkies has joined #lisp
quipa_ has joined #lisp
robotoad has quit [Quit: robotoad]
chipolux has joined #lisp
quipa has quit [Ping timeout: 240 seconds]
buffergn0me has joined #lisp
chipolux has quit [Ping timeout: 240 seconds]
smokeink has joined #lisp
sthalik has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
<Shinmera>
LispWorks has it, if I remember correctly
<edgar-rft>
v0|d: it's called a "tree-shaker" what you're looking for
<v0|d>
interesting:)
<aeth>
I think one problem is that large Lisp programs will probably use most of the language, especially if they're using dependencies that can be very stylistically different from each other.
<edgar-rft>
it sounds easier than it is because you need to remove all unused implementation-internals, too
<aeth>
Right, the implementation internals might also use stuff like e.g. structure-objects even if you don't use any
<v0|d>
any ideas on the size of the binaries?
<Shinmera>
SBCL with core compression on produces binaries around the 10MB range.
<v0|d>
Shinmera: lispworks is closed source, right? can't see the implementation.
<edgar-rft>
write an assembler in CL and you'' get really small binaries
<Shinmera>
It is a commercial implementation.
<v0|d>
Shinmera: I had ecl binaries under 1MB.
<MichaelRaskin>
Do they link against libecl.so, though?
<v0|d>
edgar-rft: how so?
<v0|d>
edgar-rft: would you mind elaborating.
<v0|d>
MichaelRaskin: nah, i can do static, strip etc.
smokeink has quit [Ping timeout: 268 seconds]
<MichaelRaskin>
Nice
<edgar-rft>
v0|d: how so what? tree shaking implementation internals or writing a micro assembler
<v0|d>
edgar-rft: first one is interesting.
<edgar-rft>
every ANSI CL function must be defined from something. This "something" must be removed from the final binary, too. What "something" is depends on the Common Lisp implementation.
<jackdaniel>
edgar-rft: why it needs to be removed?
<jackdaniel>
(example: small forth interpreter written in C used to bootstrap some functions and target compiler may be a part of a final runtime too)
<edgar-rft>
jackdaniel: because you can't reduce the size of a binary by *adding* stuff
FreeBirdLjj has joined #lisp
<jackdaniel>
hm, I must miss a context, I thought it is a general statement
<edgar-rft>
the question was howto reduce the size of a binary and the discussion was howto write a treeshaker
<jackdaniel>
OK, thank you (and sorry for being lazy with backlog)
reu has quit [Ping timeout: 265 seconds]
<edgar-rft>
jackdaniel: but it was said that ECL produces small binaries, maybe you're the right man to help :-)
<jackdaniel>
sure, you can build a minimal statically linked program in around ~200KB
<edgar-rft>
v0|d: ^^
<jackdaniel>
of course such runtime would only carry bytecodes compiler (but binary itself may be compiled to native beforehand), no ASDF etc
<jackdaniel>
needless to say, you may add module loading on demand (if present in form of fas files) - that way you may add compiled native module to a runtime
<jackdaniel>
[like asdf, C compiler etc)
makomo has joined #lisp
<jackdaniel>
McCLIM aligning text to right, wrapping by word against a margin and aligned vertically *above* bottom margin: http://i.imgur.com/Vbnr6Qx.png
JuanDaugherty has joined #lisp
argoneus has quit [Quit: No Ping reply in 180 seconds.]
argoneus has joined #lisp
iskander has quit [Ping timeout: 240 seconds]
buffergn0me has quit [Ping timeout: 240 seconds]
makomo has quit [Ping timeout: 244 seconds]
dddddd has quit [Remote host closed the connection]
jinkies has quit [Ping timeout: 240 seconds]
JuanDaugherty has quit [Quit: Exeunt]
angavrilov has joined #lisp
funnel has quit [Remote host closed the connection]
funnel has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
funnel has quit [Ping timeout: 256 seconds]
funnel has joined #lisp
edgar-rft has quit [Remote host closed the connection]
lel has quit [Ping timeout: 260 seconds]
lel has joined #lisp
funnel has quit [Ping timeout: 272 seconds]
azimut has quit [Ping timeout: 260 seconds]
funnel has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
mn3m has joined #lisp
smokeink has joined #lisp
mn3m has quit [Quit: mn3m]
mn3m has joined #lisp
azimut has joined #lisp
ebzzry has joined #lisp
Inline has quit [Quit: Leaving]
smokeink has quit [Remote host closed the connection]
robotoad has quit [Quit: robotoad]
ebzzry has quit [Read error: Connection reset by peer]
Inline has joined #lisp
robotoad has joined #lisp
schweers has joined #lisp
varjag has joined #lisp
varjag has quit [Client Quit]
random-nick has joined #lisp
varjag has joined #lisp
smokeink has joined #lisp
smokeink has quit [Remote host closed the connection]
funnel has quit [Ping timeout: 240 seconds]
ft has quit [Remote host closed the connection]
mn3m has quit [Ping timeout: 272 seconds]
robotoad has quit [Quit: robotoad]
mkolenda has quit [Remote host closed the connection]
mkolenda has joined #lisp
dddddd has joined #lisp
makomo has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
Kundry_Wag has joined #lisp
schweers has quit [Ping timeout: 240 seconds]
vlatkoB_ has joined #lisp
makomo has quit [Ping timeout: 272 seconds]
edgar-rft has joined #lisp
hvxgr_ has joined #lisp
vlatkoB has quit [Ping timeout: 272 seconds]
makomo has joined #lisp
funnel has joined #lisp
Bike has joined #lisp
kamog has joined #lisp
thinkpad has quit [Quit: lawl]
charh has quit [Ping timeout: 272 seconds]
thinkpad has joined #lisp
Kundry_Wag has quit [Ping timeout: 256 seconds]
Kevslinger has joined #lisp
mb01 has joined #lisp
orivej has joined #lisp
kajo has quit [Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.]
Inline has quit [Quit: Leaving]
pjb has joined #lisp
NoNumber has joined #lisp
Inline has joined #lisp
Inline has quit [Remote host closed the connection]
Inline has joined #lisp
Inline has quit [Remote host closed the connection]
Inline has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
thinkpad has quit [Quit: lawl]
thinkpad has joined #lisp
trafaret1 has joined #lisp
<trafaret1>
hi there
<trafaret1>
such quick question
<trafaret1>
is it possible with stat and lisp beat the bookies?
<beach>
I don't even parse your question.
<trafaret1>
I mean is it possible with statistic and lisp make bookies cry?
<random-nick>
what are bookies
<beach>
No more nor less than with statistics and any other programming language.
<beach>
I am guessing bookmakers.
<trafaret1>
bookmakers
<trafaret1>
I guess lisp better choice
<trafaret1>
because it good at processing lists of information
wigust has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
funnel has quit [Ping timeout: 248 seconds]
<pierpal>
you aren't getting any replies because we are all busy making bookies cry
funnel has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
Kundry_Wag has joined #lisp
ebrasca has quit [Remote host closed the connection]
<trafaret1>
pierpal: share your methods dont' be greedy
<trafaret1>
:)
<pierpal>
I could but then I'd have to kill you
<trafaret1>
pierpal: Stallman don't be proud of you
<pierpal>
let's move to lispcafe
<trafaret1>
pierpal: lispcave
<pierpal>
anyway I recommend you this book https://www.amazon.it/dp/B004IASVJK it's highly educational, as are the other books by the same author.
NoNumber has quit [Ping timeout: 260 seconds]
omilu has joined #lisp
quipa has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
nika has joined #lisp
thinkpad has quit [Quit: lawl]
thinkpad has joined #lisp
Kundry_Wag has quit [Ping timeout: 248 seconds]
ym has quit [Quit: Leaving]
kenster has joined #lisp
nanoz has joined #lisp
kerrhau has quit [Ping timeout: 256 seconds]
HighMemoryDaemon has joined #lisp
kirkwood has quit [Remote host closed the connection]
<HighMemoryDaemon>
What's a good site for pasting my Lisp code to share a link? Hastebin, my go-to, seems to be down.
<emaczen>
How do you tell hunchentoot to serve an image with define-easy-handler? To serve HTML the body is just an HTML string, and so I am confused about how you would serve an image?
shlecta has joined #lisp
mindCrime_ has joined #lisp
mindCrime has quit [Ping timeout: 240 seconds]
mindCrime__ has joined #lisp
ym has joined #lisp
renzhi has quit [Ping timeout: 256 seconds]
kamog has quit [Remote host closed the connection]
mindCrime_ has quit [Ping timeout: 260 seconds]
<Demosthenex>
ok, wait. in CL (cdr nil) is nil instead of throwing an error? maybe it's my time spent in scheme, but i thought that'd throw an error
buffergn0me has joined #lisp
<pjb>
Demosthenex: that's correct.
<loli>
in CL you can even do (car nil)
rozenglass has joined #lisp
robotoad has joined #lisp
<Demosthenex>
yeah, i just expected an error that i didn't give it a cell
<Demosthenex>
i always wrap assoc calls in (or (assoc :key alist) '(nil . nil)) so that i can safely cdr a default value when no key exists
<Demosthenex>
because i expect cdr to throw an exception if it doesn't receive a cons cell
pjb has left #lisp ["ERC (IRC client for Emacs 25.1.1)"]
pjb has joined #lisp
<Demosthenex>
anyway, yeah, i'm enjoying common lisp. working with my son and trying to show him assoc lists.... but i guess we don't need that or for association lists ;]
<pjb>
For example (nth 42 '(a b c)) #| --> nil |#
<pjb>
But (elt '(a b c) 42) #| ERROR: 42 is not a valid sequence index for (a b c) |#
<pjb>
because elt works on vectors too: (elt #(a b c) 42).
kerrhau has joined #lisp
<Demosthenex>
just amused that i was trying to show him a "TADAAAA" moment where it'd throw an error when we searched for a bad key, and.... instead it just returned nil. of course i was surprised l;]
<Bike>
assoc additionally allows nil elements, so ((a . b) nil (c . d)) is a valid alist.
JuanDaugherty has quit [Quit: Exeunt]
<pjb>
Demosthenex: but since nil is both false, empty list, and no value, this is there reason why you can write (or (cdr (assoc key a-list)) "Hello")
<pjb>
ie. easily provide a default value if the value is absent or null.
<pjb>
Which doesn't prevent you to distinguish those cases (assoc key a-list) is true if it's present as `(,key . nil)
buffergn0me has quit [Ping timeout: 240 seconds]
<Demosthenex>
yeah, i can still use the or for a nonnil default value
<Demosthenex>
but here, nil is enough
<Demosthenex>
just checking whether an exit is blocked in a room. he's chosen to keep his map data in a 2d array of alists
<Demosthenex>
i may show him structures soon too ;]
shlecta has quit [Read error: Connection reset by peer]
slyrus2 has joined #lisp
shlecta has joined #lisp
emacsomancer has joined #lisp
slyrus has quit [Ping timeout: 240 seconds]
slyrus1 is now known as 17SAAN4EB
sjl has quit [Quit: WeeChat 2.2-dev]
test1600 has joined #lisp
renzhi has joined #lisp
JuanDaugherty has joined #lisp
JuanDaugherty has quit [Quit: Exeunt]
aindilis has joined #lisp
emacsomancer has quit [Quit: b]
nika has quit [Quit: Leaving...]
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
fikka has joined #lisp
robotoad_ has joined #lisp
light2yellow has joined #lisp
robotoad has quit [Ping timeout: 268 seconds]
robotoad_ has quit [Read error: Connection reset by peer]
robotoad has joined #lisp
Kundry_Wag has joined #lisp
trafaret1 has left #lisp ["ERC (IRC client for Emacs 25.2.2)"]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
narendraj9 has joined #lisp
fikka has quit [Ping timeout: 260 seconds]
FreeBirdLjj has quit [Ping timeout: 248 seconds]
<kenster>
hey, how do I convert a non list argument into a list, and evaluate that list?
<Bike>
I think you may be somewhat confused about how macros work.
<kenster>
okay
<Bike>
(defmacro with-foreign-class ((class-name &rest params) instance &body body) `(let ((,instance nil)) (unwind-protect-foreign-class ,instance (setf ,instance (make-instance ,class-name ,@params))) ,@body))) might be what you want?
<Bike>
You're the one doing quotation there, like in ',(second spec), but you don't actually want to, so...
<kenster>
hmmm
<Bike>
oh, and then you'd use it like (with-foreign-class (hosting-session :id (gensym ..) :in-progress t ...) ...)
<kenster>
very nice
<kenster>
I didn't really know you could have it like that
<kenster>
destructuring spec in the args
<Bike>
yeah, macro lambda lists can be nested like that.
<kenster>
wew
<Bike>
Anyway, the point is that you don't need to bind the params to a variable, or quote them, or anything.
<Bike>
If it gets confusing, try writing out a macro form you'd like to have, and then manually write what the expansion ought to be.
<kenster>
I know that
<Bike>
In this case, I think it's intuitive that we'd want a simple make-instance form like that.
<kenster>
I assembled the args like that because I didn't know about the args in the macro definition
<kenster>
so I manually car/cdr'd that
<kenster>
and it was messy
<Bike>
well, tha'ts not really the hproblem part
<Bike>
you could have (defmacro with-foreign-class (spec instance &body body) `(bla bla bla (make-instance ,(first spec) ,@(second specd))))
<Bike>
second spec
<kenster>
ah right
<Bike>
the point is more that you had these let bindings with quotes and all
<kenster>
yeah I tend to get confused about that
<kenster>
thanks Bike!
fikka has quit [Ping timeout: 240 seconds]
<Bike>
no problem
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
charh has joined #lisp
Kundry_Wag has quit [Ping timeout: 268 seconds]
nanoz has quit [Ping timeout: 272 seconds]
X-Scale has quit [Ping timeout: 244 seconds]
fikka has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
emacsoma` has quit [Ping timeout: 244 seconds]
pierpal has quit [Quit: Poof]
random-nick has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
random-nick has joined #lisp
fikka has joined #lisp
kajo has joined #lisp
slyrus1 has joined #lisp
17SAAN4EB is now known as slyrus
fikka has quit [Ping timeout: 272 seconds]
X-Scale has joined #lisp
vlatkoB_ has quit [Remote host closed the connection]
emacsomancer has quit [Read error: No route to host]
pierpa has joined #lisp
razzy has quit [Read error: Connection reset by peer]
razzy has joined #lisp
razzy has quit [Read error: Connection reset by peer]
razzy has joined #lisp
fouric has quit [Quit: WeeChat 2.1]
test1600 has quit [Quit: Leaving]
emacsomancer has joined #lisp
kerrhau has quit [Remote host closed the connection]
kerrhau has joined #lisp
quipa has quit [Quit: Leaving]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
fikka has joined #lisp
White_Flame has quit [Ping timeout: 240 seconds]
White_Flame has joined #lisp
fikka has quit [Ping timeout: 256 seconds]
angavrilov has quit [Remote host closed the connection]
allcr has joined #lisp
shlecta has quit [Ping timeout: 240 seconds]
pierpal has quit [Ping timeout: 244 seconds]
emacsoma` has joined #lisp
emacsoma` has quit [Remote host closed the connection]
emacsoma` has joined #lisp
<AeroNotix>
can the setf place be a variable? E.g. (setf (foo bar) value) where foo and bar are symbols which have the values of what I want setf to operate on?
<Shinmera>
foo must either be the name of a setf-expander, or constitute the function name (setf foo)
<Shinmera>
So: no
<AeroNotix>
drats
<Shinmera>
If all your possible foo places are implemented via functions rather than setf expanders you can simply instead do (funcall `(setf ,foo) value bar)
<AeroNotix>
Yes, they're implemented as functions
<AeroNotix>
thanks
fikka has joined #lisp
fikka has quit [Ping timeout: 260 seconds]
equwal has quit [Ping timeout: 248 seconds]
<pjb>
AeroNotix: you can (setf (values foo bar) (values 1 2))
<pjb>
AeroNotix: if you insist, you can (setf (my-variables foo bar) value)
<pjb>
AeroNotix: the trick is to understand the basic feature of lisp which is taught in the 2nd part of the 5 minute introduction to lisp.
<Shinmera>
pjb: He means that foo should denote the place to pass bar and the value to, not foo being another variable to set.
<pjb>
That is: ALL lisp expressions are lists whose FIRST element is the name of the operator!
<Shinmera>
And that's also wrong.
<Shinmera>
All lisp /forms/ are lists whose first element is the operator
<pjb>
Oh, yes.
<pjb>
Then it can be written (funcall `(setf ,foo) value bar)
<pjb>
IF foo refers to a setf function.
<pjb>
otherwise: (funcall foo value bar) if foo is bound to the writer function.
equwal has joined #lisp
equwal has quit [Remote host closed the connection]
<pjb>
There may be a way to macroexpand if foo is bound to the name of a macro.
equwal has joined #lisp
<pjb>
And finally if it's bound to the name of an implementation specific accessor, then you would have to use eval, which will be difficult.
<random-nick>
Shinmera: can't forms also be symbols and self-evaluating objects?
<Shinmera>
Yes
<pjb>
random-nick: there's no difference between the terms form, sexp, data, lisp object, expression, etc.
<pjb>
And furthermore, the CL implementation don't know anything about the glossary.
<Shinmera>
But it defines terms that we go by.
<pjb>
Again, see my code!
<Shinmera>
If you want to argue semantics, please do it somewhere else.
<pjb>
I'm starting to be fed up with natural languages and their idiosyncrasies.
<no-defun-allowed>
lists set up correctly can be used as code and data
<no-defun-allowed>
most of the meaning is just intention
<pjb>
lists and atoms.
<no-defun-allowed>
and atoms, yes those too. the only real difference between code/data is how they are used.
<pjb>
no-defun-allowed: I would even argue against that: (let ((x #(1 2 3))) (identity x) (eval x)) the same lisp object is being used as data AND as code!
<pjb>
no-defun-allowed: see it more like the dual nature of physics: particule & probability wave function.
<no-defun-allowed>
oh damn
razzy has quit [Remote host closed the connection]
razzy has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 244 seconds]
jinkies has quit [Ping timeout: 265 seconds]
v0|d has quit [Ping timeout: 240 seconds]
acolarh has quit [Ping timeout: 248 seconds]
varjag has quit [Ping timeout: 240 seconds]
fikka has joined #lisp
random-nick has quit [Read error: Connection reset by peer]
sjl has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
<White_Flame>
even more literally: (defmacro defun-with-source (name params &body body) `(progn (register-source-code ',name ',params ',body) (defun ,name ,params ,@body)))
asarch has joined #lisp
cogbog has joined #lisp
cogbog has left #lisp ["rcirc on GNU Emacs 25.3.1"]