<pjb>
Or you can use page-0 as 256 8-bit registers.
kerrhau has quit [Ping timeout: 256 seconds]
<no-defun-allowed>
smart
<White_Flame>
most forths put the operand stack in zeropage
allcr has quit [Remote host closed the connection]
smokeink has joined #lisp
black_13 has joined #lisp
<black_13>
what is "inlet"
<White_Flame>
in what context?
<pjb>
Whatever you want. It's not predefined. You can define as you wish.
<White_Flame>
it's usually something that will Let something In
<White_Flame>
I think it's also a portion on a map that shows another map
<White_Flame>
can't think about a Lisp-related version of it
<black_13>
i dont where scheme begins and lisp ends
<black_13>
(inlet 'a 1 'b 2)
<pjb>
black_13: this is the Common Lisp channel; scheme is out of topic.
<black_13>
ill see my way out
black_13 has left #lisp [#lisp]
on_ion has quit [Quit: WeeChat 1.9.1]
Oladon has quit [Quit: Leaving.]
potatonomicon has quit [Read error: Connection reset by peer]
kerrhau has joined #lisp
ebrasca has joined #lisp
ebrasca has quit [Remote host closed the connection]
ebrasca has joined #lisp
<LdBeth>
morning
<no-defun-allowed>
hi LdBeth
robotoad has quit [Quit: robotoad]
mindCrime has joined #lisp
mindCrime__ has quit [Ping timeout: 260 seconds]
jlarocco has quit [Ping timeout: 248 seconds]
robotoad has joined #lisp
lagagain has joined #lisp
dddddd has quit [Remote host closed the connection]
k-hos has joined #lisp
<clhsgang[m]>
anyone know how to get POST data from woo?
<beach>
Good morning everyone!
<v0|d>
beach: morning'
smokeink has quit [Ping timeout: 256 seconds]
<clhsgang[m]>
morning beach
Bike has quit [Quit: Lost terminal]
FreeBirdLjj has joined #lisp
hvxgr_ has quit [Ping timeout: 272 seconds]
Fare has quit [Ping timeout: 240 seconds]
impulse has quit [Ping timeout: 256 seconds]
impulse has joined #lisp
mb01 has quit [Ping timeout: 244 seconds]
orivej has quit [Ping timeout: 256 seconds]
impulse has quit [Ping timeout: 240 seconds]
housel has quit [Read error: Connection reset by peer]
impulse has joined #lisp
parjanya has quit [Remote host closed the connection]
Guest5800_ has quit [Quit: Connection closed for inactivity]
_whitelogger has joined #lisp
pjb has joined #lisp
itruslove has quit [Remote host closed the connection]
giraffe has quit [Remote host closed the connection]
pjb has quit [Ping timeout: 256 seconds]
housel has joined #lisp
<zigpaw>
morning :)
kenster has quit [Ping timeout: 248 seconds]
pjb has joined #lisp
asarch has quit [Remote host closed the connection]
asarch has joined #lisp
itruslove has joined #lisp
lagagain has quit [Quit: Connection closed for inactivity]
pjb has quit [Ping timeout: 256 seconds]
fikka has joined #lisp
fikka has quit [Read error: Connection reset by peer]
fikka has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
<beach>
Hello zigpaw.
vlatkoB has joined #lisp
narendraj9 has joined #lisp
pjb has joined #lisp
pjb has quit [Remote host closed the connection]
<asarch>
One stupid question: Is SB-EXT:SAVE-LISP-AND-DIE the same with Smalltalk about the images?
<beach>
I don't know about Smalltalk images, but it saves the entire image into a "core" file that can then be used as an argument to start up SBCL later.
pjb has joined #lisp
<beach>
People complain that it creates a big file, but that is a problem only if you are planning to create thousands of small applications, or if you have an embedded system with very little memory.
<asarch>
I see
<asarch>
Thank you! :-)
<beach>
Oh, and there is an option to create an executable file too, so no core file required in that case.
<asarch>
I studied the log from the other day (when I did a mess with packages) and I found what went wrong
<zigpaw>
they are close enough, there are some limitations you'll see more limiting in SBCL than in Squeak/Pharo, the "one active thread only" will prevent you from having gui app dumped to image, in smalltalk you get that taken care of itself.
<asarch>
First of all, I would like to apologize with all of you
<asarch>
Since I was desperate to make my example to work, I couldn't read that :clim cannot be used it directly
<asarch>
And (use :clim) is actually (:use :clim)
<beach>
Yes, and the recommendation is not to :USE it. :)
pjb has quit [Remote host closed the connection]
<zigpaw>
on the other hand, when learning sometimes it is good to do the not recommended, just to learn why it is so ;)
<asarch>
I found a working example at: /home/asarch/quicklisp/dists/quicklisp/software/mcclim-20180711-git/README.md
gravicappa has joined #lisp
<asarch>
Yeah, it's kind of frustrating when you are still learning
<beach>
I am afraid we can't access your computer with that path.
<asarch>
So, I really sorry guys
pjb has joined #lisp
<asarch>
I owe you some beers
<asarch>
Look at the same file at your quicklisp dir
<beach>
What do you mean by ":clim can not be used [] directly"?
<beach>
Oh, "directly" means "in the REPL". I see.
<asarch>
Yeah, sorry. In the REPL
<beach>
That's a general rule for pretty much every package.
<beach>
But, in addition, it is recommended that you do not :USE packages other than a small number (I only ever :USE the COMMON-LISP package) that you trust not to change.
<beach>
Pretty much all I do from the REPL is to have ASDF compile a package, start an application, or run some tests.
<zigpaw>
when learning and writting throw-away code in repl, I think it is free-for-all if you know the rules/good-practices you are breaking ;-)
<beach>
Sure, but in this case, apparently asarch did not know what rules were not respected.
<beach>
And, yes, of course, you can't wait until you know all the rules before you start writing code.
<aeth>
I only :USE CL and my own libraries. If I broke something in the latter, I know it's my fault.
angavrilov has joined #lisp
Kundry_Wag has joined #lisp
* asarch
takes notes...
<asarch>
Anyway. Thank you very very much guys
<asarch>
Thank you
<asarch>
See you later :-)
asarch has quit [Quit: Leaving]
zfree has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
pjb has joined #lisp
igemnace has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
_whitelogger has joined #lisp
pjb has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
grumble has quit [Read error: Connection reset by peer]
<beach>
So the Common Lisp HyperSpec explicitly allows for the implementation to define additional options for DEFGENERIC and DEFCLASS. I am wondering how existing implementations take advantage of this liberty and what additional options would benefit SICL.
grumble has joined #lisp
pjb has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
<jackdaniel>
beach: ECL has a defclass "sealed" option
pjb has quit [Remote host closed the connection]
<jackdaniel>
it allows inlining accesses such class (like for the structure)
<beach>
That's an interesting idea.
<beach>
Yes, I understand.
pjb has joined #lisp
kajo has quit [Ping timeout: 256 seconds]
narendraj9 has quit [Ping timeout: 244 seconds]
pjb has quit [Ping timeout: 256 seconds]
pierpal has quit [Read error: Connection reset by peer]
siraben has quit [Ping timeout: 248 seconds]
mindCrime has quit [Ping timeout: 256 seconds]
broccolistem has quit [Ping timeout: 265 seconds]
makomo has joined #lisp
Kundry_Wag has joined #lisp
housel has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Ping timeout: 268 seconds]
igemnace has quit [Remote host closed the connection]
varjag has joined #lisp
igemnace has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
FreeBirdLjj has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
rozenglass has joined #lisp
light2yellow has quit [Quit: light2yellow]
orivej has joined #lisp
nowhereman_ has quit [Remote host closed the connection]
nowhereman_ has joined #lisp
vlatkoB_ has joined #lisp
vlatkoB has quit [Ping timeout: 272 seconds]
pierpal has joined #lisp
random-nick has joined #lisp
robotoad has quit [Quit: robotoad]
random-nick has quit [Ping timeout: 256 seconds]
makomo has quit [Ping timeout: 248 seconds]
makomo has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
Bike has joined #lisp
siraben has joined #lisp
gigetoo has joined #lisp
fikka has joined #lisp
rozenglass has quit [Remote host closed the connection]
nowhereman_ has quit [Remote host closed the connection]
<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."
<AeroNotix>
lord, such elitism
nowhereman_ has joined #lisp
<AeroNotix>
gotta love IRC
<beach>
I always get nervous when I hear the word "elitism".
<beach>
Who are you quoting?
<beach>
I have been accused of elitism for saying that I think it would be a good idea for professional programmers to have some formal training in programming.
<AeroNotix>
pjb
<Shinmera>
beach: It's a quote from pjb of last night
<AeroNotix>
they're offline right now
<jackdaniel>
it could be understood, that formal education would be a formal requirement to be allowed to program professionally, that is a kind of elitism (not necessarily in bad sense, *but* we have many proficient programmers who are self-taught)
<AeroNotix>
Perhaps elitism is the wrong choice of word. I just found it unnecessary.
<AeroNotix>
pjb obviously misunderstood my question as well.
<no-defun-allowed>
Tomorrow I hope to publish cl-decentralise, my journey into decentralised information things.
<AeroNotix>
no-defun-allowed: what does it do?
<no-defun-allowed>
It's way faster than blockchains, syncing faster than I can watch a screen.
<Shinmera>
AeroNotix: pjb is often overbearing, yes.
<AeroNotix>
Nevermind, I'll leave it at that.
<no-defun-allowed>
It manages a table of blocks and versions which hold data and synchronise them over, aiming to hold the most blocks with the highest version numbers.
<no-defun-allowed>
It's glue for writing decentralised programs I guess
<AeroNotix>
I can't seem to get the form (funcall `(setf ,foo) value bar) working
<AeroNotix>
no-defun-allowed: sounds like another consensus protocol
<Shinmera>
AeroNotix: what's the problem?
<AeroNotix>
Shinmera: wait, cooking up an example
<AeroNotix>
Maybe I'll see the error when I make a small example
igemnace has quit [Quit: WeeChat 2.2]
siraben has quit [Quit: ERC (IRC client for Emacs 26.1)]
<no-defun-allowed>
AeroNotix: probably, but I'm not trying to introduce anything new.
<beach>
jackdaniel: It seems like in software development we go to far the other direction. High-school drop-outs are considered heroes, and people with formal training are considered "elitist".
<no-defun-allowed>
There's no blockchain, smart contracts or any bullshit. It's a bullshit free backbone.
fikka has quit [Ping timeout: 244 seconds]
<AeroNotix>
no-defun-allowed: distributed consensus protocols aren't inherently required to be "blockchains"
<no-defun-allowed>
That is true, but most people go for them cause they sound nice.
<AeroNotix>
beach: I think there's a huge difference in academic programming and industry programming
<no-defun-allowed>
I'm only tying the developers to one assumption, that there is a definite "latest" state in their environment.
<AeroNotix>
beach: academics think their work is a superset of all of industry work, it's just not the case at all. I find a lot of elitism stems from the belief it is a superset and therefore where all of industry programming is heading and techniques learned in academia MUST eventually be used in industry
<no-defun-allowed>
The protocol is symmetrical, so you can have two REPLs connected to each other, with hooks to announce new information too.
nowhereman_ has quit [Ping timeout: 256 seconds]
<AeroNotix>
no-defun-allowed: colour me interested
<jackdaniel>
beach: as I said, I don't consider "elitism" a bad thing, I'm just saying that the quoted claim is elitist *and* that being "elitism" is not a drawback. also noted, that such status-based elitism may hurt people, who could be perceived as an elite from "skill" perspective. but I'm getting into offtopic, sorry :)
<jackdaniel>
s/being "elitism"/elitism/
<beach>
jackdaniel: I understand.
<no-defun-allowed>
I'll release it tomorrow, I just have to make a synchronous-ish API for clients and do some final testing.
<AeroNotix>
no-defun-allowed: What kind of testing having you done on it?
<beach>
AeroNotix: I said absolutely nothing about academia.
<no-defun-allowed>
The whole thing was 240loc last time I checked, and it hopefully will stay under 400.
<no-defun-allowed>
It can synchronise between my laptop and desktop without complaints.
<AeroNotix>
beach: no, you didn't. I just brought it up because I find a lot of grating conversations appear at that boundary
<no-defun-allowed>
I also have a <20LOC example which uses two hash tables for data and versions.
<AeroNotix>
no-defun-allowed: it's starting to sound like a toy
<AeroNotix>
but looking foward to seeing it
<no-defun-allowed>
There are a few shortcomings, but I don't want to overcomplicate it.
<AeroNotix>
no-defun-allowed: I'm a huge fan of using jepsen/knossos for testing distributed consensus
<no-defun-allowed>
It's all textual for example, and the line `--EOF--` is reserved to denote end-of-files.
fikka has joined #lisp
<AeroNotix>
no-defun-allowed: I don't get how that's relevant
<no-defun-allowed>
It only checks the version number is being incremented and you make the logic, blah blah.
<no-defun-allowed>
I'm half asleep honestly. That probably wasn't relevant
<AeroNotix>
no-defun-allowed: what happens during a net split?
<no-defun-allowed>
I'll have to find out.
<AeroNotix>
lets say you have a mesh of 4 servers running this protocol. You end up with two partitions. They each keep accepting writes on either side. What is the true version of the write after the partition heals?
<no-defun-allowed>
Unless one supersedes the other, nodes will only accept their own.
<AeroNotix>
no-defun-allowed: how will it know what supersedes the other?
<no-defun-allowed>
I have a line commented "we don't care" in the upload logic. It's literally (t nil).
<AeroNotix>
how are you encoding time into the protocol?
<no-defun-allowed>
The version number will be > to the others.
<AeroNotix>
same question remains
<no-defun-allowed>
Any sequence where a later number is > than the other works.
<no-defun-allowed>
Unix timestamps fit naturally to the problem but I still prefer revision numbers.
<AeroNotix>
if you have a (2)-(2) netsplit with 4 servers. During a split there are an equal number of writes on both sides.
<AeroNotix>
time is not absolute on all machines
pjb has joined #lisp
<no-defun-allowed>
No, but the versioning number is and that's how the latest version is decided.
<AeroNotix>
how is the version number incremented?
<no-defun-allowed>
If both sides hold revision #3, neither will listen to the other even if they verify. Someone must come along and write #4 or greater.
<no-defun-allowed>
By the end user.
<AeroNotix>
so you will lose writes
fikka has quit [Ping timeout: 272 seconds]
<no-defun-allowed>
I'm only interested in the final state.
<no-defun-allowed>
If you want those, use a linked list of some form and make everything immutable.
<AeroNotix>
If both sides hold revision #3, before resolution, what is the read value?
<no-defun-allowed>
In that case, we're screwed and there isn't one.
<no-defun-allowed>
Alright, goodnight. I have fucking guitar ensemble in the morning. God vce music sucks
<AeroNotix>
Good luck. Ping me when cl-distribute is availiable, please.
<no-defun-allowed>
Thankyou. I will.
<AeroNotix>
right what was i doing
<Shinmera>
The setf thing
<Shinmera>
Bleh, only need to write some thousand lines of documentation more and I'll finally be rid of this damned library
<Shinmera>
I don't follow it however because my design changes too much during development. Maintaining separate documentation would be too much overhead.
<dim>
that's what I like about the README first approach, you don't detail the design, but the end result: how to use what you're building as a user
<dim>
unless you're saying it's a lib and the API is the design then that's maybe different
<Shinmera>
I do brainstorming first on paper or in my mind to figure out a basic architecture, and then I implement it. Iterate on that a few times until it fits. Then I write documentation on it to shake out the last remaining problems.
<Shinmera>
Oh- of course I first try to think about how I'd use the tool/API
<Shinmera>
I just don't write it down in a README because again, it might change quite a bit while I face the harsh reality :)
<dim>
yeah, so that's what you put in the README right? what problem you're solving and how, as a user, what you're doing make sense
<dim>
yeah it needs maintenance, like the code…
nowhereman_ has joined #lisp
<Shinmera>
Mh, in my readmes I describe what the library is, how to use it briefly, and if needed what the internal organisation is.
<dim>
my main problem with RDD is that I tend to not re-read the README often enough, unfortunately
<dim>
I think the README should be a conversation with the potential user, why would they be interested into what you did in the first place?
<mood>
The rules for attribute values and tag content are different
<krwq>
mood: so how do I escape both?
<krwq>
(escape-string in the let?)
<mood>
I think so, yes
<_death>
usually you don't want to escape attribute values..
<krwq>
_death: to ensure they are link and not something like "\"><script>alert(...)</script>\""
<_death>
this is a case where validation/sanitization should happen elsewhere
fikka has quit [Ping timeout: 268 seconds]
fikka has joined #lisp
<mood>
krwq: There is also spinneret, which has cl-who-like syntax but is, imo, a little more convenient
rippa has joined #lisp
<krwq>
thanks guys, the non-escaping attributes seem to have worked correctly, I'll leave cl-who for now as I like that it writes to stream directly, if I have more issues and become too annoyed I'll try yaclml and spinnernet
MinnowTaur has quit [Remote host closed the connection]
<_death>
yaclml needs html5 upgrades.. fortunately I've not really dealt with web stuff for years
varjag has joined #lisp
<krwq>
_death: I just need that to generate simple e-mail - I've started with just cl-template which works ok but when I added some html this started to look really ugly
<mood>
krwq: spinneret can also write to a stream (though always *standard-output*), but cl-who is certainly a fine choice
<krwq>
mood: stdout is fine considering it's a non-issue in common lisp :) I don't want to spend too much time on learning it since I've already got it working and already spent like and hour or cl-who
<mood>
Actually, no, it prints to a stream called *html*, so you could bind that
<mood>
krwq: You'll be fine with cl-who :)
<krwq>
it has it's things that it sometimes generates not what i mean but I think I can live with that as long as it is fixable
<krwq>
+ in most of the cases I'll likely wrap the codegen anyway and can add a simple testcase/assert
<pjb>
krwq: simple emails can be generated as pure text, you don't need html.
<krwq>
pjb: I wanted to add just <ul><li><a href="foo">bar</a></li>...</ul> - I did text gen first but it started getting ugly and I'm planning to add more complex html later
robotoad has joined #lisp
fikka has quit [Ping timeout: 244 seconds]
orivej has quit [Ping timeout: 248 seconds]
fikka has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
phao has joined #lisp
HighMemoryDaemon has joined #lisp
phao has left #lisp ["Leaving"]
<HighMemoryDaemon>
I have a pathnames package defined in another file. When I use Slime and try to compile, I get the error "The name "PATHNAMES" does not designate any package." However, when if I compile that load line separately and then compile the file, it works fine. My basic code: https://hastebin.com/duzaxajimi.lisp
<Xach>
HighMemoryDaemon: LOAD does not happen at compile time
<Xach>
HighMemoryDaemon: but you can make it happen by using eval-when
<Xach>
HighMemoryDaemon: better: define a system file and let asdf load things in the right order for hou
<Xach>
you, rather
<HighMemoryDaemon>
Thanks! I still have to learn ASDF.
<Xach>
HighMemoryDaemon: to do simple stuff it's not too tricky
panji has joined #lisp
fikka has joined #lisp
pierpal has quit [Ping timeout: 240 seconds]
<Xach>
like, you could have something like myproject.asd containing: (defsystem #:myproject :serial t :components ((:file "pathname") (:file "spam-filter"))) and then use (asdf:load-system "myproject") will compile and load them in order of appearance
<mood>
The most confusing thing when writing macros must be double backquotes. I just don't have any intuition for them
fikka has quit [Ping timeout: 272 seconds]
<pjb>
mood: you don't need them. Just use list append etc.
<AeroNotix>
mood: I like to think I'm entering a new "sublevel". It's quite synesthetic
<mood>
pjb: I'm writing a macro-defining macro, and using list, append and friends would obscure just how simple what's happening actually is. Except for the fact that double backquotes are even more confusing, so I guess I'll just do that.
<AeroNotix>
mood: example?
<pjb>
mood: also, use functions.
<pjb>
macros are functions like any other, don't forget to use abstractions and factorization.
<mood>
AeroNotix: Sure, but when you're two levels deep, how do you get back to the outer level? ,, produces all kinds of weird effects
<mood>
I'll make a quick example
fikka has joined #lisp
<jmercouris>
is a macro writing macro considered a quine?
<mood>
Shinmera: That does work, but I don't *understand* it. My brain wants to just write ,,(when has-thing '(print "bar"))
<Shinmera>
Well first you need the ,@ in order to splice in a list that won't leave a NIL if your test is false
<Shinmera>
Then, since you don't want the code to be evaluated when the inner macro is called, you need the quote
<Shinmera>
finally you need another comma to evaluate in the current macro
<Shinmera>
Basically since each level of unquoting is going to try to evaluate the thing, you need to stop that from happening by intermittently adding quotes.
<AeroNotix>
But pjb is right, probably could turn the inner-macro into a function that returns that form
<AeroNotix>
Which may simplify thinking about it
<mood>
Shinmera: Thanks, I think that helps
<mood>
AeroNotix: I could generate the body of the inner macro using a function, yes. I'll see if that makes things clearer
aphprentice_ has joined #lisp
<equwal>
Paul Graham has an interesting take on double quoted macros in On Lisp. He compares them to integrating (something you do in calculus). Essentially the reason it is difficult isn't because of the notation, it is because it is just a really complex problem. Just like integration though, there are tricks you can learn to make it easier. For example, when writing a macro-writing macro, you can write the inner macro separately, then write
<equwal>
the outer macro into it. You can then substitute in the code for the inner macro. The analogy is strong: substitution is one method of integration. There are other tricks you learn as you go along.
gurmble has joined #lisp
grumble has quit [Killed (rajaniemi.freenode.net (Nickname regained by services))]
gurmble is now known as grumble
<mood>
equwal: I'm not sure I understand what "write the outer macro into it" means
<equwal>
See the section on abbrev/abbrevs if you are interested. The book is free online.
Kundry_Wag has joined #lisp
<mood>
equwal: Thanks, I'll take a look
<equwal>
(defmacro abbrev (short long)
<equwal>
(defmacro abbrevs (&rest names)
<equwal>
`(,',long ,@args)))
<equwal>
`(defmacro ,short (&rest args)
<equwal>
`(progn
<equwal>
,@(mapcar #'(lambda (pair)
<equwal>
`(abbrev ,@pair))
<equwal>
(group names 2))))
<equwal>
Code dump.
<Shinmera>
ouch, that indentation
<equwal>
Yeah it is bad.
<equwal>
I must have been writing it with a 1/4 size emacs window.
<equwal>
I think he trys to explain once-only too, which is always fun.
sword` has quit [Remote host closed the connection]
<pierpa>
v0|d: doesn't make any sense. Blocks are "destroyed" simply by exiting their scope.
kingcons has joined #lisp
<pierpa>
I suspect you mean something else
Kundry_Wag has quit [Remote host closed the connection]
sword` has joined #lisp
<v0|d>
:)
Kundry_Wag has joined #lisp
<aeth>
pjb: I think it was Genera. I'm not sure because it has been a few years. I think the proper way of doing it, though, is pushing it to *features* iirc.
Kundry_Wag has quit [Ping timeout: 244 seconds]
kenster has joined #lisp
<kenster>
my Common lisp/C++ CDN now successfully hosts files :D