freenode/#lisp - IRC Chatlog
Search
16:11:26
beach
KZiemian: If you want to make a specific note on each entry concerned, I can help you with the text for that. Like, for this one, I would say something like:
16:11:35
beach
Note from the CLUS maintainer: While this page explicitly says that there are no exceptional situations, notice that section 1.4.4.3 implies that, if the lists (all arguments except the last) are not proper lists, the consequences are undefined.
16:13:28
beach
... and if you compile a list of dictionary entries that need to be amended, I can work on such a list, and create specific notes.
16:15:21
KZiemian
beach: When I start to understand direction in which CLUS is going now enough to make this come true I will contact you
16:15:48
KZiemian
beach: now CLUS is for me like a maze, which have one path that I more or less understand
16:27:23
beach
KZiemian: Before you put any of your own notes into the CLUS, you should have them reviewed by some native speakers of English, or possibly by me.
16:31:19
KZiemian
beach: I don't care too much about it too. Yes CLUS is serious matter, I don't dare put notes in it without chacking
16:33:38
beach
I can't be a regular contributor, but certainly if you ask for specific help, I'll help out.
20:38:55
shka
ebrasca: it seems that it is job that single person can handle, but i am no expert whatsoever
21:15:50
pjb
Write documentation like programs. Write down specifications for the documentation, make an analysis, and write the implementation. Test it on real programmers.
21:22:10
pjb
You have a programmer process that needs to take specifications and module documentations as input, and produce code as output. You need to write the documentations. The specification of the documentation is that it provides good data to the programmer process so he's able to produce good code from the specifications.
21:24:44
pjb
it is even possible to write code that will produce correct results when run on buggy and failing processors.
21:27:39
pjb
The lesson here is that programming doesn't involve computers at all. The job of programmers can be applied on any kind of systems, everywhere.
21:31:24
pjb
Of course, there's a tendency to move processes to hardware computers, and the more so when AI increases. But you can do your job with people when you don't have hardware, or when you need more human intelligence (cf. eg. the Mechanical Turk).
22:44:25
pierpa
(NREVERSE (LIST 'YEAR 'NEW (IF (OR (EVENP (NTH-VALUE 5 (GET-DECODED-TIME))) T) 'HAPPY 'SO-SO) 'A 'HAVE))
23:19:30
Xach
Shinmera: I don't keep track of that right now. I think it would be useful and interesting, though.
23:25:38
phoe
though anyone can now run their source code through string-pokemonize and only make minor modifications to compatibility
23:26:33
krwq
Hey, does anyone know if there is an easy way to uninstall sbcl installed from sources?
23:38:06
Shinmera
Xach: Oh, alright. For some reason I remembered that you loaded everything at once somehow
23:49:04
phoe
(mapcar (lambda (y) (mapcar (lambda (x) (cons (car x) (cddr x))) y)) (mapcar #'cadr (caddr (caadr list))))
23:54:52
phoe
Shinmera: I got a parse tree from parse-js and this line above is meant to remove all the unnecessary trash from it, leaving just a list of lists containing the data I seek.
23:58:55
TMA
OTOH writing mapcar+lambda is easier. I do not need to reread the hyperspec to find out whether I should use OF, ON, OVER, IN, ACROSS, or FORTHWITH-WHEREAS-NOTWITHSTANDING :)
0:00:47
Shinmera
Plus doing the same as mapcar in loop is about the most bog standard thing ever, so your complaint really doesn't hold water.
0:02:26
phoe
in (1 2 3) gives you 1, 2, 3; on (1 2 3) gives you (1 2 3), (2 3), (3); across #(1 2 3) gives you 1, 2, 3
0:03:11
TMA
I find forgetting most of the LOOP syntax all the time. It is too much like English, yet it is different becasuse formalized. It just makes me afraid that I make some mistake.
0:09:14
krwq
TMA: loop has really flexible syntax - instead of thinking "I want to loop over elements" you should think what you want to do
0:11:42
krwq
I think I might have read it in PCL or somewhere but I've used "being the elements of" for a while after I found that it is actually less error prone when you got separate sytntax for list/vector
0:12:47
krwq
not clue where I read it then but this works on sbcl: (loop for x being the elements of #(1 2 3 4) do (format t "~a~%" x))
0:15:33
|3b|
if it works on sbcl, it might work on most others since it uses a popular LOOP implementation... good chance clisp wouldn't like it though
0:16:29
aeth
I make a lot of clisp unfriendly assumptions like a fixnum of at least 60 bits and the existence of specialized single-float and double-float arrays.
0:20:29
aeth
Futuer implementors have a difficult job because there are a lot of de facto standards.
0:21:22
aeth
I think most people just test major implementations (perhaps with something like roswell) for breakage, rather than testing against the standard.
0:21:30
|3b|
ACTION wonders how hard it would be to add a loop-style interface to ITERATE, would be nice to have the improvements like more clauses and portable extensibility without having to put up with the annoying non-lispy syntax :)
0:23:43
aeth
Well, COBOL, SQL, Shakespeare, and other programming languages that try to be like English.
0:26:32
pagnol
being new to lisp I just began looking into asdf and in particular the format of asd files, and I noticed that apparently asdf doesn't complain if functions from modules that don't officially depend on each other call each other
0:29:31
aeth
It's worse than that. Sometimes, it will work now (as you're adding those function calls) until you try to load the ASDF system again with a fresh image
0:30:33
Bike
functions don't strictly need to be defined until they're called, most of the time, which supports the ability to redefine, and such.
0:46:34
earl-ducaine
pagnol: A major aspect of CL is that the language itself doesn't have a concept about systems or modules. Much like Javascript, conventions and tools have grown up address that.
0:47:59
earl-ducaine
Don't get confused by CL packages. Some languange environments use the term package and module interchangably. In Lisp packages are very different from what many other languange would call a 'package'
0:53:04
aeth
pagnol: There are three concepts. Packages, systems, and projects. Packages are the thing built into the language and they're about namespaces for symbols. Systems are associated with ASDF. They're probably what you think of when you think "package". Quicklisp has the concept of projects, which afaik is just a collection of systems in a directory.
0:53:39
aeth
e.g. foo and foo/examples and foo/tests are one project, three systems, and any number of packages depending on the architecture.
0:55:59
aeth
There are two ways to do packages. One is to do one package per file, at the top of the file, and it looks a lot like Python or Java in the end. This is the minority style. The majority style is to have one package.lisp for the entire system, or possibly one package.lisp per directory if it's a very large project.
0:57:01
aeth
There are three ways to do systems. One is to have one large system for everything except possibly tests and examples if they exist. This is the majority style, especially since most projects are small. Another breaks systems into directories. Another associates systems with files and packages, using this: http://davazp.net/2014/11/26/modern-library-with-asdf-and-package-inferred-system.html
0:57:09
pagnol
I'm about to begin working on a client-server app and I was going to set it up roughly like this if this makes sense: https://gist.github.com/anonymous/986b798f2292b1537e69ef4742e87aad
0:57:40
pagnol
then foo would correspond to the server part, say, and bar to the client part, and they share some utils which would be in 'mylibrary'
0:57:53
|3b|
pagnol: examples and tests frequently have dependencies the main library doesn't, and in addition to wasting space they might also conflict with something that is just trying to use the library
0:58:35
earl-ducaine
|3b|: it would have been more correct for me to say that CL *has* the concept of a module, but the standard does not define what it is.
0:59:02
aeth
pagnol: If you're doing client and server and utils, you probably want (at least) three systems. Someone who's deploying a server probably isn't interested in what foo/client (or foo.client or com.example.client or however you want to name it) provides.
0:59:04
pagnol
so then you would have three separate calls to asdf:defsystem for tests, examples and the actual library/app?
0:59:09
|3b|
you might also have things that link your library to another but that are optional, so that would also be reasonable to put in a separate system for use by people who want to use both, while people who only use your library don't need to load the other
1:00:37
pagnol
and inside my project directory have a subdirectory for each system defined with defsystem?
1:01:47
aeth
pagnol: If you are breaking things up into subdirectories, unless those subdirectories are just foo/examples/ and foo/tests/ then it makes sense to use separate directories, like foo/client/, foo/server/, and foo/utils/
1:02:27
aeth
For anything really small, it doesn't matter, but if it's large, directories are useful to organize things.
1:03:06
aeth
If you want to go with a fairly standard style, you should probably have one system definition per directory and one package.lisp in each directory for the package definition.
1:07:07
earl-ducaine
pagnol: if you're using quicklisp, you can inspect the ~/quicklisp/dists/quicklisp/software directory which will have all the sources quicklisp has downloaded. That will provide you with a wealth of examples of how people have structured their asdf projects.
1:10:36
aeth
Or you can set things up once and basically just copy your old project foo.asd file to use for new bar.asd file when you want to make bar instead of foo
1:12:24
aeth
If you set things up on your own, you probably want to create a link in ~/quicklisp/local-projects/ (or wherever your local-projects directory is) to wherever your project is so Quicklisp can find it as if it was in Quicklisp, e.g. like this: cd ~/quicklisp/local-projects/; ln -s ~/git/foo
1:12:40
aeth
If you use Quickproject, it automatically registers the system so ASDF and Quicklisp can find it iirc.