p_l changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | ASDF 3.3.4
nicktick has joined #lisp
nicktick has quit [Remote host closed the connection]
nicktick has joined #lisp
nirved has quit [Ping timeout: 240 seconds]
nirved has joined #lisp
jeosol has joined #lisp
countvaj` has joined #lisp
EvW1 has joined #lisp
wxie has joined #lisp
ilshad has joined #lisp
countvajhula has quit [Ping timeout: 260 seconds]
ghard has quit [Remote host closed the connection]
ghard has joined #lisp
ilshad has quit [Quit: ERC (IRC client for Emacs 26.3)]
abhixec has joined #lisp
scymtym has quit [Ping timeout: 264 seconds]
Lycurgus has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
EvW1 has quit [Ping timeout: 256 seconds]
wxie1 has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
wxie has quit [Ping timeout: 240 seconds]
bitmapper has quit [Ping timeout: 260 seconds]
wxie1 has quit [Ping timeout: 260 seconds]
tristero has quit [Ping timeout: 256 seconds]
Oladon has joined #lisp
space_otter has joined #lisp
matzy_ has joined #lisp
abhixec has quit [Ping timeout: 256 seconds]
<matzy_> has anyone has problems installing the Mito ORM on MacOS before? It worked fine for me on linux, so I don't get why it won't work on mac
<matzy_> to make things stranger, it looks like the problem is coming from the "dissect" package
<matzy_> which is a dependency of mito
<Bike> what problem are you having?
<matzy_> I got a COMPILE-FILE-ERROR when compiling ....../quicklisp/software/dissect-20180131-git/backend/sbcl.lisp
<matzy_> (well, it was automatically compiling and then threw the error)
<Bike> could you paste the whole backtrace/error/etc somewhere? dissect is a pretty small portability library, i'm surprised to hear of a problem with it.
<matzy_> that's exactly what surprised me so much
<matzy_> sure thing, thanks
<fe[nl]ix> matzy_: you have the wrong version of dissect: the current one is 20200427
<Bike> oh, yeah, your dissect is older than the last change to that file on github.
<matzy_> so should I continue working through quicklisp to fix this? i'm surprised it messed up when it worked fine on linux
<matzy_> uninstall dissect via quicklisp and re-install? or just replace folder myself?
<Bike> your quicklisp is out of date maybe? try ql:update-all-dists
<matzy_> ah, good idea, thanks
johntalent has quit [Quit: leaving]
<Bike> possibly ql:update-client too.
<matzy_> awesome, need to reboot now that I updated quicklisp. i'll let you know if it worked!
<matzy_> thanks!!
matzy_ has quit [Remote host closed the connection]
dominic34 has quit [Ping timeout: 260 seconds]
<Bike> i'm kind of curious how a quicklisp update means a reboot
dominic34 has joined #lisp
shifty has joined #lisp
bsd4me has quit [Quit: Leaving]
matzy_ has joined #lisp
<matzy_> that worked! thanks everyone!
lucasb has quit [Quit: Connection closed for inactivity]
vornth has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
jesse1010 has quit [Ping timeout: 240 seconds]
countvaj` has quit [Ping timeout: 260 seconds]
terpri__ has joined #lisp
<natter> matzy_: important question though, why did a quicklisp update necessitate a reboot?
terpri_ has quit [Ping timeout: 256 seconds]
rumbler31 has quit [Ping timeout: 246 seconds]
<matzy_> i'm not sure, it just said to reboot your machine
<matzy_> and i dont use macs very often so i wasnt about to argue
tristero has joined #lisp
leo_song_ has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
leo_song has joined #lisp
ski has quit [Killed (Sigyn (Stay safe off irc))]
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
karlosz has quit [Read error: Connection reset by peer]
Oladon has joined #lisp
karlosz has joined #lisp
Bike has quit [Quit: Lost terminal]
ski has joined #lisp
* edgar-rft likes to use the macs in emacs
<beach> Good morning everyone!
<Oladon> Morning beach!
<natter> howdy
<edgar-rft> mornings are always good when beach appears :-)
<beach> Heh!
<Oladon> edgar-rft: But beach always appears in the "morning"...
<beach> natter: Are you new here? I don't recognize your nick.
<edgar-rft> Oladon: let's synchronize our clocks with beach's
<natter> a bit new!
torbo has quit [Remote host closed the connection]
<beach> I see.
<Oladon> edgar-rft: We don't have to... we have internet time :)
<Oladon> beach: Happen to have the explanatory link handy?
<beach> Of what?
<beach>
<Oladon> Global Internet Time, or whatever its proper name is
<Oladon> edgar-rft: In short, it's always morning when someone logs in, and night when someone leaves.
<beach> Ah, that one. I would have to Google it. Universal Greeting Time.
<Oladon> Ah, that's it.
<Oladon> I can never remember the proper name.
satousan has joined #lisp
<edgar-rft> Oladon: It's always morning because always someone joins and it's always night because always someone leaves. But only when beach appears it's a *good* morning and as far as I can remember Universal Greeting Time says nothing about good or bad mornings. Maybe that is a thing that needs to be added.
<beach> Back on topic: Don't forget the online Lisp meeting today at 13:00 UTC+2.
v3ga has joined #lisp
<Oladon> Hrm, I would enjoy attending that, but that's reeeeeeally early to be up.
<beach> It will be available as a recording later.
<Oladon> Ah, the marvels of modern technology.
<beach> Indeed.
bsd4me has joined #lisp
nicktick has quit [Remote host closed the connection]
iissaacc has quit [Ping timeout: 264 seconds]
matzy_ has quit [Ping timeout: 240 seconds]
iissaacc has joined #lisp
iissaacc has quit [Remote host closed the connection]
iissaacc has joined #lisp
bhartrihari has joined #lisp
gravicappa has joined #lisp
<jeosol> Good morning all
<jeosol> is anyone working with graph (not plots, but as in graph with vertices and edges) in CL. In my limited search came across "cl-graph" and "graph-utils". Has anyone use these or other libraries
<Oladon> G'night all!
dominic34 has quit [Ping timeout: 246 seconds]
rwcom3417491 has joined #lisp
rwcom3417491 has quit [Client Quit]
ilshad has joined #lisp
holycow has joined #lisp
dominic34 has joined #lisp
ilshad has quit [Remote host closed the connection]
coltkirk has joined #lisp
dominic34 has quit [Ping timeout: 256 seconds]
matzy_ has joined #lisp
matzy_ has quit [Read error: Connection reset by peer]
<beach> jeosol: I think graphs have the same problems as sets. There is no best way to represent them that will cover all operations someone might want to apply. That's why we have stacks, queues, trees, dictionaries, contatenable queues, union-find sets, etc. So it is unlikely that you will find a library that covers precisely the operations you want.
<beach> jeosol: Oh, and you have additional characteristics such as arcs/edges with or without data attached to them, whether a vertex can be part of more than one graph, etc., etc.
<beach> Of course graph theory completely ignores these issues.
<beach> Certain representations allow for multiple edges/arcs between two vertices. Others don't.
satousan has quit [Quit: WeeChat 2.3]
<jeosol> Thanks for that. I was just trying to avoid confusion so someone doesn't plots so someone doesn't mention gnuplot and related utils
<jeosol> I am glad you mention those data structures, that is something I am interested in as well. I still have to search for a cl library with those data structures. I was recently looking at heaps (max-, min-heaps) and linked-lists and stacks for some applications - general ADTs but in CL
<beach> I understand. And I just wanted to let you know that you are unlikely to find a library that will fit your needs. If I were you, I would start by figuring out the operations you need, and then come up with an appropriate representation.
<jeosol> for the graph, I am looking at simple problems, e.g., topological sort, some graph search (dfs, bfs, etc)
<jeosol> I agree with your comment beach. The ones i mention contains some useful bits. I will check their licenses and the ones that are mostly full feature and just add what I need and release it back out there.
<beach> Those algorithms are so simple that it is probably not worth the effort trying to convince an existing library to support them.
<zig> jeosol: how big is the graph? does it fit in RAM?
<jeosol> For now, I am not doing anything with production, it's just a utility to support them.
<jeosol> zig: nothing specific
<jeosol> I just got out of python land last few weeks, I wanted to do some of the work I did in CL.
<zig> jeosol: you should know if it is more or less than RAM. Usually it is less.
<jeosol> I don't anticipate issues with scale or anything for now.
<zig> jeosol: what were you using in Python?
<jeosol> zig: I agree with that
<jeosol> I didn't search for any specific libraries, I just used simple adjacently list representations, no ADT for the graph bit
<zig> hmm ok
<zig> jeosol: do the same in CL :)
<jeosol> I was just doing simple bfs, dfs, dijkstra, bellman-ford, just search, paths, etc. small algos
scymtym has joined #lisp
<jeosol> zig: that's my thought, using a simple adjlist will be easy to implement. Then I will want to take a large social graph from the next and do some test.
<jeosol> It's the latter that I wanted to search if there are existing data structures in CL land.
<jeosol> I am sure there is. These are common tasks
<jeosol> beach: you have a talk today right?
<beach> I do.
<jeosol> I lost track of the time, please can you remind me. I have been out for while
<beach> Just one remark, if you choose adjacency list, i.e. for each vertex, you associate a list of adjacent vertices or edges, you just then automatically excluded the possibility of a vertex being part of more than one graph.
<zig> I was working on bigger than RAM graph library, and the most wanted feature was graph algorithms, apparantly it is easy to fail at implementing those.
<beach> 13:00 UTC+2, but there are two speakers and I may not be the first one.
<jeosol> beach: yes, exactly. That's how i listed my case in python
<beach> What I mean is that you should think hard about whether this restriction is acceptable to you.
<jeosol> I just listed the nodes and associated edges by hand and also took care of the order of any edge (u,v) if it directed
<zig> that said, you can have some inspiration from say networkx
pok has quit [Ping timeout: 260 seconds]
<jeosol> beach: good point.
solrize_ has joined #lisp
<beach> If not, you will go down the wrong path from day 1.
solrize has quit [Ping timeout: 260 seconds]
<zig> an edge in multiple graphs? is that a thing?
edgar-rft has quit [Quit: Leaving]
<jeosol> well, the trade off, will really be adjacency matrix (for dense graphs) and list (for sparse ones). My problems are small now
bocaneri has joined #lisp
<beach> zig: Sure, you could have two graphs of cities. One graph with roads, and one with airline routes.
<jeosol> beach is in 10^d space.
<beach> I think zig just proved my point that this is a hard topic.
<zig> beach: ah very interesting problem, but I never got into it for real.
<jeosol> that's something I'd like to consider to, so called multi-layer graphs
pok has joined #lisp
<beach> jeosol: So it's good that I brought that up.
<jeosol> I saw some application been described on YT about those multi-layer graphs with some kind of communications
<jeosol> beach: exactly, of course.
Bourne has quit [Ping timeout: 258 seconds]
<zig> I read on _easier_ RDF repo, that they wanted the ability for an edge to point to a subgraph x)
<zig> that is an edge could connect two vertices, a vertice and a subgraph or two subgraphs
gravicappa has quit [Ping timeout: 256 seconds]
<jeosol> beach: it will be interesting to design for that from the start, but I agree, better think about that.
Oladon has quit [Quit: Leaving.]
<zig> I have an urge to mention my library, even if it is not very popular..
<zig> nvm
<jeosol> it's a graph lib?
wxie has joined #lisp
<jeosol> I did quick review of cl-graph and graph-utils. The cl-graph has MIT-license, no info on the other lib. They have overlapping development history.
<zig> I would say yes, but it is not implemented using the regular matrix or adjacency list, also the primary implementation is backed by sqlite lsm extension. The primary advantage is that you can query for edges and vertices without scaning the whole graph.
RedMallet has joined #lisp
<zig> I guess it will be a little bit inconvenient if you are getting started in the graph computing space and like I said, it is not very popular even if it use to have 100 stars on github.
<jeosol> not starting per se, but took classes a long time ago. I had to teach a class and the students where using python
narimiran_ has joined #lisp
<jeosol> I flirted the space in the past. Recently I am also looking at neo4j. I'll just want to work with CL for some of the concepts I am testing, but nothing hardcore at social networks scale
<zig> I tried neo4j, tinkerpop, datomic and some rdf databases like virtuoso
<zig> I also did small xp with python's networkx
<jeosol> oh cool, you have a lot more expertise in this space.
<zig> sort of
<zig> one of my main requirement was the ability to query the graph using my favorite programming language
<zig> (I have no professional project using graphdbs)
<jeosol> For me, its more theoretical, I'd to start looking at serious problems once I get a good handle of all the base techniques, SSSP, ASSP, network flows, etc, and implementation issues
<jeosol> which is what language?
<zig> It used to be Python, then I moved to Scheme.
jonatack has quit [Ping timeout: 256 seconds]
<jeosol> why you left python? I am not that good at it, but the version issues is a pain to deal with. Something I never had to worry with CL. I just update my SBCL, all my code runs
<jeosol> *at least most of the time
<zig> the version issues?
<zig> I replaced Python with Scheme because of the Global Interpreter Lock and generally because of performance
<zig> also the community is better ;)
<zig> it was specifically because I wanted to build that graphdb using a fast dynamic programming language (read: not rust)
wxie1 has joined #lisp
wxie has quit [Ping timeout: 256 seconds]
wxie1 is now known as wxie
<zig> fwiw, I have done some preliminary benchmarks, and the Scheme code is always faster than existing and established Java and C equivalent (spoiler: I rely on C FFI)
<zig> I guess CL will be in the same ballpark
contrapunctus has left #lisp [#lisp]
<zig> the downside of this choice is that my contribution is downplayed because parens and because dynamically typed programming language... Also because I do not support the same interface than the standard
<jeosol> zig: that's interesting.
<jeosol> so you need speed. Have people seen the benchmark results with Java and C? . I read that as a win for Scheme
bocaneri has quit [Ping timeout: 256 seconds]
gravicappa has joined #lisp
holycow has quit [Quit: Lost terminal]
iissaacc has quit [Ping timeout: 246 seconds]
diamondbond has joined #lisp
bocaneri has joined #lisp
jprajzne has quit [Quit: jprajzne]
jprajzne has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
jprajzne has quit [Client Quit]
jprajzne has joined #lisp
<easye> jeosol: Which benchmarks are you referring to?
<jeosol> I was referring to zig's benchmark results. He said his graphdb implemention in scheme is faster that Java and C
<jeosol> *should have tagged him, but he's probably out
shifty has quit [Ping timeout: 240 seconds]
<easye> Ah. How much faster? How does he account for implementation in the various languages?
orivej has joined #lisp
akoana has left #lisp ["Leaving"]
brown121407 has quit [Remote host closed the connection]
bsd4me has quit [Quit: Leaving]
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
<jeosol> easye: good question. I am sure zig have some answers
karlosz has quit [Quit: karlosz]
d4ryus1 has joined #lisp
liberliver has joined #lisp
<zig> it is much faster, compared to Java it is two to three times faster and compared to C it is 10% faster.
<zig> The thing is that both projects C and Java, rely on an ad-hoc btree or whatever, whereas my project used to rely on wiredtiger.
d4ryus has quit [Ping timeout: 240 seconds]
<zig> I want to stress that I rely on C FFI unlike those projects that rolled their own backing store. Also, my project is about a database, not a graph library.
<zig> I mean it is some kind of graphdb.
<zig> Yeah, people have seen the benchmark, but at the time it required a lot of disk space and like I mentioned, I do not implement the full standard spec so.. worthless for them since they want a drop-in replacement
iissaacc has joined #lisp
d4ryus1 is now known as d4ryus
<zig> To be precise, it is a triple store, but it does not implement RDF spec which is afaiu garbage. They are good ideas in RDF but the execution is not great.
<zig> On top of the tripel store, you can a regular property graph.
<zig> On top of the triple store, you can have a regular property graph.
diamondbond has quit [Ping timeout: 256 seconds]
pve has joined #lisp
<markasoftware> If I pass (namestring) a string, will it ever return a modified version of that string?
<phoe> markasoftware: you mean #'namestring?
<markasoftware> bleh
<markasoftware> indeed I do
<phoe> (namestring x) where X is a string will first convert X to a pathname and then convert it back... well... into a string I guess
<phoe> since #'NAMESTRING expects a pathname designator
<phoe> and strings are pathname designators
<phoe> so I guess that'll mostly work but be highly unnecessary and might introduce implementation-dependent weirdnesses
<markasoftware> ok, i'll just pop in a typep to make sure I only run it for pathnames
<markasoftware> This is the right way to prepare a pathname for being used as a command line argument, right?
<phoe> I'd use LET over (E)TYPECASE but that's a matter of taste
<phoe> uiop:native-namestring is at least 10% better over cl:namestring
<phoe> it'
<phoe> it'll do what you mean in most cases
<markasoftware> this is good news
<markasoftware> Thank you!
<phoe> s/over/than/
<phoe> gaaah I am sleepy
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
gxt has quit [Quit: WeeChat 2.9]
ljavorsk has joined #lisp
d4ryus has quit [Quit: WeeChat 2.9]
ljavorsk has quit [Remote host closed the connection]
d4ryus has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
<markasoftware> wow, I wish I cloned the HyperSpec to my local machine a long time ago, it's so much faster now!
ljavorsk has joined #lisp
RedMallet has quit [Ping timeout: 264 seconds]
RedMallet has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
Harag has joined #lisp
msk has joined #lisp
DeathandGravity has joined #lisp
tumdum has quit [Quit: WeeChat 1.9.1]
rogersm has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
space_otter has quit [Remote host closed the connection]
RedMallet has quit [Ping timeout: 256 seconds]
rogersm has quit [Quit: Leaving...]
RedMallet has joined #lisp
DeathandGravity has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
Harag has quit [Remote host closed the connection]
molluskempire has joined #lisp
molluskempire is now known as DeathandGravity
bhartrihari has left #lisp ["Disconnected: closed"]
bhartrihari has joined #lisp
jonatack has joined #lisp
terpri__ is now known as terpri
DeathandGravity has quit [Remote host closed the connection]
jonatack has quit [Ping timeout: 256 seconds]
<tfb> Does anyone know a linke which currently works for the SBCL manual? (sourceforge / sbcl.org seems to be very sick)
wxie has quit [Ping timeout: 260 seconds]
<tfb> ... and no sooner do I type that than it comes back
<phoe> glad to be of help
markong has joined #lisp
ukari has joined #lisp
joast has quit [Ping timeout: 240 seconds]
ayuce has joined #lisp
DeathandGravity has joined #lisp
markoong has joined #lisp
markong has quit [Ping timeout: 260 seconds]
tumdum has joined #lisp
tumdum has quit [Changing host]
tumdum has joined #lisp
tumdum has quit [Client Quit]
terpri has quit [Quit: Leaving]
kaftejiman has joined #lisp
DeathandGravity has quit [Quit: No Ping reply in 180 seconds.]
contrapunctus has joined #lisp
molluskempire has joined #lisp
libertyprime has joined #lisp
libertyprime has quit [Client Quit]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
rgherdt has joined #lisp
molluskempire is now known as DeathandGravity
DeathandGravity has quit [Quit: No Ping reply in 180 seconds.]
kaftejiman_ has joined #lisp
kaftejiman has quit [Read error: Connection reset by peer]
kaftejiman_ has quit [Remote host closed the connection]
kaftejiman_ has joined #lisp
kaftejiman__ has joined #lisp
kaftejiman_ has quit [Ping timeout: 260 seconds]
contrapunctus has left #lisp ["Disconnected: closed"]
X-Scale` has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
kaftejiman__ has quit [Remote host closed the connection]
orivej has joined #lisp
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` is now known as X-Scale
kopiyka has quit [Remote host closed the connection]
kopiyka has joined #lisp
shifty has joined #lisp
jesse1010 has joined #lisp
kopiyka has quit [Remote host closed the connection]
kopiyka has joined #lisp
kopiyka has quit [Read error: Connection reset by peer]
bhartrihari has left #lisp ["Disconnected: Broken pipe"]
bhartrihari has joined #lisp
kopiyka has joined #lisp
contrapunctus has joined #lisp
contrapunctus has left #lisp [#lisp]
kopiyka has quit [Remote host closed the connection]
kopiyka has joined #lisp
kopiyka has quit [Remote host closed the connection]
kopiyka has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
random-nick has joined #lisp
jonatack has joined #lisp
<zig> is there a distro based on nixos ideas outside guix written in CL?
kopiyka has quit [Remote host closed the connection]
kopiyka has joined #lisp
<phoe> AFAIK nope
<phoe> Michael Raskin has been experimenting with this for his own personal ideas but it hasn't been turned into anything official I think
kopiyka has quit [Remote host closed the connection]
kopiyka has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
seok has quit [Remote host closed the connection]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
<phoe> Online Lisp Meeting #5 starting in 15 minutes, https://www.twitch.tv/TwitchPlaysCommonLisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
technobean has joined #lisp
orivej has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
ukari has quit [Ping timeout: 246 seconds]
Aurora_v_kosmose has quit [Ping timeout: 240 seconds]
Lord_of_Life_ has joined #lisp
Aurora_v_kosmose has joined #lisp
Lord_of_Life has quit [Ping timeout: 264 seconds]
antaoiseach has joined #lisp
antaoiseach has quit [Client Quit]
ukari has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
orivej has quit [Ping timeout: 240 seconds]
tutti has joined #lisp
orivej has joined #lisp
terpri has joined #lisp
Harag has joined #lisp
iissaacc has quit [Ping timeout: 240 seconds]
<Harag> phoe: it will warm the cockles of your heart to hear that I ran into a situation where there is no other "sane" alternative but to add practical restarts for an error.
<phoe> Harag: you have scared me for dear life because I have Cookie Clicker currently open in a browser tab
orivej has quit [Ping timeout: 258 seconds]
<phoe> what's the situation?
<phoe> Harag: ...and I read "cockles" as "cookies"
orivej has joined #lisp
<Harag> I have live systems that ended up with "duplicate" data objects and if I just allow the user the select replace or use new then they can get the db loaded and just run a normal maintenance job to resolve the issue long term, the alternative is to write code to by pass the db and parse fix the data file out side of the normal environment
<phoe> oh, you have an interactive debugging environment?
<beach> Harag: Many people are currently following the online Lisp meeting, so you may find that people are less responsive than usual.
<Harag> beach: morning, yeah I keep on missing the start of those, so will go hunting for the links afterward
<phoe> Harag: you can also watch from the beginning, Twitch offers that option AFAIR
<phoe> that'll give you like 20 minutes of lag
<Harag> phoe: no its cl debugger, when you load/reload the project you have a chance to intervene
<Harag> its ok thanx I have work to do :(
<Harag> enjoy the meeting
contrapunctus has joined #lisp
* Harag zips it
orivej has quit [Ping timeout: 258 seconds]
<jmercouris> why does lisp seem to prefer octals?
<beach> ?
orivej has joined #lisp
<jmercouris> many operations work on octets
<jmercouris> base 8 operations
<jmercouris> why?
<phoe> what do you mean
<jmercouris> i see everywhere in the hyper spec references to base 8
<phoe> and do you mean octets or octals
seok has joined #lisp
<phoe> jmercouris: everywhere, such as?
<jmercouris> maybe i mean octets
<seok> how can I use accessors for classes in imported packages?
<phoe> seok: imported, what do you mean?
<seok> like (defpackage ..
<seok> (:use #:package
<seok> I've got a class there which is exported
<beach> seok: The same way you always use them (foo x) (setf (foo x) ..)
<jmercouris> those accessors must be exported
<phoe> does the package export the accessors?
<jmercouris> or you can use a double colon operator
<seok> That's what I thought, but I get undefined function
<phoe> if not, then the maintainer of that package doesn't want you to use those accessors
<phoe> ..oh
<seok> oh, I need to export the accessors
yur3i__ has joined #lisp
<phoe> then they are not defined
<seok> I'll try exporting the accessors too
<phoe> wait a second, do you get undefined function or a package error
<jmercouris> there are macros to do this
<seok> undefined function
<phoe> oh, no, wait! they aren't exported
<jmercouris> serapeum has this
<seok> yeah
<phoe> so local package symbols are used instead.
<seok> I see, silly me
<jmercouris> you can write classes that export all accessors
<phoe> yes, export the accessors, and resolve package conflicts that will arise via the TAKE-NEW option
<beach> jmercouris: That's really bad advice.
<jmercouris> I don’t think so
<jmercouris> it is useful to make sure that things are up to date, if you don’t want to, you can always unexport an accessor or only use slot value
<seok> if I export the accessors from this package, and export accessors for different class with same accessor names, import both of them, does this cause conflict?
<jmercouris> yes
<beach> *sigh*
<phoe> depends on the packages
<jmercouris> probably
gravicappa has quit [Read error: Connection reset by peer]
<phoe> if these are different symbols, then conflicts will happen
<phoe> so my advice is to use PLNs instead of :USE
<jmercouris> better to qualify with package name than to use a package
<seok> what is pln?
<jmercouris> I agree with phone
<phoe> package-local nicknames
<jmercouris> phoe *
<phoe> (defpackage foo (:local-nicknames (#:a #:alexandria)) ...)
<phoe> and then inside package FOO
<phoe> (a:assoc-value ...)
<phoe> that's (alexandria:assoc-value ...) except with shorter names
<seok> hm ok
<seok> this is same for methods right?
<jmercouris> beach: would you rather explicitly export each accessor, and why?
<phoe> wait, why
<phoe> how do you even export methods, they don't have names
<seok> same name methods for different classes are ok in same package, but not when imported from different packages?
<beach> jmercouris: A package is a unit of abstraction. You export only functions that are part of the exported protocol.
<jmercouris> ah, I see why you think this way
<phoe> seok: I don't understand the question about methods
<beach> Yeah, like elementary software engineering .
<phoe> generic functions have names
<jmercouris> well, our use case in Nyxt is very different
<phoe> methods don't
<seok> wait, do methods need to be exported then?
<beach> seok: STOP IT.
<beach>
<seok> ok
<jmercouris> and in our case, the API is everything unless explicitly stated otherwise
<phoe> seok: no, they don't
<phoe> do you know the difference between methods and generic functions?
<beach> seok: Packages export SYMBOLS.
<beach> Not generic functions, not classes, not methods.
gravicappa has joined #lisp
<seok> ok
<jmercouris> simply symbols
<seok> i thought accessors were methods?
<phoe> they are, but they're methods on generic functions
<phoe> and generic functions have names
<phoe> and these names are symbols
<phoe> and symbols are what you export.
<seok> so how does method "exporting" work? do I only need to export the class names?
<phoe> ...
<seok> and methods go with them?
<phoe> nope
<jmercouris> we do not export methods
<phoe> you export generic function names
<jmercouris> only symbols
<phoe> everything else goes with them
<seok> ok
<seok> so I cannot just import the methods to avoid function name conflict?
<phoe> we
<phoe> don't
<jmercouris> people often missay export “X” when they mean export symbol that points to “X”
<phoe> export
<phoe> methods
<phoe> c'mon, please repeat what jmercouris said a few times
<seok> Sorry, I was finding this odd
<seok> I get that the symbols which are associated with the methods are import/exported
<phoe> why?
v88m has quit [Ping timeout: 256 seconds]
<phoe> wait
<seok> like you guys have explained
<phoe> what symbols are addociated with methods
hsaziz has joined #lisp
<seok> well (defmethod ) assigns the method to a symbol doesn't it?
<jmercouris> not exactly no
<beach> No, it adds a method to a generic function with that name.
<seok> and I can export/import this symbol
<beach> This is really elementary stuff.
<seok> yes
<beach> You need to read a book.
<seok> so this generic function can handle multiple different methods
<seok> in the same package
<jmercouris> that’s correct
<seok> but how do I implement this behaviour across multiple packages?
<jmercouris> that’s not where you are having problems
<jmercouris> the reason you are having problems is consider this
<jmercouris> we are in package X
<jmercouris> we import symbol potato from package Y and Z
<jmercouris> now when I write potato, what do I mean?
jeosol has quit [Remote host closed the connection]
<seok> I get that import/export only does so with symbols
<seok> I understand
<phoe> seok: do you come from a language where methods belong to classes?
<jmercouris> do I mean Y:potato or do I mean Z:potato
<phoe> since that might be a point of confusion
<phoe> because in Lisp methods belong to generic functions, not to classes
<seok> so there is no way to implement this behaviour working for multiple packages?
<phoe> *what* behavior do you mean
<seok> like, you can make a method for print for your class
<seok> and that will work in that package
<jmercouris> OK so far
<seok> how do you make that work when exported?
<phoe> (defmethod print-stuff ((thing foo:bar)) ...)
<seok> yes
<seok> how do you take that to another package?
<jmercouris> you export the symbol print-stuff so that others may use it
<phoe> (my-package:print-stuff (make-instance 'foo:bar))
<seok> but let's say you have another package C
<beach> Wow, this is #clschool material.
<phoe> I assume that the DEFMETHOD happened in package MY-PACKAGE
<seok> and another class
<seok> which you have method for printing
<phoe> method on which generic function
<_death> seok: packages contain symbols; generic functions have names, which may be symbols; generic functions contain methods; to add to or redefine a method in a generic function, you supply the generic function's name to DEFMETHOD.. the only point where packages are relevant is in this specification of the name
<beach> seok: Methods are not in a particular package. Neither are generic functions.
<beach> seok: Packages contain symbols. You use the same symbol naming a generic function, you get the same generic function, no matter what package you are in.
<seok> yes I get all that
<jmercouris> I’m not sure you do
<seok> I think you are confused of what I am asking
<phoe> yes, I am
<jmercouris> then write very coherently what you are asking
<phoe> "which you have method for printing" - which generic function is the method defined on?
<seok> I am not confused about the mechanics, but confused how x is implemented
<seok> say a solution
ukari has quit [Remote host closed the connection]
<phoe> a solution for which problem? I don't understand the problem that you're facing just yet
ukari has joined #lisp
<phoe> do you have one GF or multiple GFs
<seok> here let's say
<jmercouris> what is GF?
<seok> gf is girlfriend
<seok> : )
<jmercouris> generic function?
<seok> hear me out, let's say I am writing a program for geometry
<seok> I have a package for 2d shapes
<seok> another package for 3d shapes
<seok> in 2d shape there is a class, rectangle
<seok> with accessor edge
<seok> in 3d shape a class for cube
<seok> with same accessor edge
ldb has joined #lisp
<seok> so If I want to import both of these classes with the accessors intact
<ldb> good evening
<seok> how do I do this?
<seok> hello!
<phoe> define a package that exports the symbol EDGE, import this symbol into both 2d and 3d, use it as accessor name
<jdz> seok: You say "same accessor", but how are they the same?
<_death> seok: there is no such thing as importing classes
<_death> seok: you only import names.. so you can import the name RECTANGLE and you can import the name CUBE and you can import the name EDGE
<phoe> also, what _death said and which you seem to *not* have learned yet
* phoe afk
<seok> yes you might be correct in that saying my technicals are incorrect
<seok> but do you get the gist of what I am trying to do?
<phoe> yes, and a part of this because you're trying to do things that don't exist in CL
<phoe> if you knew that all you need to import/export are symbols, this would be less of a problem
<phoe> fixing your technicals will greatly help fix the issue you face now
<jdz> seok: Think about it this way: you create a third package, called shapes, that exports a symbol EDGE, and use that symbol in both 2d and 3d packages.
<seok> right now I get it
<seok> that's the solution
<_death> seok: the gist is that you need to take a break and think things through
<seok> I wanted to know this
<seok> thank you phoe jdz
<jdz> No, that's not _the_ solution.
<jdz> That's "a" solution.
<jdz> To get your misconceptions straight.
<ghard> Better try to understand the fundamental differences between CLOS, and , say JAVA object system
<jdz> Bettor not to think about Java or any other system.
<jdz> Better even.
<seok> look, ghard, you say I need to learn such differences
<seok> I don't even program in java, and I know these differences
<seok> but I just didn't know how this would be implemented
<jmercouris> OK
<ghard> fine
<jmercouris> it’s fine, we are all learning all the time
<jmercouris> I’m still very much a noob myself, there is no shame in it
<jdz> seok: Try an exercise: implement the accessors without putting them into the class definiton.
<ldb> you could use symbols from #:keyword package
<seok> yeah, that didn't cross my mind
<jmercouris> that is a bad suggestion
<seok> to have another package to initiate the symbols first
<jmercouris> that would be abuse of the keyword package
<jdz> seok: Next step: put the same accessors in a different package.
<seok> is there a better way?
<jdz> seok: You do not _need_ another package.
<jdz> seok: You have to be aware of which package which symbols come from.
<jdz> seok: Just try the two exercise things I mentioned.
vornth has joined #lisp
<ldb> it's that, if at the beginning 2d and 3d are not using the same symbol for accessor, the result is there are two different generic functions, instead of the same
hhdave has quit [Read error: Connection reset by peer]
hhdave_ has joined #lisp
<seok> yeah
<seok> that's the problem
<seok> and I was wondering if I am stuck with it, or if there was a way around it
hsaziz has quit [Ping timeout: 256 seconds]
<jmercouris> no, that’s not the problem
<seok> what's the problem?
<jmercouris> forget about it for now
<ldb> CL package cannot do the same like ML functor, linking between different packages
<jmercouris> do the exercises suggested
<jmercouris> you’ll profit greatly
<ldb> it is a limitation due to design, so try get used to it
whiteline has quit [Remote host closed the connection]
<seok> what is ML?
<seok> ML means machine learning to me
whiteline has joined #lisp
<ldb> MetaLangauge, a family of lisp inspired language including SML and OCaml
shifty has quit [Ping timeout: 256 seconds]
Bike has joined #lisp
shifty has joined #lisp
<jdz> seok: Another exercise suggestion: use structs instead of classes (so you'll have 2d-edge and 3d-edge functions), and then write the EDGE function that would use TYPECASE to choose the right function to call. Then decide, where you want to put that function.
<seok> yeah
<seok> It's rare to find lisp design limitations, I encountered 2 so far (much more in other languges) and both seem to be related to CLOS
<jdz> You only think you've found something.
<jdz> If two packages have something in common, they must have something in common, right?
jesse1010 has quit [Quit: Leaving]
hsaziz has joined #lisp
<jdz> If you want a generic function be common to two packages, it has to be common, right?
<seok> sometimes no, because a word can have 2 meanings
<jmercouris> it is an explicit and very logical decision
<jdz> seok: So if it has two meanings, keep the packages separate. If it has one meaning, use the same symbol.
Bourne has joined #lisp
<jdz> It's all about symbols, not classes or methods.
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<jdz> Also about protocols.
<_death> there's no limitation.. packages are namespaces, not module systems.. and "accessor" is not a concrete thing, it is merely a pair of functions with a hint about their role, which is associating one object with another.. the set of accessors for a given object is not bounded
bhartrihari has joined #lisp
<phoe> so far you successfully found a limitation in your understanding of Common Lisp that you then blame on the language itself
<ghard> ANd understanding what a generic function is and how the *dispatch* happens is one of the fundamental differences between object systems.
<seok> @phoe nice, what about the case where 2 classes are not sharing a parent?
<ldb> limitation of expressiveness: accessor is not a syntactic entity, thus cannot be disambiguate from context
<jdz> seok: That's not a problem. The question is which function (method) you want to call on instances. Is that the same function, or different functions.
<shka_> ldb: it kinda is
<phoe> an accessor is just a function
<shka_> i mean: (defun (setf accessor) (new-value object)… is very much the thing with it's syntax
<shka_> unless you insists that you want to have direct information about the slot
<shka_> in which case, there is also slot-value
<shka_> but i fail to see this limitation you are talking about
<jdz> seok: Another exercise: imagine I've created a library that also has a shape. And it has an accessor method, but you don't access to the source code. How do you invoke the proper EDGE (or PRINT) function for my class?
<ldb> (defmethod edge ((o exterlib:shape)) (exterlib:edge o))
<_death> ldb: if you want to simulate a message passing object system in CLOS, it's easy..
<ldb> _death: yeah, or use flavor package to emulate what they had on lisp machine
ljavorsk has quit [Ping timeout: 240 seconds]
<seok> phoe how do you run this (defgeneric print-shape (shape)
<_death> ldb: indeed, I got COPYCAT to run (at least the parts I tried) with 50 lines of code implementing flavors like operators
<seok> when there is no class shape?
<jdz> seok: Another exercise: first write your classes and methods in the same package, and then split the code up into packages while preserving the semantics.
<phoe> seok: normally
orivej has quit [Quit: No Ping reply in 180 seconds.]
<phoe> this code works
<jdz> seok: It's the same as writing (defgeneric print-shape (foo) ...)
<phoe> SHAPE is just a lexical variable in there
<seok> hm, why doesn't it work on my sbcl?
<jdz> It's actually just a name of a parameter?
RedMallet has quit [Ping timeout: 264 seconds]
<phoe> one second...
<seok> I get there is no class named shapes::shape
orivej has joined #lisp
<jdz> seok: Are you using DEFGENERIC or DEFMETHOD?
<phoe> aaaa, one second
<phoe> I screwed up
<seok> phoe nw
<phoe> I removed too much because I was hasty
<phoe> now it should work
<seok> yeah
<seok> was trying to understand it xD
RedMallet has joined #lisp
<seok> that's better
ukari has quit [Quit: Leaving.]
<seok> yes this works
<phoe> perfect
<seok> so like we've said the solution is to make a 3rd package to initiate the method?
<phoe> ...
<phoe> no
rumbler31 has joined #lisp
<phoe> to export the symbol that names the generic function
<seok> right
<phoe> this would work even if SHAPES did not define any method
<phoe> (and it defines one, with the DEFGENERIC :METHOD; it's not used in this example)
<phoe> the client packages, 2D-SHAPES and 3D-SHAPES, then define methods on that generic function
<ldb> or ensure-generic-function
<seok> you guys are right I do need to look up generic function
<phoe> ldb: I don't want to dive into MOP right now, seok is still grokking the basics
<phoe> yes
<seok> I thought methods and generics were the same
<phoe> no, they very much aren't
<phoe> a method is basically a plugin for a generic function
<seok> phoe your way doesn't need to "export" methods, but they are still recognised
<phoe> yes
zig has left #lisp ["WeeChat 1.9.1"]
<phoe> because they are plugged into the generic function object
<phoe> there's no exporting symbols needed because there are no symbols here
<phoe> the GF and its methods are already connected when they're defined.
<shka_> you are exporting names, essentially
<shka_> same name, same export
hsaziz has quit [Ping timeout: 258 seconds]
<shka_> packages in lisp are essentially just a namespaces
<phoe> not really namespaces of their own either
asedeno_ has joined #lisp
<seok> generics don't exist in other languages do they?
<shka_> they do
<phoe> seok: "generics" is a dangerous word
<seok> shka_ what would be an example?
<phoe> Java has generics that work nothing like Lisp generic functions
<shka_> R lang has generic functions akin to the Lisp
<shka_> but just a single dispatch
<phoe> even though the word is similar
<seok> I didn't dig R too much, just scratched it
orivej has quit [Ping timeout: 256 seconds]
<jdz> So does Julia (but that's direct influence from CL, AFAIK).
orivej_ has joined #lisp
<shka_> clojure has multimethods clearly inspired by CL
<ldb> the first "generic function" is from CLU, since 1980's
<seok> clojure doesn't have cl-style generics?
<shka_> seok: eh, not directly the same, but very similar
<seok> Still looking into it. Generic functions look like a big feature to me
<seok> Wondering why it didn't get implemented in a lot of modern languages
<shka_> they kinda are
<ldb> it's a kind of polymorphism: many modern languages supports polymorphism, in different forms
<shka_> seok: i think that simply momentum was in favor of C++/java brand of OO
<seok> shame
<shka_> agreed
<seok> well, apparantly C was more performant than lisp during the boom
<ghard> Program, or programmer performance ? :)
<shka_> heh
<seok> Idk : D
<shka_> C is easier to optimize
<seok> postgres wasn't sure whether it was their poor lisp coding or the language, but lisp wasn't fast enough for them
<ldb> and C is easier to implement
<shka_> anyway, I really like CLOS
<shka_> i think it is an awesome system
<shka_> and practical too
wxie has joined #lisp
<ghard> This reminds me of a guy we had in a job interview back in late 90s - from Amiga demo scene. Asked about objects, he said, It's like structs with function pointers right?
<seok> yeah, other OOs are not general enough to my liking
<ghard> He got the job
<ghard> But I digress...
<ldb> very flexiable and expressive, suitable for mathematical use
bhartrihari has quit [*.net *.split]
Balooga has quit [*.net *.split]
asedeno has quit [*.net *.split]
even4void[m] has quit [*.net *.split]
bytesighs has quit [*.net *.split]
copec has quit [*.net *.split]
housel has quit [*.net *.split]
SomeB has quit [*.net *.split]
asedeno_ is now known as asedeno
<phoe> the videos from OLM#5 are now live
<phoe> https://youtu.be/KaUkiLVSObw - Creating a Common Lisp implementation (Part 2)
<phoe> https://youtu.be/hl0ANwOezw0 - Guix Past
<phoe> thank you for flying phoe airlines
<ldb> wut
<ghard> thanks phoe!
kelamir[m] has quit [Remote host closed the connection]
katco has quit [Remote host closed the connection]
userself has quit [Read error: Connection reset by peer]
Gnuxie[m] has quit [Read error: Connection reset by peer]
camlriot42 has quit [Read error: Connection reset by peer]
kinope has quit [Remote host closed the connection]
liamz[m] has quit [Read error: Connection reset by peer]
MrtnDk[m] has quit [Read error: Connection reset by peer]
cairn has quit [Write error: Connection reset by peer]
fountainpen[m] has quit [Read error: Connection reset by peer]
sammich has quit [Read error: Connection reset by peer]
unl0ckd has quit [Write error: Connection reset by peer]
infra_red[m] has quit [Remote host closed the connection]
<shka_> fly safe, fly phoe?
* ldb matrix down
Aurora_v_kosmose has quit [Remote host closed the connection]
Balooga has joined #lisp
bhartrihari has joined #lisp
copec has joined #lisp
bytesighs has joined #lisp
housel has joined #lisp
SomeB has joined #lisp
bhartrihari has left #lisp ["Disconnected: closed"]
bhartrihari has joined #lisp
Aurora_v_kosmose has joined #lisp
yur3i__ has quit [Ping timeout: 260 seconds]
RedMallet has quit [Ping timeout: 258 seconds]
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
RedMallet has joined #lisp
orivej has joined #lisp
MrtnDk[m] has joined #lisp
wxie has quit [Ping timeout: 240 seconds]
wxie has joined #lisp
RedMallet is now known as treflip
igemnace has quit [Quit: WeeChat 2.9]
wsinatra has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
ldb has quit [Quit: leaving]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
q-u-a-n2 has joined #lisp
bhartrihari has joined #lisp
q-u-a-n23 has quit [Remote host closed the connection]
younder has quit [Quit: Leaving]
technobean has quit [Ping timeout: 265 seconds]
edgar-rft has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
rogersm has joined #lisp
FreeBirdLjj has joined #lisp
orivej has quit [Ping timeout: 244 seconds]
orivej has joined #lisp
FreeBirdLjj has quit [Ping timeout: 244 seconds]
Bourne has quit [Read error: Connection reset by peer]
userself has joined #lisp
deselby has joined #lisp
cairn has joined #lisp
even4void[m] has joined #lisp
camlriot42 has joined #lisp
unl0ckd has joined #lisp
kelamir[m] has joined #lisp
Gnuxie[m] has joined #lisp
infra_red[m] has joined #lisp
katco has joined #lisp
sammich has joined #lisp
kinope has joined #lisp
tutti has quit [Ping timeout: 256 seconds]
liamz[m] has joined #lisp
fountainpen[m] has joined #lisp
wxie has quit [Ping timeout: 260 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
terpri_ has joined #lisp
terpri has quit [Ping timeout: 260 seconds]
bsd4me has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
bsd4me has quit [Ping timeout: 240 seconds]
ghard has quit [Quit: plugh]
bsd4me has joined #lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
seok has quit [Remote host closed the connection]
sjl_ has joined #lisp
Krystof has quit [Ping timeout: 240 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
ghard has joined #lisp
seok has joined #lisp
* ioa has reconnected with her bouncer
<phoe> heyyy
bhartrihari has left #lisp ["Disconnected: closed"]
<beach> Hello ioa.
bhartrihari has joined #lisp
<beach> Welcome back.
Lycurgus has joined #lisp
<ioa> thank you!
<ioa> I have to go again now but now I'll get to be actually here more often to see everything again (old backlock lost)
<ioa> *and to see
<phoe> ioa: the logs are available in the channel topic
<beach> ioa: Take care. See you.
<ioa> see you later! Thanks again beach for the talk today.
<beach> Pleasure.
gravicappa has quit [Read error: Connection reset by peer]
dominic34 has joined #lisp
gravicappa has joined #lisp
thetabit has joined #lisp
Lycurgus has quit [Remote host closed the connection]
bhartrihari has left #lisp ["Disconnected: closed"]
markoong has quit [Ping timeout: 264 seconds]
technobean has joined #lisp
bhartrihari has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
orivej has quit [Ping timeout: 240 seconds]
bhartrihari has joined #lisp
orivej has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
Bourne has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
<thetabit> I am trying to use with-open-file stream variable within a label that is declared beneath (with-open-file (stream ....) (labels ((fn (x) (princ x stream))))) but I get an error with the stream variable being referenced in the fn label, I assumed that a closure would be created, but I must not sufficiently understand yet lol.
<phoe> thetabit: what sort of error?
<phoe> if you try to use that function outside the dynamic scope of WITH-OPEN-FILE then the file will be closed
<thetabit> LABELS DROP-THRU-TAG error, I'm using SBCL
<phoe> thetabit: could you paste the full code snippet?
<thetabit> sure, what site do you use for formatting here?
<thetabit> cool, one sec
bitmappe_ has joined #lisp
<phoe> that's misformatted
<phoe> oh, because of tabs instead of spaces
bitmappe_ is now known as bitmapper
<phoe> are you sure this issue is because of WITH-OPEN-FILE? could you macroexpand all that stuff?
<thetabit> I am not sure lol, let me try macroexpand
<_death> looks like you're supplying 2 arguments to a function that takes one
shifty has quit [Ping timeout: 258 seconds]
<thetabit> Yep, I need to set the c-lang label with &rest
shifty has joined #lisp
<thetabit> lol, thanks
grewal has joined #lisp
grewal has quit [Client Quit]
grewal has joined #lisp
<thetabit> Alright, that worked, ha, still so much to understand and be mindful of.
<_death> especially error messages.. the full message is "(LABELS C-LANG :IN #:DROP-THRU-TAG-2) called with invalid number of arguments: 2" granted the drop-thru-tag gensym is not so helpful
<_death> and there is a more helpful warning signaled before the form is evaluated
madage has quit [Ping timeout: 240 seconds]
<thetabit> I see that warning now, function called with two arguments, but wants exactly one, ha, that's pretty clear ;)
Misha_B has quit [Ping timeout: 265 seconds]
narimiran_ is now known as narimiran
karlosz has joined #lisp
seok has quit [Remote host closed the connection]
madage has joined #lisp
FreeBirdLjj has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
jw4 has quit [Quit: tot siens]
jw4 has joined #lisp
bsd4me has quit [Quit: Leaving]
thetabit has quit [Ping timeout: 244 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
diamondbond has joined #lisp
shukryzablah has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
diamondbond has quit [Client Quit]
random-nickname has joined #lisp
nirved has quit [Ping timeout: 240 seconds]
terpri_ has quit [Ping timeout: 244 seconds]
random-nick has quit [Ping timeout: 260 seconds]
gaqwas has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
terpri has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
thetabit has joined #lisp
orivej has joined #lisp
PuercoPop has joined #lisp
<PuercoPop> Is it correct to assume that the &whole parameter in a macro is bound to a cons cell or can implementation dependent representations like SBCL's quasiquote appear there?
<PuercoPop> I'm trying to do something like (defmacro foo (&whole form) `,@(cdr form))
random-nick_ has joined #lisp
<Bike> it should be the form, which is a cons
<Bike> that won't work because `,@ isn't valid
treflip has joined #lisp
random-nickname has quit [Ping timeout: 256 seconds]
<PuercoPop> Bike: the ` happens earlier. I've been using `(if x y ',@(cdr foo))
gabiruh has quit [Quit: ZNC 1.7.5 - https://znc.in]
gabiruh has joined #lisp
rogersm has quit [Quit: Leaving...]
v88m has joined #lisp
Misha_B has joined #lisp
<Bike> i see
<Bike> in that particular case you could just do &rest of course, but maybe you're doing something more involved.
treflip has quit [Quit: WeeChat 2.8]
<PuercoPop> Bike: &rest would work afaict. I'm cargo-culting a little bit in this case. Several test frameworks use &whole to report the form in which the failure occurred.
<Bike> you should be able to rely on it being a cons, anyway. subforms might be other weird things, though.
orivej has quit [Ping timeout: 240 seconds]
<phoe> the CDR should be a list
<phoe> if the macro is called like (FOO . ARGS) then the CDR will be just ARGS
orivej has joined #lisp
<phoe> so null in case of a trivial/empty macro or a cons if at least one arg was supplied
<shukryzablah> I use a relative pathname in one of my files inside my src
<shukryzablah> folder. It works fine. However, when I run it with roswell, the
<shukryzablah> relative pathname doesn't refer to what I want, since it is not
<shukryzablah> relative to my src folder. What can I do?
Jesin has quit [Quit: Leaving]
<phoe> clhs *default-pathname-defaults*
<phoe> you likely want to explicitly rebind this variable instead of using the implementation-provided defaults that may or may not be based on the unix CWD
arpunk has quit [Remote host closed the connection]
technobean has quit [Ping timeout: 256 seconds]
gaqwas has quit [Remote host closed the connection]
random-nick_ has quit [Read error: Connection reset by peer]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
Jesin has joined #lisp
bsd4me has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
<PuercoPop> shukryzablah: you can also use asdf:system-relative-pathname to refer to files in relation to the location of the .asd file.
<phoe> ^
thetabit has quit [Ping timeout: 260 seconds]
nirved has joined #lisp
<shka_> i recommend PuercoPop solution
lucasb has joined #lisp
random-nick has joined #lisp
orivej_ has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
<shukryzablah> I went the asdf way, thanks to all
<phoe> <3
<phoe> that is the good way
bocaneri has quit [Remote host closed the connection]
jeosol has joined #lisp
bsd4me has quit [Read error: No route to host]
_jrjsmrtn has quit [Ping timeout: 256 seconds]
__jrjsmrtn__ has joined #lisp
epony has quit [Ping timeout: 258 seconds]
grewal has quit [Ping timeout: 240 seconds]
grewal has joined #lisp
abhixec has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
orivej_ has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
grewal has quit [Ping timeout: 256 seconds]
epony has joined #lisp
grewal has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
cantstanya has quit [Ping timeout: 240 seconds]
bsd4me has joined #lisp
ayuce has quit [Remote host closed the connection]
ayuce has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
countvajhula has joined #lisp
ayuce has quit [Remote host closed the connection]
ayuce has joined #lisp
<phoe> PuercoPop: note that the CDR will always be a list, never a quasiquote thing
<phoe> like, with (defmacro foo (&whole form) `',@(cdr form)) the CDR may be a single-element list, (`',@(cdr form))
stux|RC has quit [Read error: Connection reset by peer]
<PuercoPop> phoe: Thanks. So the question is under what conditions is the implementation allowed to 'leak' their quasiquote implementation. I should probably re-read crhodes posts about it
stux|RC has joined #lisp
<Bike> well the form being macroexpanded is never going to be a quasiquote thing.
<Bike> it's a proper list, even, unless you're doing something really weird.
jeosol has quit [Remote host closed the connection]
<phoe> Bike: the question is whether '`',x is going to contain quasiquotes after being read
<phoe> and AFAIK it is allowed to
<phoe> therefore the &whole argument is allowed to contain quasiquotes, too
<Bike> yeah, the subforms can be whatever.
h4ck3r9696 has joined #lisp
<phoe> CL-USER> (defmacro foo (&whole whole &rest stuff) (declare (ignore stuff)) `',whole) (foo `(bar ,baz))
<phoe> (FOO `(BAR ,BAZ))
<Bike> it's still evaluable. i think sbcl does something like (quasiquote #<some structure>)
<Bike> yeah `(a ,b c) is (sb-int:quasiquote (a #s(...) c)
<Bike> and quasiquote is just a normal macro so it expands into a list* call.
gaqwas has quit [Remote host closed the connection]
<Bike> maybe you could get a comma thing as a form? dunno. you probably shouldn't try to pick apart forms anyway
oldtopman has quit [Ping timeout: 272 seconds]
lansiir has joined #lisp
<Bike> yeah no that can't happen.
<phoe> raw quasiquote forms should never be taken apart by means of car/cdr/etc because their contents are implementation-dependent
<phoe> they don't even need to be lists
<phoe> only after being evaluated they are guaranteed to be lists or what else
<phoe> or vectors in case of `#(...)`
orivej has quit [Quit: No Ping reply in 180 seconds.]
h4ck3r9696 has left #lisp ["ERC (IRC client for Emacs 26.2)"]
<PuercoPop> But if I don't want to manipulate them, only print them I should be in the clear afaik. The reason for the implementation dependent quasiquote was to pretty print correctly iirc
orivej has joined #lisp
<phoe> ooh
<phoe> well then, some implementations have read-time quasiquote
<phoe> so you aren't going to have that consistent
<phoe> e.g. CCL
<phoe> you need to use fare-quasiquote or something to be able to have this stuff consistent, and then define some sorta print dispatch to have that printed properly
<PuercoPop> That's acceptable. If one wants consistency they can bring their own quasiquote implementation for this cases. ej. fare-quasiquote
<phoe> ha
<phoe> well then, that's going to work
red-dot has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
vaporatorius__ has joined #lisp
vaporatorius has quit [Ping timeout: 264 seconds]
vaporatorius__ has quit [Quit: Leaving]
vaporatorius has joined #lisp
vaporatorius has quit [Changing host]
vaporatorius has joined #lisp
cosimone has joined #lisp
cosimone has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
cosimone has joined #lisp
cosimone has quit [Client Quit]
shifty has quit [Ping timeout: 260 seconds]
cosimone has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
Alfr_ has joined #lisp
arpunk has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
seok has joined #lisp
<seok> Is there a quick way to make an instance of a class from an instance of its superclass?
<seok> keeping matching slots?
<phoe> what do you mean, an instance of its superclass
<seok> (defclass a () ..)
<phoe> (defclass foo () ()) (defclass bar (foo) ())?
<seok> (defclass b (a))
<seok> yeah
<Bike> You mean make a new instance of a subclass where all shared slot values are initialized from a prototype from a superclass?
<seok> and make an instance of bar from an instance of foo
<Bike> There's nothing built in.
<phoe> I kinda wonder why
<seok> ok
<phoe> you'd need to use the MOP
<seok> just checking
<seok> just lazy filling out all the slots, nw
<seok> ty
<phoe> you could make a dumb shallow copy of the instance and use CHANGE-CLASS
<phoe> but I'm going to hell for recommending it that way
<phoe> best to write an explicit copier function I guess
countvajhula has quit [Ping timeout: 260 seconds]
<Bike> i figured the prototype is supposed to stay untrashed.
abhixec has quit [Ping timeout: 265 seconds]
<phoe> I figure the same, it shouldn't be mutated
<phoe> I mean, make a shallow copy of FOO and then change-class it into a BAR
<phoe> that will mutate the copy
<seok> wait
<seok> (change-class works)
<seok> so it is built in?
countvajhula has joined #lisp
<phoe> change-class is built in
<phoe> copying isn't
<phoe> minion: tell seok about copying
<minion> seok: direct your attention towards copying: http://www.nhplace.com/kent/PS/EQUAL.html
abhixec has joined #lisp
<seok> ah it mutates the original instance
<seok> I thought built-ins were suppose to be non-destructive
<phoe> no, why
<phoe> can you imagine a non-destructive RPLACA
<Bike> change-clsas is explicitly destructive.
<seok> you will smash me for telling you my reason tho
<phoe> or INITIALIZE-INSTANCE
<seok> hm so changing class is easy, but copying the instance is not?
<phoe> changing the class of an instance is a well-defined operation
<phoe> copying is not
<seok> what's a good way to copy this instance? is there one?
<phoe> if all you want is copying slot values, https://github.com/phoe/phoe-toolbox/blob/master/phoe-toolbox.lisp#L631-L642 should be enough
<phoe> but that's only if that's what you want to do
<seok> what else would you want to copy?
<Alfr_> seok, depends on the equivalence relation your program wants from those objects.
<phoe> if the copy should not be a shallow one, you might want to e.g. copy lists and/or trees and/or conses
<phoe> that's why it's said that "copying" is not a well-defined term
<seok> right, you mean the cases where the values in those slots are not necessarily the same objects?
<phoe> when they are supposed to be fresh in the copy
<phoe> so that they are free to be mutated
<phoe> and then also it depends on which parts of these objects' structure also need to be fresh and which can be shared
<seok> I see Alfr_ phoe
wsinatra has quit [Quit: WeeChat 2.9]
<seok> so that's application specific
<seok> and need to be written every time
<phoe> it's object-specific
<phoe> also a single object can have several different means of being copied
<phoe> shallow, semi-shallow, deep, even deeper, dunno what else - depends on what and how should be fresh and what and how should/must/can stay shared
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
<seok> learning lisp teaches you that there is more than one meaning of equality
<phoe> equality is not a well-defined term
<phoe> as EQ, EQL, EQUAL, EQUALP proudly state
<edgar-rft> lisp there can be eq, eql, and equal rights for everyone
<seok> lool
<seok> edgar-rft
<seok> make it an xkcd plz
<edgar-rft> oh I forgot equalp rights
<Alfr_> edgar-rft, that may explain the inequality in reality. Test equivalence w/ equalp when comparing a set of rights but test with eq(l) when permission checking ... Nice catch.
bsd4me has quit [Remote host closed the connection]
bsd4me has joined #lisp
narimiran has quit [Ping timeout: 260 seconds]
Posterdati has quit [Read error: Connection reset by peer]
Posterdati has joined #lisp
Posterdati has quit [Read error: Connection reset by peer]
Posterdati has joined #lisp
gaqwas has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
countvajhula has quit [Ping timeout: 244 seconds]
gravicappa has quit [Ping timeout: 264 seconds]
orivej_ has joined #lisp
orivej has quit [Read error: Connection reset by peer]
markoong has joined #lisp
satousan has joined #lisp
hiroaki has joined #lisp
satousan has quit [Ping timeout: 240 seconds]
jw4 has quit [Quit: tot siens]
matzy_ has joined #lisp
satousan has joined #lisp
jw4 has joined #lisp
countvajhula has joined #lisp
satousan has quit [Client Quit]
orivej_ has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
hhdave has joined #lisp
hhdave_ has quit [Ping timeout: 256 seconds]
orivej has quit [Ping timeout: 265 seconds]
orivej_ has joined #lisp
<matzy_> i have a question on managing a packages.lisp file. the first package I have listed has (:use :cl) and some exported funcs. then my next packages has basically the same. each one starts with (in-package :this-package). however, i keep getting bugs about the second package having name conflicts with cl
<matzy_> *my next package
<matzy_> i'll put together a simple pastebin if anyone is willing to take a peek
<stylewarning> i will look
<stylewarning> (but ping me whenever you do it)
EvW has joined #lisp
<matzy_> stylewarning: https://pastebin.com/WmHL079m
<matzy_> thank you!!!
<matzy_> maybe i should make one for the error results as well
<stylewarning> matzy_: yes that was my next q
EvW has quit [Ping timeout: 244 seconds]
diamondbond has joined #lisp
Jesin has quit [Quit: Leaving]
<matzy_> the thing is, DB is a package I definied myself, so why would it have name conflicts with the base cl package? Shouldn't it inherit it's methods from there if anything?
<matzy_> And I've look for over an hour now and can't find a good explanation as to what's going on here
<matzy_> i know it has to be some simple concept i'm not grasping
cosimone has quit [Read error: Connection reset by peer]
<matzy_> (it it helps, I'm symlinked the local asd file to the quicklisp/local-projects folder and generally load through ql)
cosimone has joined #lisp
sjl_ has quit [Ping timeout: 256 seconds]
<nirved> matzy_: does the error happen if you load the system from a fresh lisp instance?
<_death> when your db.lisp file was loaded, the current package did not have cl:in-package accessible.. you can prevent this kind of trouble by fully qualifying in-package in your forms
<_death> the same goes for your defpackage forms
<matzy_> nirved: yeah, i loaded up emacs and the first thing i opened was db.lisp
<matzy_> do you have a link to what "fully qualifying" means so I can read up on it? not sure what that is
<matzy_> or just a simple explanation, i'm just not sure what you mean
<stylewarning> matzy_: in-package is an unqualified symbol; you can "fully qualify" it by writing cl:in-package
<_death> it means adding a package prefix, like "cl:in-package" instead of "in-package"
Jesin has joined #lisp
<matzy_> but then i would need to do the same for every (defun) and everything else from the base cl package
<stylewarning> matzy_: ordinarily you don't need to do it
<matzy_> why do i need to then?
<stylewarning> matzy_: it sounds like while experimenting, you accidentally loaded a file like db.lisp before Common Lisp knew that the db package :USE'd :CL
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<_death> no.. once you set the current package to your own package (that :uses cl) you don't need to qualify names from it
diamondbond has quit [Quit: Leaving]
bhartrihari has joined #lisp
<stylewarning> matzy_: so it saw "in-package" and said "ok this is going to be a DB symbol", then later you :USE'd CL and it's like "wait you already put IN-PACKAGE in the DB package, now you're telling me to :USE CL, which also has IN-PACKAGE, now the world is going to end"
<nirved> matzy_: (ql:quickload :conway-ff-api) works for me after commenting out "main" in asd
<matzy_> but main is what kicks off my server
<stylewarning> matzy_: main shouldn't happen in the ASDF file
<matzy_> but i thought you list all your packages/files in asd files
<stylewarning> matzy_: whoops, ignore that comment
<matzy_> and their dependencies
rgherdt has quit [Quit: Leaving]
<stylewarning> matzy_: sorry, I thought there was a function in the ASDF file
orivej_ has quit [Ping timeout: 240 seconds]
<stylewarning> matzy_: the main file can be there. nirved commented it out because you didn't provide main.lisp to us
<matzy_> ah you're right, my bad, sorry
orivej has joined #lisp
<nirved> matzy_: main should depend on db as well
<matzy_> it just calls two funcs from server so i forgot about it
<matzy_> so ultimately, when i start emacs i need to load my files in a particular order?
<stylewarning> matzy_: just write :serial t in your asdf definition
<stylewarning> and it will have a linear dependence order
<stylewarning> matzy_: you just need to (ql:quickload :the-asdf-system)
<stylewarning> or (asdf:load-system :the-asdf-system), either works, but QUICKLOAD will get all of the dependencies from the internet if need be
<matzy_> so open emacs, start slime, ql my project, and go from there
<nirved> yes
<matzy_> awesome!!
<matzy_> god i was so confused
<matzy_> thanks a million
<stylewarning> matzy_: http://codepad.org/IMINawCS
<stylewarning> there's a little demo for how that error can pop up
<stylewarning> matzy_: if we had (:use :cl) to begin with in our DEFPACKAGE, then the subsequent 'in-package symbol wouldn't create and intern a symbol into FOO, it would just simply refer to the one in the CL package.
<stylewarning> so then the error wouldn't have popped up
<matzy_> ahhhh i see
<stylewarning> matzy_: compare to this: http://codepad.org/4fCE1v1i
<matzy_> that's a good example, thanks
<matzy_> i have to run out rn, be back in 15 min if anyone is still here and has some more light to shed on me lol
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
bsd4me has quit [Quit: Leaving]
Tordek has quit [Quit: brb]
Tordek has joined #lisp
<seok> anyone experienced with spinneret can help me with this? https://github.com/ruricolist/spinneret#syntax
<seok> I am trying to use :raw pseudo tag, but getting errors
<seok> Wondering how to use it correctly
matzy_ has quit [Ping timeout: 265 seconds]
<seok> nevermind, I think I've got it
orivej has quit [Quit: No Ping reply in 180 seconds.]
Lord_of_Life_ has joined #lisp
orivej has joined #lisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
Lord_of_Life_ is now known as Lord_of_Life
shukryzablah has left #lisp ["ERC (IRC client for Emacs 26.3)"]
random-nick has quit [Quit: quit]
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
random-nick has joined #lisp
seok has quit [Remote host closed the connection]
bsd4me has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
nckx is now known as nckx-
pve_ has joined #lisp
nckx- is now known as nckx
pve_ has quit [Client Quit]
random-nick has quit [Quit: quit]
pve has quit [Ping timeout: 265 seconds]
countvaj` has joined #lisp
matzy_ has joined #lisp
countvajhula has quit [Ping timeout: 260 seconds]
cosimone_ has joined #lisp
cosimone has quit [Ping timeout: 260 seconds]
markoong has quit [Ping timeout: 240 seconds]
matzy_ has quit [Ping timeout: 240 seconds]
torbo has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp