phoe changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.14, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
SlashLife has joined #lisp
meepdeew has quit [Remote host closed the connection]
meepdeew has joined #lisp
meepdeew has quit [Ping timeout: 250 seconds]
SlashLife has quit [Quit: Baking more cake ...]
troydm has quit [Ping timeout: 246 seconds]
pjb has quit [Read error: Connection reset by peer]
Arcaelyx has joined #lisp
troydm has joined #lisp
troydm has quit [Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset]
troydm has joined #lisp
robotoad has quit [Quit: robotoad]
troydm has quit [Client Quit]
troydm has joined #lisp
robotoad has joined #lisp
dale has quit [Quit: dale]
pierpal has joined #lisp
pierpal has quit [Ping timeout: 272 seconds]
irdr has quit [Remote host closed the connection]
akoana has left #lisp ["Leaving"]
irdr has joined #lisp
Essadon has quit [Quit: Qutting]
permagreen has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 246 seconds]
slyrus1 has joined #lisp
Lycurgus has quit [Quit: Exeunt]
robotoad has quit [Quit: robotoad]
terpri has quit [Ping timeout: 250 seconds]
<no-defun-allowed> should BT:WITH-LOCK-HELD still release the lock if a condition is signaled?
<no-defun-allowed> a: yes, something else is terribly broken in my program instead of bordeaux-threads
robotoad has joined #lisp
pierpal has joined #lisp
Lord_of_Life has quit [Ping timeout: 244 seconds]
Lord_of_Life has joined #lisp
iovec has quit [Quit: Connection closed for inactivity]
equwal has quit [Read error: Connection reset by peer]
<aeth> I'm not looking forward to adding threading to my program
nullheroes has quit [Quit: WeeChat 1.9.1]
<no-defun-allowed> yeah anything that lparallel doesn't provide is too hard for me
<pfdietz> "If you can explain to me what deadlock is, I'll hire you." "If you hire me, I'll explain to you what deadlock is."
<no-defun-allowed> haha
nullheroes has joined #lisp
<beach> Good morning everyone!
drdo has quit [Quit: ...]
drdo has joined #lisp
slyrus1 has quit [Ping timeout: 240 seconds]
rnmhdn has joined #lisp
meepdeew has joined #lisp
meepdeew has quit [Ping timeout: 250 seconds]
rnmhdn has quit [Ping timeout: 245 seconds]
_whitelogger has joined #lisp
mhd2018 has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
tejr has joined #lisp
pierpal has quit [Remote host closed the connection]
Arcaelyx has quit [Quit: Textual IRC Client: www.textualapp.com]
mhd2018 has joined #lisp
meepdeew has joined #lisp
aindilis has quit [Remote host closed the connection]
aindilis has joined #lisp
meepdeew has quit [Ping timeout: 250 seconds]
m0w has quit [Ping timeout: 252 seconds]
dale has joined #lisp
meepdeew has joined #lisp
meepdeew has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
vlatkoB has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
aindilis has quit [Read error: Connection reset by peer]
findiggle has joined #lisp
lavaflow has joined #lisp
_whitelogger has quit [Ping timeout: 268 seconds]
_whitelogger has joined #lisp
FreeBirdLjj has joined #lisp
beach has quit [Ping timeout: 252 seconds]
beach has joined #lisp
FreeBirdLjj has quit [Ping timeout: 246 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
Oladon has quit [Quit: Leaving.]
_whitelogger has joined #lisp
FreeBirdLjj has joined #lisp
flazh has quit [Ping timeout: 250 seconds]
dddddd has quit [Remote host closed the connection]
thodg has joined #lisp
notzmv has joined #lisp
rumbler31 has joined #lisp
buffergn0me has quit [Remote host closed the connection]
orivej has joined #lisp
kajo has joined #lisp
buffergn0me has joined #lisp
<phoe> no-defun-allowed: no
<phoe> oh wait, WITH-LOCK-HELD
<phoe> that uses UNWIND-PROTECT, so if the stack is unwound, then the lock should be freed
<no-defun-allowed> in my case, burgled-batteries is being the big annoying blob but i can just talk to python interpreters instead
<phoe> not when the condition is signaled, but after a nonlocal transfer of control occurs
<no-defun-allowed> yeah, i forgot that phrase
pjb has joined #lisp
random-nick has joined #lisp
<phoe> the only thing that may break is when you use DESTROY-THREAD
<phoe> it's undefined if the stack is unwound before the thread just stops existing.
<phoe> (or if the thread actually stops existing if it's stuck in a without-interrupts form)
dale has quit [Quit: dale]
aindilis has quit [Read error: Connection reset by peer]
notzmv has quit [Quit: WeeChat 2.3]
orivej has quit [Remote host closed the connection]
orivej has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rippa has joined #lisp
kajo has quit [Ping timeout: 250 seconds]
akoana has joined #lisp
kajo has joined #lisp
razzy has quit [Ping timeout: 240 seconds]
flazh has joined #lisp
kajo has quit [Ping timeout: 250 seconds]
shka_ has joined #lisp
kajo has joined #lisp
kajo has quit [Remote host closed the connection]
kajo has joined #lisp
kajo has quit [Ping timeout: 250 seconds]
kajo has joined #lisp
mingus has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
orivej has quit [Ping timeout: 250 seconds]
heisig has joined #lisp
beach has quit [Ping timeout: 252 seconds]
rnmhdn has quit [Ping timeout: 250 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
beach has joined #lisp
FreeBirdLjj has joined #lisp
iovec has joined #lisp
rumbler31 has joined #lisp
FreeBirdLjj has quit [Ping timeout: 272 seconds]
shifty has joined #lisp
FreeBirdLjj has joined #lisp
varjag has joined #lisp
rumbler31 has quit [Ping timeout: 268 seconds]
yvy has joined #lisp
yvy has quit [Read error: Connection reset by peer]
robdog_ has joined #lisp
robotoad has quit [Quit: robotoad]
m0w has joined #lisp
pw_ has quit [Remote host closed the connection]
heisig has quit [Quit: Leaving]
dddddd has joined #lisp
duuqnd has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
msb has quit [Ping timeout: 244 seconds]
msb has joined #lisp
FreeBirdLjj has quit [Ping timeout: 245 seconds]
mingus has quit [Ping timeout: 250 seconds]
random-nick has quit [Read error: Connection reset by peer]
nanoz has joined #lisp
nanozz has joined #lisp
random-nick has joined #lisp
nanoz has quit [Ping timeout: 250 seconds]
puchacz has joined #lisp
<puchacz> hi, in (cl-ppcre:regex-replace regex-str target-str replacement) - how can I make replacement a literal string, rather than a string that may contain references to matching registers, like \1 \2 etc.?
<puchacz> I don't think I should use quote-meta-chars, which quotes for regex itself, not for replacement, so it quotes more characters
<puchacz> maybe this? "Finally, replacement can be a list where each element is a string (which will be inserted verbatim),"
<puchacz> i.e. use (list replacement) instead of replacement
<puchacz> it seems to be working the way I want
<pjb> (cl-ppcre:regex-replace "(foo)bar" "hello foobar barfoobar" "qu\\1ux") #| --> "hello qufooux barfoobar" ; t |#
<pjb> What's your problem?
<puchacz> pjb: I had no registers in regex, and the replacement string contained \2\ which was interpreted as a register
<puchacz> it seems that using (list replacement) instead of replacement does what I want
<pjb> Oh.
<pjb> So you got an error, right.
<pjb> Do you want to replace a string without references?
<puchacz> yes, whole match
<pjb> There doesn't seem to be a simple API to do that in cl-ppcre. emacs lisp has a literal argument to (replace-regexp-in-string REGEXP REP STRING &optional FIXEDCASE LITERAL SUBEXP START).
<pjb> It would have to be implemented using the match results.
<puchacz> pjb, see manual https://edicl.github.io/cl-ppcre/#regex-replace and search for the sentence I pasted above
<puchacz> it is official that passing (list replacement) works
<pjb> Oh, I see.
<pjb> In that case it's taken as a replacement sexp, in which strings are literals, and integers would be the references…
<puchacz> yes. and as I forgot about register references (yet sometimes used them), now I am grepping through my program to see if I was using regex-replace and regex-replace-all correctly in this respect
<pjb> A "simplier" API could still be argued for casual uses. emacs liksp replace-regexp-in-string is more explicit in those options, so it seems easier to use without reading precisely the whole documentation, which is a benefit for casual users.
<puchacz> tbh, something similar bit me in Java some time ago (that replacement string is interpreted, not literal)
<puchacz> at least we have a call that takes care of it, with (list ...), whereas I bet Perl or Java do not :-)
<pjb> Yes. We have to be careful, and read the documentation completely…
<pjb> We should extend slime to display the all the doc it can find about the current operator being edited.
<puchacz> and to read it carefully, it helps to remember how it is supposed to work. register refernces are in all 3 implementations I have used (Lisp, Java, Perl)
<puchacz> everybody tends to remember that regexp str has to be quoted if you want it literal, but replacement not so much
<puchacz> by the way, I think (lambda (&rest ignorable) "my literal replacement") would work as well
<puchacz> and :simple-calls t
<pjb> AFAIUI, yes.
<pjb> (defun literal (replacement) (list replacement)) (cl-ppcre:regex-replace "(foo)bar" "hello foobar barfoobar" (literal "qu\\1ux")) #| --> "hello qu\\1ux barfoobar" ; t |#
robdog_ has quit [Remote host closed the connection]
orivej has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
<puchacz> heh, now I am facing the same problem for Javascript....
<puchacz> I use parenscript to generate most of it
orivej has quit [Ping timeout: 250 seconds]
Essadon has joined #lisp
shifty has quit [Ping timeout: 272 seconds]
duuqnd has quit [Ping timeout: 250 seconds]
SaganMan has joined #lisp
wigust has joined #lisp
wigust- has quit [Ping timeout: 240 seconds]
myrkraverk has joined #lisp
atgreen has joined #lisp
atgreen has quit [Remote host closed the connection]
atgreen has joined #lisp
pierpal has joined #lisp
Lycurgus has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 250 seconds]
Lord_of_Life_ is now known as Lord_of_Life
notzmv has joined #lisp
bradfonseca has joined #lisp
frgo has quit [Ping timeout: 268 seconds]
isBEKaml has joined #lisp
frgo has joined #lisp
ebrasca has joined #lisp
<ebrasca> Hi
omilu has joined #lisp
themsay has joined #lisp
themsay has quit [Ping timeout: 246 seconds]
aindilis has joined #lisp
nchambers has joined #lisp
nchambers is now known as Rudolph
nanozz has quit [Ping timeout: 250 seconds]
slyrus1 has joined #lisp
nanozz has joined #lisp
notzmv has quit [Ping timeout: 246 seconds]
Zaab1t has joined #lisp
<shka_> good evening
Lycurgus has quit [Quit: Exeunt]
<shka_> how to check if object is type?
<shka_> for instance (integer 0 15)
<isBEKaml> typep?
<isBEKaml> numberp?
<shka_> not if object is of type but if object is type designator
<shka_> for instance '(integer 0 15) is type designator
<isBEKaml> no idea, sorry
<isBEKaml> now that I think of it, the map function takes a function designator -- perhaps you could go check how it's implemented there?
<isBEKaml> and, I should get out now. Enjoy your evening
isBEKaml has quit [Quit: WeeChat 2.3]
<pfdietz> clhs typep
marvin2 has quit [Ping timeout: 268 seconds]
<phoe> shka_: it's impossible
<phoe> in the general case, that is.
<shka_> thanks for answer
<phoe> types are not first class in Lisp.
<shka_> yeah, makes sense
<phoe> since type designators may be arbitrarily computed, checking their validity also would require arbitrary computation.
xkapastel has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
marvin2 has joined #lisp
themsay has joined #lisp
themsay has quit [Ping timeout: 246 seconds]
anamorphic has joined #lisp
veckon has joined #lisp
themsay has joined #lisp
veckon has left #lisp [#lisp]
anewuser has joined #lisp
anamorphic has quit [Quit: Leaving]
meepdeew has joined #lisp
random-nick has quit [Read error: Connection reset by peer]
themsay has quit [Ping timeout: 272 seconds]
anewuser has quit [Ping timeout: 272 seconds]
<pjb> shka_: 1. there are no type objects in CL, types are not first class objets in CL.
<shka_> pjb: phoe already explained that
<shka_> but thanks
<pjb> shka_: 2. any sexp could designate a type, potentially. That's why in sbcl (subtypep 'anything t) #| --> t ; t |#
<pjb> shka_: and 3. notice also that several very different type designators can designate the same type. eg. (member 42) and (integer 42 42) and (and (integer 42) (integer 0 42)) etc. ad infinitum.
<shka_> yes, obviously
Rudolph has quit [Quit: WeeChat 2.2]
<pjb> shka_: and 4. not counting (satisfies foo) with (defun foo (x) (eql x 42)).
<pjb> But at least here you can test for (and (listp d) (eql 2 (list-length d)) (eql 'satisfies (first d)) (fboundp (second d))).
slyrus1 has quit [Quit: slyrus1]
random-nick has joined #lisp
<pfdietz> There are class objects though. But not all types are classes.
thodg has quit [Ping timeout: 244 seconds]
sjl has quit [Quit: WeeChat 2.2-dev]
SaganMan has quit [Quit: WeeChat 1.6]
marvin2 has quit []
marvin2 has joined #lisp
random-nick has quit [Read error: Connection reset by peer]
meepdeew has quit [Remote host closed the connection]
<ecraven> is there a way to raise a condition in such a way that it has an inspectable payload in SLIME?
<|3b|> ERROR?
<ecraven> hehe, yea, just found out *where* slime shows the inspectable error object
<djeis[m]> You can test if something is a legal type.
<djeis[m]> It's the second return value of subtypep, if memory serves.
<|3b|> lots of legal types can return NIL for that
<djeis[m]> If the second type is `t`?
<djeis[m]> Ah, no.
<djeis[m]> Foot in mouth.
wigust has quit [Quit: ZNC 1.7.1 - https://znc.in]
random-nick has joined #lisp
random-nick has quit [Read error: error:1408F10B:SSL routines:ssl3_get_record:wrong version number]
random-nick has joined #lisp
nanozz has quit [Ping timeout: 272 seconds]
orivej has joined #lisp
robotoad has joined #lisp
jsjolen has joined #lisp
wigust has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
Selwyn has joined #lisp
lemoinem has quit [Ping timeout: 250 seconds]
lemoinem has joined #lisp
didoerpl has joined #lisp
<didoerpl> hi
<didoerpl> which is the fastest lisp sbcl or there was one more xxcl
<jsjolen> didoerpl: SBCL
<didoerpl> yeah cmucl .. . that's what I read somewhere
<didoerpl> then why they talk of cmucl
nowhere_man has quit [Ping timeout: 252 seconds]
torbo has joined #lisp
themsay has joined #lisp
<didoerpl> is lisp code bigger than python--- how much. say C is 10x bigger than python. Give me a ratio
<djeis[m]> In general, for raw number crunching, SBCL is the fastest of the open source lisps. I avoid making any other claims cus I've seen fuzziness in the data.
<djeis[m]> Who says C is 10x of python?
<didoerpl> djeis[m]: ok you shut me up
<didoerpl> then what do you think , be friendly don't be condescending and quirky
<didoerpl> 10x in terms of write time, and program source code size
<djeis[m]> My instinct is that for larger codebases lisp would win out in source code size vs. python fairly easily.
<djeis[m]> For smaller ones it depends what you're doing and what libraries you use.
orivej has quit [Ping timeout: 250 seconds]
<djeis[m]> My point is just that trying to come up with blanket comparisons like that is a disservice to both python and lisp (and C) 🤷
themsay has quit [Ping timeout: 250 seconds]
<djeis[m]> It's never that simple.
<djeis[m]> Like, if I'm doing something simple with machine learning I could knock out a tensorflow model in little time and little code. On the other hand, if I'm exploring something simple in nondeterministic programming or constraint search I could knock out a script in CL's screamer fairly easily too.
hhdave has joined #lisp
<djeis[m]> If I were building ML infrastructure like Tensorflow from scratch tho, that I'd lean on lisp for and my instinct is I'd be much better for it.
<pfdietz> sbcl was a spinoff of cmucl
<pfdietz> cmucl had a funky build process; sbcl was intended to rationalize it.
<pfdietz> Which it did
<pfdietz> cmucl had to be built from a previous version of itself, patching in place
<pfdietz> sbcl is built "from scratch"; the final product has no trace of the lisp that was used to build it.
<pfdietz> sbcl ditched some aspects of cmucl, like the ability to compile one file as a single compilation unit with some extra optimizations. But I think the overall development of sbcl since then has made it faster, even without that.
iovec has quit [Quit: Connection closed for inactivity]
<puchacz> has anybody seen sbcl 64 bit vs lispworks 64 bit performance comparisons by the way?
<djeis[m]> I've seen them, no clue if I can remember where tho...
<jsjolen> I think CLOS is usually faster on the commercial Lisps
<djeis[m]> That's what I remember from what I've seen as well.
<puchacz> I am interested in string processing with unicode
themsay has joined #lisp
themsay has quit [Ping timeout: 240 seconds]
<puchacz> jsjolen: thanks. I use it, however with lispworks 32 bit (I have licence for it), you need to explicitely import/shadow some functions, for example alphanumericp has to be shadowed with lispworks:unicode-alphanumericp in all packages that you want unicode in
<puchacz> I don't think it is any different in lispworks 64 bit but I wonder what performance of this is, over plain alphanumericp for example
<didoerpl> hmm what's "non-deterministic" programming, clearly it's not quantum mechanics
<didoerpl> all classical programming seems pretty "deterministic"
<jsjolen> didoerpl: Define your constraints, let the computer try out combos in some random fashion
<didoerpl> what constraints?
<didoerpl> I don't know lisp
<verisimilitude> Are you familiar with Prolog?
<verisimilitude> Are you familiar with declarative programming in general?
<didoerpl> no
<verisimilitude> Declarative programming is a paradigm in which you specify what you want and the machine determines how to do it.
<verisimilitude> SQL can be an example of declarative programming.
<verisimilitude> The general idea is the machine already knows how to do some things and has a mechanism for trying possible answers until it reaches a solution. This is generally done in, say, Prolog by backtracking, which can be thought of as undoing work to try a different but similar answer.
<verisimilitude> Does this make sense, didoerpl?
hiroaki has joined #lisp
razzy has joined #lisp
<didoerpl> nope. I know python . I can understand only by examples
<didoerpl> i don't know sql
<verisimilitude> Well, I don't know Python, so I leave this to someone else.
jsjolen has quit [Remote host closed the connection]
<didoerpl> I always specify what I want in python.... so it's procedural.
puchacz has quit [Quit: Konversation terminated!]
<didoerpl> verisimilitude: ok but lisp is has no syntax? which is the quick intro to lisp ... which book ? David Tourtezsky book is too big though 400 pages
<didoerpl> Is there a book recommendation for me, or a site that has some documentation in whatever form
<verisimilitude> I recommend reading the Emacs Lisp Intro to start with, which gently walks you through the very basics.
<didoerpl> I use vim. which site are you talking?
<verisimilitude> https://gnu.org/s/emacs
<didoerpl> oh no now I got to learn emacs as well.
<verisimilitude> You can just read the Emacs Lisp Intro on its own, I suppose.
themsay has joined #lisp
<djeis[m]> Well, it's scripted in a lisp. We're just saying that the emacs lisp intro material is good for getting into lisps in general.
<didoerpl> ok so I have to install which package on arch linux
<didoerpl> ok I installed emacs no tutorial
<didoerpl> where is the tutorial
<phoe> didoerpl: if you want to get quickstarted with Lisp, grab Portacle.
<phoe> and check out the screamer library for Common Lisp.
<verisimilitude> I'd recommend CLISP, instead; it's rather easy to use and you don't need to set up any manner of environment with it.
Zaab1t has quit [Quit: bye bye friends]
<djeis[m]> CLISP hasn't had an official release in quite a while, right?
<didoerpl> I downloaded the tar https://mirrors.kernel.org/gnu/emacs/ but now how do I read it, don't want to install it - whatever that means..
<verisimilitude> Yes, but it doesn't matter much, djeis[m].
<djeis[m]> Fair enough.
<didoerpl> what is portacle ? Is it documentation?
<djeis[m]> Although portacle is equally easy, imo.
<djeis[m]> Portacle is a pre-built tarball of emacs, some emacs<->common lisp integration packages, a basic emacs config, a lisp implementation (SBCL), and some fairly standard tooling.
<djeis[m]> And it's designed to be totally portable.
<djeis[m]> You can just download it, stick it in a folder, and start it up.
<didoerpl> but where do I learn lisp , common lisp
Zelmin has joined #lisp
<djeis[m]> Well, a fairly good book you could try out is Practical Common Lisp.
<djeis[m]> That's where I started, coming from Python.
<djeis[m]> It's available online.
<Selwyn> online here <http://www.gigamonkeys.com/book/>
<Selwyn> it is very good
<Zelmin> Agreed PCL is very good
<djeis[m]> (And free)
<didoerpl> ok
mhd2018 has quit [Ping timeout: 240 seconds]
<djeis[m]> It recommends Lisp-in-a-box, but that died a while ago and Portacle is a pretty close replacement.
<didoerpl> is practical common lisp the same as the gigamonkeys, I have seen that site
bradfonseca has quit [Quit: Konversation terminated!]
<djeis[m]> Yup- PCL is officially hosted on the gigamonkeys site.
jello_pudding has joined #lisp
jellopudding has joined #lisp
jellopudding has quit [Client Quit]
<didoerpl> ok thx
<didoerpl> bye lispers
didoerpl has left #lisp [#lisp]
<Selwyn> has anyone had good experiences using buildapp with CCL on Windows?
torbo has quit [Ping timeout: 240 seconds]
<Selwyn> i read that it takes some effort to set up, but cannot find any details on Xach's website, github or anywhere else
<pjb> Selwyn: Once I generated an executable with ccl on MS-Windows, but I didn't use buildapp then. IIRC I directly called ccl::save-application.
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
<Selwyn> thanks pjb
themsay has quit [Ping timeout: 250 seconds]
<pjb> Selwyn: if you have ccl specific problems you may ask in #ccl.
themsay has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
vlatkoB has quit [Remote host closed the connection]
random-nick has quit [Ping timeout: 268 seconds]
random-nick has joined #lisp
kajo has quit [Ping timeout: 268 seconds]
kajo has joined #lisp
jmercouris has joined #lisp
<jmercouris> good evening everyone
patche has quit [Ping timeout: 245 seconds]
wglb has quit [Ping timeout: 268 seconds]
random-nick has quit [Ping timeout: 268 seconds]
<verisimilitude> Hello, jmercouris.
<jmercouris> hello verisimilitude, what a confusing UI, I must say
<verisimilitude> Which UI do you refer to?
<jmercouris> verisimilitude: the board
Arcaelyx has joined #lisp
<verisimilitude> It's ``Web 2.0'', jmercouris.
random-nick has joined #lisp
orivej has joined #lisp
hhdave has quit [Quit: hhdave]
<jmercouris> lol
slyrus1 has joined #lisp
pierpal has quit [Ping timeout: 245 seconds]
terpri has joined #lisp
<p_l> what board?
<jmercouris> I give verisimilitude the choice to share the information or not, not sure if it is supposed to be public
<verisimilitude> It's fine; when I was giving jmercouris some thoughts on that keymap.lisp file, I introduced him to a Lisp community I enjoy:
<verisimilitude> I don't find it confusing or archaic, but I'm also accustomed to it.
patche has joined #lisp
hhdave has joined #lisp
<verisimilitude> It's never occured to me to compare the size of this area to others, but I don't believe it's relatively small.
<jmercouris> hard to know the true size of the community
<jmercouris> could be one individual posting under many aliases
<aeth> It's so hard to get anything done when I spend all day on social media and IRC under all of my accounts.
<no-defun-allowed> jmercouris: very true.
nowhere_man has joined #lisp
<jmercouris> aeth: are you posting with many aliases on verisimilitude's board?
<no-defun-allowed> If there is one person with many alts, there'll be different "people" defending the actions of others, making a distinct group if that person isn't too good at hiding.
<aeth> jmercouris: I am the online lisp community
<jmercouris> no-defun-allowed: you know what, that would be an interesting algorithm to write, can we detect online alt accounts through some sort of pattern matching or something
<verisimilitude> Don't blow my cover, jmercouris.
<jmercouris> I'm sure there is a fingerprint we can use, small grammatical things, maybe common mistakes
<verisimilitude> Joking aside, I don't use my regular hangouts as much as I'd care to.
<verisimilitude> There's so many other things to do.
<jmercouris> make a model, an automata that represents their usual behavior, compare it against an alt account, see if there is a match
<aeth> jmercouris: My fingerprint of the year is "though". I overused it.
<aeth> Hard not to use "though" when I need it, though.
<verisimilitude> The NSA is already doing this, jmercouris.
<jmercouris> aeth: I'm going to start tagging everyone on /r/lisp with aeth whenever they say "though"
<phoe> Selwyn: I think Shinmera's Deploy also works on Win/CCL
<verisimilitude> The security board on Lainchan also has threads dedicated to this very topic.
<no-defun-allowed> I was thinking writing analysis would work.
<phoe> you could check it out and seek #shirakumo for support with it
<verisimilitude> It's really not difficult to fake identities; writing patterns can be switched very easily.
<no-defun-allowed> Yeah jmercouris like phrases and common groups of words
<jmercouris> sure, bigrams, trigrams, etc
<jmercouris> but I was thinking something more sophisticated
<verisimilitude> Government agents simply have identities on clipboards that tell them how to write, what opinions to use, etc.
<no-defun-allowed> It is, there are tools that you would probably want to hide your identity.
<jmercouris> an FSM that models how they write and when they write etc
<verisimilitude> Look at how I write here, as an example. All I need do to stop being so distinct is write as the rest of you do.
<_death> stylometry
<verisimilitude> Yes.
torbo has joined #lisp
<_death> and other behavioral analysis..
<jmercouris> verisimilitude: I'm going to make a markov model of how you type and generate random phrases to confuse people trying to model your speech patterns
<jmercouris> add some noise in there
<jmercouris> I'm here to protect your privacy :D
<verisimilitude> Well, what I meant is part of my ``style'' is using correct punctuation and whatnot in every message. I also use two spaces to separate sentences and avoid things such as ``:D''; my quoting style is also rather uncommon here.
<verisimilitude> To seem different, I simply discard these things and that's already a great enough leap to hide with.
<jmercouris> You know, I'm not so sure about that
<jmercouris> I could probably model your behavior well enough to still find you
<verisimilitude> I've already done it in this very channel, even.
<jmercouris> one of my specialities is in text analysis...
<jmercouris> you can read my thesis if you are interested
<verisimilitude> I'll take a look.
Lycurgus has joined #lisp
<jmercouris> suffice to say, I know a lot about the matter... anyways, going for a bike ride, goodbye
<Lycurgus> be careful!
<verisimilitude> I'll tell you my thoughts on this thesis, if I read all of it by the time you return.
<jmercouris> It's quite long, and there is a lot of code, so I doubt you will be able to read it so quickly :)
<verisimilitude> Alright.
<verisimilitude> I can also point you to an example using this very channel of how easy it is to fool others by falsifying identities.
<jmercouris> however, if you do enjoy reading it, that would be nice, because you would enjoy it, and I would know that I didn't waste years of my life :D
<jmercouris> sure, feel free to send me an email :D
<verisimilitude> I'll send you my thoughts on the thesis in an email as well, then.
<jmercouris> Sounds good. I look forward to it.
<verisimilitude> Where can I get a compiled version of this document?
patche has quit [Ping timeout: 246 seconds]
<verisimilitude> I don't want to compile it myself. Is there a PDF available anywhere?
<Zelmin> A quick search through Google scholar and arxiv don't have anything pop up
jcowan has joined #lisp
random-nick has quit [Ping timeout: 244 seconds]
<jcowan> I've been discussing the unique feature combinations of various languages. For CL I think it's homoiconicity + extreme redefinability. Can anyone think of other features that are also unique?
shka_ has quit [Ping timeout: 250 seconds]
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
corvidzz has joined #lisp
<aeth> jcowan: The image-based nature seems pretty unique, although, yes, there's also Smalltalk.
<Zelmin> Maybe the condition system? I also think the way classes are used is different. IIRC most other OOP languages are message-passing and CL is based on generic functions with specialized methods. There's probably more I'm not aware of.
<verisimilitude> The interactivity of Lisp is another integral quality.
<verisimilitude> CL entirely lacks keywords as are common in ALGOL-derivatives, which is an important quality to me.
<aeth> verisimilitude: except in LOOP
<verisimilitude> That's different from what I mean, aeth.
<verisimilitude> Even in a LOOP form, there's nothing stopping me from having LET bindings of those keywords used in a DO or DOING form.
<verisimilitude> A keyword in an ALGOL-derivative, such as Java, are just lists of words you're not allowed to use for many things.
isBEKaml has joined #lisp
<jcowan> Julia, Perl 6, Python (via the multimethods library), and several research languages all have generic functions. Also Dylan, of course, and hopefully coming soon to Scheme
<Selwyn> the variety and quantity of CL implementations?
<aeth> verisimilitude: Yes, that combined with lisp-2 means that syntax highlighters are often fooled by my variable names.
<verisimilitude> I suppose SETF is a particularly nice quality of CL that deserves mention.
<jcowan> Scheme has some 77 implementations: admittedly, many are toys
<verisimilitude> I'm not usually impressed by CL highlighting at all, yes.
<aeth> verisimilitude: The lack of a general getter is also notable. No foo[bar] or foo.bar equivalent even though setf is the = or := equivalent.
<aeth> i.e. there's no common syntax or macro or function for accessing 2D arrays, sequences, and hash tables
<verisimilitude> That's a good point, aeth, but what would one look like?
<buffergn0me> aeth: Good point about Lisp-2. That's a great feature of Common Lisp
<jcowan> It would look like a generic function, and could in fact be implemented as such
<buffergn0me> Although it's really Lisp-N, in that any language that has first-class identifiers and macros also has arbitrary many namespaces
permagreen has joined #lisp
<aeth> verisimilitude: ([] foo (42 4) 4 :hello) instead of (gethash :hello (elt (aref foo 42 4) 4))
<aeth> Probably not with the name [], of course
<aeth> Possibly '(42 4) instead of (42 4) if not a macro
<jcowan> I don't think packages count as namespaces in this sense. The number is greater than 2, but not arbitrarily large.
<buffergn0me> jcowan: Types, class names, etc
<jcowan> variables, function names, go tags, classes\
<buffergn0me> You can define your own with macros
<jcowan> True that
<buffergn0me> Speaking of go tags, one of my favorite CL features that has been dropped by more recent dynamic languages is goto
<verisimilitude> Oh, that raises another quality I like.
<verisimilitude> I like that every iteration in CL boils down to TAGBODY and GO.
<verisimilitude> I'm omitting recursion, since TCO isn't standardized.
illandan[m] has joined #lisp
<jcowan> well, every iteration in Scheme boils down to `labels` (spelled `letrec`) and proper tail calling.
<aeth> jcowan: CL has two different namespaces (type-based and packages) and even acknowledges that in its glossary. http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_n.htm#namespace
<aeth> type-based binding namespaces and packages as symbol namespaces
<verisimilitude> Keywords are nice in CL.
<jcowan> definition 2 is *extremely* generic
<aeth> lisp-∞
<buffergn0me> And both definitions seem like the same thing ("binding" vs "mapping")
<jcowan> `do` in CL and Scheme are syntactically identical, but subtly different semantically: in CL, the iteration variables are redefined, in Scheme they are rebound
<verisimilitude> Oh, I also like how Common Lisp doesn't specify a character set.
<jcowan> Nor does C
shifty has joined #lisp
<aeth> verisimilitude: in practice if you don't match ASCII in char-code/code-char you will probably break code, though.
<verisimilitude> That just means the code is wrong, though.
permagreen has quit [Ping timeout: 250 seconds]
<verisimilitude> Or, you could write, depends on implementation-dependent behavior.
<buffergn0me> On the topic of SETF vs a generic getter, I think the former is more important, because that allows you to specify l-values in both different ways: declaratively, and imperatively. Like the difference between a postal address, and directions like "take a left [derefence this field], then a right, etc"
permagreen has joined #lisp
<aeth> and you don't get a generic getter because it would hurt performance unless you declared types, and at that point you just turned CL into what's effectively a statically typed language
<buffergn0me> Generic getter would be nice as a uniform "postal address scheme" for datastructures
corvidzz has quit [Quit: Lost terminal]
<verisimilitude> I like how Common Lisp provides SXHASH, so you can easily create your own hash tables if you want.
<aeth> (of course, these days, many people would gladly take the loss in performance for genericness)
<jcowan> indeed, the partial ordering of characters prescribed in 13.1.6 is straight from K &R
<jcowan> Lots of things hurt performance if hyou don't declare types (or allow them to be inferred), notably mixed-mode arithmetic (another little-advertised Lisp contribution to PLs in general)
<aeth> Yes, but Lispers will accept number and maybe array type declarations as a necessary evil if they need the performance.
* jcowan nods
<jcowan> When Lisp was born, Fortran did not yet allow mixed-mode arithmetic
<jcowan> The condition system existed in Mesa too, though without restarts. Restarts may be genuinely unique
<buffergn0me> Oh yeah, the numeric tower. Do your arithmetic with rationals and store in fixed point decimal and your financial calculations will always round properly
<verisimilitude> It's my understanding Common Lisp's condition system was influenced by other Lisps and Multics with PL/I.
<buffergn0me> jcowan: From what I understand restarts came from PL/I on Multics specifically
<jcowan> Huh. I'll look into that.
<buffergn0me> If I remember correctly there was a discussion on alt.os.multics about this
<buffergn0me> That Dan Weinreb contributed to
<jcowan> I am now I think in a position to answer my own questions about restarts. There are two uses of them, which I call ambient restarts and condition-associated restarts.
<jcowan> Ambient restarts are set up by someone outside the condition signaler, and are intended to work without the signaler's active cooperation. Abort restarts, or retry restarts that work by reinvoking the signaler, are of this type.
<jcowan> Condition-associated restarts require the cooperation of the signaler to do anything meaningful: use-value and store-value restarts are of this type, as are most ignore restarts.
<jcowan> You don't want an ignore restart to be available when the condition being raised is "assumption violated", or the program will go off the rails, possibly in an undetectable fashion.
<Zelmin> http://www.nhplace.com/kent/Papers/Condition-Handling-2001.html according to this restarts came from the continuations in Scheme
<Zelmin> Or more correctly restarts are named continuations and Scheme provided the term
dale has joined #lisp
<jmercouris> I prefer the term continuation over restart
<jmercouris> it sounds much better
<jmercouris> restart seems to imply some unwinding of a stack in my C brain
<jcowan> Yes. Thanks for reminding me of that paper. I just reread it, with my attention on restarts rather than conditions that time.
<jcowan> however, the paper does not discuss `with-condition-restarts`
patche has joined #lisp
hhdave has quit [Quit: hhdave]
nowhere_man has quit [Ping timeout: 252 seconds]
patche has quit [Ping timeout: 250 seconds]
<buffergn0me> Ok, I found the alt.os.multics post: https://groups.google.com/d/msg/alt.os.multics/Na1VsViGtMI/wXWj2ecuk2QJ
<jmercouris> multics
hhdave has joined #lisp
<buffergn0me> I guess the "program_interrupt point" in Multics is like an embryonic restart
<jmercouris> that's a name I haven't heard in a long long time
hhdave has quit [Ping timeout: 250 seconds]
pierpal has joined #lisp
pierpal has quit [Ping timeout: 244 seconds]
jmercouris has quit [Remote host closed the connection]
<aeth> "Ok, I found the alt.os.multics post" is probably something that hasn't been said in many years