freenode/#lisp - IRC Chatlog
Search
21:19:38
aeth
The best bet would be Mezzano and the author, when questioned here a while back, said something along the lines that Vulkan is possible but OpenGL is basically too complicated.
23:28:34
bugrum
Hi, I'm interested in making a Quicklisp private repository and I haven't seen much documentation related to doing this. After some googling I have found a project called Quickdist that seems to do it, but I don't know if it follows the exact structure of what would be considered a proper Quicklisp private repo (i.e something that someone can use the ql client to just point to grab the projects). is the Quicklisp-controller pro
2:35:50
fraktor
I'm writing a program that, depending on an argument, should switch either the x or y component of a vector that I'm storing in a cons cell. What's the best way to do this? Could I pass in an atom like 'x or 'y?
2:37:25
minion
White_Flame, memo from jmercouris: any examples of tree based GA in Lisp that you can point me to?
2:38:09
fraktor
If I wanted to pass in an atom like 'x or 'y, how would I do that? I tried using an if and eq, but that didn't work.
2:39:06
White_Flame
(defun foo (var) ...) if you call it via (foo 'x), then a (if (eq var 'x) ...) should work
2:40:06
White_Flame
if your 'x in the caller is cl-user::x, and your 'x in FOO's source code is my-project::x or something
2:45:11
White_Flame
minion: memo for jmercouris: there are little examples via google, but you'd have to customize and figure out what sort of code mutations you want
2:47:29
fraktor
I've got one recursive function, and I can't really think of a good way to break it down.
3:00:01
White_Flame
often times, I end up having a recursive function inside a toplevel funcction for my loop, via LABELS
3:51:00
pierpa
fraktor: in this case I would use keywords, such as :x :y and an ECASE for discrimintating between them.
3:52:53
clintm
If I have a class that uses a metaclass and I want to make a subclass of it, is it correct to also set the metaclass of the subclass? Have I missed something about mop and there's a way for the metaclass to follow into subclasses?
3:54:16
Bike
this is because you can have a class with one metaclass be a subclass of a class of a different metaclass.
3:55:56
pierpa
fraktor: also, I would represent vectors with vectors (duh). and then use an integer index instead of :x and :y
6:32:36
loke
My problem was that I am building a generalised configuration system, and I need a way to configure the system (like what backend provider to use, etc) before the packages have been loaded. This is because the configuration needs to go in .sbclrc for example
6:33:06
loke
So, I see two solutions: One is to set variables in CL-USER that the config system can access once it's loaded
6:34:10
loke
It's a bit ugly though, because in order to specify the class to use for the backend storage engine, I have to give th eclass name as two strings; package and symbol name of the class
6:34:50
White_Flame
I have functions in my .sbclrc which set up config for my interactive environment
6:35:37
White_Flame
I also have a simple image-builder, which those scripts tend to use, which performs toplevel mutating steps (like loading in libs and changing readtables before loading more) that I can either use in SLIME or to build executable images
6:36:01
loke
White_Flame: This is a generic system though, and I don't want to load packages unless you run an application that needs them.
6:36:22
White_Flame
yeah, this system is generic. It's based on a propfile which basically lists what commands to run when
6:36:31
loke
So Climaxima for example needs a way to find out what font size to use. This value should be provided by the config system.
6:37:00
White_Flame
and I specifically do not LOAD it, because that would scope some of the mutations, and I read/eval forms one by one so taht changes to the reader (like available packages) can happen between lines, allowing plain package:symbol references to work later in the file
6:37:30
loke
So somehow, in my .sbclrc I need to tell the config system what storage engine to use (i.e. plain files) and also tell that storage engine its configuration (i.e. the path where the prfs should be saved). I need to provide this configuration _before_ the pref system has been loaded
6:38:32
loke
White_Flame: No. You need to be able to set the configurations, but the system itself may never ben loaded.
6:39:18
loke
White_Flame: The goal to make it generic. I can't force people to force load a system in their .sbclrc file just so that Climaxima can save its config.
6:40:21
loke
with my current solution, all you have to put in your .sbclsrc file is this: (setf (get :lisp-pref :provider) '(:file "/foo/bar/blah")) in order to configure the system
6:40:32
White_Flame
but a (ql:quickload "climaxima") (climaxima:set-config :foo :bar) to be runnable in some init file seems to make sense to me
6:41:00
loke
White_Flame: That's the thing, ther eis no init file. The phone purpose of the prefences sytsem is to make _everything_ configurable, even the init file location
6:41:01
White_Flame
you could probably also create a custom .asd for it, which depends on climaxima and then configures it
6:41:31
White_Flame
the init file doesn't have to be in any special location. You invoke it to set up your config
6:42:10
White_Flame
you point your config system at that file, and it loads & configures climaxima or whatever else you need
6:42:14
loke
White_Flame: WHo is "you"? In my case, the "you" is the user, not the author of the application.
6:42:35
loke
White_Flame: The config system doesn't know where the file is. There may not even be a file.
6:42:41
White_Flame
I as the user set up an image definition file, which would load & configure stuff
6:43:11
White_Flame
I guess I don't understand the specifics of your requirements and why a simple system wouldn't suffice
6:43:58
loke
You need to be able to put the basic configration (like, config file locations, etc...) in the image
6:44:35
loke
Third: Whatever config has been given should used when (and if) the config system is loaded
6:46:21
loke
6) Lisp-pref initialises, and uses __only_ the information in the image to load all the other config
6:48:00
loke
phoe: Sure, but you can load climaxima using asdf:load-system as well. But I that what you're getting at is that lisp-pref is available after loading climaxima, and that is a correct assessment.
6:48:37
White_Flame
in my .sbclrc, I have (defun project () (setf *load-image-interactively* #P"....") (load #P".../image-builder.lisp"))
6:48:37
loke
The core of my issue is that you need to provide basic configuration for the system before the system is available.
6:48:55
phoe
in your .sbclrc, create a new package called CLIMAXIMA/CONFIG that exports a single DEFVAR'd symbol.
6:49:33
White_Flame
but, what to load & config is in the interacticaly loaded prop file, which can also be used from teh cmdline to create an executable image
6:49:40
loke
White_Flame: OK, so you are basically using what I proposed to be option 1 above: To have magic stuff in CL-USER
6:50:20
White_Flame
when the image-builder is loaded, if the interactive var is set, it assumes it's in SLIME. Else, it builds an executable image
6:50:25
loke
White_Flame: Of course, but this is about bootstrapping the system; to be able to tell it where that prop file is
6:50:32
phoe
loke: yep. that package can then be probed by CLIMAXIMA; if it does not exist yet, it is created and initialized with default values, otherwise the config is loaded from that package.
6:50:58
loke
phoe: Right. So it all comes down to having well-known information available to lisp-pref. Now we have three options:
6:51:38
phoe
1) sounds wrong for me because we do not want to pollute CL-USER with anything; it is a package available to the user.
6:53:18
loke
(I guess I was thinking in terms of symbol plists because both Maxima and CLIM uses them so heavily)
6:53:56
loke
White_Flame: It might not be a terrible one, but where wold you put it? It needs to do the right think on all OS'es
6:54:17
loke
And if you want to make the file location configurable, you're back to the original question again when you decide how to confige it)
6:55:08
loke
I guess some servings on #+windows, etc... one could build something that puts the config file in a reasonable lcoation on most environments.
6:56:12
White_Flame
(well, I don't know if slime supports passing things to the inferior lisp. I'm assuming you're loading your project from an already running SLIME connection)
6:56:54
White_Flame
I seem to be the only one left in the universe building executable images for deployment ;)
6:57:41
White_Flame
and of course, as an application server, it wants to continue building after the image has moved to another machine, which confuses the heck out of quicklisp and such
6:58:07
loke
White_Flame: Oh, I never do that. I always build the binary on the system where it'll be running.
7:00:02
White_Flame
sbcl --script lisp/image-builder.lisp lisp/image.prop || error "LISP BUILD FAILED"
7:00:18
White_Flame
so our system is generic, same image-builder and prop file loaded from slime to set up the environment
7:01:06
White_Flame
the image.prop does things like adds asdf dirs relative to the project, loads systems, evals toplevel stuff, etc
7:03:18
White_Flame
I would still recommend that your system not pull from some generic config, but that your generic config stuff pulls in systems and configures them. That way the systems don't need to be modified to benefit from the config
7:04:11
flip214
And I'm trying to accumulate all VLIME related things - if you know of other goodies in other repositories, please tell me.
7:07:36
loke
I think I'll go for the config file approach, and store it in a logical location based on platform. I will them provide multiple ways to override the config file location, including both a commandline option and perhaps the plist
7:12:20
otwieracz
Suddenly, everything I have typed in one instance ended up being typed in *every single running instance*.
7:13:46
otwieracz
I was pretty surprised, looking into chat log with my friend „when did I typed „sudo -i” here…”… however, I apologized him, switched channels and WAT