freenode/#lisp - IRC Chatlog
Search
22:16:41
borodust
Xach: that's the whole _I_ don't want to go onto.. what happend? something was depending on those? examples, o guess
22:23:42
phoe
we are quicklisp. the cl-bodge dist will be assimilated. resistance is futile, and it conses a lot anyway.
22:28:44
phoe
but, I guess, if you make a git repository with a *ton* of submodules and slap a trivial-bodge.asd on top...
22:29:00
aeth
phoe: ASDF works on systems, QL works on projects, and they're not the same... annoying projects like CL-SDL2 that use systems like SDL2 break that assumption. (And even if that assumption held, there are lots of secondary systems)
22:31:20
aeth
The goal of trivial-bodge would be to load every bodge project, but not necessarily every bodge system (since e.g. some might just be for tests... although at the moment every bodge-* project in Quicklisp has one system, of the same name)
22:32:35
aeth
OK, good, that can be what makes trivial-bodge so trivial, then. It can just depend on cl-bodge
22:34:27
aeth
borodust: libecl.so is just another .so file, so you might as well make bodge-trivial-cl
23:10:47
borodust
i know i know, i should have abandoned all those, ripped them out of quicklisp body, but.. i couldn't
2:43:43
drmeister
I got on my hobby horse about the wonders of Common Lisp and the relative efficiency of languages on Hacker News... https://news.ycombinator.com/item?id=24642134#24644983
2:44:49
drmeister
“For what do we live, but to make sport for our neighbors, and laugh at them in our turn?” - Jane Austen
2:56:38
bhartrihari
In Table 2 of he linked article, it's interesting that they put Rust in Object Oriented paradigm, but not Lisp.
3:00:05
no-defun-allowed
Lisp is in the "VM" category of implementations, which is utter bullshit as well.
3:01:22
no-defun-allowed
I couldn't find what implementations were used for any of the tests, but maybe I'm not looking hard enough.
3:05:01
no-defun-allowed
The implementation list is at the bottom of https://sites.google.com/view/energy-efficiency-languages/setup.
3:05:33
no-defun-allowed
bhartrihari: Sure, but AFAICT the authors of that paper did their own experiments with their own software.
3:08:55
kreyren
meaning i have a hello world file with .cl extension that i want to invoke through ecl
3:13:10
no-defun-allowed
Try (print "Hello") -- LOAD won't print the results of what it evaluates. Also what's cargo-make?
3:13:38
borei
working on the logging library, file logging pretty much completed, was trying to log to local syslog, but found that i can't write to "/dev/log" socket.
3:14:11
drmeister
kreyren: My instructions assumed that you had already started ecl using: ecl and you have the > prompt.
3:17:29
kreyren
using the `(print "Hello")` works, but i need ecl to run it and exit true unless specified otherwise where using `ecl --load file` starts an interactive session
3:17:48
no-defun-allowed
borei: /dev/log is a Unix socket and not a file. I can't remember if there are libraries for working with Unix sockets though.
3:19:29
no-defun-allowed
kreyren: You can add (sys:quit) at the end of the file to make ECL quit after evaluating the rest.
3:20:44
kreyren
which is unwanted as i want to use it as a part of a backend to compile the software cross-platform
3:23:29
no-defun-allowed
Well, do you want the quotes as well? If not, (write-line "...") will just write a line.
4:27:05
kreyren
How can i execute `(write-line "...")` through ecl subshell? where the usage is http://ix.io/2zl4 trying to adapt the code base to work on as many turing complete systems as possible
4:29:10
akoana
borei: example: (sb-posix:syslog 1 "test message ~d from sbcl" 42) ;; 1 is the priority
4:29:20
no-defun-allowed
Why are you using ECL...to script...um...something to do with Makefiles and Rust?
4:29:50
no-defun-allowed
(And, what makes you think it's more portable than CPython or the POSIX shell?)
4:32:53
kreyren
no-defun-allowed, because i want to use rust to mess with it's embedding project for my weird implementation of bedrock linux-inspired project in something more production ready where the Makefile and cargo-make are using shell for scripting of repository management
4:33:26
no-defun-allowed
I thought in Rust they used one too many commas to delimit things, but here you are with none.
4:33:37
kreyren
no-defun-allowed, > or the POSIX shell? < -- Because systems from 1971 usually only have bourne shell (bsh) without a good way to get POSIX sh
4:35:52
no-defun-allowed
It seems very, very unlikely that you are going to run Common Lisp (via ECL) or Rust code on systems from 1971.
4:36:37
kreyren
from my point of view i don't see why ECL is a problem there and Rust is the challenging part as it's embedding could use some work
4:38:20
no-defun-allowed
ECL uses C99, which probably wouldn't have any compilers targeting or running on a 70s machine. (Well, someone with too much free time probably did write one, but I haven't heard of it.)
4:49:24
kreyren
no-defun-allowed, i though that lisp is that language O.o apparently people who use legacy systems are using lisp on them
4:55:02
no-defun-allowed
I can't think of any implementation that would support an older C compiler, or would fit in memory on an old machine.
4:57:02
kreyren
no-defun-allowed, yes #emacs keeps telling me that when i am researching for emacs contribution that there are grandmas and grandpas capable of hiring a hitman that if i broke GNU Emacs on their system
4:58:01
no-defun-allowed
I must really have a bad grip on time; GNU Emacs was released 14 years after the machine you have in mind.
4:58:03
kreyren
which is why GNU Emacs is using bsh for the repository management and compilation as i was told
4:58:28
kreyren
no-defun-allowed, i was told that these people contributed to it to make it work on their systems
5:00:32
loke
The first VAX came out in 1977. GNU Emacs was released in 1985. However, there were earlier emacses, and there definitely was one for VMS on VAX.
5:00:58
no-defun-allowed
A more on-topic question: with CFFI, how should I get at a slot of a struct in an array?
5:03:10
no-defun-allowed
Does it look like it could possibly mean "This is an Emacs that runs on a VAX machine"?
5:03:37
kreyren
https://en.wikipedia.org/wiki/Vax_Common_Lisp -- > dumb-terminal IDE with Emacs-like editor (programming in Common Lisp)
5:04:40
loke
no-defun-allowed: It's been a while, but something like (cffi:foreign-slot-value (cffi:mem-aref ARRAY (:struct foo) N) '(:struct foo) NAME)
5:42:53
kreyren
beach, nope but i will implement a CI to run it on VAX machine if everything goes as planned
5:44:45
no-defun-allowed
A continuous integration script, which runs when you push code to an online repository. Hopefully it uses an emulator.
6:16:34
jackdaniel
no-defun-allowed: indeed ecl formally requires c99 compiler, but factually it works with the earlier standard
6:17:26
no-defun-allowed
What was before C99? C89? I think that is still some time after the age of VAXen.
6:17:37
jackdaniel
in fact it was originally written to work (among other things) on a vax machine, however that would be a surprise if it had worked there /now/ :)
6:18:45
jackdaniel
C89, yes. And it was like this from the beginning (and it still worked on VAX), so there you have it. But I don't know much about vax myself except for the name ;)
6:21:48
jackdaniel
alternatively I could create a hash table with keys and some dummy values, but that sounds yuck
6:21:59
no-defun-allowed
If you are okay with insertion having side effects, a hash table with elements as keys. If not, fset or cl-hamt or something.
6:25:23
jackdaniel
right, but objects doesn't have any applicable order (basically they are standard object instances)
6:28:38
jackdaniel
you have three opaque instances #<a> #<b> #<c>, by what means do you compare them?
6:29:56
_death
right, if they are opaque then you may not be able to order them.. this would also rule out fset btw
6:33:13
phoe
_death: yes, sorry, EQ is the best for standard objects; please adjust your test accordingly depending on the type of your objects
6:47:38
iissaacc
Could anyone familiar with Parenscript tell me why (new (-Person age shoe-size)) is giving me new(Person(age, shoeSize); instead of new Person(age, shoeSize); ?
6:47:59
iissaacc
The example is from the manual, so it should work but maybe I'm doing something wrong
6:57:05
iissaacc
hmm ok i tried it within the parenscript package and it worked so something is going on...
6:57:24
kreyren
peer-review to the implementation of common lisp in cargo-make is appreciated https://github.com/sagiegurari/cargo-make/issues/461
7:01:21
no-defun-allowed
"but are not designed to be compatible with each other (even though some are mostly compatible)" They are compatible! It wouldn't be a very Common Lisp otherwise.
7:01:51
no-defun-allowed
And by the sounds of things, you're only parameterizing the line to write, which would best be left to echo.
7:02:04
kreyren
no-defun-allowed, i meant in lisp overview not in just common lisp if that makes sense
7:02:58
iissaacc
i realised you need to :use #:parenscript rather than only :import-from #:parenscript #:ps
7:03:26
no-defun-allowed
Implementations of Common Lisp implement the same language. An implementation of Emacs implements a different language...
7:09:02
iissaacc
yes thats what I was trying to avoid, but I don't want to have to write a prefix in front of every parenscript symbol
7:09:40
no-defun-allowed
kreyren: So even if that implementation did work, it wouldn't do very much that you couldn't do before. (And there is an edit button somewhere on a comment.)
7:11:09
no-defun-allowed
ACTION uploaded an image: Screenshot_2020-10-01_17-17-20.png (36KiB) < https://matrix.org/_matrix/media/r0/download/matrix.org/bOBHWxGpLNZrABciMpMEaVaO/Screenshot_2020-10-01_17-17-20.png >
7:11:14
beach
iissaacc: That is a tiny inconvenience compared to the conflicts you will have to resolve when you :USE more than one package like that, and compared to the breakage you will have to fix when the parenscript package exports a new symbol that will conflict with yours.
7:11:29
iissaacc
i wrote this a while ago when i was still :use ing everything https://controlc.com/4fe05edf
7:14:25
beach
iissaacc: For a person reading your code, the package prefix contains valuable information. And if you have two different packages with symbols with the same name, the package prefix immediately says where it is from.
7:14:33
_death
yes, it has all the issues of :use and more, for example it will also substitute your symbols for internal symbols
7:16:32
beach
iissaacc: And, though you are not likely to use any of the packages I am the author of, if you tried, you would have a hard time resolving all the conflicts if you were to :USE it.
7:17:34
beach
And, I maintain that the fact that parenscript uses a general nickname of PS is really really bad.
7:18:11
kreyren
no-defun-allowed, where the current implementation is using the cargo-make backend to execute ecl with arguments and parses a script that is saved as a temporary file to be executed
7:19:03
schweers
It seems like a way to use up two names in a global namespace, instead of just one.
7:20:52
schweers
Do package local nicknames shadow regular nickames? I.e. can I load parenscript and still have a package local nickname of ps pointing to something else?
7:22:30
beach
iissaacc: Because, then, a second system doing the same thing would silently clobber the first one.
7:22:38
iissaacc
so then it seems like you can't have embedded languages without having to write pkg: in front of everything
7:23:32
beach
iissaacc: Unless, of course, you don't ever intend for your code to be used by anyone else.
7:23:36
jackdaniel
many people do put use in their packages. that makes only sense though for packages you control yourself
7:23:40
_death
beach: I think what iissaacc meant is that parenscript (which generates javascript) would interpret keyword symbols as primitives
7:24:20
phoe
you don't need to write package-foo-bar-something: if you can write p: inside your package
7:24:38
_death
iissaacc: parenscript is fine (apart from the ps nickname).. you just need to import-from the symbols that you want
7:24:48
phoe
iissaacc: the issue is that in Lisp, primitives are not really keywords most of the time
7:25:05
no-defun-allowed
kreyren: It is usually more polite to edit comments than make more comments with your changes.
7:25:23
phoe
SQL has a fixed set of operators/keywords and I find it sorta meaningful to use keywords there, since you can't define new ones
7:25:37
no-defun-allowed
Also, ECL is not doing very much in your case, other than writing a line you give it. It would be more useful to give it arbitrary Lisp code.
7:25:54
kreyren
no-defun-allowed, ah true, but considering the current environment it's probably better to kept alike for archiving
7:26:09
phoe
whereas in JS/Parenscript I would find it kinda weird to mix functions named with keywords and functions named with non-keyword symbols
7:26:30
no-defun-allowed
kreyren: And someone can see the edited versions (by clicking on the comment date-time, which is marked as "edited").
7:26:33
phoe
especially since no one really does that in Common Lisp, which Parenscript is inspired by and lives in
7:27:49
_death
until a new SQL standard comes along, or some dbms extends SQL with its own primitives...
7:28:46
iissaacc
i see a lot of :use in peoples code so i kind of thought it was all g, but it's like from x import * in python
7:31:08
phoe
it is supported now on SBCL, CCL, ECL, Clasp, ABCL, ACL, and will be supported on LW 7.2 AFAIR
7:33:36
schweers
If I recall correctly the current released version of CCL does not yet support PLNs.
7:34:39
no-defun-allowed
kreyren: Also, may I ask, have you considered if the program you're adding support to will run on the target machine?
7:36:43
_death
the clisp package on archlinux is also deficient in that it wasn't compiled with modules.. like asdf
7:38:00
_death
and then quicklisp's asdf is 2.26.. so things like package-inferred-systems won't work
7:39:14
kreyren
no-defun-allowed, i did and i expect possible issues on the embedded side of things that i am willing to help with atm
7:39:43
kreyren
If i don't have the resources to implement that i will fall back to C-base makefile which i already have the method implemented through mentioned in the post
8:02:57
schweers
I have an instance of a regular user-defined class in a constant. With SBCL this works fine, but CCL tells me that “No MAKE-LOAD-FORM method is defined for #<CSV-TOOLS::CSV-CONFIG #x3020040E5E6D>”. What does this mean?
8:02:59
loke
schweers: It's trying to persist an instance of your class in the FASL file, which may not work.
8:03:00
schweers
So it seems, yes. I’m reading the clhs on MAKE-LOAD-FORM. It seems to me that SBCL does more work on this than CCL does. So I’ve at the very least learned that I’m relying on SBCL to do something for me, it seems.
8:03:02
contrapunctus
Anyone try using cl-prevalence? https://common-lisp.net/project/cl-prevalence/ What was your experience like?
8:03:02
beach
contrapunctus: I didn't use it, but reading the documentation, I got the impression that the class hierarchy has to remain intact when you restore a checkpoint. I may be wrong of course.
8:03:03
beach
contrapunctus: So I wrote "Clobber" as an alternative: https://github.com/robert-strandh/Clobber. But I haven't used it for anything serious.
8:11:19
beach
It is basically logging every transaction, so that you can create an equivalent state by replaying the log from a fresh image.
8:12:13
beach
And since the log only mentions protocol operations, the class hierarchy does not have to remain intact between the image that created the log and the one replaying it.