freenode/lisp - IRC Chatlog
Search
19:30:52
jackdaniel
for example repl calls (read); so it is first waiting for a character (or a line) - to not have that you make it "busy"
19:34:14
loskutak
_death: sorry, I am new to this - what does it mean that it is not exported? Can I load it somehow, or does that mean, that I have to copy the function definition to my code?
19:36:32
_death
loskutak: it means it's not advertised as public by the library.. you can still call it like (cl-mathstats::singular-value-decomposition matrix)
19:37:46
dieggsy
loskutak: looked online for someone using GSLL : https://github.com/mnasoft/math/blob/0ab85a3a1b73f77d9283044df003b1d08547921f/src/ls-solve/gsll-samples.lisp
19:42:44
_death
loskutak: the library hasn't changed much in the last decade, so I think it's not a big deal.. you could try to submit a pull request that exports that symbol, or maybe start maintaining your own fork
19:45:22
Josh_2
Well I have (declare (special *validate*))(when (and (boundp *validate*) *validate*) <do my thing>)
19:48:42
loskutak
dieggsy: thanks, I am now able to create the matrices. So much pain... To finally arrive to "Requested feature not (yet) implemented; svd of MxN matrix, M<N, is not implemented in svd.c at line 60" :D
19:52:35
loskutak
I will now try the cl-mathstats svd, then do it with QR decomposition from 3d-matrices instead and if I fail on both of these I will just give up... I am really trying to like CL, but using any external code feels like hitting my head against a wall again and again. It is not very newcomer-friendly :D.
19:57:50
dieggsy
loskutak: good computational math libraries are hard to come by in most languages that aren't like the top 5
20:00:50
loskutak
that is understandable. I use python/numpy for most of my work, so I am used to having these functions. I was happy that there is numpy "clone" numcl, but that doesn't have the SVD implemented.. :/
20:03:27
jackdaniel
dieggsy: say you start lisp form the terminal. the repl runs and it calls (read-line)
20:04:33
jackdaniel
since the first repl already called dips, the first input will go to it (and confuse you probably)
20:05:45
Shinmera
I've had jonathan hard crash my lisp because it apparently does some really nasty shit in the name of optimisation.
20:06:44
jackdaniel
jsown has that safety 0 speed 3 declaration, just so you know (it may have unhandled memory faults for incorrect input)
20:08:44
loskutak
great news, the cl-mathstats SVD works :). It cannot do MxN matrices with M<N either, but it helpfully told me to add rows of zeros and then it works :) (except it doesn't sort the singular values, but that would not be a problem). I have then tried this "add zero rows" trick in gsll and it works too and gives me more precision. Thanks a lot for all the help, guys.
20:25:31
dieggsy
loskutak: nice! I'm definitely no stranger to missing numpy's convenience in other languages, so i feel your pain heh
20:40:06
dieggsy
moon-child: that's very cool and i hadn't heard of it, but I'm not sure I'd describe APL as "convenient" heh
21:47:30
dieggsy
besides rlwrap (and of course slime from emacs), is there a go-to for a more pleasant terminal REPL experience?
21:49:21
dieggsy
also, do you guys use roswell? can it be made to play nicely with quicklisp or do i have a misconception that they're somehow separate
22:00:14
dieggsy
hmmmm. i've figured out using roswell with system lisp, i wonder if i can make it use my pre-installed quicklisp as wel
22:03:22
dieggsy
moon-child: ros install install is failing with Symbol "%SIMPLE-FUN-NEXT" not found in the SB-KERNEL package.
22:33:41
MetaYan_
dieggsy: sbcl-readline is not in the distribution, so to install it, one just clones it in ~/quicklisp/local-projects/ and runs (ql:register-local-projects) once.
22:36:53
MetaYan_
dieggsy: I use it because it has completion and easy access to function documentation, plus it saves history.
22:39:14
dieggsy
i'm still mostly use slime, but having something nice to fallback to is always nice
22:44:30
MetaYan_
dieggsy: I have many with different OSes, so yes. Lisp works fine on all ;). Why? (Maybe continue in #lispcafe)
3:12:18
beach
hegz: #lisp is not really for truly basic questions, but they are tolerated. If it gets too lengthy, you might be redirected to #clschool. What are your plans with respect to Common Lisp? Write applications? Just play around? Something else?
3:18:02
beach
Thought I guess there are some questions that are "truly basic" but where the answers won't hurt to be repeated here, like the semantics of argument passing and how lists are represented.
3:26:54
hegz
beach I'm still not sure whether I will dig deeper into CL or not tbh, my journey with lisp was mainly me reading SICP and I was kinda surprised this channel is specific to CL but not lisps in general haha
3:28:12
beach
I see. Well, SICP is a nice textbook for genera ideas about programming, like encapsulation, etc. But the style of object-oriented programming in SICP is not as practically useful as CLOS.
3:31:11
beach
hegz: There is ##lisp for general Lisp discussions, but since there is no widely agreed-upon definition of "Lisp", I imagine the discussions can become strange. That's part of the reason I am not in that channel.
3:37:36
hegz
beayeahch yeah, the main reason that drove me into starting with SICP was the approach to programming in general and you get to learn scheme as a bonus haha.
3:37:45
Nilby
hegz: One of our lispers has written a Scheme in CL in case you want to do both at the same time - https://gitlab.com/mbabich/airship-scheme
3:41:01
hegz
<Nilby "hegz: One of our lispers has wri"> Lispers seem to love porting stuff don't they haha
3:43:23
Nilby
Yes they do, myself included. Once you have a CL environment that you like, it's hard to go back.
3:43:53
raeda
no-defun-allowed: Are you saying that nobody's made a self-hosting CL interpreter yet?
3:44:53
no-defun-allowed
A self-hosting interpreter? SBCL has an interpreter written in Common Lisp, but there aren't any full Common Lisp systems written entirely in Common Lisp (including garbage collector, operating system interface and so on).
3:45:13
beach
raeda: Modern Common Lisp systems don't have an interpreter at all, so it is entirely possible that nobody did that.
3:47:36
hegz
does it have something to do with the application or is it just entirely opinionated tastes.
3:48:31
beach
hegz: The condition system is unique, as is CLOS. But, again, there is no widely agreed-upon definition of "Lisp", so it is unclear which these "other lisps" might be.
3:49:32
no-defun-allowed
Common Lisp is a programming system, most other Lisp languages are just that.
3:50:08
Alfr
Hm ... i guess, getting away from C also would mean to implement handling systems calls.
3:51:30
moon-child
Alfr: system calls are not difficult. The challenge is that few systems have a stable syscall interface
3:51:51
beach
raeda: I suggest a compiler instead. It will take a bit longer, but it will be more useful.
3:52:17
no-defun-allowed
My personal opinion is that CL has more in common with Smalltalk or Self than some other Lisps (though it is hard to make a case with Scheme, I dunno).
3:54:11
Alfr
no-defun-allowed, in scheme you have call/cc and thus you can easily get green threads. (I think you were complaining the lack thereof recently.)
3:54:16
no-defun-allowed
The language is designed around interacting with an image, and there are facilities to make it work nicely in the language and its implementations.
3:54:20
beach
Alfr: System calls are messy either way. I have a long-term project for defining an implementation-independent protocol for POSIX and Linux system calls.
3:54:55
no-defun-allowed
Alfr: But then you also have call/cc and apparently if you breathe on it hard, you get performance problems. Don't get me wrong, I find it fun, but everyone else seems to think it's a bad idea.
3:56:08
no-defun-allowed
All that is necessary is a one-shot undelimited continuation, not multi-shot. And that is basically just a copy of all the registers of the thread, which is what operating systems use already.
3:59:38
Nilby
Even C isn't always exactly self-hosting as people thing. Ironically a popular C compiler has some tricky bits in a Lisp-like language.
4:01:06
no-defun-allowed
There is a .pd file with some S-expression stuff (pd for pattern dispatch?) and it is used for partial evaluation of C code.
4:01:40
beach
Nilby: RMS opted for a free version of Unix, rather than a free version of Genera, for political reasons. And he was right. If I had been in the position of RMS at the time I would have made the wrong decision.
4:01:51
no-defun-allowed
https://github.com/gcc-mirror/gcc/blob/master/gcc/match.pd Hm, yes, this is Lisp.
4:02:32
no-defun-allowed
Funny how I say that so-and-so clearly isn't Lisp, but then say I don't care because a language which just passes the definition doesn't interest me.
4:04:01
moon-child
no-defun-allowed: is that really lisp? I see quite a lot of c syntax, which would seem to indicate that's an sexp shim
4:04:33
Nilby
beach: I think it was also that he already had Emacs running on unix, and finding people who could write unix utilities is much easier than finding people to replicate Genera.
4:05:39
beach
Nilby: Yes, that's what I meant by "political reasons". His idea would have been a failure if he had chosen something other than Unix to copy.
4:06:43
beach
Nilby: But that must have been a very hard decision to make. Knowing that there is something better, but choosing the worse alternative anyway. I remember his phrase "Unix is not great, but it is not too bad".
4:08:19
Nilby
Exactly. I guess that's why we're still using Emacs as the top half of most of our current CL environments.
4:24:04
no-defun-allowed
I thought he didn't like keyword arguments at least, and this was from a presentation at some Lisp meeting in 2005.
4:24:40
no-defun-allowed
https://www.gnu.org/gnu/rms-lisp.html is a transcript of RMS at ILC 2002 rather.
4:25:41
no-defun-allowed
"I don't mind if a very complex and heavyweight function takes keyword arguments. What bothers me is making simple
4:25:41
no-defun-allowed
basic functions such as “member” use them." Fine, write a simple definition of object equality first.
4:25:49
Nilby
beach: Yes. It's interesting to see his votes and opinions on the CL committee. And funny that only after he's backed off does Elisp get nice things lexical scope.
4:30:02
Nilby
And funny that Gosling doesn't get more credit for writing most of the C code in the first versions of GNU+/Emacs, even if he made the worst lisp ever.
4:38:32
Jachy
I'm still amazed at how prolific Stallman was just in keeping up with a dozen already prolific Symbolics hackers in duplicating so much of their functionality for LMI.
4:45:17
Nilby
Jachy: It's quite impressive, but it's sad that LMI eventually got hopelessly behind, and maybe it more explains why rms ragequit to work on unix.
4:49:28
White_Flame
the complaining about heavyweight arguments is certainly one of a snapshot in time, before compilers could do a whole lot more to statically eliminate things
4:49:52
Jachy
Xerox indirectly spawned many things. Imagine if they hadn't pissed rms off by not giving them its source code
4:51:33
Nilby
I'd like to peek at the alternate universes without a pissed off rms, or with a sucessful Symbolics.
4:53:40
White_Flame
if Symbolics and Commodore had merged to bring lisp machines to the masses, I'd be quite a happy camper
4:56:03
no-defun-allowed
I read they were supposed to have a cheap Lisp chip in 1985, but that didn't happen.
5:00:49
beach
I think we can do something better than Genera. In today's world, we need more security anyway. And Lisp runs just fine on stock hardware today.
5:01:23
beach
We have better garbage collectors, and better compilers. And we now have a great native GUI library.
5:16:46
fiddlerwoaroof
Shinmera: do you happen to have documentation about issues with PARSE-NAMESTRING?
5:17:22
fiddlerwoaroof
I've found that using parse-namestring and a combination of MERGE-PATHNAME and MAKE-PATHNAME, I can get pathname behavior that's consistent enough across-implementations for most of my purposes
5:36:00
fiddlerwoaroof
I'd still like to see URLs specified the way PLNs have been, and for them to subsume most of the pathname stuff
6:16:44
Shinmera
fiddlerwoaroof: parse-namestring is hairy due to wild pathnames. So stuff like [], *, and others (implementation dependent!!) may need escaping.
6:20:08
Shinmera
implementing an analog to uiop's parse-native-namestring is on my todo for pathname-utils (and has been for years)
6:20:24
fiddlerwoaroof
I think it'd be useful to take the CLOSER-MOP approach with pathnames, really
6:21:10
fiddlerwoaroof
Specify the edge cases of the standard, and provide a package that implements that specification and a package that shadows the appropriate CL names
7:00:53
pjb
fiddlerwoaroof: or, having identified the edge cases, and specified them, patch the open source implementations so they behave the same on the same platform, and push so that commercial vendors implement the same.
7:01:22
pjb
fiddlerwoaroof: we have a strong position here given there are more free implementations than commercial ones.
7:01:52
pjb
fiddlerwoaroof: but remember: pathnames depend on the platform and the file systems that are mounted (depending on how the platform deals with them, check the mount options!)
7:07:10
pjb
fiddlerwoaroof: for logical-pathnames, see https://github.com/informatimago/check-pathname/blob/master/check-pathnames.lisp
7:09:30
pjb
fiddlerwoaroof: in general the problem is not so much that CL leaves things up to the implementations (there are a variety of platforms), but that there have not been defined a set of substandards specifying things for specific platforms. eg. how to deal with pathnames on MacOS, on Unix, on MS-DOS, on MS-Windows, on VMS, on Multics, etc.
7:13:26
Nilby
fiddlerwoaroof: The outputs of check-pathname for the various systems is very detailed answer to your original question.
7:17:46
Nilby
Now we just have to pipe the output from check-pathname on all systems to the automatic implementation fixer and we're nearly done.
7:20:13
Nilby
But my opinion is that the CL pathname stuff is written for a world which doesn't exist anymore, if it ever did, and there is a much simpler protocol that will cover all filesystems currently in use.
7:23:04
pjb
Nilby: granted. But AFAIR, only for soft specifications items. Eg. the specification mentions the customary case, but this customary case doesn't depend on the platform but also on the file system mounted, and platforms that can mount different file systems can (or could) deal with different customary case. In the same pathname! (ie, per component).
7:23:41
pjb
Nilby: but for hard features, such as the structure of paths in components, the hierarchic directory structure, etc, it's about good.
7:24:36
Alfr
I don't think pathnames support forks. (Not that it's a good idea to use them in the first place.)
7:24:38
pjb
Nilby: eg. the distinction between directory and file pathnames, even if it's not so clear-cut in POSIX pathnames, is still enforced in POSIX (eg. opendir vs open, or rmdir vs rm for files).
7:26:14
pjb
Well it's unrelated to pathnames. It'd be a parameter for OPEN. Since OPEN takes key arguments, it's already ready for an extension to specify what fork you want to open.
7:28:09
pjb
Alfr: the only place where it could be visible in pathnames, is when you map file systems with forks on unix (thru a mount), and they're translated in the path /mnt/fs-with-forks/example-file/data-fork when example-file is a file with fork, not a directory.
7:28:52
Alfr
Hm ... that'd be a solution, but conceptually I'd still think it rather belongs to pathnames.
7:29:30
pjb
Alfr: but in practice mounting Apple file systems on unix can use the apple-double or apple-triple format, which use alternate files with extensions: /mnt/apple-triple/example-file{.data,.rsrc,.info} /mnt/apple-double/example-file{,.rsrc}
7:30:11
pjb
This can be dealt with relatively easily with CL pathnames (the only thing to specify is how to deal with multiple dots in the file name.