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.16, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
undiscovered has quit [Remote host closed the connection]
undiscovered has joined #lisp
dale has quit [Quit: dale]
Lycurgus has quit [Quit: Exeunt]
<stylewarning> Help me write Coalton and get Lisp out of stasis!
verisimilitude has joined #lisp
<ebrasca> stylewarning: What is Coalton ?
<stylewarning> An ML dialect in CL
<stylewarning> so you can write strongly typed code that’s interoperable with CL
Kundry_Wag has joined #lisp
<stylewarning> Still a ways to go, but strongly typed parametric polymorphism in otherwise bog standard Lisp code is a dream
iovec has quit [Quit: Connection closed for inactivity]
megalography 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.]
<makomo> stylewarning: i was reading your thoughts.md file the other day
<makomo> (regarding Coalton)
<makomo> stylewarning: what's the issue regarding Computed GOTO that you mention?
<makomo> does the issue appear when you have all three of those constraints: constant time, constant memory, respects the lexical environment?
<makomo> only when*
<makomo> so picking 2 out of 3 would be doable or something?
<stylewarning> I think something like that yes
<stylewarning> I don’t think you can feasibly do the first and last because it’s O(n) time to build the memory
frodef has quit [Ping timeout: 245 seconds]
<ebrasca> Why ML?
<jasom> ebrasca: the usual answer to that question is algebraic data types + pattern matching
* jasom has always thought it would be fun to make a thin wrapper for algebraic data types on lisp, but it's a significant project
<jasom> something that would actually be smart about inserting type declarations that are revealed (e.g. emit something like (let ((x (cadr y)) (declare (type foo x)) ...) when y is known to be of type (list foo))
Bike has joined #lisp
<aeth> Interesting. I just found out about another historic Lisp that's pretty obscure and with comparatively very little information (not even a Wikipedia article). "Cambridge Lisp" for the Amiga. This 1987 review complains about how different from CL it is. https://www.atarimagazines.com/startv1n4/cambridgelisp.html
<aeth> I guess it was a commercial failure. $200 and very incompatible with everything.
arpunk has joined #lisp
<jasom> googling tells me that there was a "combridge lisp" implemented in bcpl shortly after lisp/370
<aeth> The manual for the Acorn version (if it's even the same Lisp dialect, this one is apparently published by Acorn, not Metacomco) is online. http://chrisacorns.computinghistory.org.uk/docs/Acorn/Sci/AcornScientific_CambridgeLISPRM.pdf
atgreen has quit [Ping timeout: 245 seconds]
<aeth> Incompatible 16-bit Lisp that wasn't used by many and probably didn't have interesting features compared to the big lispms, so I'm not surprised that it's very obscure.
quazimodo has joined #lisp
<aeth> jasom: I think you can get pattern matching in vanilla Lisp through a sufficiently advanced macro (perhaps requiring CLtL2, idk... I think you could just expand it into nested typecases)
<jasom> aeth: optima does pattern matching, including type based matching and destructuring, but see also the lack of an algebraic type-system in lisp
<jasom> also I think there is no portable way to get information about enclosing lexical bindings in a macro, so you can't enforce completeness of pattern matches in a meaningful way.
xkapastel has quit [Quit: Connection closed for inactivity]
<aeth> jasom: Well I think that's the real problem: making sure that all cases are covered.
<aeth> jasom: Something a lot of pattern matching languages would have, translated into Common Lisp, is afaik something along the lines of: if you define a member type, then you can ensure that every branch (i.e. every member of the member type) is handled in the cases... so if you redefine (deftype colors () `(member :red :green :blue)) to now be (member :red :green :blue :yellow) you should get compilation errors
<aeth> jasom: But I think you can still get that in CL if you just replace directly using the DEFTYPE to define member types like that to using some custom macro.
<jasom> aeth: right, but ML will infer the type you are matching on, and that's just not possible in CL, even if one line above your match macro you declared the type of the variable you are matching on!
<stylewarning> Trying to do pattern matching with Lisp’s feeble type system is a bad idea
<stylewarning> Lisp types have almost no algebraic structure
<stylewarning> It’s all sets
<aeth> stylewarning: I'm not sure I agree. There's MEMBER, there's OR, and there's DEFSTRUCT/DEFCLASS.
<aeth> I guess there's even AND, but good luck handling that.
<stylewarning> There’s nothing parametric
<stylewarning> Barring a few outliers
<stylewarning> Pattern matching is good when the types themselves have structure
<stylewarning> AND/OR are structureless free roaming set operations
<jasom> and there's no recursion which limits the use of the parametric types that do exist.
<stylewarning> You can’t reasonably make a “tree of X” type in CL
<stylewarning> And trees are the kind of thing you’d want to match on
anewuser has joined #lisp
<aeth> stylewarning: The way you'd do that is defstruct with slots with :type. I've done that for typed linked lists. Trees would be just a bit trickier. Of course, you're looking at a 30% performance loss on SBCL, and not every implementation will respect :type in defstruct slots. (defclass will be even worse here)
<aeth> (Actually using conses and type checking there would have to walk through the whole list afaik)
<aeth> This is definitely an area where a language extension would be ideal.
<aeth> You'd also probably want a true way to say (maybe foo) because (or null foo) won't work on symbols, lists, or booleans.
markoong has quit [Quit: Konversation terminated!]
<stylewarning> aeth, you will not get much mileage out of that
<stylewarning> And in the end you have a monomorphic type anyway
<stylewarning> Which pattern matching doesn’t help with
<stylewarning> Yes what you said about “maybe” gets to the root of the problem, algebraic parametric polymorphism
Kundry_Wag has quit [Remote host closed the connection]
engblom has quit [Read error: Connection reset by peer]
libertyprime has joined #lisp
sjl has quit [Quit: WeeChat 2.3-dev]
makomo has quit [Ping timeout: 245 seconds]
karlosz has joined #lisp
mejja has quit [Quit: mejja]
keep_learning has joined #lisp
quazimodo has quit [Ping timeout: 245 seconds]
quazimodo has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
CCDelivery has joined #lisp
FreeBirdLjj has joined #lisp
quazimodo has quit [Ping timeout: 246 seconds]
<loli> it seems this library gives pattern matching exhaustion which is neat https://github.com/stylewarning/cl-algebraic-data-type
<loli> sadly it doesn't work fully if you namespace the arguments
hellcode has joined #lisp
<hellcode> hi all
<hellcode> so... I was just reading the CLtL and got confused here
<hellcode> . The types (vector t), string, and bit-vector are disjoint.
<hellcode> shouldn't (vector t) be a supertype of the other two though?
<Bike> nope
<Bike> (vector t) is the type of vectors that can hold any object
<Bike> like how bit-vector is the type of vectors that can hold bits
<Bike> they're two different kinds of thing
dddddd has quit [Remote host closed the connection]
iAmDecim has joined #lisp
<verisimilitude> It's been a time since I've taken a look, but are you perhaps thinking of (VECTOR *), hellcode?
undiscovered has quit [Remote host closed the connection]
FreeBirdLjj has quit [Remote host closed the connection]
quazimodo has joined #lisp
dale has joined #lisp
<hellcode> mmm idk, isn't t a supertype of everything? so that (vector t) ought to include (vector char) and so on?
<hellcode> aaah Bike I get it now
<hellcode> thank you
<hellcode> so all of them would be subtypes of just `vector'?
<Bike> yes
<Bike> vector is (vector *)
CCDelivery has quit [Remote host closed the connection]
quazimodo has quit [Ping timeout: 244 seconds]
quazimodo has joined #lisp
FreeBirdLjj has joined #lisp
karlosz has quit [Quit: karlosz]
Khisanth has quit [Ping timeout: 268 seconds]
skidd0 has quit [Quit: WeeChat 2.3]
anewuser has quit [Ping timeout: 245 seconds]
<aeth> hellcode: a vector that holds T is a different thing than a vector that holds char
<aeth> since T will be (mostly) pointers but some specialized vectors can remove pointers for e.g. ub64 or double-float
rtypo has quit [Ping timeout: 244 seconds]
lavaflow has quit [Read error: Connection reset by peer]
<aeth> so it's mostly a space optimization
lavaflow has joined #lisp
Lycurgus has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
Lycurgus has quit [Quit: Exeunt]
Bike has quit [Quit: Lost terminal]
hellcode has quit [Quit: bye]
gravicappa has joined #lisp
<beach> Good morning everyone!
libertyprime has quit [Quit: leaving]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
<LdBeth> what's the use of SBCL/CLISP's system::*driver*
<pjb> LdBeth: you should not be wanting to know it.
<pjb> First it's in a package named SYSTEM. Second it's not exported from this package.
<pjb> And then, if you really need ot know, you should refer to the documentation of sbcl and of clisp, and it probably won't be the same thing.
<pjb> LdBeth: otherwise, you can always try (documentation 'system::*driver* 'variable) or (describe 'system::*driver*)
<pjb> LdBeth: Third, it's not documented in clisp, so DUH! https://clisp.sourceforge.io/impnotes/idx.html
<pjb> LdBeth: finally, you can always check the sources.
<LdBeth> I'll pretty sure it's about how ^C stuff handled
<pjb> Something like: grep -nHR -i -e '\*driver\*' /usr/local/src/clisp 2>/dev/null
<LdBeth> Ah, I see, it's about setting main-loop
<pjb> Seems so, in clisp.
smokeink has joined #lisp
<LdBeth> I'm kind forget what 's the portable way getting compiled lisp file extension
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
<verisimilitude> Isn't ``fasl'' the suggested type?
<pillton> clhs compile-file-pathname
iAmDecim has quit [Ping timeout: 240 seconds]
<LdBeth> verisimilitude: well, I use CCL which uses .dx64fsl like weird name
<LdBeth> pillton: thanks
dale has quit [Quit: dale]
pierpal has quit [Read error: Connection reset by peer]
fortitude has quit [Remote host closed the connection]
orivej has joined #lisp
froggey has quit [Ping timeout: 246 seconds]
froggey has joined #lisp
zotan has quit [Ping timeout: 246 seconds]
zotan has joined #lisp
zotan has quit [Ping timeout: 240 seconds]
iovec has joined #lisp
jprajzne has joined #lisp
Inline has quit [Quit: Leaving]
zotan has joined #lisp
sauvin has joined #lisp
<fiddlerwoaroof> LdBeth: usually one just remembers it from the compile-file call :)
<fiddlerwoaroof> e.g. (load (compile-file "foo"))
zotan has quit [Ping timeout: 268 seconds]
funnel has quit [Ping timeout: 268 seconds]
zotan has joined #lisp
funnel has joined #lisp
frodef has joined #lisp
orivej has quit [Ping timeout: 244 seconds]
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 250 seconds]
X-Scale` is now known as X-Scale
igemnace has quit [Quit: WeeChat 2.3]
wigust has quit [Ping timeout: 246 seconds]
wigust has joined #lisp
megalography has left #lisp [#lisp]
<LdBeth> yeah! I got TPS successfully run on CCL now
verisimilitude is now known as Petulant
Petulant is now known as verisimilitude
verisimilitude has quit [Remote host closed the connection]
verisimilitude has joined #lisp
zmt00 has joined #lisp
akoana has joined #lisp
adam4567 has joined #lisp
zmt01 has quit [Ping timeout: 240 seconds]
iAmDecim has joined #lisp
Arcaelyx has quit [Quit: Textual IRC Client: www.textualapp.com]
scymtym has joined #lisp
shrdlu68 has joined #lisp
milivoj has joined #lisp
milivoj has quit [Remote host closed the connection]
milivoj has joined #lisp
<splittist> morning
<phoe> heyyy
<phoe> LdBeth: what's TPS?
nowhere_man has joined #lisp
volkov has joined #lisp
tumdum has quit [Ping timeout: 240 seconds]
varjag has joined #lisp
milivoj has quit [Ping timeout: 250 seconds]
schjetne has joined #lisp
matijja has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
<_death> did you remember to file those TPS reports
FreeBirdLjj has quit [Ping timeout: 246 seconds]
iAmDecim has quit [Ping timeout: 272 seconds]
m00natic has joined #lisp
akater has joined #lisp
<akater> What is the best way to disable initargs validity checking for a particular #'change-class call?
<no-defun-allowed> akater: silly question, are you @akater:matrix.org on matrix?
<akater> no-defun-allowed: Yes.
<no-defun-allowed> also, dunno if you can, validity checking is usually handled by however lambda lists are handled
rumbler3_ has joined #lisp
<no-defun-allowed> oh, cool
<beach> akater: You can try passing :allow-other-keys t in addition to other arguments.
<beach> akater: I haven't checked whether that is supposed to work, but it might.
<no-defun-allowed> "initargs validity checking" sounds like something silly like putting an odd number of values in the &key section, but i'm not sure
volkov has quit [Quit: volkov]
rumbler31 has quit [Ping timeout: 250 seconds]
<beach> Not really.
<beach> clhs 7.1.2
<specbot> Declaring the Validity of Initialization Arguments: http://www.lispworks.com/reference/HyperSpec/Body/07_ab.htm
<no-defun-allowed> right then
<akater> beach: no, :allow-other-keys t doesn't seem to work.
<beach> :(
<no-defun-allowed> aha, that's what "validity checking" would be
<akater> I'm not even sure how to do it globally withot total redefinition of primary method with &allow-other-keys
<akater> ^ “globally” as in “for all changes to a certain class”
<akater> Oh no, turns out I put :allow-other-keys t in the wrong arglist.
<akater> It did work, thanks beach.
<beach> Oh, good.
<adam4567> Quick question. Anyone got a reference on how to upgrade ASDF from 2 to 3? Linux, Lisp, Slime etc
<akater> adam4567: 3.4 in ASDF Manual addresses this.
gravicappa has quit [Ping timeout: 245 seconds]
atgreen has joined #lisp
FreeBirdLjj has joined #lisp
wxie has joined #lisp
wxie has quit [Ping timeout: 245 seconds]
wxie has joined #lisp
<adam4567> akater: OK.
dimpase_ has joined #lisp
dimpase_ has quit [Quit: leaving]
pierpal has joined #lisp
quazimodo has quit [Ping timeout: 240 seconds]
eschatologist_ has joined #lisp
eschatologist has quit [Ping timeout: 240 seconds]
frodef has quit [Ping timeout: 246 seconds]
Krystof has quit [Ping timeout: 245 seconds]
<adam4567> akater: ASDF Manual s3.4, suggests using install tool install-asdf.lisp I'm not sure if I need a complete ASDF Git-pull and build first though.
<jackdaniel> adam4567: in principle: cloen asdf, issue make, call (compile-file "/path/to/asdf.lisp")
<jackdaniel> then put "/path/to/asdf.fasl" in your chosen location and put in your lisp init file
robdog_ has joined #lisp
<jackdaniel> (load "/location/of/asdf.fasl") before anything else
<jackdaniel> (even before quicklisp)
igemnace has joined #lisp
dddddd has joined #lisp
<adam4567> jackdaniel: Thanks. That should get me going.
prite has joined #lisp
dmiles has quit [Ping timeout: 244 seconds]
anewuser has joined #lisp
dmiles has joined #lisp
Krystof has joined #lisp
<flip214> Is there some compatible way to find out whether a PATHNAME is a directory or a file?
<flip214> If there was a slash at the end there'll be no PATHNAME-NAME, but if there wasn't there will, so that alone isn't enough.
FreeBirdLjj has quit [Ping timeout: 244 seconds]
FreeBirdLjj has joined #lisp
<flip214> Basically, I've got a string; if it's a file, I want to read it, if it's a directory, I want to read all "*.conf" in there.
phenethylamine has quit [Ping timeout: 245 seconds]
<phoe> flip214: PATHNAME-NAME is null if it's a directory
phenethylamine has joined #lisp
emar has quit [Ping timeout: 245 seconds]
thinkpad has quit [Ping timeout: 245 seconds]
rk[ghost] has quit [Ping timeout: 245 seconds]
abhixec has quit [Ping timeout: 245 seconds]
hr0m has quit [Ping timeout: 244 seconds]
vertigo has quit [Ping timeout: 245 seconds]
lnostdal has quit [Ping timeout: 240 seconds]
rk[ghost] has joined #lisp
vertigo has joined #lisp
Lycurgus has joined #lisp
emar has joined #lisp
<flip214> phoe: only if the input string ends with a /
<flip214> "/dev" has "dev" as PATHNAME-NAME
thinkpad has joined #lisp
lnostdal has joined #lisp
<phoe> flip214: #p"/dev" itself refers to a file named DEV in the root file system
<phoe> the pathname itself does not yet know whether anything it points to is a directory
<phoe> you actually need to query the filesystem to find out
<phoe> so, (pathname-name (probe-file filespec))
<flip214> phoe: yeah, right, a kernel/filesystem access is needed. ah, PROBE-FILE does that? thanks!
hr0m has joined #lisp
<phoe> (probe-file #p"/dev") ;=> #P"/dev/"
<phoe> so yes, it appends the missing slash
abhixec has joined #lisp
adam4567 has quit [Ping timeout: 240 seconds]
schjetne has quit [Ping timeout: 250 seconds]
<flip214> phoe: I just found out that DIRECTORY also does this normalization; and it will already correctly handle "etc/*.conf" as well!
FreeBirdLjj has quit [Remote host closed the connection]
lnostdal has quit [Ping timeout: 244 seconds]
undiscovered has joined #lisp
lnostdal has joined #lisp
dueyfinster has quit [Remote host closed the connection]
random-nick has joined #lisp
ismay has joined #lisp
orivej has joined #lisp
<phoe> yayyy
schjetne has joined #lisp
Lord_of_Life has quit [Ping timeout: 268 seconds]
orivej has quit [Ping timeout: 245 seconds]
orivej has joined #lisp
Lord_of_Life has joined #lisp
Odin- has joined #lisp
robdog_ has quit [Remote host closed the connection]
robdog_ has joined #lisp
robdog_ has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
<jackdaniel> pathnames and files are conceptually different things indeed
FreeBirdLjj has quit [Remote host closed the connection]
longshi has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Read error: Connection reset by peer]
FreeBird_ has joined #lisp
amerlyq has joined #lisp
FreeBird_ has quit [Remote host closed the connection]
frodef has joined #lisp
schjetne has quit [Remote host closed the connection]
amerlyq has quit [Quit: amerlyq]
<ebrasca> Hi
wxie has quit [Ping timeout: 250 seconds]
<shka__> ebrasca: hi
gxt has quit [Ping timeout: 272 seconds]
Necktwi has joined #lisp
akoana has left #lisp ["Leaving"]
Denommus has joined #lisp
smokeink has quit [Remote host closed the connection]
Essadon has joined #lisp
Essadon has quit [Max SendQ exceeded]
Essadon has joined #lisp
Essadon has quit [Client Quit]
smokeink has joined #lisp
Denommus has quit [Remote host closed the connection]
robdog_ has joined #lisp
PuercoPop has left #lisp ["Killed buffer"]
atgreen has quit [Ping timeout: 268 seconds]
Zaab1t has joined #lisp
Zaab1t has quit [Client Quit]
bendersteed has joined #lisp
Necktwi has quit [Ping timeout: 244 seconds]
gxt has joined #lisp
Achylles has joined #lisp
orivej has quit [Ping timeout: 250 seconds]
Necktwi has joined #lisp
Necktwi has quit [Client Quit]
orivej has joined #lisp
Bike has joined #lisp
robdog_ has quit [Remote host closed the connection]
Necktwi has joined #lisp
smokeink has quit [Quit: Leaving]
Lycurgus has quit [Quit: Exeunt]
abhixec has quit [Ping timeout: 252 seconds]
matijja has quit [Remote host closed the connection]
hiroaki has joined #lisp
q9929t has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
q9929t has quit [Quit: q9929t]
longshi has quit [Quit: WeeChat 2.3]
littlelisper has joined #lisp
amerlyq has joined #lisp
rtypo has joined #lisp
<littlelisper> in ltk, if i use event loop for a continuous action with sleep for speed, i cant use the widget callbacks
<littlelisper> how can i use both, event loop actions and the callbacks
Josh_2 has joined #lisp
ntbre has quit [Quit: ntbre]
rtypo has quit [Ping timeout: 250 seconds]
phlm has joined #lisp
phlm has quit [Client Quit]
Inline has joined #lisp
xkapastel has joined #lisp
shrdlu68 has quit [Quit: WeeChat 2.3]
JetJej has joined #lisp
ntbre has joined #lisp
<beach> littlelisper: What is your reason for using ltk rather than McCLIM?
<Josh_2> That's like personally insulting beach /s
<beach> What?
<beach> It's a simple question.
<Josh_2> It was a joke :)
<beach> Oh. :)
<Josh_2> /s means sarcasm :P
<beach> Sorry, missed it.
<beach> I am asking because if there is anything that littlelisper is missing in McCLIM, we should put it on the TODO list.
<pjb> </s>
<beach> Or, we *might* put it on the TODO list, depending on what it is.
nanoz has joined #lisp
jprajzne has quit [Quit: Leaving.]
FreeBirdLjj has joined #lisp
Krystof has quit [Ping timeout: 240 seconds]
anewuser has quit [Quit: anewuser]
marvin2 has joined #lisp
rippa has joined #lisp
Krystof has joined #lisp
<_death> littlelisper: not sure I understand what you're trying to do, but ltk has an AFTER function that you can use to perform an action after a duration of time
juristi has quit [Quit: WeeChat 1.0.1]
FreeBirdLjj has quit [Remote host closed the connection]
edgar-rft has quit [Quit: Leaving]
FreeBirdLjj has joined #lisp
<littlelisper> no, theres nothing missing beach. the documentation is too sparse. the only guide i have is clim2 UG by franz. i am on my way to mcclim
<littlelisper> thanks _death, thats exactly what i was looking for
rumbler3_ has quit [Ping timeout: 250 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
<LdBeth> <freenode__de "did you remember to file those T"> _death: well, I worked with version control
<_death> LdBeth: it was joke.. a reference to Office Space
rumbler31 has joined #lisp
<LdBeth> GG
dale_ has joined #lisp
dale_ is now known as dale
littlelisper has quit [Quit: Page closed]
Essadon has joined #lisp
milivoj has joined #lisp
FreeBirdLjj has joined #lisp
milivoj has quit [Ping timeout: 268 seconds]
milivoj has joined #lisp
trafaret1 has joined #lisp
<trafaret1> sup
FreeBirdLjj has quit [Remote host closed the connection]
cage_ has joined #lisp
ntbre has quit [Quit: ntbre]
blackwolf has joined #lisp
gigetoo has quit [Ping timeout: 240 seconds]
akater1 has joined #lisp
milivoj has quit [Read error: Connection reset by peer]
gigetoo has joined #lisp
akater has quit [Ping timeout: 256 seconds]
milivoj has joined #lisp
ntbre has joined #lisp
nowhere_man has quit [Ping timeout: 245 seconds]
moei has joined #lisp
Oberon4278 has joined #lisp
sjl has joined #lisp
FreeBirdLjj has joined #lisp
milivoj has quit [Read error: Connection reset by peer]
milivoj has joined #lisp
trafaret1 has quit [Read error: Connection reset by peer]
shka_ has joined #lisp
FreeBirdLjj has quit [Ping timeout: 245 seconds]
ismay has quit [Ping timeout: 245 seconds]
Achylles has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 250 seconds]
orivej has joined #lisp
igemnace has quit [Ping timeout: 244 seconds]
nowhere_man has joined #lisp
matijja has joined #lisp
matijja has quit [Remote host closed the connection]
matijja has joined #lisp
Zaab1t has joined #lisp
ntbre has quit [Quit: ntbre]
Josh_2 has quit [Ping timeout: 246 seconds]
nullheroes has quit [Quit: WeeChat 1.9.1]
nullheroes has joined #lisp
Denommus has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
ntbre has joined #lisp
m00natic has quit [Ping timeout: 245 seconds]
tkhno has joined #lisp
flazh has quit [Ping timeout: 250 seconds]
Denommus has quit [Remote host closed the connection]
DGASAU has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
markoong has joined #lisp
varjag has joined #lisp
ntbre has quit [Quit: ntbre]
karlosz has joined #lisp
eschatologist has joined #lisp
igemnace has joined #lisp
eschatologist_ has quit [Ping timeout: 240 seconds]
ecraven has quit [Ping timeout: 250 seconds]
flazh has joined #lisp
Denommus has joined #lisp
igemnace has quit [Remote host closed the connection]
ecraven has joined #lisp
igemnace has joined #lisp
Josh_2 has joined #lisp
milivoj_ has joined #lisp
xkapastel has joined #lisp
ntbre has joined #lisp
milivoj has quit [Ping timeout: 244 seconds]
milivoj_ is now known as milivoj
karlosz has quit [Quit: karlosz]
nikkal has joined #lisp
LiamH has joined #lisp
Zaab1t has quit [Quit: bye bye friends]
igemnace has quit [Remote host closed the connection]
makomo has joined #lisp
igemnace has joined #lisp
gxt has quit [Ping timeout: 252 seconds]
Denommus has quit [Remote host closed the connection]
igemnace has quit [Remote host closed the connection]
igemnace has joined #lisp
nikkal has quit [Ping timeout: 245 seconds]
hiroaki has quit [Ping timeout: 240 seconds]
optikalmouse has joined #lisp
optikalmouse has quit [Client Quit]
ntbre has quit [Quit: ntbre]
karlosz has joined #lisp
gxt has joined #lisp
narendraj9 has joined #lisp
hiroaki has joined #lisp
Denommus has joined #lisp
nikkal has joined #lisp
jxy has quit [Quit: leaving]
sauvin has quit [Read error: Connection reset by peer]
edgar-rft has joined #lisp
karlosz has quit [Quit: karlosz]
igemnace has quit [Remote host closed the connection]
igemnace has joined #lisp
skidd0 has joined #lisp
<skidd0> hello! With multi-line doc strings (and strings in general) do I need to escape a newline?
<verisimilitude> No.
<skidd0> okay great. Thanks!
jxy has joined #lisp
<verisimilitude> Do you have an REPL already, skidd0?
<verisimilitude> If so, you'll find it much quicker to simply test questions such as this there, in the future.
<skidd0> i guess that's true
<skidd0> thanks
<skidd0> tho i'd contest your claim that it's quicker
<skidd0> asking here got a reply in seconds
<verisimilitude> Still, you can get caught believing something is standard when it isn't this way, so do use proper judgement, yes.
<verisimilitude> Also, the REPL would've taken far less than a second.
<skidd0> i'd have to type up a defun
<skidd0> to test. right?
<verisimilitude> No.
<verisimilitude> A documentation string is just a string, so just test a string.
<skidd0> oh, there's nothing special about how the compiler handles it?
Arcaelyx has joined #lisp
<verisimilitude> The reader macro for " is what handles string parsing.
<skidd0> okay. I've not gotten into reader macros yet. All i know is that they are 'a thing'. #'something has a # reader macro then, right?
<shka_> skidd0: you don't need to define your own reader macros
<skidd0> are :keywords handled by a reader macro as well? or are they just a regular symbol?
<skidd0> shka_: no, certainly not
<verisimilitude> The # reader macro is a dispatch reader macro, which reads in the next character and calls a reader macro with an extra argument and whatnot.
<verisimilitude> Keywords are handled by symbol parsing.
<shka_> i literally defined one useful reader macro
<skidd0> okay thank you verisimilitude
<shka_> in my whole life
<verisimilitude> Still, shka_ is on point; you don't need to worry about this right now, skidd0.
<skidd0> well yeah. i'm just asking and trying to confirm my limited understanding
<skidd0> i don't want to build layers on shaky foundation
<verisimilitude> That's the proper way to do it.
<shka_> oh, that's fine
<shka_> skidd0: really, if you want to save yourself some time ensure that you understand packages and read time evaluation, that would be enough to know for now
<skidd0> i'm assuming you all are long time lispers, but, i'm curious if you remember how long it took after starting to learn lisp for it all ti "click"
<shka_> reader macros are cool but not super useful
<skidd0> what is read time eval? i've heard of compile time
makomo has quit [Ping timeout: 245 seconds]
<shka_> yeah, well, that's the thing that you should understand the following things about the reader to safely go forward
<shka_> 1) read time!
<verisimilitude> I don't believe it's bragging when I tell you it all clicked fairly easily, at least after the first month or so, skidd0.
<shka_> 2) symbols!
<shka_> 3) packages!
<skidd0> verisimilitude: how would you define that "click"? like what observation or pattern/conenction did you see?
<verisimilitude> In all likelihood, it was shorter than that, but still.
<shka_> skidd0: i am pretty sure that practical common lisp is the best reference you can have
<skidd0> thanks, shka_
<verisimilitude> Have you ever read Stallman's recommendation for Lisp, skidd0?
<skidd0> yeah i'm working through PCL and refer back to it all the time
<verisimilitude> He describes it very well.
<skidd0> verisimilitude: maybe. sounds familiar
<verisimilitude> It contains ``Lisp is the most powerful programming language''.
<skidd0> oh yes
<skidd0> i read that last week
<verisimilitude> That and some light reading should be enough; once you understand that, it ``clicks'', I suppose.
Josh_2 has quit [Remote host closed the connection]
<skidd0> well then maybe it's already clicked
<skidd0> for me
Josh_2 has joined #lisp
hiroaki has quit [Ping timeout: 240 seconds]
hiroaki has joined #lisp
makomo has joined #lisp
matijja has quit [Ping timeout: 246 seconds]
karlosz has joined #lisp
narendraj9 has quit [Ping timeout: 244 seconds]
travv0 has joined #lisp
karlosz has quit [Quit: karlosz]
igemnace has quit [Remote host closed the connection]
random-nick has quit [Read error: Connection reset by peer]
ntbre has joined #lisp
Josh_2 has quit [Ping timeout: 246 seconds]
igemnace has joined #lisp
cage_ has quit [Remote host closed the connection]
shka_ has quit [Ping timeout: 268 seconds]
Jesin has quit [Quit: Leaving]
milivoj has quit [Ping timeout: 244 seconds]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
nanoz has quit [Read error: Connection reset by peer]
karlosz has joined #lisp
karlosz has quit [Client Quit]
random-nick has joined #lisp
Jesin has joined #lisp
dueyfinster has joined #lisp
lnostdal has quit [Remote host closed the connection]
pierpal has quit [Ping timeout: 272 seconds]
gxt has quit [Ping timeout: 264 seconds]
Josh_2 has joined #lisp
milivoj has joined #lisp
dvdl has joined #lisp
scymtym has quit [Ping timeout: 268 seconds]
Denommus has quit [Read error: Connection reset by peer]
JetJej has quit [Quit: [Quit]]
lnostdal has joined #lisp
nikkal has quit [Quit: Konversation terminated!]
igemnace has quit [Quit: WeeChat 2.3]
nikkal has joined #lisp
Oberon4278 has quit []
scymtym has joined #lisp
skidd0 has quit [Quit: WeeChat 2.3]
nikkal has quit [Ping timeout: 240 seconds]
gxt has joined #lisp
dvdl has quit [Ping timeout: 252 seconds]
wilfredh has joined #lisp
Bike has quit []
didi has joined #lisp
<didi> TIL there's IGNORABLE. That's all.
<didi> By macroexpanding ETYPECASE of all the things.
prite has quit [Ping timeout: 250 seconds]
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
Mr-Potter has joined #lisp
<sjl> Yep. Handy in macros.
quazimodo has joined #lisp
pierpal has joined #lisp
moei has quit [Quit: Leaving...]
karlosz has joined #lisp
ntbre has quit [Quit: ntbre]
random-nick has quit [Read error: Connection reset by peer]
dueyfinster has quit [Read error: Connection reset by peer]
Grauwolf has quit [Quit: WeeChat 2.3]
Essadon has quit [Quit: Qutting]
ntbre has joined #lisp
ntbre has quit [Client Quit]
ntbre has joined #lisp
tkhno has quit [Ping timeout: 250 seconds]
blackwolf has quit [Quit: ERC (IRC client for Emacs 26.1)]
metallicus has joined #lisp
<aeth> didi: You often want it in your macros.
metallicus has quit [Client Quit]
<aeth> In particular, anything in the style of WITH-ACCESSORS
karlosz has quit [Quit: karlosz]
Josh_2 has quit [Ping timeout: 245 seconds]
<verisimilitude> I suppose I most commonly use IGNORABLE for special variables that I bind with &AUX but don't otherwise use.
<verisimilitude> My favorite example is so:
<verisimilitude> (LAMBDA (&OPTIONAL (STREAM *STANDARD-OUTPUT*) &AUX (*STANDARD-OUTPUT* STREAM)) ...)
<aeth> Oh in case I was unclear, by in the style of WITH-ACCESSORS, I mean essentially a double binding. In with-accessors it's a let then a symbol-macrolet, and it's possible that the symbol-macrolet is working on a NIL list while the let binding is provided like this: (with-accessors () foo ...) ; more of something you'd see from a generating macro than something you'd write directly
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]
<aeth> The main difference between the with-accessors in the notes and with-accessors in an actual implementation's macroexpand-1 is probably the IGNORABLE declaration. http://www.lispworks.com/documentation/HyperSpec/Body/m_w_acce.htm
abhixec has joined #lisp
Josh_2 has joined #lisp
Lord_of_Life_ has joined #lisp
karlosz has joined #lisp
Lord_of_Life has quit [Ping timeout: 272 seconds]
Lord_of_Life_ is now known as Lord_of_Life
undiscovered has quit [Remote host closed the connection]
LiamH has quit [Quit: Leaving.]
Kundry_Wag has joined #lisp
terpri has quit [Remote host closed the connection]
askatasuna has joined #lisp
troydm has joined #lisp