freenode/#lisp - IRC Chatlog
Search
7:05:27
verisimilitude
The third and last is ACUTE-TERMINAL-CONTROL, which as an abstract program for controlling terminals; it uses CL-ECMA-48, the second.
7:06:07
verisimilitude
>I also have a large disgust with the use of Curses varieties in Common Lisp programs, as this unnecessarily and substantially complicates using such a program. Risking memory leaks shouldn't be necessary to control a terminal.
7:09:44
verisimilitude
In designing the ACUTE-TERMINAL-CONTROL interface, I naturally found myself using SETF for some functionality and so decided this was best for all functionality.
7:10:44
verisimilitude
As an example, (CURSOR) returns the cursor location corresponding to the stream argument, which defaults to *STANDARD-OUTPUT*; (SETF CURSOR) is used to reposition the cursor, similarly.
7:14:02
flip214
beach: "if you're going to start work on that, do it RIGHT" is the general assumption, I guess.
7:16:32
shrdlu68
verisimilitude: If I understand this right, acute-terminal-control simply spits out ANSI control codes, right?
7:18:39
shrdlu68
Ah, those have been implemented before, such as https://github.com/pnathan/cl-ansi-text
7:19:18
phoe
verisimilitude: SHUT-IT-DOWN is already implemented by UIOP:QUIT, see https://github.com/fare/asdf/blob/master/uiop/image.lisp#L59
7:19:53
shrdlu68
verisimilitude: What's currently missing is one such library that also has low-level control of the terminal, which would reqiure making syscalls to the OS.
7:21:19
phoe
verisimilitude: your terminal stuff does look nice - please add it to quicklisp via https://github.com/quicklisp/quicklisp-projects
7:22:18
verisimilitude
I've already taken a look at several of these projects, shrdlu68, and they all either use a Curses or a simply inefficient.
7:23:46
verisimilitude
You may be interested by taking a look at CL-ECMA-48; I implement all 162 control functions that optimize the representations sent and the code to do this is also optimized.
7:24:15
phoe
simply put them on any host from where they can be cloned by git, and then ask someone who uses github to make an issue on quicklisp-projects
7:24:47
phoe
multiple QL projects are cloned from git repos that are not hosted on many of the big git services.
7:25:27
verisimilitude
I do, however, provide each of these as a gzipped tar file; currently, the latest issue Xach informed me of was that they didn't decompress into their own directory, which has been corrected.
7:26:32
LdBeth
verisimilitude: one thing I most concern, which is lacked in ncurses, does it support Unicode display?
7:27:28
verisimilitude
It only sends control functions through Common Lisp streams; anything that can be sent through should be fine.
7:28:27
verisimilitude
I also simply dislike the idea that I should manually run a version control tool; it should be handled for me, but it isn't.
7:29:34
verisimilitude
>Functionality which may be added is as follows: control over input echoing; control over whether input is buffered by the system and whether reading will block or not.
7:29:34
verisimilitude
>The preceding functionality both cannot be implemented with purely ECMA-48 functionality nor in portable Common Lisp and so the utility of adding it is put into question. It is thought, perhaps, the functionality will always pretend to be present or not available to the environment otherwise, but this is undecided.
7:32:02
verisimilitude
If I don't necessarily need to run the program yet, I don't even need comments.
7:33:26
jdz
The next step is when your code is released, people may contribute improvements. This activity is concurrent by definition.
7:34:32
LdBeth
shrdlu68: well it’s OS’s job to provide a try, but I don’t think controlling display and move cursor around requires more syscalls except write to the device
7:34:33
verisimilitude
That's true, but I would simply manage that manually until it became unwieldy.
7:35:38
verisimilitude
I'd prefer to avoid complicating my setup until it's absolutely necessary, but I appreciate the suggestion, epony.
7:36:30
verisimilitude
Now, the issue with adding that functionality to ACUTE-TERMINAL-CONTROL is that it does require syscalls; there is, however, the fact that this could still be done in a way that avoids UNIX shared library garbage does make it seem appealing if it's utterly necessary.
7:36:49
jdz
I personally like Git because it is a dumb tool to manage snapshots of a directory tree, with a lot of tooling built around it (including Emacs integration).
7:37:21
verisimilitude
If I ever used version control under UNIX, it would probably be required that I could use it only from Emacs, while avoiding the tool itself as much as I can.
7:38:40
LdBeth
verisimilitude: for controlling low level io, please look this http://quickdocs.org/trivial-raw-io/
7:39:17
epony
verisimilitude you can do transparent revisioning like this https://www.emacswiki.org/emacs/VersionControl
7:40:15
epony
verisimilitude actually rcs is pretty much sufficient for per file revisioning and is the easiest thing ever
7:42:32
verisimilitude
Well, there's also the point that SHUT-IT-DOWN and CL-ECMA-48 probably won't see much change now; the latter in particular is rather finished, unless I discover a flaw.
7:43:20
LdBeth
My irc is a small script and I was looking for a good terminal interface lib for a while, and that’s why I get excited today
7:43:21
verisimilitude
Regardless, I'm curious as to what you all think of these three programs, so far.
7:47:43
phoe
verisimilitude: SHUT-IT-DOWN is duplicated by UIOP:QUIT, the other two are pretty fun. I might use them when I write a terminal application.
7:50:58
verisimilitude
Xach also expressed this concern, phoe, but SHUT-IT-DOWN has a better interface (I think), supports far more implementations, is significantly smaller and more targeted, and is under a more permissive license.
7:54:25
verisimilitude
I wasn't aware of that, but would be inclined to believe SHUT-IT-DOWN supports more implementations than that as well.
7:56:40
verisimilitude
Well, SHUT-IT-DOWN supports eighteen, if you don't count MCL variants as more than one.
7:58:06
verisimilitude
I'd support MOCL, but I can't find any documentation and the developers won't respond to my emails.
7:58:46
verisimilitude
Asides from MOCL, there's just Movitz and the Lisp machines I'd want to support, but those are in odd states for searching for this.
8:00:01
verisimilitude
Exit codes are irrelevant to Common Lisp and I find it inelegant to have an interface like this pay them any mind.
8:02:05
verisimilitude
UNIX didn't invent processes nor files, epony, but it's done a good job at implementing them poorly.
8:02:17
jackdaniel
poplog is a common runtime and a compiler suite for a variety of languages, Common Lisp included
8:07:49
verisimilitude
It's the same reason you should use USER-HOMEDIR-PATHNAME instead of simply hardcoding "~/", epony.
8:13:50
blurgh
I installed stumpwm from source using make, and it gave me a warning from cl-ppcre. Nevertheless, it compiled and I set up .xinitrc. startx gave me a blank window. loke: early '70s IIRC. It predates Symbolics. I think it was made on the ITS.
8:18:29
loke
There aren't many other software packages that old that are still being maintained and developed.
8:18:42
phoe
loke: I basically have a server to which clients can connect, and objects that represent operations that are permitted to be done in my system by clients.
8:18:44
verisimilitude
Would it be too forward of me to mention another Lisp community and see if any of you may have used it before?
8:19:21
loke
LdBeth: there is a difference though. Modern versions of TECO are full rewrites. I don't think anyone maintaining the original code base.
8:19:22
phoe
They need to have some state, but it also makes sense to me that they're operations, so they should be funcallable on some arguments.
8:22:35
loke
This is a good place to start if you want to follow the work on it: https://github.com/PDP-10/its
8:22:38
LdBeth
loke: seems Emacs helm uses a lot of funcallable instances. Btw, I use TOPS-20 on SDF
8:26:38
blurgh
Speaking of old machines, does anyone have documentation for the Lisp Machine file systems and kernels?
8:27:25
phoe
loke: an alternative is a standard object that holds some slots, and a method specializing on that object's class. But it's a bit inelegant in my case to have a separate method if I can just invoke that.
8:28:18
loke
In my experience, I've never seen the case where a funcallable instance did more than I could do with a plain closure.
8:28:39
loke
Although, I guess if you need ways to manipulate the closed-over values, it can get a bit ugly with closures.
8:29:07
loke
http://www.bitsavers.org/pdf/symbolics/software/release_6/996055_Reference_Guide_to_Streams_Files_and_IO_Mar85.pdf
8:32:47
blurgh
loke: Maybe. I've heard that Lisp Machines had persistent environments (similar to Smalltalk images) and were interactive throughout. Is there documentation on the design choices for implementing this? Gap buffers and system images like Emacs?
8:33:09
ecraven
blurgh: there are various lisp machines available as virtual machines, you can try one of them
8:33:36
ecraven
the Open Genera sources can be found on the web, you can look at the actual source code
8:34:19
ecraven
blurgh: well, as I said, they can be found... depending on your country, that finding may be legal or illegal
8:35:08
blurgh
ecraven: legal in USA? I remember hearing about how someone at MIT said they would release the source code for one of the machines (MIT CADR?) but hadn't followed through at the time of writing.
8:35:31
ecraven
blurgh: the mit cadr sources are freely available, as far as I know, but Symbolics' Open Genera sources haven't been open sourced, I think
8:38:07
blurgh
ecraven: thank you! It looks like there is an MIT CADR repo: https://github.com/hanshuebner/cadr2
8:38:57
LdBeth
The CADR emulator works fine except it has never considered what if the user use a Japanese keyboard layout
8:39:19
verisimilitude
That's interesting; I didn't see any Lisp communities when I perused things, but I also didn't look hard.
8:39:33
blurgh
err, wrong link. There's several cadr-on-an-fpga projects, but one emulator, here: https://github.com/joshuaeckroth/cadr/tree/master/usim
8:39:56
verisimilitude
I've been meaning to setup a GNU Social instance on my server, but Debian issues want a kernel upgrade and it's a mess.
8:40:20
verisimilitude
Now, Mastodon works with some manner of hashtag like grouping, right; is it simply #lisp, then, loke?
8:40:54
loke
verisimilitude: You have to follow the right people. Check the local timelines on functional.cafe and icosahedron.website. Or just search for #lisp
8:42:22
verisimilitude
I meant do you use it for Lisp purposes or is it more tangential to what you usually do there.
8:45:46
verisimilitude
I suppose, in a more general way, I'm asking how the Lisp community there is.
8:46:21
loke
verisimilitude: It's a group of peple, all different. Arguably there are more than one community :-)
8:47:09
loke
I also check G+ once in a while, but the mountain bike community is flooded with spammers at the moment.
8:56:07
verisimilitude
My current solution to this, shrdlu68, is to simply call stty in the sh program I use to launch the Common Lisp program.
8:56:54
verisimilitude
Yes, LdBeth; for a supposedly file-based operating system, UNIX certainly does prefer syscalls passing C structs to files for a great many things.
8:57:00
schweers
under which circumstances are calls to BREAK ignored? I am trying to debug a piece of code and can’t get it to enter the debugger anymore. Yesterday it still worked.
8:57:21
schweers
it does run in a background thread, but that wasn’t a problem yesterday. I’m using sbcl and slime. any ideas?
8:57:53
schweers
Before someone asks: i optimize for debug and safety, both on level 3, nothing else
8:58:42
schweers
I also sometimes have the contrary behaviour: I have a breakpoint somewhere, but the debugger (also) enters at some other time, which I did not intend.
8:59:54
schweers
not yet, as I cannot use ECL, and CCL does not support single stepping, which is the point of this excersise
9:02:45
schweers
I’ve got a piece of code which runs in a separate thread, which I’d like to single-step. Yesterday this worked, but now it just seems to skip the BREAK call :/
9:02:49
verisimilitude
If you don't want to, simply omit date of birth and SSN information; we've trimmed the context already.
9:07:16
schweers
it has not behaved as I’d like since I started working on this new feature in an extra git branch
9:10:33
schweers
the program itself works, I might try what happens on the other branch with an added breakpoint
9:11:55
schweers
interesting. I forgot to change the optimization settings on the master branch to debugging. it still entered the debugger
9:12:24
verisimilitude
I figured your carefully selected OPTIMIZE settings were being changed somewhere.
9:14:53
schweers
I don’t get it. the debugger works on the master branch, but not on the branch where I need it
9:15:47
schweers
I put a (break) call directly into the MAIN function, as the first statement, and I still don’t land in the debugger :/
9:19:07
verisimilitude
Surely, it's a simple matter of locating the offending difference between these two and it doesn't seem like it's a very large difference.
9:20:01
schweers
what do you mean? I have a bunch of systems and I load one of them. Now, I found out something new. Because of a bug in one of the changes I made, the code which contained the breakpoint I actually wanted to debug was never called. So that mystery is solved. BUT: the breakpoint directly in the toplevel function I called is still not triggered.
9:20:31
schweers
Also, now that I fixed the aforementioned bug, the breakpoint I was interested in all along enters the debugger.
9:23:32
schweers
I deleted the sbcl directory in ~/.cache and I still have the same situation. While I am happy for the moment, as I can debug the code I am really interested in, I am a little confused that a previous call to BREAK does not enter the debugger, although said code is run in the repl thread and comes earlier (it’t the first thing it should do)
9:24:08
kammd[m]
LdBeth: I am more interested in reading logs and shipping it over to some remote entity.. Like logstash
9:25:56
verisimilitude
>The user interface aspects of break and cerror are permitted to vary more widely, in order to accomodate the interface needs of the implementation. For example, it is permissible for a Lisp read-eval-print loop to be entered by break rather than the conventional debugger.
9:27:02
verisimilitude
I'm still fuzzy on precisely what the issue could be, schweers, due to insufficient context.
9:29:49
myrkraverk
Is it possible to make a local binding, something like FLET, for a function created by a macro?
9:30:10
schweers
the heavy lifting is done in WAYSPLIT, which obviously calls a myriad of other functions. In one of these other functions I have a breakpoint which now works just fine (it was never reached, which was my own fault), but this is not the point. See that the very first expression in MAIN is (BREAK)? that is not triggered when I call MAIN.
9:30:13
myrkraverk
That is, when the macro returns a function, can I make it a local binding for the function space?
9:31:26
kammd[m]
LdBeth: Yep.. Was wondering if there is any library/tool which does some of that.. Don't want to reinvent the wheel..
9:31:38
verisimilitude
Cloudflare seeks out and blocks several types of VPN and whatnot and pastebin uses Cloudflare.
9:32:14
schweers
anyway, the function looks like this: (defun main (args) (break) (do-stuff-with args))
9:32:26
LdBeth
ACTION sent a long message: LdBeth_2018-04-04_09:32:25.txt <https://matrix.org/_matrix/media/v1/download/matrix.org/kUZGRTXJfUkgmThcCexubYiA>
9:33:18
schweers
I call MAIN directly, so I know for a fact that the function is called. It’s in the same file as the other code I was discussing here, i.e. same optimizations. Any ideas why this (break) call does not enter the debugger?
9:33:38
verisimilitude
I'd recommend you try to use a different implementation and see how that debugs.
9:33:41
schweers
mind you that I don’t need the breakpoint there, I just put it there to see if it would trigger
9:35:16
verisimilitude
I don't know enough about this particular issue of yours to know if it's a bug, but it's a possibility.
9:36:28
myrkraverk
Is there a way to SETF a function, which is created by a macro, to some kind of local (not top-level) binding?
9:37:15
myrkraverk
verisimilitude: to be explicit, I want to bind locally a function (if possible) returned by postmodern:prepare
9:40:36
myrkraverk
The function created by the macro has arguments according to $Ns in the statement.
9:46:01
myrkraverk
(let ((foo (prepare "select $1::text"))) (format t "~a" (funcall foo "Hello, Postgres")))
9:46:50
myrkraverk
Is what I have right now; since (prepare...) returns a function that takes indeterminate number of arguments, I don't know how to avoid the funcall, which I personally find ugly.
10:01:14
phoe
https://github.com/TBRSS/cl-yesql Somewhat tricky to get it to run at first but fun and working.
10:02:21
myrkraverk
phoe: I'm quite happy with postmodern for the most part; it's only this slight "blight" when I don't want global functions that bother me.
10:04:13
phoe
myrkraverk: I remember there was a construct that allowed to lexically bind an anonymous function to a function name
10:05:28
flip214
also, there's the (:select ...) syntax that would allow to fetch the number of parameters...
10:06:59
phoe
see https://github.com/TBRSS/serapeum/blob/5917e581ca81eb88f1f1194cf4f122122b3bf211/fbind.lisp#L305
10:08:15
flip214
ain't it easy to have a macro that uses a local inline function to do the FUNCALL (GENSYM)?
12:28:17
phoe
Because suddenly the object itself is funcallable, which does not fully fit in the definition of protocol described as a set of generic functions and protocol classes.
12:31:22
phoe
I mean a protocol where funcallable objects which are not GFs are a part of that protocol
12:31:38
phoe
I just realized I'm speaking of a terribly unspecific thing; I'll try to make it more concrete and then post back
13:05:26
phoe
For creating a funcallable class, is it enough to subclass funcallable-standard-object?
13:09:15
Bike
no. having a function slot can be controlled by allocate-instance, which is specialized to do so with funcallable-standard-class.
13:10:36
phoe
so (defclass foo (funcallable-standard-object) () (:metaclass funcallable-standard-class)) it is
13:58:12
beach
phoe: I haven't really thought about it, but my initial reaction is that there is nothing special here.
15:54:11
shangul
What book do you suggest for someone who already had experiences with other languages(mostly C-family) to start Common Lisp?
15:57:21
beach
It is also important that you consult with #lisp participants before you attempt to decide on an implementation, and editor, etc.
15:57:48
beach
A lot depends on what you already know, what OS you are on, what you are willing to learn, etc.
16:00:54
jcowan
I wanted to get permission to rewrite it as Practical ISLisp, but apparently the rights are very tangled.
16:02:35
Shinmera
I don't care whether you like it or not, I'm debating your assertion that it is condescending.
16:03:04
jcowan
I don't see how that can be usefully argued when it depends on perspective. One person's condescension is another person's welcomed handholding.
16:04:03
beach
Also, pierpa was in a very different situation when he read it, compared to that of shangul.
16:05:01
jcowan
beach: I have tried to build the papers in the SICL tree, but some have no Makefiles, some don't build, and some build but don't produce the whole paper
16:05:16
jcowan
I see from your links that some are on metamodules, but there seems to be no index of them
16:05:29
beach
shangul: This channel is dedicated to Common Lisp, so that's the only language you will see discussed, but there are at least 3 reasonable general-purpose implementations, and a few more for special situations.
16:05:47
jcowan
or rather there is an index, but it does not include either the LispOS or first-class environments papers
16:06:47
beach
shangul: That might not be a good idea for Common Lisp. Depending on what you are good at of course.
16:07:49
beach
shangul: Emacs with SLIME is probably the best environment for editing Common Lisp code.
16:08:30
beach
shangul: If you use something else, you are not only depriving yourself of some important functionality, but are also likely to submit code that does not follow widely accepted conventions.
16:12:17
beach
jcowan: The Bootstrapping paper is embryonic, but it has a Makefile and it builds for me.
16:14:04
beach
ELS is not really a paper. It seems to be some kind of presentation, but it is probably not important.
16:18:41
beach
Merge-sort is embryonic. We don't have the research results yet. You can safely forget about it.
16:19:45
jcowan
Are you familiar with Shivers's algo for mergesorting lists in constant space? It has problems when the implementation has a write barrier, as you might expect, but is very interesting
16:24:13
jcowan
https://github.com/scheme-requests-for-implementation/srfi-32/blob/master/sort-ref-impl/lmsort.scm <-- Shivers's algorithm (should be readable even without knowing Scheme)
16:24:59
beach
jcowan: I can ask my favorite coauthor to do the commits so that it builds, but it won't be today.
16:26:20
verisimilitude
On the topic of how Emacs formats Common Lisp, I'm disappointed with how LOOP is done; I always manually format it.
16:26:54
beach
verisimilitude: That's because you are not using the slime-indentation contributation.
16:31:42
beach
Again, my research is about using merge sort on vectors. There are algorithms that use constant space already, but the overhead is often great.
16:32:14
verisimilitude
On that further topic of looping forms, which do you find yourself using often? ITERATE is nice, but its being a library makes it much less usable in many instances. LOOP is often most brief if you can fit your loop perfectly to it. I find myself using PROG and PROG* for many loops with complex control flow needs, but also with very simple loops that aren't perfectly expressed with the other macros.
16:33:23
beach
jcowan: The point of the research is similar to that of the Reverse-order paper. Check how much stack is available, and use a big chunk of it. That way you avoid the overhead. If little stack is available (which almost never happens), then use the high-overhead constant-space algorithm published in the literature.
16:35:17
beach
verisimilitude: I use LOOP a lot. It is very rare that I have such a complex control flow that LOOP can not express it. In fact, even control flow that LOOP can express perfectly well can be too complex for the maintainer.
16:36:21
jcowan
Is the high-overhead constant-space algo you mention stable, and if so, is it natural?
16:36:39
pierpa
ITERATE is nice, and if you want to maintain readability for LOOPers you can restrict yourself to the common subset
16:37:04
beach
jcowan: There are both stable and non stable algorithms in the literature. I don't know what "natural" means in the context of an algorithm.
16:37:21
beach
I mean, algorithms are made by people who are part of nature, so in that sense they are natural.
16:37:38
sjl
verisimilitude: I use LOOP in my libraries to avoid forcing another dependency on users, but ITERATE in my own personal code
16:37:43
beach
But some people remove people from their concept of "nature" and then no algorithm is found in nature.
16:38:12
verisimilitude
Another reason I'd use PROG or PROG* over LOOP is to avoid needing to deal with the formatting issues or precede any Lisp with DO, so I'd call that a further advantage.
16:38:33
beach
jcowan: I don't remember. I think getting constant space is probably hard enough as it is.
16:40:15
verisimilitude
I'd simply argue that algorithms are everywhere in nature, but I can see how that would diverge too much.
16:40:19
jcowan
beach: AYC can you send me a pointer to a stable constant space vector merge sort, either code or description?
16:41:05
beach
jcowan: You are asking a lot, especially since dinner is minutes away. I'll do my best, but you may have to remind me.
16:48:15
beach
jcowan: If you continue with this level of intellectual curiosity, you might even want to contribute to SICL one day. :)
16:53:18
verisimilitude
I'm curious if any of you discuss Lisp on imageboards, as there's one area in particular I believe some of you may find interesting.
17:03:49
jcowan
pervasive laziness is unmitigatedly a bad thing (as opposed to facultative laziness which is sometimes useful)
17:04:55
jcowan
Eh? The whole point of alists IMO is that you can push and pop things off them, which only works if they are pure. Plists are another matter.
17:05:45
Bike
i mean, in theory, yeah, but sometimes you have an alist where you know a key is there, like a cheap structure kind of deal
17:06:45
ldb
jcowan: the first time i do prog i used a list to store data in emacs lisp and get f**ked by mutating conses
17:06:58
verisimilitude
You should look at the source to ACUTE-TERMINAL-CONTROL as an example. To explain, I use the SGR, SELECT GRAPHIC REPERTOIRE, control function to change colors; this is a variadic control function and I express this in Common Lisp by requiring a list as the parameter; I didn't want to allocate a new list every time the relevant functions are called, so I have a CONS cell bound that I use RPLACA with to recycle whenever necessary.
17:06:59
dlowe
99% of the time, when I start by using nested generic sequences, I eventually end up converting it all to structures.
17:07:40
jcowan
One advantage of immutable pairs is that rest-lists need not be copied, nor do you need to do data flow analysis to make sure they are not mutated
17:07:56
jcowan
Rest-lists are the only point (in Scheme at least) at which the PL touches the data structures
17:11:00
jcowan
parallel to the mutable-list lib, I mean, not parallel in the sense of parallel computing
17:14:48
verisimilitude
With my understanding of the way the standard is written, you can modify rest lists, but only do so well if you make certain to never do this with APPLY.
17:15:46
verisimilitude
Even then, it seems like you could do even that, so long as you don't use a constant as the rest list.
17:16:10
Bike
"constant, conforming programs must neither rely on the list structure of a rest list to be freshly consed, nor modify that list structure" says apply
17:17:12
Bike
a few years ago i spent time implementing a scheme like language with immutable conses
17:17:49
verisimilitude
>Because a function can neither detect whether it was called via apply nor whether (if so) the last argument to apply was a constant, conforming programs must neither rely on the list structure of a rest list to be freshly consed, nor modify that list structure.
17:18:28
verisimilitude
So, it seems fair game to modify the rest list, so long as it's not a constant and it doesn't need to be freshly consed.
17:18:52
Bike
i think if an implementation did whatever with rest lists and a user modified one and didn't get what they expected and complained, the implementors probably wouldn't care
17:21:29
verisimilitude
In practicality, constant modification is usually permitted and lists are probably simply usually freshly consed.
17:21:47
TMA
verisimilitude: the whole sentence does not permit conforming programs to modify or expect freshness, there is no exceptions for programs that can provably avoid the APPLY
17:23:16
TMA
verisimilitude: the emptines of the latter notwithstanding. an implementation is permitted to use APPLY during evaluation of all function calls
17:23:23
verisimilitude
It seems clear to me that it's saying that, since APPLY can recycle the rest list, it can't be expected to be freshly consed and, in addition to this, it's possible a constant may be used in this way, and so only because of this should it not be done.
17:23:58
verisimilitude
So, it seems to me that it simply derives from the constant modification rules.
17:24:18
TMA
verisimilitude: the 'because' is just a supporting argument in that case. it does not limit the prohibition in any way
17:26:02
verisimilitude
I suppose, either way, it's splitting hairs, as an implementation is likely to only ever try to detect this statically and not care, otherwise.
17:30:01
TMA
verisimilitude: the other part is that if your interpretation of the standard were true, then adding (apply #'foo '(1 2 3)) to your *conforming program would render it nonconforming. It seems absurd that this is the intended reading. This could make any program with (APPLY ... constant) nonconforming.
17:33:07
jackdaniel
ACTION this that this interpretation simply doesn't hold and there is no point in arguing for it
17:46:15
drmeister
I'm trying to get it up and running. I have a server running and I'm trying to get vim to connect to it.
17:49:46
sjl
I think all the Vlime shortcuts are prefixed with localleader, which most people have set as \ these days, but I don't know what the default actually is
17:51:28
drmeister
sjl: Thank you for your time. I added that to .vimrc and restarted vim - no errors
17:53:25
sjl
Well, if it's not mapped that's what it should be doing (\ -> unmapped, beeps, cc-> change current line)
17:55:26
drmeister
I tried changing the localleader to _ (underscore) - and restarting - same behavior although no *bloop* but _cc puts it into change current line mode.
17:56:55
drmeister
When installing vim Plugin support I left out a lot of lines that I thought were just plugins.
17:57:36
sjl
Hm, I don't use Vundle myself, so I'm not sure exactly how Vundle would be installing Vlime for you
17:57:43
drmeister
Because I probably don't have it installed in the right place - it's currently in /Users/meister/Development/vlime
17:58:36
sjl
> 1. Add Plugin 'l04m33/vlime', {'rtp': 'vim/'} to your vimrc, then run :PluginInstall in Vim.
17:59:30
drmeister
Yeah - but what does 'l04m33/vlime' mean? That looks like a relative path - but relative to what?
18:00:26
drmeister
Yeah - but where is it supposed to go? I'm going to put it in ~/.vim/bundle for yucks
18:00:29
sjl
Like I said, I don't use Vundle. I know Vlime works great with Pathogen and I prefer installing plugins like that