freenode/lisp - IRC Chatlog
Search
1:08:38
fiddlerwoaroof
if you don't mind an extra C dependency, there's also carrier by orthecreedence
2:19:41
Oladon
I have a project that was working a year ago, from which I took a hiatus... and now it doesn't work anymore. And the library in question was last updated in 2014.
3:06:30
krwq
i got possibly stupid question: how do you step through the code? when i put (break) in the first line of my function and click "s" in slime it immediately leaves the function
3:30:09
Oladon
Xach: The web scraping code was mis-parsing a document. I suspected the document had changed, but in actuality it turned out that I had made a mistake when I picked the code back up this year.
4:39:43
aeth
Oh, I see how SBCL stores Unicode strings in its fasls. ^@^@^@f^@^@^@o^@^@^@o^@^@^@ ^@^@^@b^@^@^@a^@^@^@r for "foo bar" so either padded UTF-8 to be constantly 32-bit or UTF-32 or both (not sure if there's a difference, and if there is if there's a way to tell)
4:40:41
BusFactor1
And I'm playing with this idea called 'typers', variables that can be values or functions depending upon their context.
4:41:59
BusFactor1
But generally they'll be functions in the end...they're meant to be passed to the sinusoid generators as paramters to create a synthesizer.
4:45:16
aeth
All I know is that I can replace the three null characters with "" in emacs and then read a lot of literal strings. (obviously saving would break the fasl file)
4:48:27
aeth
interestingly, the CCL fasls seem to use UTF-8 or ASCII because I can see those in emacs directly
5:02:12
aeth
Most *major* Lisp projects have a bus factor of 1 or 2, even if they get occasional patches from others.
5:02:55
BusFactor1
I think that's where the integration problems come from. But that coherency will come with time.
5:07:12
BusFactor1
This is actually my company name. And it's lisp based, but not ready to take on employees.
5:08:19
vtomole
Hey, i'm having problems running the example in this README: https://github.com/tanakahx/cl-binary, my with-open-file for stream works fine, but this get's me an "out" not defined. Any help is appreciated!
5:11:55
beach
vtomole: And what is the relation between the with-open-file you talk about and the with-open-binary-file in the example?
5:13:13
vtomole
Oh jesus, you are right, wrong package, thought it would work in cl-user, I should sent a fix to that readme but it looks like the project is dead.
5:18:11
beach
vtomole: I think it assumed that the user known that the library won't try to magically import its symbols to the cl-user package.
5:19:14
beach
vtomole: Having said that, I should add that I know prefer to use explicit package prefixes for external libraries, and for such usage, it would be good to supply the package prefix in the examples.
5:49:10
beach
Yeah, but this practice is unfortunately incompatible with the convention of using long package names, like pjb does for instance. Package aliases would come in handy, but we don't have them yet.
5:49:54
axion
But yeah, it goes a very long way towards making your code understandable, amoung other benefits.
5:50:12
beach
Not in my world. :) I always pretend I am in a LispOS where all software is present at the same time.
5:51:52
beach
Right. In trying to clean up the code for (first) Climacs, I couldn't even figure out where most operators were defined, because it :USEd all its external packages.
5:52:24
beach
It is amazing how reading one's own code from a few years back gives quite a few surprises.
5:52:40
axion
The only thing I use now, is alexandria, because I use a handful of functions in every project, and it has almost become part of the standard for me. I really should be just using :import-from though
5:56:27
axion
What is more annoying are the surprises from reading other peoples code with many USE'd packages. I bet these developers either have a hard time naming symbols, or take the Emacs approach that lacks multiple namespaces.
6:04:25
beach
This discussion reminds me that I should probably ditch my attempt to clean up the code of (first) Climacs, and start over. My current attempt became to error prone and I fear that I will never get it to work again this way.
6:40:11
beach
1. Make sufficient progress on Second Climacs so that it can display Common Lisp code from the parse results of the incremental parser.
6:40:17
beach
2. Create a special analyzer that will highlight imported symbols without a package prefix (other than symbols from the Common Lisp package), and provide a tooltip that will show the name of the package of the symbol.
6:40:28
beach
5. Import selected parts of the cleaned up code from (first) Climacs to Second Climacs in order to make faster progress on Second Climacs.
12:03:47
myrkraverk
That has been my exerience, but I think I'm not well versed in CL yet, to know about most of the UBs (unlike C).
12:32:11
beach
myrkraverk: Common Lisp has plenty of situations where the behavior is undefined. But most Common Lisp implementations don't fail as spectacularly as most C implementations would do in such cases.
12:33:20
beach
myrkraverk: The reason is that Common Lisp implementations can (and in general do) test for these situations and signal an error then.
12:34:23
beach
myrkraverk: But the Common Lisp HyperSpec allows for undefined behavior to be as spectacular as the C standard does, so you have to choose your Common Lisp implementation wisely.
12:35:38
beach
myrkraverk: For example, I don't know a single situation where SBCL would fail silently in safe code, i.e. when the SAFETY optimize quality is equal to 3.
12:36:21
beach
myrkraverk: Now, the situation is completely different if you start using code written in a foreign language, of course (which is one reason I try to avoid that as much as I possibly can).
12:49:39
adlai
myrkraverk: you do still have to know the limitations of your machine. for example, SBCL on memory-starved linux will do the moral equivalent of a segfault if you leak memory (or don't care enough about it)
13:05:35
|3b|
one example of a place where it is easy to get C-level behavior from lisp is something like (defun foo (a) (declare (type some-type a)) (check-type a some-type)). the DECLARE tells the compiler A is SOME-TYPE, so it knows it can skip the CHECK-TYPE