00:17:07 -!- rbarraud [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has quit [Quit: Konversation terminated!] 00:17:26 rbarraud [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has joined #scheme 00:19:06 -!- acarrico [~acarrico@pppoe-68-142-53-76.gmavt.net] has quit [Read error: Operation timed out] 00:21:07 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 240 seconds] 00:26:43 -!- MrFahrenheit [~RageOfTho@users-33-181.vinet.ba] has quit [Ping timeout: 240 seconds] 00:28:23 -!- masm [~masm@bl15-65-232.dsl.telepac.pt] has quit [Quit: Leaving.] 00:30:46 -!- ToxicFrog [~ToxicFrog@2607:f2c0:f00e:500:222:15ff:fe91:b24c] has quit [Remote host closed the connection] 00:31:42 ToxicFrog [~ToxicFrog@2607:f2c0:f00e:500:222:15ff:fe91:b24c] has joined #scheme 00:31:53 -!- jonrafkind [~jon@crystalis.cs.utah.edu] has quit [Ping timeout: 276 seconds] 00:32:19 -!- pon1980 [~pon1980@h174n3-haes-a12.ias.bredband.telia.com] has quit [Quit: leaving] 00:33:24 acarrico [~acarrico@pppoe-68-142-40-104.gmavt.net] has joined #scheme 00:34:51 -!- ToxicFrog [~ToxicFrog@2607:f2c0:f00e:500:222:15ff:fe91:b24c] has quit [Client Quit] 00:35:04 ToxicFrog [~ToxicFrog@2607:f2c0:f00e:500:222:15ff:fe91:b24c] has joined #scheme 00:38:25 -!- seangrove [~user@70-36-236-168.dsl.static.sonic.net] has quit [Remote host closed the connection] 00:38:26 -!- rdd [~rdd@c83-250-48-164.bredband.comhem.se] has quit [Ping timeout: 240 seconds] 00:52:16 -!- aidalgol [~user@202.36.179.68] has quit [Ping timeout: 265 seconds] 00:54:05 mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has joined #scheme 00:57:48 -!- Blkt [~user@dynamic-adsl-94-37-238-79.clienti.tiscali.it] has quit [Remote host closed the connection] 01:17:04 -!- echo-area [~echo-area@114.251.86.0] has quit [Remote host closed the connection] 01:23:30 jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has joined #scheme 01:26:49 megajosh2 [~megajosh2@pool-96-241-38-130.washdc.fios.verizon.net] has joined #scheme 01:31:40 -!- hohoho [~hohoho@ntkngw229253.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Read error: Connection reset by peer] 01:34:06 echo-area [~echo-area@114.251.86.0] has joined #scheme 01:34:42 *jcowan* unvanishes and all that. 01:34:42 -!- tewk [~tewk@katan.cs.utah.edu] has quit [Read error: Connection reset by peer] 01:34:55 rbarraud_ [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has joined #scheme 01:35:16 tewk [~tewk@katan.cs.utah.edu] has joined #scheme 01:38:59 -!- rbarraud [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 276 seconds] 01:41:38 -!- samth is now known as samth_away 01:41:55 -!- samth_away [~samth@punge.ccs.neu.edu] has quit [Quit: Ex-Chat] 01:42:45 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: Leaving] 02:00:54 -!- SirNick [~nick@199.223.126.66] has quit [Quit: Leaving...] 02:03:38 gigajosh2 [~gigajosh2@pool-96-241-38-130.washdc.fios.verizon.net] has joined #scheme 02:03:51 mbohun [~mbohun@eth649.act.adsl.internode.on.net] has joined #scheme 02:05:50 -!- gigajosh2 [~gigajosh2@pool-96-241-38-130.washdc.fios.verizon.net] has quit [Client Quit] 02:06:14 -!- mbohun [~mbohun@eth649.act.adsl.internode.on.net] has quit [Client Quit] 02:06:22 Riastradh [debian-tor@fsf/member/riastradh] has joined #scheme 02:13:32 I have some fairly short and simple WG2 proposals, if anyone would care to take a look at them. 02:14:20 -!- klovett [~klovett@c-67-180-97-38.hsd1.ca.comcast.net] has quit [Quit: klovett] 02:16:28 http://trac.sacrideo.us/wg/wiki/PortOperationsCowan or http://trac.sacrideo.us/wg/wiki/DirectoryPortsCowan or http://trac.sacrideo.us/wg/wiki/SetsCowan . 02:18:35 Which of these operations are represented in existing Scheme systems that anyone has written real, useful programs with? 02:18:43 Why directory ports, and not simply directory streams? 02:19:10 `Parameter port' would make more sense to me than `alias port'. 02:19:46 What do I know about writing "real, useful" programs in Scheme? Most people who do so seem to keep it to themselves. 02:20:47 Anyhow, the list of work items was voted on by the WG, and is for my purposes immutable. 02:21:07 mbohun [~mbohun@eth649.act.adsl.internode.on.net] has joined #scheme 02:22:17 In addition, part of the WGs charter is to look at what other languages provide out of the box, and I did so while preparing the original list of 192 work items. 02:26:34 I've used broadcast ports and concatenated ports for writing real, useful programs in Common Lisp. 02:26:43 The port operations are common to at least Gauche, Chicken and Chibi. 02:27:03 I'm not sure how I'd use the port iterators. 02:27:06 And yes, broadcast and concatenated ports are extremely useful. 02:27:13 Broadcast and concatenated ports, sure. 02:27:42 Where did the alias ports come from? 02:27:57 The term `set' should be reserved for a generic interface, not for a set implemented by a hash table. 02:28:20 I suppose (port-for-each do-something read-line port) is the equivalent of while () { do_something(); } . 02:28:54 I'd rather write (loop ((for line (in-stream (port-lines port)))) (do-something line)). 02:28:55 foof: CL synonym-streams. 02:29:21 That, or (collect-list (for line (in-stream (port-lines port))) ...), &c. 02:29:38 Certainly I don't expect ever to use PORT-FOLD. 02:29:50 Riastradh: It doesn't *have* to be implemented with a hash table, if you know of some other data structure that is O(1) for reading and writing. 02:30:01 For example, you could use a B-tree with internally defined keys. 02:30:56 Where a map is provided, a fold should also be provided, as folds are more general and difficult to implement with just a map operation. 02:31:08 So if `port-map' is sensible, so is `port-fold'. 02:31:23 PORT->STREAM is much more generally useful. 02:31:39 -!- bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [Quit: leaving] 02:31:53 Riastradh: I've used port-fold. 02:32:04 I'm not sure I've seen Common Lisp synonym streams used outside of an implementation of Common Lisp itself. 02:32:18 (Golly. I have the misfortune of hearing in the next room someone trying to drive a GUI over the telephone.) 02:32:24 (This is painful.) 02:32:57 (`No, the dock is this bar at the bottom of the screen.') 02:33:15 (Hearing in the next room sounds like a misfortune regardless of the context. Is this a temporary affliction, or is your hearing generally off by a room?) 02:33:25 (s/context/content/) 02:33:28 I've been in that situation many a time, trying to lead a customer-service tech to replicate the bug I'm having on his system. 02:33:56 I agree that alias-ports may be rather too bizarre for this work item. 02:34:14 I suppose the way that synonym streams are used in CL implementations (parameterizing streams so that things like *ERROR-OUTPUT* are sent to some other stream) is generally useful. 02:34:15 chandler: So you recommend that I add set-fold, bag-fold, and integer-set-fold? 02:34:26 mmc [~michal@cs190095.pp.htv.fi] has joined #scheme 02:35:32 If the standard ports are parameters you don't need to alias them, just use `parameterize'. 02:35:32 -!- megajosh2 [~megajosh2@pool-96-241-38-130.washdc.fios.verizon.net] has quit [Quit: Lost terminal] 02:35:43 True. 02:36:29 The directory ports come from Gambit. I can't convince myself whether it's elegant or a hack, but I think it's more likely a hack. 02:36:37 foof: Where it's used in Common Lisp, the intention is that (let ((*terminal-io* some-other-terminal)) (format *standard-output* "Hi!~%")) writes to SOME-OTHER-TERMINAL. I don't think you can do that without synonym streams. 02:37:12 You can't rebind *terminal-io* itself, IIRC. 02:37:16 I don't think there is any merit to directory ports. A procedure mapping a pathname to a stream of directory entries is better. 02:37:42 Fewer procedures, simpler interface, and fit into a more general stream abstraction. 02:38:00 jcowan: Re folds, yes, as the implementation will almost certainly be able to provide a more efficient implementation of these procedures than the user. If you have only a map, you have to use mutation to implement a fold. 02:38:01 What do you mean by "stream" in this concept. 02:38:11 (delay (cons a d)) 02:38:31 jcowan: I'm fairly certain that you can rebind *TERMINAL-IO*. It's just an ordinary special. 02:38:44 Ha. An ordinary special. 02:38:48 "The effect of changing the value of *terminal-io*, either by binding or assignment, is implementation-defined." 02:39:16 Oh. 02:39:16 jedc [~jedc@c-98-232-227-210.hsd1.or.comcast.net] has joined #scheme 02:39:25 I ran into that by chance while looking into synonym-stream.6 02:39:33 You've got a better memory for such details than I do. 02:39:41 No, not in this case. 02:40:16 I'm guessing that this wiggle room was added precisely to allow implementations to make *STANDARD-OUTPUT* & friends synonyms for *TERMINAL-IO*. 02:41:07 I don't think I'd usually use the idiom abstracted by COPY-PORT as is. Usually I'd create a single buffer and repeatedly read into it, rather than creating a new buffer per read. 02:41:08 Well, maybe not. 02:42:30 Any abstraction called `integer set' should be unbounded, not bounded at construction time. If you want bit strings, provide those under that name. 02:42:49 chandler: That assumes a specific level of indirection - that `current-output-port' would be a layered port which in an interactive session would write to another port called `terminal-io-port'. 02:43:24 In which case (parameterize ((terminal-io-port other-terminal-port)) ...) would work. 02:43:38 I don't think it is worth the trouble to add a new set of procedures for bags. Just use a hash table mapping each key to a nonnegative integer. 02:43:45 I've actually run into a missing port abstraction in Common Lisp, but I'm not sure if it's generally useful. Specifically, I've wanted a method of creating an input port that, when read, causes the read data to be written to some other output port. 02:43:48 alaricsp [~alaric@c-24-5-78-175.hsd1.ca.comcast.net] has joined #scheme 02:44:38 I thought that was in CL (echo-stream or some such) but I can't find it. 02:44:39 jcowan: null-ports are handy too 02:44:56 foof: (make-concatenate-port) and (make-broadcast-port) do that. 02:44:58 MIT Scheme has this, chandler: ports with transcripts. I don't like the implementation of it myself, and in fact in the one place in MIT Scheme other than TRANSCRIPT-ON and TRANSCRIPT-OFF that has any kind of transcript, it doesn't use the port transcript abstraction. 02:45:57 good point 02:46:02 It might be used something like this: (let* ((in (open-input-string "42")) (out (open-output-string)) (r (make-reflected-port in out))) (read r) (get-output-string out)) -> "42" 02:46:20 Riastradh: Oh. Well, I've wanted it in the past. I don't remember when, and as I said, it might not be generally useful. 02:47:08 Oh, I don't mean that the concept is wrong -- I'm just not happy with MIT Scheme's implementation of it, where every port may have a transcript, read with PORT/TRANSCRIPT and written with SET-PORT/TRANSCRIPT!. 02:47:30 Ah. 02:47:43 -!- mmc [~michal@cs190095.pp.htv.fi] has quit [Quit: Leaving.] 02:47:45 I think that (MAKE-TRANSCRIPTED-INPUT-PORT ) and (MAKE-TRANSCRIPTED-OUTPUT-PORT ) would be a better abstraction. 02:47:56 There was some reason that wasn't obviously the right thing to do for TRANSCRIPT-ON and TRANSCRIPT-OFF, though. 02:48:08 Isn't `make-transcripted-output-port' the same thing as `make-broadcast-port'? 02:48:31 Oh, yes, it is. 02:53:02 timj_ [~timj@e176193149.adsl.alicedsl.de] has joined #scheme 02:54:16 I see. The only reason MAKE-TRANSCRIPTED-PORT didn't work is that it doesn't support SET-PORT/TRANSCRIPT!, which is how TRANSCRIPT-ON and TRANSCRIPT-OFF work. 02:55:58 -!- timj [~timj@e176192249.adsl.alicedsl.de] has quit [Ping timeout: 245 seconds] 02:57:44 But Chris added in that message: `I suppose we could change the repl to start a nested level when turning on the transcript (think the script command in unix).' 02:59:55 -!- alaricsp [~alaric@c-24-5-78-175.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 03:00:11 Do people actually use transcript-on/off? 03:00:27 I didn't get an answer to that question when I asked. I don't ever use it. 03:00:56 I've never used it. 03:01:44 Usually I just do the interaction in an Edwin REPL buffer and copy & paste from that. 03:02:04 SirNick [~nick@c-67-160-151-16.hsd1.wa.comcast.net] has joined #scheme 03:03:38 I do, however, use transcripts in IMAIL when debugging it. These aren't implemented with port transcripts, but they're called `transcripts' and behave like them so that any I/O over the socket is recorded to a file. That's useful, although the implementation is kludgey, and I wish there were a more principled abstraction for it. 03:04:30 It's optional in R5RS and we can put it in an (optional) module in WG1 Scheme. End of story. 03:05:27 Basically, it is often nice to put taps on ports. We should make sure to specify that the federal government isn't allowed to do that without first obtaining a warrant, though. 03:06:00 -!- timchen119 is now known as nasloc__ 03:06:56 *eli* awards himself the "pointless macro-related/syntax-rules-restricted time wastage" award 03:07:14 chandler, by the way, I didn't see whether minion delivered my message to you, but in case it didn't: . 03:07:23 *jcowan* adds the stars and clusters to eli's award. 03:07:40 The award is due to this stupidity: http://stackoverflow.com/questions/3732173/multiple-lines-comments-in-scheme-rnrs/3732241 03:07:41 -rudybot:#scheme- http://tinyurl.com/2fa2f5d 03:08:13 Riastradh: That sounds like something that netcat is likely to have some command-line for. 03:08:26 Huh? 03:08:44 Oh, the taps on ports? (I first thought you were saying that netcat had something to do with paredit or commenting S-expressions.) 03:08:48 Dumping a port. 03:09:07 (Now, that would be an impressive feature.) 03:10:10 Hmm...netcat has `-o', but that first translates the I/O into hex. Oops. socat is probably more helpful, though. 03:10:42 -!- jedc [~jedc@c-98-232-227-210.hsd1.or.comcast.net] has quit [Quit: jedc] 03:10:49 Nevertheless, it's not always easy to redirect this sort of thing through socat. For IMAIL, it is easy (I already do that in order to support TLS connections), but there are plenty of other applications where it's not as straightforward. (Example: web browsers.) 03:11:19 Ah "socat"... I remembered that there was some netcat-like thing, with developers that went insane with features. 03:13:22 Also, it is sometimes helpful to start a transcript of the port in the middle of the session. 03:14:02 Sounds like you need some general proxy/vpn thing, with a toggleable switch. 03:14:05 Sometimes it would be helpful to insert debugging code into the kernel while it's running, too. 03:14:47 I used socat once for something and can't remember what. 03:14:59 I have a port forwarding thing where I can turn on dumping while it's running. It can be useful at times. 03:15:05 Maybe. Sometimes I wish I could just type `M-x dump-the-traffic-to-a-file-please RET' in a web browser running TLS to see what it is saying to the web server. 03:15:15 s/running/talking/1 03:15:29 -!- githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has quit [Quit: Leaving] 03:15:41 chandler: For the record, the initial value of *standard-input* is "implementation-dependent, but it must be an open stream that is not a generalized synonym stream to an I/O customization variables but that might be a generalized synonym stream to the value of some I/O customization variable. The initial value might also be a generalized synonym stream to either the symbol *terminal-io* or to the stream that is its value." 03:17:16 That's as prime an example of standardese as I've ever seen. 03:17:32 Though not as tough as the formal definition of dyadic transpose in the APL standard. 03:29:00 Gak. "socat -h" produces 117 lines of help output. 03:29:18 Have fun trying to summarize it more concisely, jcowan. 03:29:19 fod [~fod@92.251.255.7.threembb.ie] has joined #scheme 03:29:28 Maybe this should be the WG3 socket interface. 03:29:35 Hey, I get only 103. 03:30:29 I have 1.7.1.0, saith socat -V. 03:30:41 I have 1.7.1.2. 03:31:06 Presumably there wasn't a featurectomy in a subpoint release, so perhaps someone *has* summarized it more concisely. 03:31:39 There could be a different set of address specifiers supported on different operating systems. Did you run it on NetBSD? 03:31:53 Linux. 03:32:10 Specifically Ubuntu Karmic with a CoLinux kernel. 03:32:23 Yes, so you'll probably get the abstract socket options, while I sha'n't. 03:34:38 *jcowan* nods. 03:36:46 -!- echo-area [~echo-area@114.251.86.0] has quit [Remote host closed the connection] 03:37:20 CoLinux is a most wondrous thing, though I had to try two distros before I could get past the problems. andLinux depends on TAP to connect the two OSes, whereas in Portable Ubuntu the Linux side can't receive connections from anything but itself. 03:37:36 -!- fod [~fod@92.251.255.7.threembb.ie] has quit [Remote host closed the connection] 03:39:10 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Ping timeout: 272 seconds] 03:39:16 So, Riastradh, I'm in a pickle. WG2 has approved a TCP library and a UDP library, but has punted on a full socket library, which would be easier. There are plenty of models for TCP libraries, but I don't know of any for UDP libraries. 03:39:26 What? 03:39:27 That's stupid. 03:39:32 Just parrot the BSD socket library. 03:39:44 Anything less is a waste of time and a source of frustration. 03:40:21 If WG2 doesn't get that a TCP libary and a UDP library is stupid, then they don't deserve to make that kind of decision. 03:43:35 Having a high-level interface is not necessarily stupid, even if it doesn't allow you to do everything the low-level interface does. 03:46:41 A TCP library is the *opposite* of a high-level interface: it is an unnecessary *specialization* of the generic BSD socket library that it will invariably be implemented in terms of. 03:47:25 *Axioplase_* agrees. 03:47:37 High-level interfaces are in general specialized. A set interface to hash tables doesn't allow you to extract the hash function, for example. 03:47:54 "general specialized" ... oy. 03:48:18 jedc [~jedc@c-98-232-227-210.hsd1.or.comcast.net] has joined #scheme 03:49:07 What's an example of your notion of a high-level interface, then? 03:50:36 A high-level interface might combine getaddrinfo and a socket/connect loop, or getaddrinfo and a socket/bind/listen loop, into one operation. 03:50:55 Can Windows parrot BSD sockets? 03:51:10 Isn't the BSD socket library exacty what Windows provides? 03:51:48 `exactly' 03:52:19 Sort of. Select() exists, but it can only refer to socket FDs. Cygwin has to go through many convolutions to hide this problem. 03:52:36 alaricsp [~alaric@c-24-5-78-175.hsd1.ca.comcast.net] has joined #scheme 03:52:44 select is a separate issue. Aside from select, and aside from closesocket, doesn't Windows provide the standard BSD socket library? 03:54:37 http://tangentsoft.net/wskfaq/articles/bsd-compatibility.html claims to provide the full megillah. 03:54:50 The next question is Plan 9, where I believe net connections are just (surprise) files. 03:55:24 That's OK, foof. Can you still create a socket of some type in some protocol family, bind some socket to some local address, connect some socket to some local address, and so on? 03:55:45 The hard part is dealing with blocking. 03:56:02 Also, Winsock does not support any AFs or PFs except INET. 03:56:09 In particular, no AF_LOCAL. 03:56:21 (aka AF_UNIX) 03:56:46 Everything else should be a no-brainer, and introducing any substantially TCP-specific, IPv4-specific, &c., abstractions is a mistake. 03:57:34 Riastradh: yes, looks like it shouldn't be a problem: http://plan9.bell-labs.com/magic/man2html/3/ip 03:57:58 I don't understand that. Why isn't it a mistake to introduce pairs on top of raw C arrays instead of just providing raw C arrays? 03:59:44 When you make a `TCP library', you are taking a high-level, general abstraction, and then specializing it to work only with a single set of parameters -- not implementing a higher-level idea on top of it, but just reducing its functionality. 04:01:10 Well, yes, it's high level compared to direct use of network cards and buffers. 04:02:10 But (open-tcp-client `(hostname "foo.example.com" port "ftp")) is higher-level in turn than invoking the various socket API calls to translate this and encode that. 04:02:11 Please explain to me how CREATE-TCP-SOCKET, BIND-TCP-SOCKET, and CONNECT-TCP-SOCKET are `higher-level' than CREATE-SOCKET, BIND-SOCKET, and CONNECT-SOCKET. 04:03:04 That *wouldn't* constitute a high-level abstraction, no. But what I wrote down does, relative to direct socket programming. 04:03:12 OK -- I'll almost buy that, except that `TCP' is irrelevant there; what's relevant is that you want a stream socket in the internet domain. 04:03:59 Names of procedures can be dinked later. 04:04:17 The two most important high-level abstractions are wrapping a stream socket in a port, and providing a send/receive abstraction for datagrams. 04:04:33 So I might buy (open-stream-socket (make-internet-address "foo.example.com" "ftp")), but nevertheless, there is no reason to obscure socket(2), connect(2), bind(2), and so on. 04:04:56 I'm not obscuring them, they just aren't in my remit. 04:05:12 The chair of WG3 (or WG4 or whatever) can think all that up. 04:05:30 Then punt sockets altogether, because if you don't, WG2 will screw them up. 04:05:40 In 99.99% of cases people want the streams to be TCP and the datagrams to be UDP, so it makes a certain amount of sense to provide just those while leaving the underlying socket handling unspecified. 04:06:48 I have, if I understand you correctly, punted sockets. Or rather WG2 has. 04:07:10 When I say `sockets', I mean *all* sockets, including needlessly specialized `TCP-sockets' and `UDP-sockets' and whatnot. 04:07:48 Ah, but this interface will not expose any sockets. 04:07:55 Riastradh: If I understand correctly, there *won't* be TCP-sockets or UDP-sockets. There will be TCP ports and UDP something-or-others. 04:08:17 I don't care what the term for the particular objects that are exposed in name is; what you are talking about is a socket library nevertheless. 04:08:45 So curl(1) is a socket library? 04:08:57 ...no. OPEN-TCP-CLIENT is. 04:09:02 libcurl might be a better comparison. 04:09:16 Where do you draw the line? 04:09:50 Don't deal with standardizing anything about sockets until you are prepared to create them, connect them, bind them, and so on. 04:10:10 In fact, preferably, don't deal with it until you're ready to block. 04:11:42 Why? It is highly useful. Are you suggesting it will encourage bad programming style, or will not scale, and if so can you give some examples? 04:12:43 (it == an opaque wrapper around sockets as plain Scheme ports) 04:12:44 -!- alaricsp [~alaric@c-24-5-78-175.hsd1.ca.comcast.net] has quit [Ping timeout: 272 seconds] 04:12:52 What has always puzzled me about the socket API is why the object returned by bind() is considered the same ADT as that returned by connect() and accept(). 04:13:43 Object returned by bind? 04:14:00 bind doesn't return anything (other than an error code). 04:14:23 Neither does connect return anything. 04:16:08 foof, I am suggesting that if the designers of the socket library don't understand the need for programs to use bind, connect, and so on, and find those operations to be `low-level' and irrelevant grubby details, then they are likely to produce a design that is fundamentally broken, because they don't understand enough about networking to understand the consequences of what they are doing. 04:18:02 That is why I suggest taking something that looks just like the BSD socket library, which is what everybody implements and uses, particularly people who have a great deal of experience in networking. 04:18:32 I daresay the designers of the *socket* library, in WG3 or whatever, will understand those things. 04:19:00 Again, when I say `socket library', I mean anything that is related to sockets, whether or not the library provides objects that it calls `sockets'. 04:21:23 -!- jedc [~jedc@c-98-232-227-210.hsd1.or.comcast.net] has quit [Quit: jedc] 04:21:24 Not everyone uses the socket library directly. In particular, I have a little library that allows me to initiate and accept TCP connections, and I never depart from it (I use only stdio on the connections). 04:22:48 If it lets you do that, it's a socket library. 04:23:16 What word do you want me to use? `In-some-way-socket-related library'? 04:23:27 I don't have a problem with naming, as I said. 04:23:41 The point is that it is a *sufficient* socket library for me. 04:23:47 And, I conjecture, for many others. 04:24:02 What I'm trying to say is that if it has to do with sockets, anybody who is not prepared to include the operations socket, bind, connect, &c., should not be in charge of designing the library. 04:25:28 Yes, I grasp what you are saying. I don't see why you don't admit that there exist weaker but more convenient socket libraries than BSD's. 04:25:58 Of course there do. I still object to providing those in lieu of the BSD socket library -- even provisionally in lieu of it. 04:27:55 Then you should certainly apply to join WG3. 04:30:03 In any case, my pickle remains: how should datagram sockets in the Internet domain be modeled with greater convenience and less generality than BSD sockets provides? 04:30:26 ? 04:30:29 Why? 04:30:33 Because it's my job. 04:30:44 (Self-appointed, but mine nonetheless.) 04:31:07 Sorry, it sounds like you don't even have a solution but are trying to find the problem that it solves anyway. 04:32:03 -!- snappy [~naveen@unaffiliated/snappy] has left #scheme 04:32:08 Step 1. Find programs that use datagram sockets. 04:32:13 Step 2. Find common patterns in them. 04:32:13 -!- jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has left #scheme 04:32:21 Step 3. Abstract the patterns. 04:34:16 aidalgol [~user@202.36.179.68] has joined #scheme 04:34:17 jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has joined #scheme 04:34:25 Step 3. Profit!! 04:34:32 Step 3. Abstract the patterns. 04:34:44 Step 4. Profit!!! 04:34:44 Adamant, memo from Riastradh: Scheme's numeric tower is probably not prior art that would invalidate the patent you mentioned. Jim Miller worked on MIT Scheme back in the eighties when the numeric tower was being developed, so he probably knows what makes it different. Example: the patent talks of extensible operations, which Scheme doesn't have. 04:34:48 pavelludiq [~quassel@87.246.58.137] has joined #scheme 04:34:48 You've jumped over steps 1 and 2, so I am really puzzled by why you're at step 3. 04:35:03 thanks Riastradh! 04:35:05 I'm hoping that someone somewhere has done steps 1 and 2 already. 04:35:29 Or actually, step 3 as well. The less I have to invent, the better. In the standards world it's called the "base document". 04:35:34 I don't think there really are such common patterns, incidentally. 04:35:48 There are protocols built atop datagram sockets, to be sure, but that's a separate issue. 04:36:07 Indeed. Protocol-specific libraries except HTTP were sent to the bit bucket by the WG. 04:36:35 HTTP??? 04:37:08 No, my bad, HTTP was dropped also. 04:38:09 I thought at an earlier stage it would survive, but it died. 04:38:44 Thank goodness. The HTTP is tremendously complicated, and cannot be straightforwardly captured by a simple abstraction. 04:39:20 WG2 work does not focus on simple abstractions, but on convenience in the 80% case. 04:39:30 (or more) 04:40:19 That's ridiculous. When did Scheme standardization become anything to do with optimizing for the convenient cases and not with producing the right general abstractions? 04:40:46 When Scheme split into two languages. 04:40:48 -!- mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has quit [Read error: Operation timed out] 04:41:18 And as I have said many times, I see nothing jewel-like in the R5RS standard library: it is an accident of history. 04:41:24 I'm not talking about jewels. 04:42:57 I'm talking about general abstractions that are not crippled simply because the convenient case won. 04:43:03 The attitude I am assuming the SC intended for WG2 Scheme is, I think, well captured at http://en.wikipedia.org/wiki/Python_(programming_language)#Standard_library 04:43:56 If I want Python I know where to find it. 04:44:22 Doesn't trouble me. Every module in WG2 is optional anyway. 04:47:47 WG1 Scheme is the R5RS-alike 04:47:48 Anyhow, why should the presence of a stream-Internet library cripple the BSD library? 04:47:55 Adamant: Yes. 04:48:00 It would be very disappointing if the WG1/WG2 split excused a half-arsed job at many important things. 04:48:52 jcowan, providing a TCP-only abstraction is crippled, and I don't trust anyone who thinks it would be a good idea to start with that to design any networking APIs. 04:49:21 Well, there's nothing I can do about how much you do or don't trust me. 04:49:26 Riastradh: I think two things are in place. one, having a standard library is important these days. secondly, many/most standard libraries are poorly designed. 04:49:47 There is no real reason not to provide the BSD socket library. 04:49:53 I agree there. 04:50:28 I'm trying to use Guile's expect module with a subprocess, but expect seems to only be getting one character at a time. 04:50:52 Do I need to turn off IO buffering for the pipe to the subprocess. 04:51:21 -!- pavelludiq [~quassel@87.246.58.137] has quit [Remote host closed the connection] 04:51:27 It would be reasonable, later, to provide convenience routines for common patterns that arise in the use of the BSD socket library. 04:51:30 I agree there too. But WG2 has a schedule set from outside, and must be allowed to choose what it thinks it can and cannot deliver in that time. 04:51:53 jcowan: can it at least be punted to WG3? 04:51:58 It has been. 04:52:05 OK, then drop anything related to sockets. 04:52:07 ah, good. 04:52:17 Riastradh: Won't happen. I'm a democrat. 04:53:26 *jcowan* resumes his search for a UDP library somewhere. 04:53:34 Where did this mandate come from??? 04:54:44 I am astonished. Is it really the case that a bunch of people who haven't a clue about networking have insisted on its design? Is that a sensible use of democracy? 04:56:03 It would make sense if the masses said, `A networking expert should figure out what we need to do about networking.', and left it at that. 05:06:41 These "masses" of which you speak amount to nine individuals. 05:07:09 I first read that as `It would make sense if Moses had said ...' -- oddly it didn't seem to change the meaning much 05:07:22 I had hoped there would be more, but it would not to be. 05:09:25 John Cowan, Emmanuel Medernach, Wayne Richards, Francois Rene Rideau, Alex Shinn, Olin Shivers, Neil Van Dyke, Ben Weaver, Doug Williams. At least some of these are not ignoramuses about networking. 05:10:20 Five of these voted for a UDP library, one voted to punt it to WG3, the rest abstained from voting. Such is democracy. 05:11:25 -!- davazp [~user@184.Red-79-154-140.dynamicIP.rima-tde.net] has quit [Read error: Connection reset by peer] 05:11:31 I'm off to bed now. 05:14:52 -!- aidalgol [~user@202.36.179.68] has quit [Quit: Ah-wwayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy!] 05:18:18 vu3rdd [~vu3rdd@164.164.250.10] has joined #scheme 05:18:54 jcowan: I have some ideas about UDP that arose from writing my DNS library, I'll try to write them up later. 05:19:06 Please do. 05:19:21 I may nag you about it (Chairs are naggers by nature) 05:19:42 -!- homie` [~user@xdsl-84-44-239-240.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 05:19:45 -!- wbooze` [~user@xdsl-84-44-239-240.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 05:23:07 *jcowan* puts java.nio.DatagramChannel on the read queue. 05:24:41 It's Java's 2nd-generation UDP socket class, so may have some good ideas in it, or at least fewer bad ones. 05:26:41 I see now that the racket/udp library really is just a limited socket API, the kind of thing Riastradh was complaining about. 05:26:56 I will have to find out exactly what datagram sockets can do so I can see if I can re-abstract them. 05:34:42 jonrafkind [~jon@jonr5.dsl.xmission.com] has joined #scheme 05:38:02 If possible. 05:38:07 -!- jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has quit [Quit: Leaving] 05:44:28 MichaelRaskin [~MichaelRa@pantagruel.mccme.ru] has joined #scheme 06:07:57 gravicappa [~gravicapp@ppp91-78-228-174.pppoe.mtu-net.ru] has joined #scheme 06:22:43 alaricsp [~alaric@c-24-5-78-175.hsd1.ca.comcast.net] has joined #scheme 06:23:07 -!- jonrafkind [~jon@jonr5.dsl.xmission.com] has quit [Ping timeout: 240 seconds] 06:32:08 githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has joined #scheme 06:32:44 ski [~slj@c-3810e055.1149-1-64736c10.cust.bredbandsbolaget.se] has joined #scheme 06:36:49 -!- githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has quit [Remote host closed the connection] 06:41:10 -!- gravicappa [~gravicapp@ppp91-78-228-174.pppoe.mtu-net.ru] has quit [Ping timeout: 252 seconds] 06:49:03 rbarraud__ [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has joined #scheme 06:49:41 -!- rbarraud_ [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 276 seconds] 06:51:24 -!- rbarraud__ [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has quit [Client Quit] 06:51:38 rbarraud__ [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has joined #scheme 07:00:46 jgracin [~jgracin@dh111-186.xnet.hr] has joined #scheme 07:01:46 gravicappa [~gravicapp@ppp91-78-230-100.pppoe.mtu-net.ru] has joined #scheme 07:05:11 -!- mbohun [~mbohun@eth649.act.adsl.internode.on.net] has quit [Quit: Leaving] 07:08:08 masm [~masm@bl16-199-249.dsl.telepac.pt] has joined #scheme 07:08:41 ecraven [~user@140.78.42.213] has joined #scheme 07:10:51 aidalgol [~user@114-134-7-235.rurallink.co.nz] has joined #scheme 07:21:48 githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has joined #scheme 07:26:24 -!- ski [~slj@c-3810e055.1149-1-64736c10.cust.bredbandsbolaget.se] has quit [Read error: Connection reset by peer] 07:29:13 ski [~slj@c-3810e055.1149-1-64736c10.cust.bredbandsbolaget.se] has joined #scheme 07:31:08 -!- githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has quit [Ping timeout: 276 seconds] 07:34:10 githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has joined #scheme 07:42:43 -!- SirNick [~nick@c-67-160-151-16.hsd1.wa.comcast.net] has quit [Quit: Leaving...] 07:50:03 npe [~npe@195.207.5.2] has joined #scheme 07:52:44 -!- masm [~masm@bl16-199-249.dsl.telepac.pt] has quit [Ping timeout: 276 seconds] 07:56:30 masm [~masm@bl16-199-249.dsl.telepac.pt] has joined #scheme 08:00:16 rdd [~rdd@c83-250-48-164.bredband.comhem.se] has joined #scheme 08:01:43 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 08:01:46 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 08:23:11 Mr-Cat [c31aa706@gateway/web/freenode/ip.195.26.167.6] has joined #scheme 08:26:57 -!- npe [~npe@195.207.5.2] has quit [Quit: npe] 08:28:48 -!- githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has quit [Remote host closed the connection] 08:29:23 schmir [~schmir@mail.brainbot.com] has joined #scheme 08:29:29 -!- Mr-Cat [c31aa706@gateway/web/freenode/ip.195.26.167.6] has quit [Quit: Page closed] 08:38:12 -!- schmir [~schmir@mail.brainbot.com] has quit [Remote host closed the connection] 08:39:25 -!- aidalgol [~user@114-134-7-235.rurallink.co.nz] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 08:40:20 -!- ski [~slj@c-3810e055.1149-1-64736c10.cust.bredbandsbolaget.se] has quit [Read error: Connection reset by peer] 08:42:23 aidalgol [~user@114-134-7-235.rurallink.co.nz] has joined #scheme 08:48:47 schmir [~schmir@mail.brainbot.com] has joined #scheme 08:52:06 ski [~slj@c-3810e055.1149-1-64736c10.cust.bredbandsbolaget.se] has joined #scheme 09:05:02 -!- offby1 [~user@pdpc/supporter/monthlybyte/offby1] has quit [Ping timeout: 255 seconds] 09:11:36 -!- aidalgol [~user@114-134-7-235.rurallink.co.nz] has quit [Read error: Connection reset by peer] 09:24:56 -!- copumpkin [~copumpkin@host20-88-dynamic.245-95-r.retail.telecomitalia.it] has quit [Remote host closed the connection] 09:39:26 dzhus [~sphinx@89-178-241-34.broadband.corbina.ru] has joined #scheme 09:46:48 -!- darkmag [~vfalico@ip-94-112-36-51.net.upcbroadband.cz] has quit [Ping timeout: 245 seconds] 10:12:18 jao [~user@74.Red-80-24-4.staticIP.rima-tde.net] has joined #scheme 10:14:05 femtoo [~femto@95-89-248-241-dynip.superkabel.de] has joined #scheme 10:21:08 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 10:21:48 -!- Riastradh [debian-tor@fsf/member/riastradh] has quit [Ping timeout: 245 seconds] 10:22:15 -!- schmir [~schmir@mail.brainbot.com] has quit [Read error: Connection reset by peer] 10:23:18 Riastradh [debian-tor@fsf/member/riastradh] has joined #scheme 10:34:05 hohoho [~hohoho@ntkngw229253.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 11:15:38 -!- rbarraud__ [~rbarraud@118-92-15-104.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 265 seconds] 11:23:51 schmir [~schmir@mail.brainbot.com] has joined #scheme 11:26:16 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 265 seconds] 11:56:40 MrFahrenheit [~RageOfTho@users-33-173.vinet.ba] has joined #scheme 12:16:21 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 12:18:06 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 12:19:44 -!- masm [~masm@bl16-199-249.dsl.telepac.pt] has quit [Quit: Leaving.] 12:30:53 HG` [~HG@85.8.72.11] has joined #scheme 12:41:23 -!- HG` [~HG@85.8.72.11] has quit [Quit: Leaving.] 12:48:16 copumpkin [~copumpkin@host20-88-dynamic.245-95-r.retail.telecomitalia.it] has joined #scheme 12:49:39 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 13:04:01 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 13:04:19 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Remote host closed the connection] 13:04:51 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 13:10:03 -!- jmcphers [~jmcphers@218.185.108.156] has quit [Remote host closed the connection] 13:10:48 jmcphers [~jmcphers@218.185.108.156] has joined #scheme 13:12:49 bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has joined #scheme 13:29:24 Rearden [~John@209-217-211-155.northland.net] has joined #scheme 13:35:06 mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has joined #scheme 13:39:34 -!- Rearden [~John@209-217-211-155.northland.net] has quit [Quit: Leaving] 13:39:43 Rearden [~John@209-217-211-155.northland.net] has joined #scheme 13:50:27 Blkt [~user@160.80.135.101] has joined #scheme 13:58:47 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 14:12:53 -!- Adamant [~Adamant@unaffiliated/adamant] has quit [Quit: Adamant] 14:18:42 klovett [~klovett@c-67-180-97-38.hsd1.ca.comcast.net] has joined #scheme 14:33:38 Adamant [~Adamant@c-69-136-200-213.hsd1.ga.comcast.net] has joined #scheme 14:33:38 -!- Adamant [~Adamant@c-69-136-200-213.hsd1.ga.comcast.net] has quit [Changing host] 14:33:38 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme 14:34:32 -!- jgracin [~jgracin@dh111-186.xnet.hr] has quit [Remote host closed the connection] 14:37:41 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 276 seconds] 14:38:55 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 14:39:49 bweaver [~user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has joined #scheme 14:47:06 -!- schmir [~schmir@mail.brainbot.com] has quit [Remote host closed the connection] 14:47:37 HG` [~HG@85.8.72.11] has joined #scheme 14:55:54 -!- Rearden [~John@209-217-211-155.northland.net] has quit [Remote host closed the connection] 14:58:24 -!- vu3rdd [~vu3rdd@164.164.250.10] has quit [Remote host closed the connection] 14:59:40 pdponze [~pdponze@144.85.120.235] has joined #scheme 15:00:21 -!- puddingpimp [~dave@118-93-168-180.dsl.dyn.ihug.co.nz] has quit [Quit: Leaving] 15:10:20 -!- femtoo [~femto@95-89-248-241-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 15:10:40 femtoo [~femto@95-89-248-241-dynip.superkabel.de] has joined #scheme 15:13:08 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 255 seconds] 15:21:14 -!- lusory [~bart@bb119-74-190-127.singnet.com.sg] has quit [Ping timeout: 255 seconds] 15:23:16 lusory [~bart@bb219-74-123-92.singnet.com.sg] has joined #scheme 15:24:24 -!- hohoho [~hohoho@ntkngw229253.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 15:25:50 hohoho [~hohoho@ntkngw229253.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 15:27:11 davazp [~user@184.Red-79-154-140.dynamicIP.rima-tde.net] has joined #scheme 15:30:32 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 15:30:41 -!- alaricsp [~alaric@c-24-5-78-175.hsd1.ca.comcast.net] has quit [Ping timeout: 255 seconds] 15:42:02 -!- emma [~em@unaffiliated/emma] has quit [Ping timeout: 264 seconds] 15:52:14 -!- Intensity [jgZLIf4TvZ@unaffiliated/intensity] has quit [Ping timeout: 264 seconds] 16:09:38 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 16:10:35 SirNick [~nick@c-67-160-151-16.hsd1.wa.comcast.net] has joined #scheme 16:11:07 -!- jao [~user@74.Red-80-24-4.staticIP.rima-tde.net] has quit [Ping timeout: 240 seconds] 16:21:25 -!- Blkt [~user@160.80.135.101] has quit [Ping timeout: 252 seconds] 16:21:34 offby1 [~user@pdpc/supporter/monthlybyte/offby1] has joined #scheme 16:38:40 -!- Adamant [~Adamant@unaffiliated/adamant] has quit [Quit: Adamant] 16:47:02 -!- eno [~eno@nslu2-linux/eno] has quit [Ping timeout: 276 seconds] 16:48:05 eno [~eno@nslu2-linux/eno] has joined #scheme 16:51:07 -!- gravicappa [~gravicapp@ppp91-78-230-100.pppoe.mtu-net.ru] has quit [Ping timeout: 252 seconds] 16:59:26 -!- klovett [~klovett@c-67-180-97-38.hsd1.ca.comcast.net] has quit [Quit: klovett] 16:59:59 Thorn [~Thorn@unaffiliated/thorn] has joined #scheme 17:00:17 gravicappa [~gravicapp@ppp85-140-119-248.pppoe.mtu-net.ru] has joined #scheme 17:01:18 -!- alexand31 is now known as alexand3r 17:01:50 Sveklo [~sveklo@unaffiliated/sveklo] has joined #scheme 17:06:27 -!- Sveklo [~sveklo@unaffiliated/sveklo] has quit [Ping timeout: 240 seconds] 17:11:33 Sveklo [~sveklo@unaffiliated/sveklo] has joined #scheme 17:23:16 -!- davazp [~user@184.Red-79-154-140.dynamicIP.rima-tde.net] has quit [Read error: Connection reset by peer] 17:26:19 emma [~em@unaffiliated/emma] has joined #scheme 17:26:33 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 17:40:50 -!- Checkie [14396@unaffiliated/checkie] has quit [Ping timeout: 264 seconds] 17:49:39 githogori [~githogori@9.sub-75-208-106.myvzw.com] has joined #scheme 17:56:39 Fare [~Fare@ita4fw1.itasoftware.com] has joined #scheme 17:56:48 RageOfThou [~RageOfTho@users-42-147.vinet.ba] has joined #scheme 18:00:28 -!- MrFahrenheit [~RageOfTho@users-33-173.vinet.ba] has quit [Ping timeout: 240 seconds] 18:05:37 Adamant [~Adamant@c-69-136-200-213.hsd1.ga.comcast.net] has joined #scheme 18:05:37 -!- Adamant [~Adamant@c-69-136-200-213.hsd1.ga.comcast.net] has quit [Changing host] 18:05:37 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme 18:09:54 -!- MichaelRaskin [~MichaelRa@pantagruel.mccme.ru] has left #scheme 18:14:02 -!- SirNick [~nick@c-67-160-151-16.hsd1.wa.comcast.net] has quit [Remote host closed the connection] 18:14:23 SirNick [~nick@c-67-160-151-16.hsd1.wa.comcast.net] has joined #scheme 18:15:55 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 240 seconds] 18:29:24 dpara [~dpara@85-127-4-161.dynamic.xdsl-line.inode.at] has joined #scheme 18:40:53 -!- Modius [~Modius@cpe-24-28-30-165.austin.res.rr.com] has quit [Ping timeout: 240 seconds] 18:57:41 zyoung [~zyoung@wsip-68-225-85-249.hr.hr.cox.net] has joined #scheme 19:05:56 -!- pdponze [~pdponze@144.85.120.235] has left #scheme 19:13:01 alaricsp [~alaric@adsl-67-125-67-213.dsl.snfc21.pacbell.net] has joined #scheme 19:22:55 homie [~user@xdsl-87-78-39-177.netcologne.de] has joined #scheme 19:24:00 -!- HG` [~HG@85.8.72.11] has quit [Quit: Leaving.] 19:24:19 -!- RageOfThou [~RageOfTho@users-42-147.vinet.ba] has quit [Ping timeout: 240 seconds] 19:24:42 MrFahrenheit [~RageOfTho@users-33-65.vinet.ba] has joined #scheme 19:25:31 wbooze [~user@xdsl-87-78-39-177.netcologne.de] has joined #scheme 19:26:45 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 19:27:04 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 19:27:31 fradgers- [~fradgers-@5e0aadb6.bb.sky.com] has joined #scheme 19:41:25 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 19:43:31 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 19:44:54 -!- femtoo [~femto@95-89-248-241-dynip.superkabel.de] has quit [Quit: Leaving] 19:46:47 -!- Sveklo [~sveklo@unaffiliated/sveklo] has quit [Remote host closed the connection] 19:48:59 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 19:50:42 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 19:51:38 -!- alaricsp [~alaric@adsl-67-125-67-213.dsl.snfc21.pacbell.net] has quit [Ping timeout: 264 seconds] 19:57:31 -!- SirNick [~nick@c-67-160-151-16.hsd1.wa.comcast.net] has quit [Ping timeout: 240 seconds] 20:13:14 SirNick [~nick@69.166.35.201] has joined #scheme 20:15:55 jewel [~jewel@196-210-187-107.dynamic.isadsl.co.za] has joined #scheme 20:20:58 -!- wbooze [~user@xdsl-87-78-39-177.netcologne.de] has quit [Read error: Operation timed out] 20:21:06 wbooze` [~user@xdsl-78-34-223-61.netcologne.de] has joined #scheme 20:21:13 homie` [~user@xdsl-78-34-223-61.netcologne.de] has joined #scheme 20:21:37 -!- wbooze` [~user@xdsl-78-34-223-61.netcologne.de] has quit [Read error: Connection reset by peer] 20:22:01 -!- homie` [~user@xdsl-78-34-223-61.netcologne.de] has quit [Read error: Connection reset by peer] 20:23:58 -!- homie [~user@xdsl-87-78-39-177.netcologne.de] has quit [Ping timeout: 252 seconds] 20:24:31 homie` [~user@xdsl-78-34-223-61.netcologne.de] has joined #scheme 20:24:55 -!- homie` [~user@xdsl-78-34-223-61.netcologne.de] has quit [Remote host closed the connection] 20:25:58 wbooze [~user@xdsl-78-34-223-61.netcologne.de] has joined #scheme 20:27:22 homie [~user@xdsl-78-34-223-61.netcologne.de] has joined #scheme 20:33:52 -!- jewel [~jewel@196-210-187-107.dynamic.isadsl.co.za] has quit [Ping timeout: 252 seconds] 20:40:16 -!- zyoung [~zyoung@wsip-68-225-85-249.hr.hr.cox.net] has quit [Quit: Leaving] 20:42:00 -!- Nshag [user@lns-bzn-21-82-64-86-102.adsl.proxad.net] has quit [Ping timeout: 272 seconds] 20:46:18 masm [~masm@bl16-199-249.dsl.telepac.pt] has joined #scheme 20:49:43 -!- dzhus [~sphinx@89-178-241-34.broadband.corbina.ru] has quit [Remote host closed the connection] 20:53:54 Nshag [user@lns-bzn-23-82-248-79-201.adsl.proxad.net] has joined #scheme 20:58:04 choas [~lars@p578F67B3.dip.t-dialin.net] has joined #scheme 21:00:38 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 21:01:11 hellscheme [~hmmm@hbrn-5f70767c.pool.mediaWays.net] has joined #scheme 21:01:18 Hi there 21:01:53 Whats the usual compiler/interpreter for scheme (portable, linux& windows) 21:02:00 I know there are many implementations 21:02:08 but I have no idea which one to chose to learn scheme 21:03:41 go with chicken if you ask me.... 21:03:52 chicken works for me 21:03:53 Usually newcomers pick one of Racket or Chicken 21:04:02 Chicken on Windows... 21:04:12 win & linux ? 21:04:24 hellscheme: i use it on linux and os x 21:04:28 oki 21:04:28 I only know about chicken. 21:04:37 chicken on linux and racket on windows i would say, but ..... 21:04:57 and the language implementation is the say on both? 21:05:08 the same ? 21:05:08 same? 21:05:08 no 21:05:12 I mean the same soruce code works for both without editing? 21:05:16 not the implementation 21:05:23 aw 21:05:47 there may be some extensions which the other lacks etc.... 21:06:12 but if you stick to scheme syntax, you should be fine everywhere.... 21:06:32 ok that's what I wanted to know 21:06:32 ty 21:06:40 i mean without relying on extensions or librarys which are impl. specific.... 21:08:37 btw: wh racket for windows? as I see there is also a linux version? 21:08:40 *why 21:08:46 Intensity [ZNm0b7mNTs@unaffiliated/intensity] has joined #scheme 21:09:40 I use racket under Linux. 21:10:35 I use Racket on Linux, and on Windows, and also on OS X. 21:10:36 k 21:11:00 what abotu gauche? 21:11:07 seem like there are plenty of libs for gauche? 21:11:56 Not nearly as many as for chicken or racket 21:12:22 gauche is okay though 21:12:42 ah okay 21:12:46 i think my racket is called drscheme here 21:12:50 lol 21:13:08 because wikipedia mentioned that there are bidnings to opengl for gauche and didnt say anthing about rocket & chicke 21:13:12 but thanks 21:13:15 yeah plt scheme/drscheme/mzscheme got renamed to racket 21:13:18 I'll stay with chicken for first time 21:13:27 wikipedia is incomplete 21:13:35 all three have opengl bindings 21:13:39 yeah 21:13:43 ty :) hehe 21:15:16 Modius [~Modius@cpe-24-28-30-165.austin.res.rr.com] has joined #scheme 21:19:32 hm btw, is there any implementation with interactive mode? 21:19:49 like the interactive mode in haskell/python/ruby 21:19:55 REPL? 21:20:04 yeah 21:20:05 Read-Eval-Print Loop? 21:20:11 All have that 21:20:15 Lisp and Scheme have it since forever 21:20:15 Practically every Scheme system has had an interactive mode since before Ruby existed. 21:20:31 chicken also? 21:20:34 yes 21:20:42 It's a compiler, but it includes an interpreter as well 21:21:00 because man chicken doesnt have the word "interpret" or "repl" 21:21:03 *manpage 21:21:23 "chicken" is the compiler itself 21:21:28 You should be using csi or csc 21:21:32 FWIW Racket doesn't have "opengl bindings" -- it's supported as part of the gui thing. (So it's pretty much built-in.) 21:21:37 I think the latest version has that cleared up a bit 21:21:40 yay works ty 21:21:48 sjamaan: yes 21:22:37 It doesn't here, but I read it in a commit message or NEWS file somewhere 21:22:44 I'm running 4.6.0 though 21:23:16 cool csc compiles directly in executable binaries without having me invoked in using gcc? great :) 21:23:56 yeah 21:23:59 No messing around :) 21:24:03 good 21:24:24 -!- bweaver [~user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 21:24:55 hellscheme: Ruby and Javascript were both partially inspired by Scheme 21:25:10 :) 21:25:32 I never tried ruby/js, only python but now Iwanna try soemthing else 21:26:27 Python was not directly inspired by Scheme, but it's inherited a lot of Lispy/Scheme-y features that have become generally popular in language design. 21:26:42 yeah, and botched them badly ;) 21:27:07 See lambda 21:27:08 hellscheme: learning a new programming language every year or two is a good way to keep things going, both career and fun wise 21:27:17 schmir [~schmir@p54A90789.dip0.t-ipconnect.de] has joined #scheme 21:27:34 sjamaan: I have a horror story about that, but it's not for polite company :P 21:27:40 :) 21:28:10 Ruby has its share of horror about proc/lambda/Proc too ;) 21:28:42 sjamaan: it's probably not as bad, Ruby was designed more to do the sort of stuff I was trying to do. 21:29:18 using external libraries that were probably not mature enough also played a part. 21:29:42 Ruby even includes immature libraries in core 21:29:51 (notably, Rexml) 21:30:13 ah. I haven't played with it much since reading Pickaxe, v2. 21:31:14 SharkBrain [~gerard@210.48.104.34] has joined #scheme 21:34:06 hehe in scheme, the recursive stuff works better :D 21:34:14 (define (lol a) (lol (+ a 1))) <---- works fine, no real increase of stack 21:34:34 in haskell after 3 seconds, my swap file went huge 21:36:19 that seems odd. both use TCO for optimization. 21:36:48 in haskell you need a pure call of the function at the end 21:36:49 It's more likely Haskell is using bignums, whereas chicken falls back to flonums which may overflow 21:37:01 if it stores a at stack then it gets problematic 21:37:06 hellscheme: were you using Integer? 21:37:13 Adamant, csi 21:37:22 hellscheme: no, I mean in Haskell :P 21:37:28 yeah ghci 21:37:31 hellscheme: stack doesn't get used for function calls in haskell 21:37:37 rly? 21:37:47 and ghci does no optimization whatsoever 21:37:49 sjamaan's point is quite valid 21:37:52 aw 21:37:52 hellscheme: Try (use numbers) and do that again. You will need to run chicken-install numbers first for that 21:38:00 and ghci defaults to Integer :) 21:38:25 It should take a *long* time before there's any perceptible space usage increase from that procedure, assuming it's called with a small initial input. 21:38:35 With respect to bignums, that is. 21:38:45 hm. chandler's point is quite valid. 21:38:51 *FurnaceBoy* goes back to sleep 21:39:00 chandler does have a point 21:39:06 k 21:39:14 I haven't known that ghci doesnt perform TCO 21:39:20 sjamaan: yours would have been beautiful if it had been a constant multiplication 21:39:23 maybe it's debugging info in haskell that does this? 21:39:39 oh right, he's just adding 1 ;) 21:39:45 *sjamaan* facepalms 21:40:07 sjamaan: at first i didn't see it either. but chandler sees all :D 21:40:12 I said before I'm not making any sense today 21:40:34 sjamaan: nah, it was a worthy point regardless 21:40:47 sjamaan: in general 21:42:03 if I compile that program, it uses constant memory 21:42:31 1. `TCO' is a compiler optimization that can reduce the storage used by a single procedure call. `Proper tail recursion' is a more general property about the asymptotic space usage of programs. GCC does TCO; Scheme guarantees proper tail recursion. 21:43:00 2. Haskell is not eagerly evaluated. A non-optimizing implementation may not realize that it is more space-efficient to store 2 than to store the expression 1 + 1 when evaluating `f (1 + 1)'. 21:43:27 Riastradh: let's use GTCO for the Scheme-type case 21:43:32 (This is also why Haskell's Prelude.foldl is a mistake.) 21:43:56 The accepted technical term, Adamant, is `proper tail recursion'. That's what the reports use, and that's what the literature uses. 21:44:16 Riastradh: but it's not computer science without a acronym :( 21:44:25 *an acronym 21:44:43 See, e.g., Clinger, `Proper Tail Recursion and Space Efficiency.' 21:44:56 ah. PTR, then 21:44:58 *Adamant* ducks 21:45:00 Riastradh: What does Prelude.foldl do (or do wrong)? 21:45:18 (This is also why Haskell is a mistake, but some people haven't yet evaluated that yet.) 21:45:27 Here is its definition (possibly with arguments transposed because I can't keep them straight): 21:45:30 foldl' does what most people expect foldl to do 21:45:31 foldl f x [] = x 21:45:42 foldl f x (a:as) = foldl f (f x a) as 21:45:56 Here is the definition of foldl': 21:46:00 foldl' f x [] = x 21:46:14 foldl' f x (a:as) = seq (f x a) (foldl' f (f x a) as) 21:46:43 (or perhaps: let x' = f x a in seq x' (foldl' f x' as)) 21:46:49 I can't read that, sorry 21:46:51 c 21:47:34 the issue is that the regular foldl will build up a bunch of nested thunks and often cause a stack overflow when you go to evaluate them 21:47:52 -!- SirNick [~nick@69.166.35.201] has quit [Ping timeout: 272 seconds] 21:47:57 The difference is between storing the term 2 and storing the term 1 + 1; or, between storing the value of f x a and storing the expression f x a. 21:48:03 chandler++ 21:48:14 SirNick [~nick@69.166.35.201] has joined #scheme 21:48:29 oversimplifying :) 21:49:09 Yes, I am oversimplifying. The real source of the problem is that Haskell's execution engine is hard to understand, but explaining that requires explaining the engine in order to explain why it is hard to understand. 21:49:19 haha 21:49:27 I think I see what you mean 21:50:23 -!- dpara [~dpara@85-127-4-161.dynamic.xdsl-line.inode.at] has quit [Quit: Ex-Chat] 21:50:37 kuribas [~user@d54C43422.access.telenet.be] has joined #scheme 21:50:53 Riastradh: only for those of us limited to standard thinking in 4 eager dimensions due to a lack of worship of the Great Old Ones (who are mostly named Simon) 21:51:14 and don't have tentacles on their face 21:51:29 If it, and its consequences, were not hard to understand, then foldl would have been defined from the beginning as foldl' is now. 21:52:59 Why didn't they "fix" fold? 21:53:09 linux-m00n [~oseba@89-212-156-60.dynamic.dsl.t-2.net] has joined #scheme 21:53:20 Is there some observable difference in semantics (except for eating up all memory and crashing)? 21:53:57 sjamaan: probably because it's in the Prelude. 21:54:21 I thought those were the observable semantics of Haskell. It's a feature, not a bug. 21:54:22 which are the standard-defined functions 21:54:28 It is possible to construct two programs, parametrized by the left-folding operator, such that one program eats up all available memory with foldl but not with foldl', and such that the other program behaves the other way around. 21:54:32 Why does that matter? It's not another library? 21:54:52 sjamaan: it would be like 'fixing' something in R5RS by ignoring the standard 21:55:07 As if that hasn't been done. :-) 21:55:07 Oh, the Prelude's actual implementation is nailed down in some standard? 21:55:12 chandler++ ;) 21:55:15 sjamaan: yes, Haskell 98 21:55:22 and now Haskell 2010 21:55:28 or 2009, I forget 21:55:29 That sounds pretty dumb 21:55:33 The semantics is, sjamaan. 21:55:40 Who cares about the actual implementation? 21:55:56 sjamaan: it's as Riastradh said. 21:55:59 The implementation is irrelevant. foldl and foldl' exhibit different behaviour. 21:56:03 That would be like RnRS demanding LET be a macro that expands to LAMBDA 21:56:33 Riastradh: Is that behaviour considered part of the specification of fold?! 21:56:42 sjamaan: mostly it's worked around by slapping people upside the haid (in foof parlance) and telling them to use fold' 21:56:50 The behaviour is specified by giving an example implementation. 21:56:51 heh! 21:57:04 which works reasonably. 21:57:22 yeah "our standard prelude is broken. Use this nonstandard function instead" 21:57:30 Or is foldl' standardized too? 21:57:35 I think foldl' is also standard. 21:57:38 k 21:57:47 sjamaan: there's some movement to edit the Prelude 21:57:54 in future Haskell standards 21:58:01 oh yay 21:58:09 As I said before, neither foldl nor foldl' is immune to memory exhaustion, and each is vulnerable to memory exhaustion situations to which the other is not. 21:58:55 Riastradh: Ah, so you actually might need foldl in some cases, as foldl' would eat up all memory 21:58:58 That sucks 21:59:13 sjamaan: it's really not a huge deal in practice. 21:59:26 Well, not `actually', but theoretically, yes. 21:59:29 but Riastradh is right it's not as elegant as it might be. 21:59:32 yeah 21:59:50 I don't know any practical program for which using foldl' rather than foldl actually causes a problem. 22:00:04 I can contrive one, but I've never seen one in the wild. 22:00:23 Assuming that the entire result list will be evaluated at some point, is there any situation where foldl' uses an unbounded amount of memory but foldl does not? 22:00:29 -!- fradgers- [~fradgers-@5e0aadb6.bb.sky.com] has left #scheme 22:00:30 By contrast, this program to sum the elements of a list of numbers can readily break with foldl when it won't break with foldl': sum list = foldl (+) 0 list 22:00:30 The fact you can contrive one is kinda worrying though 22:01:05 sjamaan: you can contrive a way to give lots of nasty input to a program that doesn't necessarily happen in practice. 22:01:15 yes, true 22:01:23 Er, "the entire result", not "entire result list". 22:01:23 unless the practice you are worried about is something thinking up nasty input. 22:01:29 (security) 22:01:42 But anything you can contrive might also be abused in practice by people with malicious intent 22:01:50 yes. 22:01:50 Yes, chandler. Consider an f that, the last time around, constructs a very small structure, but every other time, constructs an arbitrarily large structure. Then use only the small structure enclosing the result of the fold. In this case, foldl will win, but foldl' will lose. 22:02:52 Right, that's what I meant by the entire result not being used. 22:03:19 -!- futilius [~otheruser@2001:470:d:128:216:3eff:fe86:c70e] has quit [Read error: Operation timed out] 22:03:21 Oh, OK. In that case, no, I don't know how to make foldl win and foldl' lose. 22:03:22 sjamaan: so, an IDS (Intrusion Detection System) will probably never fail from this normally, but there are pathological inputs you can give a IDS that uses regular expressions that causes the regex engine to blow up.... and disable the IDS if it's not being used in a filtering mode. 22:03:26 futilius [~otheruser@2001:470:d:128:216:3eff:fe86:c70e] has joined #scheme 22:03:31 -!- jonrafkind [~jon@crystalis.cs.utah.edu] has quit [Ping timeout: 252 seconds] 22:04:03 Adamant: Which would kinda defeat the point of using an IDS ;) 22:04:09 sjamaan: right. 22:05:43 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Read error: Operation timed out] 22:05:48 but normal malicious traffic is unlikely to encounter this. 22:06:06 err, a IDS is unlikely to encounter this given normal malicious traffic. 22:06:33 which isn't targetting the IDS :P 22:07:31 A nice bet 22:08:10 no bets. IDS'es were modified to fix this. 22:08:16 ok 22:08:22 but not everyone is writing IDS'es. 22:14:44 -!- MrFahrenheit [~RageOfTho@users-33-65.vinet.ba] has quit [Read error: Connection reset by peer] 22:14:59 -!- linux-m00n [~oseba@89-212-156-60.dynamic.dsl.t-2.net] has quit [Quit: Leaving] 22:15:15 MrFahrenheit [~RageOfTho@users-33-65.vinet.ba] has joined #scheme 22:15:16 -!- gravicappa [~gravicapp@ppp85-140-119-248.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 22:21:32 -!- MrFahrenheit [~RageOfTho@users-33-65.vinet.ba] has quit [Quit: Leaving] 22:25:07 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has quit [Remote host closed the connection] 22:29:23 -!- jensn [~ceres@c-83-233-158-96.cust.bredband2.com] has quit [Ping timeout: 276 seconds] 22:34:18 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 240 seconds] 22:35:45 -!- schmir [~schmir@p54A90789.dip0.t-ipconnect.de] has quit [Remote host closed the connection] 22:36:23 jensn [~ceres@c-83-233-158-96.cust.bredband2.com] has joined #scheme 22:41:08 -!- pygospa [~pygospa@g225192229.adsl.alicedsl.de] has quit [Ping timeout: 265 seconds] 22:42:56 pygospa [~pygospa@g230085053.adsl.alicedsl.de] has joined #scheme 22:47:21 MrFahrenheit [~RageOfTho@users-55-172.vinet.ba] has joined #scheme 22:52:50 -!- homie [~user@xdsl-78-34-223-61.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 22:57:29 -!- wbooze [~user@xdsl-78-34-223-61.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 22:59:19 -!- kuribas [~user@d54C43422.access.telenet.be] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 23:02:17 -!- choas [~lars@p578F67B3.dip.t-dialin.net] has quit [Quit: leaving] 23:05:01 -!- masm [~masm@bl16-199-249.dsl.telepac.pt] has quit [Quit: Leaving.] 23:11:56 -!- SirNick [~nick@69.166.35.201] has quit [Ping timeout: 255 seconds] 23:12:12 -!- MrFahrenheit [~RageOfTho@users-55-172.vinet.ba] has quit [Read error: Connection reset by peer] 23:12:42 MrFahrenheit [~RageOfTho@users-55-172.vinet.ba] has joined #scheme 23:31:41 klovett [~klovett@c-67-180-97-38.hsd1.ca.comcast.net] has joined #scheme 23:34:02 aidalgol [~user@202.36.179.68] has joined #scheme 23:35:54 -!- MrFahrenheit [~RageOfTho@users-55-172.vinet.ba] has quit [Read error: Connection reset by peer] 23:36:21 MrFahrenheit [~RageOfTho@users-55-172.vinet.ba] has joined #scheme 23:40:22 -!- Fare [~Fare@ita4fw1.itasoftware.com] has quit [Quit: Leaving] 23:41:02 SirNick [~nick@199.223.126.66] has joined #scheme 23:41:35 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 276 seconds] 23:47:15 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 23:49:55 -!- MrFahrenheit [~RageOfTho@users-55-172.vinet.ba] has quit [Ping timeout: 240 seconds] 23:49:59 -!- aidalgol [~user@202.36.179.68] has quit [Quit: class] 23:52:46 -!- SirNick [~nick@199.223.126.66] has quit [Read error: Connection reset by peer] 23:53:05 SirNick [~nick@199.223.126.66] has joined #scheme 23:57:15 davazp [~user@184.Red-79-154-140.dynamicIP.rima-tde.net] has joined #scheme