freenode/#lisp - IRC Chatlog
Search
7:34:57
flip214
ITERATE's FINDING doesn't seem to return multiple values... or am I doing something wrong?
7:35:47
flip214
ah, https://common-lisp.net/project/iterate/doc/Finders.html#Finders says "and *the* value of expr is returned" [emphasis mine]
7:42:00
beach
Graduates with a masters degree don't know much about programming language implementation. Plus, our system imposes a 3-year limit for a PhD. There would not be enough time for the student to learn enough about Lisp, programming language implementation, compilation, etc. in 3 years, let alone to write the journal papers that would be required for that student to get a job afterwards.
7:46:53
p_l
My criteria were the ability to do the PhD without joining on-site as normal full time student, and freedom in choice of topics
8:03:15
p_l
beach: in Poland, it's theoretically doable but you have to get through administrative opposition and essentially have a promotor willing to tackle it
8:19:08
p_l
some of it is personal ambition and growth. Frankly speaking what I do for a living tends to have people without degrees often
8:21:02
p_l
though thanks to "West" tending towards BSc instead of Master's as first degree I already have quite a bit of advantage there
8:21:13
jackdaniel
curiousity of a day: https://gitlab.com/embeddable-common-lisp/ecl/issues/458 (*print-case* specification isn't really well integrated with *readtable-case*, there is a cleanup issue for that though)
8:24:19
loke`
jackdaniel: In Maxima, maxima symbols are mapped to Lisp symbols by prefixing them with $ and using “invert” readtable-case
8:24:46
jackdaniel
heh, I need to take my time some day to study maxima (at least from the user perspective)
8:25:18
loke`
In Climaxima, to be able to display Maxima symbols properly, I simply install a readtable with readtable-case set to :INVERT. That fixes everything, but if I read your summary properly, that's just because I'm using SBCL, and different behaviour could be seen on other CL's?
8:25:28
jackdaniel
only interaction I had with it was fixing bugs discovered by maxima developers (they are very helpful and provide detailed test results before each release!)
8:26:15
loke`
jackdaniel: Right, but when I have the readtable installed, it also affects printing. At least on SBCL.
8:27:39
loke`
jackdaniel: OK. So is there any way I can ensure better compatibility with all CL's? What if I set *print-case* to :INVERT as well, will that fix it?
8:28:37
jackdaniel
loke`: no, because *print-case* is specified as if only :upcase was a current readtable-case
8:31:38
jackdaniel
http://www.lispworks.com/documentation/HyperSpec/Issues/iss286_w.htm this cleanup issue provides more information about how this could be solved
8:32:14
loke`
To me it's more than a curiousity. I seem toi have actually found myself in this territory. :-)
8:34:13
jackdaniel
from another practical perspective: print-case as it is specified doesn't play nice if programmer wants to work with so-called "modern" syntax (name taken from allegro and adopted in named-readtables), that is with preserved case
8:34:49
jackdaniel
it just gets in a way with all these vertical bars (but it doesn't sting *that* much)
8:36:25
jackdaniel
either way: someone eager to help with ECL may take this issue and implement the cleanup issue :-)
9:06:57
beach
Independently of that, it is illegal to claim that the authors mentioned on the specification wrote something that was actually written by someone else (i.e. flip214, me, etc).
9:07:24
jackdaniel
afair he said, that we may do what we want with it, adding appropriate annotation would address potential authorship dillemas
9:08:44
jackdaniel
while I don't have any plans to modify clim spec now I don't think we should treat it as set in stone for our project purposes. we would need to: provide information who created it and how to access original document and not claim it being CLIM II (we could call it CLIM 2.42 ;-)
9:11:36
jackdaniel
do you mean, that a good plan is "not having any plans to modify clim spec", or the other part? ;-)
9:12:31
beach
I think we ultimately need some document describing what McCLIM does and that would have to be independent of the current specification, though it would naturally include much of the original material.
9:28:38
jackdaniel
or to preserve roman notation, we could call it CLIM II ⁙ Э ; where ⁙ Э is qvincvnx & scripvlvm meaning 0.42 ;-)
9:53:49
scymtym
eclector's tests are probably not super easy to digest, but they demonstrate advanced facilities such as fiveam's random testing
10:27:07
loke`
Anyone with ASDF expertise? I need to figure out a way to evaluate an arbitrary Lisp form when a system is loaded. Is there something I can put in the DEFSYSTEM form to do this?
10:28:11
flip214
beach: sorry. I didn't want to step on your toes; I just propose a few small changes, mostly typos.
10:29:41
flip214
oh, so it's more of a licensing issue rather than a politeness issue? ack, I was afraid that jumping in with changes might be considered rude.
10:32:31
beach
flip214: The fact is that there is no license. Absent a license, we have the right to do absolutely nothing to the document. All we have is an oral statement by one of the authors that "we can do what we want with it". Now that author also claims to be essentially the only author, so he probably speaks with some authority.
10:33:09
jackdaniel
varjag: I'm not using fixtures (it is cleaner and easier to understand for me to create with- macros and wrap test body in it)
10:33:49
beach
flip214: But some of the authors I believe used to work for Symbolics, and we know that Symbolics has not been very willing to release their work in the past.
10:34:54
beach
flip214: Also, I don't know who Scott McKay worked for when he wrote that document. Perhaps his employer can claim that he can not give away a document that belongs to them.
10:35:57
jackdaniel
beach: if that were the case we should remove the document instead of distributing it
10:37:24
jackdaniel
if we do have copyrights we are not allowed to copy the document (and distribute it); if we do have such rights (i.e by verbal agreement), then we are fine with copying it (and modifying it with clear annotation)
10:44:50
flip214
I've still got a slime for recent SBCLs around... https://github.com/phmarek/slime/commit/a4752b71ed0ce4fe85246b5dc466bbd38e71e67b
11:44:12
elderK
Made a lot of progress today. Managed to (finally) write a define-binary-structure macro that I'm semi-happy with.
11:44:46
elderK
Thanks :) I can't wait to use it to actually do what I've been wanting to do (stuff for Mezzano)
11:46:17
elderK
I mean, I can generate a concatenated source using find and cat, but, I'd like to use ASDF to do it if I can :)
11:46:21
jackdaniel
I will tell you how I would tackle it: I'd look at ASDF source code and try to figure it out. I'm not sure it is documented
11:49:51
jackdaniel
seems if you want to concatenate also dependencies, perofm monolithic-concatenate-source-op
11:50:19
elderK
Aye - these things are documented. Just, how where the output is written or... appears... isn't
11:55:15
elderK
I figured it would be a useful exercize to like, concatenate all the sources, then compile/load it.
11:56:18
ogamita
elderK: you can use asdf:output-files or asdf:output-file to get the path to the file created by the concatenate-source-op.
11:56:43
jackdaniel
one note: it is possible, that compile-file on souch monolithic source code will exhaust the heap
11:57:21
ogamita
eg. (asdf:output-file :concatenate-source-op 'bordeaux-threads) --> #P"/home/pjb/.cache/common-lisp/ccl-1.11-f96-linux-x64/home/pjb/quicklisp-bare/dists/quicklisp/software/bordeaux-threads-v0.8.6/bordeaux-threads--system.lisp"
12:01:56
elderK
Also, another question, one that isn't really necessary but I'd find useful: How do you "forward declare" functions? Similarly to say, writing prototypes in C?
13:28:30
ogamita
elderK: this asdf:output-file is a function. It returns a result: the pathname! You don't redirect it, you use it!
13:29:19
jmercouris
I've done something like this (bt:make-thread (lambda () (uiop:run-program path)))
13:29:48
jmercouris
and I want to kill the program running by uiop:run-program, but it is a synchronous call, it doesn't return me a PID or anything
13:34:42
ogamita
Now, once you fork a program, you should know the PID. The problem is that you call uiop:run-program in synchronous mode. Just call it with :wait nil and wait on it after having stored the pid somewhere.
13:35:33
jackdaniel
sb-ext:run-program has wait, uiop's run-program doesn't. uiop:launch-program is meant for that, but uiop's stuff is a mess
13:38:00
ogamita
because there's also ext:run-program, sb-ext:run-program, etc, with basically the same API, while launch-program is specific to uiop.
13:40:42
jackdaniel
and uiop:run-program/uiop:launch-program has an abstraction-creep between call and the implementation run-program, so I can't say it is good or well mapped
13:45:10
jackdaniel
you may benefit plenty by reading this: https://common-lisp.net/project/slime/doc/slime.pdf
13:46:07
jcowan
beach: Unless you have a *really* comprehensive undo facility, or never mutate anything, or never make misteaks, you are going to need to refresh to a known-good state some of the time.
13:47:39
jcowan
fiddlerwoaroof: That was an interesting post. One way around the problem that I see (since she is designing gfs for Racket from scratch) is to have add-method return a new gf object which can then be exported with the module. No modifying global state, no problem.
13:57:31
Xach
https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html has some inmfo
14:01:04
jmercouris
which takes a process info object returned to you when you use launch-program in uiop
14:05:26
Xach
jmercouris: 2 is what users sent with C-c. 15 is what the system sends to processes to say "please shut down"
15:26:13
flip214
luis: like this? https://github.com/phmarek/slime/commit/8c3c3e630953ee6c2c633e36ef2da765a2466e5a
15:26:29
jackdaniel
flip214: please take a look at http://irclog.tymoon.eu/freenode/%23clim?around=1543403513#1543403513 (regarding CLIM specification)
15:28:30
akr
Hi there, I'm fairly new to CL and I don't know how to debug properly. How do I find out which line in the source does an error occur on?
15:29:59
jackdaniel
as of navigating to the source code, put cursor over the frame on backtrace you are interested in and press "v" key
15:32:17
akr
jackdaniel: I think there is some issue with connecting to a remote instance of slime, it fails to open the file
15:35:31
shka__
akr: https://common-lisp.net/project/slime/doc/html/Examining-frames.html#Examining-frames
15:42:05
loke`
spacemacs is a bit of a mess. I'd recommend starting with plain Emacs and add customisations yourself once you feel comfortable with it.
15:42:44
akr
loke`: I've been using it for about 2 years now and I can't complain too much. It is a bit rough around the edges in some places, but overall it's quite usable
15:46:10
sjl_
slimv isn't the one that requires vim8/neovim -- that's vlime. slimv works with older versions (unless he changed it recently)
15:46:59
jackdaniel
I'm afraid you will have to count lines by yourself or simply go at the position
15:47:47
jackdaniel
akr: you may consider setting tramp pathname translations (slime works with that just fine)
15:48:51
akr
jackdaniel: hmm, it seems to point me to where sb-int:simple-eval-in-lexenv is implemented
15:52:27
akr
the error is somewhere in (dbu::generate-payment-log-invoice pl) ;; the 500 line function
15:52:51
akr
so I execute this in the repl: (pomo:with-transaction (tr) (handler-case (dbu::generate-payment-log-invoice pl) (error (x) (pomo:abort-transaction tr) (error x))))
15:54:20
jackdaniel
notice, that there is :file and file name and :position which is position in the file of form which caused the condition
15:57:47
jackdaniel
since it is a macro which got expanded in your repl, there is no function in the source you could navigate to
15:58:52
akr
hmm, I know for sure though that the inner form given as argument to with-transaction starts to execute and fails halfway through
16:21:29
akr
so here is my current invocation: (pomo:with-transaction (tr) (handler-bind ((error #'lambda (x) (pomo:abort-transaction tr))) (dbu::generate-payment-log-invoice pl)))
16:26:09
fortitude
akr: v will take you to a specific line, but generally only if the function was compiled with debug info
16:28:58
fortitude
akr: it should, frame 2 looks like your function, so if generate-payment-log-invoice was compiled with debug info it should take you to the line in question
16:29:23
fortitude
unfortunately that's the line as it was when the function was compiled, so if you change source a lot it can be wrong
16:32:25
Xach
akr: in various popups and other modes you can use C-u C-c C-c also. like in the debugger on individual frames.
16:37:41
akr
hmm so even though I'm connected to a remote slime instance, once a function is compiled with debug info, `v` points to the local file
16:40:11
luis
flip214: left a comment on the commit. I say go for a pull request and mention issue #213
16:41:20
luis
flip214: a slight (but separate) improvement to the whole thing would be to have the contrib warn about being loaded in non-dedicated stream mode
16:44:12
jasom
C-u should work in evil-input-mode; not sure if it works in evil-normal-mode by default (I've bound a few useful-for-lisp keys in normal mode like M-. in my own settings)
17:43:11
PutYourLegOnDesk
Which book would you suggest for learning CL as an experienced programmer? I tried reading Land of Lisp but it got too dry and I couldn't get past page 90
17:43:31
minion
PutYourLegOnDesk: please see PCL: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
17:47:23
minion
There are multiple help modules. Try ``/msg minion help kind'', where kind is one of: "lookups", "helping others", "adding terms", "aliasing terms", "forgetting", "memos", "avoiding memos", "nicknames", "goodies", "eliza", "advice", "apropos", "acronyms".
17:47:33
minion
To add a term, say something like ``minion: add "term" as: the definition''. I will remember the definition.
17:48:52
jackdaniel
minion: add "PAIP" as: PAIP: Paradigms of Artificial Intelligence Programming. More Common Lisp than AI. Now freely available at https://github.com/norvig/paip-lisp.
17:49:42
jackdaniel
PutYourLegOnDesk: ANSI CL by Paul Graham has very good excercises and explanations
17:49:56
minion
jackdaniel: PAIP: PAIP: Paradigms of Artificial Intelligence Programming. More Common Lisp than AI. Now freely available at https://github.com/norvig/paip-lisp
17:50:08
jackdaniel
minion: add "PAIP" as: Paradigms of Artificial Intelligence Programming. More Common Lisp than AI. Now freely available at https://github.com/norvig/paip-lisp.
18:01:53
jackdaniel
minion: add "PAIP" as: Paradigms of Artificial Intelligence Programming. More about Common Lisp than Artificial Intelligence. Now freely available at https://github.com/norvig/paip-lisp.
18:40:12
sjl_
jackdaniel: maybe don't include the period at the end there, otherwise it might get included as part of a link by some clients.
19:10:57
ebrasca
minion: add "PAIP" as: Paradigms of Artificial Intelligence Programming. More about Common Lisp than Artificial Intelligence. Now freely available at https://github.com/norvig/paip-lisp .