iissaacc has quit [Remote host closed the connection]
iissaacc has joined #lisp
jprajzne has quit [Client Quit]
jprajzne has joined #lisp
technobean has joined #lisp
notzmv has quit [Ping timeout: 246 seconds]
dilated_dinosaur has quit [Ping timeout: 260 seconds]
dilated_dinosaur has joined #lisp
iissaacc has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
notzmv has joined #lisp
terpri__ has joined #lisp
jeosol has quit [Ping timeout: 245 seconds]
terpri_ has quit [Ping timeout: 260 seconds]
iissaacc has joined #lisp
terpri__ has quit [Remote host closed the connection]
terpri__ has joined #lisp
bsd4me has joined #lisp
mindCrime has quit [Ping timeout: 260 seconds]
iissaacc has quit [Ping timeout: 246 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
alandipert4 has quit [Quit: Ping timeout (120 seconds)]
alandipert4 has joined #lisp
orivej has joined #lisp
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
Bourne has quit [Ping timeout: 264 seconds]
getha has quit [Ping timeout: 256 seconds]
thijso has joined #lisp
zaquest has quit [Ping timeout: 246 seconds]
alandipert4 is now known as alandipert
zaquest has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
Fare has quit [Ping timeout: 260 seconds]
lalilulelo has quit [Quit: Leaving]
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
terpri__ is now known as terpri
iissaacc has joined #lisp
akoana has left #lisp ["Leaving"]
akoana has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
ajithmk_ has quit [Quit: Connection closed for inactivity]
Oladon has joined #lisp
orivej has joined #lisp
Alfr__ has joined #lisp
Bike has quit [Remote host closed the connection]
Alfr_ has quit [Ping timeout: 260 seconds]
iissaacc has quit [Ping timeout: 256 seconds]
zulu-inuoe has quit [Read error: Connection reset by peer]
taof has quit [Ping timeout: 256 seconds]
lucasb has quit [Quit: Connection closed for inactivity]
cyraxjoe has quit [Quit: I'm out!]
cyraxjoe has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
torbo has quit [Remote host closed the connection]
bonz060 has quit [Remote host closed the connection]
bonz060 has joined #lisp
stepnem_ has joined #lisp
orivej has joined #lisp
stepnem has quit [Ping timeout: 264 seconds]
flak has joined #lisp
rippa has quit [Ping timeout: 246 seconds]
remexre has quit [Ping timeout: 246 seconds]
akoana has quit [Quit: leaving]
orivej has quit [Ping timeout: 260 seconds]
remexre has joined #lisp
<beach>
Good morning everyone!
ajithmk_ has joined #lisp
bhartrihari has left #lisp ["Error from remote client"]
zmt00 has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life_ is now known as Lord_of_Life
orivej has joined #lisp
EvW1 has joined #lisp
Archenoth has quit [Read error: Connection reset by peer]
Fare has joined #lisp
iissaacc has joined #lisp
flak has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
CodeSpelunker has quit [Quit: CodeSpelunker]
cjb has quit [Quit: ERC (IRC client for Emacs 26.3)]
bhartrihari has joined #lisp
Fare has quit [Ping timeout: 260 seconds]
Bourne has joined #lisp
space_otter has joined #lisp
narimiran has joined #lisp
cjb has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
JohnTalent has joined #lisp
jprajzne has quit [Quit: jprajzne]
jprajzne has joined #lisp
zmt00 has quit [Ping timeout: 264 seconds]
zmt00 has joined #lisp
zmt00 has quit [Remote host closed the connection]
zmt00 has joined #lisp
EvW1 has quit [Ping timeout: 244 seconds]
brandonz has joined #lisp
jprajzne has quit [Client Quit]
jprajzne has joined #lisp
iissaacc has quit [Ping timeout: 246 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
iissaacc has joined #lisp
Oladon has quit [Quit: Leaving.]
bottlecap32 has joined #lisp
gravicappa has joined #lisp
bottlecap has quit [Ping timeout: 245 seconds]
edgar-rft has quit [Quit: Leaving]
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
OpenZen has quit [Ping timeout: 265 seconds]
technobean has quit [Remote host closed the connection]
borei has quit [Ping timeout: 256 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
Oladon has joined #lisp
shangul has joined #lisp
bsd4me has quit [Quit: Leaving]
zmt00 has quit [Read error: Connection reset by peer]
mangul has joined #lisp
shidima has joined #lisp
shangul has quit [Ping timeout: 246 seconds]
xrash has quit [Ping timeout: 246 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
iissaacc has quit [Remote host closed the connection]
iissaacc has joined #lisp
JohnTalent has quit [Quit: leaving]
luckless_ has quit [Quit: WeeChat 2.8]
ldb has joined #lisp
<ldb>
hello all
<beach>
Hello ldb.
Oladon has quit [Quit: Leaving.]
ldb has quit [Ping timeout: 240 seconds]
iissaacc has quit [Ping timeout: 246 seconds]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
orivej_ has joined #lisp
iissaacc has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
ljavorsk has joined #lisp
treflip has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
orivej has joined #lisp
bhartrihari has joined #lisp
orivej_ has quit [Ping timeout: 264 seconds]
pve has joined #lisp
liberliver has joined #lisp
gxt has joined #lisp
ldb has joined #lisp
jonatack has quit [Quit: jonatack]
ldb has quit [Ping timeout: 256 seconds]
stepnem_ has quit [Read error: Connection reset by peer]
stepnem has joined #lisp
ggole has joined #lisp
hendursa1 has joined #lisp
mingus has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
ldb has joined #lisp
luna_is_here has quit [Quit: luna_is_here]
gxt has quit [Remote host closed the connection]
<remexre>
hm, does anyone know of an implementation of UAX #11 in lisp?
<remexre>
haven't found anything googling around, but figured I'd ask here before writing my own / deciding not to support unicode
gxt has joined #lisp
ldb has quit [Ping timeout: 265 seconds]
luna_is_here has joined #lisp
easye has joined #lisp
<phoe>
remexre: AFAIK there is none
<remexre>
hm, unfortunate
<beach>
remexre: What do you mean by "deciding not to support unicode"?
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<remexre>
uh, just assuming all characters are one column wide and leaving a comment, "stick to ascii or implement uax11"
<remexre>
(I have a fix-up for tabs elsewhere)
bhartrihari has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
shidima has quit [Ping timeout: 256 seconds]
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
shidima has joined #lisp
cjb has quit [Quit: ERC (IRC client for Emacs 26.3)]
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
toorevitimirp has joined #lisp
bhartrihari has joined #lisp
shidima has quit [Ping timeout: 265 seconds]
ldb has joined #lisp
ldb has quit [Ping timeout: 260 seconds]
<pve>
Good morning! A terminology question: is it correct to say that a cons is a "persistent data structure", whereas something like a hash table (at least in CL) is not?
<beach>
That doesn't sound right.
<phoe>
what do you mean by "persistent"
<beach>
Why would a CONS be persistent?
<phoe>
neither of these survives garbage collection
<flip214>
pve: both can have their "internal state" changed
<phoe>
neither of these survives closing the Lisp image
<phoe>
neither is strictly immutable, as flip214 mentioned
<beach>
phoe: That's not what the term means (unfortunately).
<flip214>
or do you mean that the in-memory layout is fixed for a CONS cell, but a hash table can change in size?
<phoe>
beach: that's why I'm asking what "persistent" means in this context
<phoe>
you can treat both of them as functional data structures which means not mutating them; this means consing up new lists and sharing structure wherever possible, and making new hash tables instead of modifying old ones
<pve>
yeah, I was looking for a name to distinguish between those kinds of data structures, which at least to me, seem different in how they are usually used
<pve>
i.e. the hash table is mutated, but conses not necessarily
<phoe>
"usually" is troublesome
<phoe>
conses are used in both contexts, you can mutate them and not mutate them
<phoe>
in Lisp, it's more of a contextual question, especially since conses are CDTs and not ADTs
<pve>
ok, suppose we don't mutate conses, would "functional data structure" be the correct term?
orivej_ has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
<phoe>
an immutable singly linked list is such a thing, sure
<pve>
but I have trouble seeing how they relate to one another, are they synonymous?
<phoe>
a persistent data structure always seems to refer to old versions of itself
toorevitimirp has quit [Ping timeout: 265 seconds]
<phoe>
a singly linked list is not such a structure because the result of (CDR '(1 2 3)) does not refer to (1 2 3) anywhere
ldb has joined #lisp
toorevitimirp has joined #lisp
<pve>
I mean the first example given there is a singly linked list
jariyah has joined #lisp
* phoe
re-reads
<pve>
at least to me, calling conses (in CL) purely functional seems like a bit of a stretch
space_otter has quit [Remote host closed the connection]
<pve>
but in say, Standard ML, they certainly are
jariyah has quit [Changing host]
jariyah has joined #lisp
<phoe>
OK, "preserve" means a different thing in this context; it doesn't mean explicitly refering to them, it means that the previous values are unchanged
jariyah is now known as vutral
<pve>
but calling conses persistent seems more reasonable
jeosol has joined #lisp
<phoe>
...I wonder what's the real distinction between the two then
<pve>
which is different to a hash table, where you always modify that one table
shangul has joined #lisp
jonatack has joined #lisp
jonatack has quit [Read error: Connection reset by peer]
mangul has quit [Ping timeout: 240 seconds]
<phoe>
every purely functional data structure is persistent, but is it true that every persistent data structure is also purely functional?
<pve>
yeah, that's what I don't get
jonatack has joined #lisp
<pve>
my interpretation is that purely functional is more strict
<sm2n>
I'm pretty sure it's the opposite
<treflip>
Persistent data structures may be implemented in imperative style. There is a great book "Purely Functional Data Structures" by Chris Okasaki, it has a clear explanation of these things in its first chapter IIRC.
<pve>
oh
<sm2n>
it's a bit odd because these categories kind of cut across both implementation/interface
ldb has quit [Ping timeout: 260 seconds]
<sm2n>
and yeah, okasaki has a nice chapter on it (chapter 2 though)
<sm2n>
with diagrams and everything
<pve>
I've skimmed that one a long time ago, maybe time for a re-read
<sm2n>
purely functional is a property of the interface, in that the interface doesn't mutate its arguments
<pve>
ok that makes sense
<sm2n>
persistent is basically an optimization, where shared structure is used wherever possible
<sm2n>
that's my understanding anyway
<pve>
that also makes sense
<treflip>
In his book Okasaki divides data structures into persistent and ephemeral, meaning that persistent data structures kinda provide access to their previous states, and ephemeral don't.
Kaisyu7 has quit [Remote host closed the connection]
Kaisyu7 has joined #lisp
<pve>
treflip: you mean that when you add something to a red-black tree, you get a new tree back?
<pve>
for example
jeosol has quit [Ping timeout: 245 seconds]
<pve>
implying that you can still access the old tree, i mean
orivej_ has quit [Ping timeout: 256 seconds]
<beach>
If you can't access the old three, there is no great difference between a functional an imperative data structure.
<beach>
It would be only a difference in interface style.
<beach>
So, yes, a new tree would be returned, probably sharing structure with the previous one.
<pve>
right
<beach>
But then, a red-black tree is not an abstract data type either, so it's not a great example.
<beach>
The abstract data type would be a dictionary with a totally ordered key domain, or an editable sequence.
<beach>
A red-black tree is a way to implement those abstract data types, and the very definition of a red-black tree seems to require destructive modifications to maintain a balanced tree.
shifty has joined #lisp
<beach>
I mean, it is obviously possible to make a red-black tree "functional", but it may reduce possible sharing then.
<beach>
It is obviously possible, because you can always clone the original tree and make a destructive modification in the clone.
<pve>
yeah I think I implemented a red-black tree in Standard ML back in school
Bourne has quit [Ping timeout: 256 seconds]
ldb has quit [Ping timeout: 260 seconds]
shangul has quit [Ping timeout: 256 seconds]
as has joined #lisp
ldb has joined #lisp
jello_pudding has quit [Ping timeout: 272 seconds]
heisig has joined #lisp
random-nick has joined #lisp
ldb has quit [Ping timeout: 264 seconds]
jello_pudding has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
jeosol has joined #lisp
ldb has joined #lisp
mseddon has joined #lisp
ldb has quit [Ping timeout: 240 seconds]
ldb has joined #lisp
cosimone has joined #lisp
<ldb>
*with ML functors
jonatack has quit [Read error: Connection reset by peer]
iissaacc has quit [Ping timeout: 240 seconds]
FreeBirdLjj has joined #lisp
iissaacc has joined #lisp
shangul has joined #lisp
FreeBirdLjj has quit [Ping timeout: 246 seconds]
shangul has quit [Ping timeout: 256 seconds]
ukari has quit [Ping timeout: 264 seconds]
jeosol has quit [Ping timeout: 245 seconds]
vaporatorius has joined #lisp
vaporatorius__ has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
shangul has joined #lisp
ljavorsk has quit [Ping timeout: 264 seconds]
Fare has joined #lisp
bitmapper has quit [Ping timeout: 240 seconds]
ldb has quit [Ping timeout: 260 seconds]
karlosz has joined #lisp
vutral has quit [Quit: Connection closed for inactivity]
ajithmk_ has quit [Quit: Connection closed for inactivity]
cosimone has quit [Quit: Quit.]
Kaisyu7 has quit [Remote host closed the connection]
Kaisyu7 has joined #lisp
edgar-rft has joined #lisp
ldb has joined #lisp
iissaacc has quit [Ping timeout: 246 seconds]
karlosz has quit [Quit: karlosz]
<Josh_2>
Good afternoon everyone
karlosz has joined #lisp
ldb has quit [Ping timeout: 260 seconds]
<Josh_2>
Other than AMOP wheres the best writing to understand the MOP?
<Josh_2>
any more in-depth tutorials?
<Josh_2>
I Know that the Atlanta Functional Programming group went through the AMOP but the examples given in the book seem quite trivial
<heisig>
Josh_2: Good question. I think there is no comprehensive MOP guide (yet?), so you have to learn from other people's code.
<heisig>
Which raises another good question: What is everyone's favorite code that makes heavy use of the MOP?
ldb has joined #lisp
<shka_>
heisig: MOP
<shka_>
but seriously
<shka_>
mana database is an example, postmodern also has simple DAO classes
<shka_>
it is not very complex, but useful
orivej has quit [Quit: No Ping reply in 180 seconds.]
<shka_>
folks, i am trying to build a strongly independent on seed (and hopefully reasonably fast) hash function for lists of (unsigned-byte 64)
<shka_>
does it look good? do you have ideas how i can improve it?
ldb has quit [Ping timeout: 240 seconds]
ajithmk_ has joined #lisp
karlosz has quit [Quit: karlosz]
wsinatra has joined #lisp
ajithmk_ is now known as ajithmk
Bike has joined #lisp
solrize has joined #lisp
solrize_ has quit [Read error: Connection reset by peer]
ldb has joined #lisp
solrize has quit [Client Quit]
solrize has joined #lisp
solrize has joined #lisp
solrize has quit [Changing host]
ldb has quit [Ping timeout: 265 seconds]
jprajzne1 has joined #lisp
shidima has joined #lisp
ldb has joined #lisp
ldb has quit [Ping timeout: 240 seconds]
theseb has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
v88m has quit [Ping timeout: 256 seconds]
terpri_ has joined #lisp
bsd4me has joined #lisp
torbo has joined #lisp
terpri has quit [Ping timeout: 260 seconds]
Bourne has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
Archenoth has joined #lisp
<mseddon>
Can I just say, I am absolutely blown away with SBCL performance on a Raspberry Pi Zero. It's easily more responsive than anything else I've used.
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<mseddon>
(and by anything, I mean any other scripting language- I have not compared different lisp environments).
dominic34 has joined #lisp
shidima has quit [Ping timeout: 256 seconds]
<beach>
mseddon: Ah, but Common Lisp is not a "scripting language", which explains why SBCL has much better performance. Instead Common Lisp is a general-purpose programming language, so good implementations must be sufficiently fast to compete with implementations of other general-purpose languages.
stoneglass has joined #lisp
<mseddon>
beach: Yes, I'm aware, (actually returning to lisp from a 20 year haitus), I looked in horror as I sent that and knew someone would raise it :)
<beach>
As long as you are aware...
iissaacc has quit [Ping timeout: 264 seconds]
<mseddon>
Sufficiently smart compilers ;)
OpenZen has joined #lisp
<beach>
That's not all there is to it. Designers of so-called scripting languages are often incompetent when it comes to language design and compiler technology. Not so for the very smart and very knowledgeable people who gave us the Common Lisp standard.
<mseddon>
beach: absolutely true. nearly every 'successful' language is just a crap recursive descent compiler that emits crap stack bytecode. mmm. cache trashing.
shidima has joined #lisp
<mseddon>
v8 is quite interesting, but javascript braindamage definitely limits it excessively. Seems more like a self compiler really.
<remexre>
also impressive to me, SBCL on my pinebook pro also blows most compiled languages out of the water on compile speed, even when building binaries with a fresh sbcl process
<mseddon>
remexre: as a Scala refugee, I particularly appreciate that :)
<remexre>
yeah, I usually like Rust and Haskell a lot, but it's been excruicating to develop for them on that machine
ldb has joined #lisp
<remexre>
(though, Rust isn't great for compile time on x86 boxes either...)
<mseddon>
remexre, it is a rocket engine compared to Scala once you start depending on libraries that abuse the type system.
<remexre>
oof
bhartrihari has joined #lisp
treflip has joined #lisp
* jackdaniel
sends a polite reminder, that this channel topic is common lisp [[ a friendly smile at the end -- :-) ]]
<ajithmk>
Are keywords scoped to a package? If there is symbol in a package, say s, we use it in another package like package:s or package::s. But if s is keyword, : get's in the way? Like package::s or package:::s?
cyraxjoe has quit [Ping timeout: 264 seconds]
<jackdaniel>
keywords have a separate package
orivej has quit [Ping timeout: 256 seconds]
<jackdaniel>
when you write :foo
<jackdaniel>
then it is a symbol with name "FOO" in a package "KEYWORD"
orivej has joined #lisp
<ajithmk>
So when reader encounters :foo in a package it interns FOO in keyword package. So :foo is available in any other package?
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<jackdaniel>
yes
bhartrihari has joined #lisp
<phoe>
:FOO === KEYWORD:FOO
<phoe>
PACKAGE::SYMBOL means a completely different thing
<phoe>
and PACKAGE:::SYMBOL is undefined
sjl_ has joined #lisp
toorevitimirp has quit [Read error: Connection reset by peer]
<jackdaniel>
it is defined that implementations are free to give meaning to that, but that would be by definition not portable
ldb has joined #lisp
<ldb>
unfortunately there is no "local" keyword package
SenasOzys has joined #lisp
<jackdaniel>
what would you need that for?
<jackdaniel>
you have "local" symbols
ssd532 has joined #lisp
<ldb>
to bind functions to symbols in keyword
<phoe>
bind functions to symbols in keyword? I can't parse that
<phoe>
binding functions to symbols is FLET/LABELS
<ldb>
in KEYWORD package
<jackdaniel>
but why would you define functions in keyword package?
<jackdaniel>
what's wrong with (defun foo () …) ; that is already local
<phoe>
(flet ((:foo () 42)) (:foo)) works for me but will not be portable
<phoe>
I know that LispWorks is allergic to functions named after keywords
<ldb>
it is an old way to implement commands in the custom repl
gko_ has joined #lisp
<ldb>
thus in addition to the current package user can always access the toplevel commands