freenode/#lisp - IRC Chatlog
Search
18:04:00
araly
which function is that, something from CLOS or something that should exist in the package ?
18:04:35
sjl
araly: I don't know what the lc package is. Is it a nickname you're defining for one of the lispcord packages?
18:05:18
sjl
araly: okay, so here's where guild is defined: https://github.com/lispcord/lispcord/blob/master/src/classes/guild.lisp
18:05:59
araly
yeah I see that, that's where I looked the accessor up, but there isn't anything more in the defclass guild
18:06:09
sjl
that's in the lispcord.classes package. it defines the guild class with a slot with name `id` in that package, and accessor named `id` in that package
18:06:37
sjl
Defining that accessor means there will be a function called `id` in the `lispcord.classes` package that will take a guild and give you its id
18:07:12
sjl
if we look in the packages.lisp file in that directory https://github.com/lispcord/lispcord/blob/master/src/classes/package.lisp we can see that the package exports that `id` name
18:07:34
araly
okay, so the accessor itself doesn't do anything, it just says that there will be a function
18:08:19
sjl
aha, here's where the magic name lc comes from: https://github.com/lispcord/lispcord/blob/master/src/classes/package.lisp#L170-L172
18:08:54
Bike
the :accessor specifies that there should be reader and writer functions, and that they should use the given symbol in their names
18:11:50
araly
okay, it worked, I don't really understand why though, is the lc:id a function that exists because of the :accessor, and it knows that it's has to be the id from an available-guild instance, because it has that in parameters ?
18:13:25
araly
so what is the slot-value for, because it works for a class I have created, but where I don't accessors. Should I write accessors and use this instead ?
18:14:00
sjl
when you say (defclass foo () ((some-slot :accessor some-accessor))) lisp will create the class with a slot named some-slot. It will also create (if it doesn't already exist) a generic function called some-accessor, and will define a method on some-accessor for members of class foo
18:14:23
sjl
by convention, a lot of people use the same symbol to name the slot and the accessor function
18:14:28
jmercouris
araly: I think it would be a good idea to stop what you are doing, and read about CLOS
18:16:01
sjl
If you want a really good intro to CLOS, Keene's book is a good resource. It's worth spending a while getting the basics down.
18:18:20
sjl
There are PDFs floating around of it, unsure how legal they are. I own two paper copies because I bought a second while I was in grad school rather than shipping my copy I left at home across the ocean.
18:20:28
araly
lisp is a language I learn on my own for fun, so I have a more try and read when you can't approach, I think it's time to read a bit further than just to be able to keep going ^^
18:21:52
jmercouris
sjl: sure, type :q, then when you drop back into the terminal, type in emacs to get a sensible environment
18:36:58
White_Flame
is this the most compatible/safe way of getting the directory of a file? (make-pathname :defaults filename :name nil :type nil)
18:49:12
White_Flame
I have some old cygwin path support in my lisp build tools. With the various linux subsystems in newer windows, and VMs being more popular, do you think cygwin usage is going to drop away?
19:05:42
ZigPaw
for me WSL superseded Cygwin on all windows machines I use. It is just plainly easier to use as I can leverage all of the software packaged in ubuntu and not to worry if something will compile under cygwin.
19:21:08
aeth
I thought WSL isn't graphical? I know Emacs outside of the terminal has more features, like more colors available for better syntax highlighting, and PDF reading.
19:25:36
White_Flame
I'm doing build scripts from a very raw environment, can't depend on libs being loaded yet
19:25:59
jasom
White_Flame: well you can copy the source-code for that then. It's a single .lisp file to load it as well.
20:23:23
dtornabene
so I've got a library (cl-async) with a bugfix that doesn't seem to have migrated up to a new package yet, i.e. the fixed library isn't available on quicklisp yet
20:23:50
dtornabene
my question is: should I download the fixed library from github and just install it via the local-projects mechanism?
20:25:16
sjl
don't forget step 2: forget you did this until six months later when it breaks something because you're running an old version
20:25:49
sjl
I should clean out my local-projects every time I update the quicklisp dist, but I forget
20:25:51
dtornabene
its like the third thing to go wrong loading another library and I'm getting perilously close to saying "yeah, nah....."
20:57:22
Xach
It would be interesting (and easy to implement) to have an easy way to see local projects that shadow quicklisp projects.
21:02:33
dtornabene
irony of it is that I had the quicklisp source queued up in another window to do some reading specifically to see what other commands there were that I haven't learned yet and I had to spend time trying to get another library to load
22:28:31
ZigPaw
aeth you can run X Server on windows and have WSL apps using this (MobaXTerm works best with latest emacs snapshot).
22:54:20
drunk_foxx[m]
But honestly this intro video tells almost nothing about the language, I bet it could have been done better. But whatever
23:35:20
didi
Heh, I'm having a brain fart. So (loop for fn in (loop for i to 3 collect (lambda () i)) collect (funcall fn)) evals to (4 4 4 4), but I want (0 1 2 3), i.e. I want the thunk to have the value of 'i' when it was created, not a reference to 'i'. What to do?
0:28:05
stylewarning
drunk_foxx[m]: the first take of the video did everything from defining the syntax of S-expressions and etc etc
0:54:40
Xach
didi: https://www.youtube.com/watch?v=svmPz5oxMlI - i'm not familiar with the channel but it has a big audience
2:40:51
ealfonso
is there something better than: (format log-fh "~A~A~A~A~A~A~A~%" ip #\tab date #\tab user-agent #\tab path)
2:49:10
ealfonso
I heard of this http://www.sbcl.org/manual/Statistical-Profiler.html which gives me 404
3:03:04
PuercoPop
additionally when you install SBCL you can build the docs as texinfo, which can be read from inside Emacs (C-h i)
3:09:58
pierpa
ealfonso: you could abstract and give a name to the action "print a few things separated by tabs and then swithch to a new line"
3:16:58
ealfonso
pierpa yeah, I was just wondering if there's a built-in way with format or another standard way
3:20:58
pierpa
Not sure if there's a format trick for doing it in an obfuscated way saving one or two keystrokes. But even if, don't. :)
3:23:25
pierpa
you surely won't like it, but FWIW, here's how I would do it: (defun print-line-tab-separated (where &rest what) (princ (first what) where) (loop for item in (rest what) do (princ #\tab where) (princ item where)) (terpri))
3:34:04
mange
ealfonso: Would (format log-fh "~@{~a~^ ~}" ip date user-agent path) do what you want? (Note the literal tab in the format string.)
4:55:30
jasom
on_ion: Other than initialization and garbage collection, all of sbcl is written in CL.
5:09:40
pillton
I think it would be difficult to integrate an independent implementation of CLOS with the host's implementation of typep; assuming the host doesn't have CLOS already.
5:15:33
jackdaniel
pillton: CLOS is integral part of ECL now, but years ago (before I even knew about the project) it had option to build it without CLOS – type implementation there is independent
5:32:03
theemacsshibe[m]
it's all good but to handle improper lists like `(x . xs)` i need to add a conditional setf which i don't like very much
5:38:43
mange
theemacsshibe[m]: At the moment if you call (p-match 'a 10) you get back '(a . 10), but if you call (p-match '(a) '(10)) you get '((a . 10)). That's surprising to me.
5:39:07
mange
If you make it so p-match always returns a list of matches, I think you can also clean up your conditional setf, and the conditional after it.
5:41:27
theemacsshibe[m]
aaaaactually given i want to put this on an environment alist there could be a better solution
5:48:13
theemacsshibe[m]
my end goal is to port it to cee to get it working in my interpreter for lambdas