00:05:15 mbohun [~mbohun@202.124.74.202] has joined #scheme 00:14:30 _Pb [~pb@75.131.194.186] has joined #scheme 00:14:43 -!- Komi [Komi@62.32.131.75] has quit [] 00:17:20 -!- MononcQc [~Ferd@modemcable062.225-20-96.mc.videotron.ca] has quit [Quit: Leaving] 00:25:37 mastertogo [~togo@ip70-171-249-111.tc.ph.cox.net] has joined #scheme 00:26:31 -!- rdd [~rdd@c83-250-52-182.bredband.comhem.se] has quit [Read error: Connection reset by peer] 00:27:05 rdd [~rdd@c83-250-52-182.bredband.comhem.se] has joined #scheme 00:27:14 saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has joined #scheme 00:35:55 so what's the deal with the scheme mailing list spam 00:37:49 -!- _Pb [~pb@75.131.194.186] has quit [Remote host closed the connection] 00:37:52 Which list? 00:39:18 -!- rdd [~rdd@c83-250-52-182.bredband.comhem.se] has quit [Ping timeout: 240 seconds] 00:54:23 mmc [~michal@109.117.129.204] has joined #scheme 00:56:06 -!- mmc1 [~michal@109.112.37.42] has quit [Ping timeout: 276 seconds] 00:57:26 chandler, comp.lang.scheme 00:57:49 That's no mailing list... 00:58:42 -!- bokr [~eduska@95-30-105-144.broadband.corbina.ru] has quit [Ping timeout: 260 seconds] 00:59:38 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 01:01:24 -!- asarch [~asarch@189.188.160.229] has quit [Quit: Leaving] 01:06:20 "newsgroup" 01:08:08 fowlduck [~fowlduck@24-177-112-133.dhcp.mdsn.wi.charter.com] has joined #scheme 01:09:46 -!- xwl_ [~user@esprx01x.nokia.com] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 01:10:07 xwl_ [~user@esprx01x.nokia.com] has joined #scheme 01:10:24 -!- mejja [~user@c-14bee555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Remote host closed the connection] 01:11:33 -!- mister_m [~matthew@OSH-NET-202-225.onshore.net] has quit [Ping timeout: 258 seconds] 01:14:03 bokr [~eduska@95-30-105-133.broadband.corbina.ru] has joined #scheme 01:17:16 snarkyboojum [~snarkyboo@110-174-43-105.static.tpgi.com.au] has joined #scheme 01:19:25 meder___ [~meder@c-69-143-116-194.hsd1.md.comcast.net] has joined #scheme 01:20:42 TonySidaway [~tonysidaw@cpc1-walt3-0-0-cust709.popl.cable.ntl.com] has joined #scheme 01:21:29 .oO( comp.lang.scheme is a planet-destroying space station? ) 01:23:14 Relax, foof. It's only *analogous* to a planet-destroying space station. 01:26:20 hmmm... perl6 looks like it could actually destroy planets: http://perlgeek.de/blog-en/perl-5-to-6/27-common-idioms.html 01:26:33 or at least render their entire populations insane 01:26:45 mind you, those are the _common_ idioms 01:27:11 my %exists = @keys Z=> 1 xx *; 01:27:42 I used perl 4 once because it helped me to do stuff that would have been painful in C. Nobody told me it would become some weird deathcult. 01:28:50 In the mid-1990s it was just something you used because the regular expressions worked well and it didn't have weird limitations on the number of arguments as many *nix greps and awks had at the time. 01:29:21 toast` [~toast`@c-71-231-102-232.hsd1.wa.comcast.net] has joined #scheme 01:30:00 Perl5 is still a damn good awk/sed replacement. One of the biggest features being the consistency - every version of awk and sed is subtly different. 01:32:30 foof: I must be nuts today, because the example you quoted actually makes sense to me, in a "this is exactly why I don't like irregular syntax, but I can put up with it anyway" sort of way. 01:32:39 jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has joined #scheme 01:33:59 chandler: I'm sure it's fine once you get used to it. The question is, can you keep all of the Perl6 syntax in your head at once? 01:34:26 I guess it depends on how big your head is. 01:34:29 Well... OK, still easier by far than a natural language, so if you use it every day I'm sure you can. 01:34:29 And how old you are. 01:34:47 I can't keep all of the Perl 5 syntax in my head at once, but then I don't really use it often. 01:35:49 It definitely seems like a Big Fine Language, but there are plenty of folks who will master such a language and use it for everything. 01:36:56 MonononcQc [~Ferd@modemcable062.225-20-96.mc.videotron.ca] has joined #scheme 01:37:30 -!- toast` [~toast`@c-71-231-102-232.hsd1.wa.comcast.net] has quit [Quit: toast`] 01:38:59 The idea of a synthetic infix operator like Z=> is actually somewhat natural once one accepts infix operators in the first place. Some languages already have a limited number of such synthetic operators, such as `+=' and the like in C. 01:41:29 ah, the * there means infinity 01:41:50 why not something like [1..] instead of 1 xx * ? 01:42:00 and can it be 1xx* ? 01:42:38 oh wait, it's not [1..], it's just repeated 1's 01:43:03 -!- rbarraud [~rbarraud@118-92-135-66.dsl.dyn.ihug.co.nz] has quit [Remote host closed the connection] 01:43:10 -!- zard1989 [~user@Joe.m4.ntu.edu.tw] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 01:44:14 I don't think I like max/min as infix operators. 01:45:58 The sorting example on that page is the ugliest thing there. Changing behavior based on the arity of an input procedure is a bad idea, unless they've abandoned functions with variable arity. 01:46:39 Agreed. 01:50:24 -!- mmc [~michal@109.117.129.204] has quit [Ping timeout: 240 seconds] 01:54:18 -!- TonySidaway [~tonysidaw@cpc1-walt3-0-0-cust709.popl.cable.ntl.com] has left #scheme 01:55:39 The other problem being that you often want to specify *both* a transform and a comparator. 01:56:36 Well, Perl6 is not really to be compared with Perl5. 01:57:46 -!- curi [~curi@adsl-99-114-139-86.dsl.pltn13.sbcglobal.net] has quit [Quit: This computer has gone to sleep] 01:57:56 -!- Toekutr [~toekutr@adsl-69-107-120-72.dsl.pltn13.pacbell.net] has quit [Quit: REALITY IS TEARING ITSELF ASUNDER, BUT I MUST RACE] 01:58:19 Thor [~Vens@unaffiliated/thor] has joined #scheme 02:01:35 -!- Thor [~Vens@unaffiliated/thor] has quit [Client Quit] 02:08:01 neilv [~user@dsl092-071-029.bos1.dsl.speakeasy.net] has joined #scheme 02:09:08 -!- fowlduck [~fowlduck@24-177-112-133.dhcp.mdsn.wi.charter.com] has quit [Remote host closed the connection] 02:10:08 how do people feel about the WGs? 02:11:45 Contemptuous, I think, but not intensely so. 02:11:54 heh 02:12:43 Marc Feeley asked me to make a report on WG2 activities for Montreal, and I have done so as follows: 02:13:13 "En raison de la malversation et l'indolence de la présidence, le WG2 n'a fait aucun progrès, full stop." 02:13:50 -!- proq [~user@unaffiliated/proqesi] has quit [Ping timeout: 260 seconds] 02:15:46 i feel inspired to revolution. does montreal have a prison that may be stormed? 02:18:02 -!- meder___ [~meder@c-69-143-116-194.hsd1.md.comcast.net] has quit [Ping timeout: 260 seconds] 02:18:55 more seriously, i don't know whether wg1 will arrive at anything that is generally liked. and i am separately wondering whether wg2 is hurting itself by not requesting accommodations from wg1 right now 02:19:35 I was a little surprised that one of the presentations will be on adding "guidelines" to the WGs. 02:20:37 i have a suspicion that the wg1 process has been so frustrating that any general appeal will be due to the superhuman efforts of a couple people, rather than to the input of many 02:21:17 i mean, any broad appeal of the end product 02:21:19 Accommodations for what? With one or two exceptions, everyone in WG2 is also in WG1. 02:21:59 My next thing is to put together a list of possible modules for WG2 to standardize, reject, or fob off on WG3, WG4, .... 02:22:17 I'm using R6RS, Racket, CL, Python, and Java as sources of ideas. 02:22:29 also the SRFIs. 02:22:36 I was thinking WG2 my put together subgroups for future SRFIs. 02:22:45 might put together 02:23:33 Threading, FFI, unified database interface, GUI. 02:23:58 neilv: I think those seeking broad appeal have already moved on to environments where progress may be made, even if there is some sacrifice in backwards compatibility. 02:24:10 there are not enough people using scheme for there to be steering committees creating working groups creating subcommittees to prepare requests for implementation 02:24:39 oh, and networking 02:24:52 Not subcommittes, but coordinate committees that can report later than WG2. 02:25:05 Actually WG2 can't create them, the SC can -- but we can recommend them. 02:25:16 ok, i have not laughed that hard in weeks 02:25:24 For example, if we decided to standardize something like a Tk interface, it would probably require a separate WG. 02:26:20 Rather than standardizing, how about implementing? 02:26:54 ATM, I have neither time nor energy for implementing on any but the smallest scale. 02:27:23 But I do not wish to standardize things out of whole cloth, either. 02:27:24 chandler: that's mostly my impression. though there are 2 or 3 people still working on the WGs 02:27:26 Oh, but we might get an excellent document out of this process. Worth its weight in paper, easily. 02:27:45 `I want to run Mumble on Scheme48, MIT Scheme, and Racket. Problem: it depends on foo, bar, and baz, which are not common between Scheme48, MIT Scheme, and Racket. In fact, not only does Mumble have this problem, but so do Grumble, Frumble, and Chrumble. Let's figure out how to make foo, bar, and baz common to the systems.' 02:28:26 The biggest stumbling block to implementing is lack of a portable module system. 02:28:37 "The part-time help of wits is no better than the full-time help of half-wits." --Herman Mankiewicz 02:28:43 And all the compatibility hacks (my own included) suck. 02:29:08 Even something like irregex, which has zero dependencies, is difficult to make portable. 02:29:16 At this point, one might say `Let's write up some wishful thinking about how we feel that foo, bar, and baz ought to look.' Another might say `Hack hack hack; here's something that works, here's why it works, here's why other alternatives don't work. Standardize that, and my life will be easier.' 02:29:18 Why so, specifically? 02:29:29 (irregex, that is) 02:30:01 Well, it would have been easier if I allowed myself use of SRFIs. 02:30:27 IOW, it was difficult to *write*, not difficult to port. 02:30:36 s/\./?/ 02:30:40 And writing Makefiles that concat or include files together to generate every different module system out there is a pain. 02:30:49 No, both are difficult. 02:31:04 -!- nowhere_man [~pierre@AStrasbourg-551-1-89-111.w81-49.abo.wanadoo.fr] has quit [Remote host closed the connection] 02:31:49 So I'm perfectly happy if WG1 succeeds in nothing but R5RS + a module system, _and_ the major implementations all add support for that module system. 02:32:53 Which is why I came down *really* strongly on any kind of fancy module semantics - it would undermine the entire purpose of our effort by making acceptance less likely. 02:33:13 i agree that a portable module system is the single most important missing thing in my experience 02:33:53 before moving to racket, i mostly just used r5rs + srfi error + srfi string ports 02:34:01 Did you really need a module system? Would a syntactic include form have worked just as well, or did you need something else? 02:34:12 You really need name control. 02:34:13 include doesn't scale 02:34:38 neilv: Both error and string ports are on the table for WG1, and I don't think there has been any specific opposition to them. 02:34:40 what would "fancy module semantics" be? 02:35:29 Fare: specifying that module, import, and export forms can all be expanded by macros, which conflicts with many module systems out there 02:36:09 jcowan: what's included in "name control"? Defined exports and imports? Renaming? Automagical concatenation? 02:36:15 arcfide's proposal goes much further than that, though, including two types of modules to allow for anonymous and local modules 02:36:49 chandler: At present, yes. Also "only" and "except". 02:36:54 But that's it. 02:37:39 I'd like to know if people (other than Riastradh) favor immutable SRFI-39 parameters as opposed to mutable ones, per my current proposal. 02:37:50 jcowan: immutable! 02:38:25 No assignment to a parameter, only binding. 02:38:56 (Not sure if that "!" is "Yes!" or "No!" 02:39:09 ) 02:39:16 jonrafkind [~jon@c-67-172-254-235.hsd1.ut.comcast.net] has joined #scheme 02:39:17 I want to add agents (like termite threads) to Chibi, which gets complicated if the parameter mutations are supposed to be seen by other agents. 02:39:39 I think it's the name of a mutating procedure. 02:39:58 foof: so you're ruling out arcfide's proposal as too complex? 02:40:35 Fare: not just too complex, but also specifying semantics that are difficult for many module systems out there to interact with 02:41:35 jcowan, what do you mean by immutable parameters? 02:41:51 -!- mastertogo [~togo@ip70-171-249-111.tc.ph.cox.net] has left #scheme 02:41:53 as in your can locally bind, but not side-effect the local binding? 02:41:59 Just so. 02:42:33 so you have different forms in one case and the other? 02:43:03 It's a good idea. Common Lisp experience says that thread-local specials scale. Immutability simplifies the design and implementation of this. 02:43:16 The idea is to have a separation of concerns. Parameters are about dynamic binding; mutable objects like pairs are about mutability; sharing data between threads shoudl be done with something specific to threads. 02:43:33 lack of type-driven semantics often leads to either multiplication of forms in Lisp/Scheme or forms that are so general you can't easily analyze/optimize 02:43:48 "should" 02:44:02 OT: http://www.draconianoverlord.com/2010/07/22/dammit-mysql.html 02:44:02 Parameters are procedures in SRFI-39: call with zero arguments is a getter, call with one argument is a setter. 02:44:11 so you can locally bind to an explicit stateful cell if you want? 02:44:15 Right. 02:44:26 Or to a hypothetical thread-safe mailbox object. 02:44:28 toast` [~toast`@c-71-231-102-232.hsd1.wa.comcast.net] has joined #scheme 02:44:32 by the same token, shouldn't all variable bindings be immutable? 02:44:57 Yep. 02:45:02 Too late now. 02:45:19 Mutable variables are the single most confusing aspect of Scheme to novices in my experience. 02:45:27 There's a remark about that in the Rabbit thesis, to the effect that Scheme has mutable variables rather than cells so they could get it done in six months. 02:45:38 They add nothing important to the language. 02:45:43 ML got this right. 02:45:51 And Pure. 02:46:28 so the solution, adopt ML? 02:47:03 Find a time machine and omit ASET' from the beginning. 02:47:17 (Even Sussman & Steele were confused -- hence the ' in ASET'.) 02:47:47 But someone did point out, possibly on this channel, that mutable variables are more easily analyzed than cells, for they cannot escape. This of course is not an argument against *using* cells to implement mutable varaibles. 02:47:50 nowhere_man [~pierre@AStrasbourg-551-1-89-111.w81-49.abo.wanadoo.fr] has joined #scheme 02:48:04 x and (set! x) or (ref x) and (set! x), I don't see why it's such a big deal 02:48:13 Abandon backward compatibility. Old code can run in old implementations and compatibility modes. Move forward. 02:48:28 It's easier than finding a time machine. 02:48:55 Old code matters more than old implementations, IMO. 02:50:20 Old implementations usually run. How much old Scheme code do you run, jcowan? 02:52:44 timj__ [~timj@e176197103.adsl.alicedsl.de] has joined #scheme 02:52:50 foof, you can't pass a variable as an argument. Every other mutable location that novices encounter is part of an object you can pass as an argument, however. 02:54:23 phao [~phao@189.107.237.120] has joined #scheme 02:54:30 -!- phao [~phao@189.107.237.120] has left #scheme 02:55:04 curi_ [~curi@c-67-180-28-250.hsd1.ca.comcast.net] has joined #scheme 02:55:18 -!- curi_ [~curi@c-67-180-28-250.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 02:56:05 -!- timj_ [~timj@e176193240.adsl.alicedsl.de] has quit [Ping timeout: 265 seconds] 02:56:09 asarch [~asarch@189.188.148.93] has joined #scheme 02:57:55 It's surprising to me that Scheme is hamstrung by compatibility requirements, when in no other language would it be as easy to satisfy such requirements by providing a reference implementation for the old language written in the new. 02:58:50 OT: http://www.draconianoverlord.com/2010/07/22/dammit-mysql.html 03:00:25 It's that *@#$ about "jewel-like perfection", IMHO. That may apply to the syntax forms and to syntax-rules, but *not* to the procedure library. 03:02:38 Nothing wrong with libraries, nor does that conflict with jewel-like perfection. 03:02:50 Libraries are just the setting for the jewel. 03:04:20 And defining a basic, compatible module form is trivial. But everytime the topic comes up, someone shouts "but, but, what about _units_?!" or "it must only be macros!" or "hey, how about adding versions?" 03:04:45 I meant that the specific library in the R2RS -> R5RS standard is not especially jewel-like at all. 03:08:58 But how will we program without transcript-on? :O 03:12:00 Yes; the other thing that modules give us is an easy way to address the various kinds of optionality (not all explicit) in R5RS. 03:15:32 prsteele [~user@c-76-113-57-166.hsd1.nm.comcast.net] has joined #scheme 03:16:45 -!- prsteele [~user@c-76-113-57-166.hsd1.nm.comcast.net] has left #scheme 03:25:54 kniu [~kniu@pool-71-106-4-84.lsanca.dsl-w.verizon.net] has joined #scheme 03:26:21 prsteele [~user@c-76-113-57-166.hsd1.nm.comcast.net] has joined #scheme 03:26:29 waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has joined #scheme 03:27:15 can anyone tell me when Scheme will automatically cast a number down the numeric tower, i.e. from a float to an integer? 03:28:02 The answer is "never", but note that inexact (i.e. float) numbers vs. exact numbers is orthogonal to the tower itself, which is complex > real > rational > integer. 03:28:33 so why does (quotient 5.0 2) succeed? Does it treat 5.0 as an integer? 03:29:05 5.0 is indeed an integer. 03:29:15 also, thanks for the distinction between the tower and exactness 03:30:08 and if 5.0 was produced by another operation, like (/ 5.55 1.11)? 03:30:16 Ignoring that that hits 4.9999999.... 03:31:37 If, to the best of its computational ability, Scheme cannot distinguish the result of some computation from 5.0, then it will treat that result as an integer. 03:31:52 okay, thanks 03:32:05 Arguably, applying quotient and friends to an inexact integer is a bad idea. 03:32:14 sure, I agree 03:32:41 I just tried it to see how it responded, and was surprised that it sometimes worked 03:33:06 any idea what the epsilon is for approximate equality? or is that up to the implementation? 03:34:06 Normally equality is bitwise exact on exact numbers, so it depends on the representation, which is typically 64-bit IEEE nowadays. 03:34:07 fowlduck [~fowlduck@24-177-112-133.dhcp.mdsn.wi.charter.com] has joined #scheme 03:34:27 okay 03:34:40 thanks, all 03:36:00 -!- MonononcQc [~Ferd@modemcable062.225-20-96.mc.videotron.ca] has quit [Quit: Leaving] 03:36:52 rudybot: eval (inexact->exact 5.55) 03:36:53 neilv: ; Value: 6248744482976563/1125899906842624 03:37:01 -!- fowlduck [~fowlduck@24-177-112-133.dhcp.mdsn.wi.charter.com] has quit [Remote host closed the connection] 03:37:07 i wouldn't mind wg1 improving that 03:39:17 It may not be pretty, but on the assumption that every bit in the IEEE 64-bit representation of 5.55 is meaningful, that's probably indeed the correct fraction to represent the value. 03:39:50 Who would doubt me? 03:40:06 You can see this happening more clearly when you deal with inexact numbers greater than 2^53, where not every integer is separately representable. 03:41:01 -!- bgs100 is now known as bgs000 03:41:38 how about when numbers are read? 03:41:48 rudybot: eval (let ((x (read (open-input-string "5.55")))) (values (exact? x) (inexact->exact x))) 03:41:49 neilv: ; Value: #f 03:41:50 neilv: ; Value#2: 6248744482976563/1125899906842624 03:41:56 hohoho [~hohoho@p4ae269.tokynt01.ap.so-net.ne.jp] has joined #scheme 03:42:38 The standard requires that Scheme convert from strings to numbers and vice versa with full precision, but not all Schemes actually do. 03:42:40 the ieee representation has nothing to do with the read form 03:42:45 Stop, that tickles! 03:43:22 so the spec would require that 5.55 be read as a rational, 111/20 ? 03:45:49 -!- kniu [~kniu@pool-71-106-4-84.lsanca.dsl-w.verizon.net] has quit [Ping timeout: 246 seconds] 03:46:22 kniu [~kniu@pool-71-106-4-84.lsanca.dsl-w.verizon.net] has joined #scheme 03:50:17 rudybot: eval #e5.55 03:50:19 chandler: your sandbox is ready 03:50:19 chandler: ; Value: 111/20 03:50:35 *rudybot* giggles 03:50:42 #e -> exact? 03:51:02 which is supposed to be the default? 03:53:32 rudybot: eval (exact? 5.55) 03:53:32 pizza_: ; Value: #f 03:54:23 rudybot: eval (exact? #e5.55) 03:54:26 *offby1: your scheme sandbox is ready 03:54:27 *offby1: ; Value: #t 03:54:39 "If the written representation of a number has no exactness prefix, the constant may be either inexact or exact. It is inexact if it contains a decimal point, an exponent, or a ``#'' character in the place of a digit, otherwise it is exact." 03:55:06 i had just hit middle-mouse to paste that exact quote, and was about to hit enter 03:56:19 thanks again 03:56:44 i'm wondering about the rationale of that 03:57:10 why not have 5.55 read as an exact? 03:57:40 ya; I doubt anyone would intentionally, explicitly type a number that they don't want representable in binary 03:58:21 I like the way Haskell's numeric literals work. Unfortunately, that doesn't work in Scheme. 03:58:52 were it not for the goodness of racket, i would have moved to haskell already 03:59:50 Riastradh: pointer, or brief explanation? 04:02:14 1/2 reads as the code `fromInteger (a representation of the integer 1) / fromInteger (a representation of the integer 2)'. 04:02:25 cpr420 [~cpr@unaffiliated/cpr420] has joined #scheme 04:02:54 Context, inferred through the type system, dictates what definition of fromInteger and / to use. 04:03:43 Similarly, 1.23 reads as `fromRational (123 / 100)'. 04:04:14 Well, rather, `fromRational (Ratio 123 100)', where `Ratio' is the constructor for integral ratios. 04:04:43 (I have got some details wrong, probably, such as the spelling of `Ratio', but that's the basic idea.) 04:06:26 I think 'Ratio' is the type, and '%' is the constructor, but don't trust me on that 04:07:21 Yes, but even that's not right, because the reader also reduces the numerator and denominator to be coprime before passing them to the constructor. 04:07:56 Anyway, details aside, what's important is that the reader faithfully preserves the information that was written, and puts it into whatever format the surrounding code is going to use it for. 04:08:44 -!- mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has quit [Ping timeout: 240 seconds] 04:12:00 Gotcha. Is "." treated in the same way, or as a low-level constituent of float literals? 04:12:41 prsteele: People type numbers like 0.1 all the time that are not *exactly* representable. And if you want 1/10, you can say 1/10 or #e0.1 04:14:16 do you mean not exactly representable as ieee floating-point? 04:28:55 leppie [~lolcow@196-210-177-53.dynamic.isadsl.co.za] has joined #scheme 04:36:00 Right, given that almost all systems are IEEE now. 04:36:16 (Well, except IBM Z-Series) 04:38:04 -!- kniu [~kniu@pool-71-106-4-84.lsanca.dsl-w.verizon.net] has quit [Ping timeout: 240 seconds] 04:38:44 why not read "5.55" as an exact rational? 04:38:50 -!- jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has left #scheme 04:38:57 jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has joined #scheme 04:39:31 Convenience and compatibility. Since the earliest days of Fortran, programmers have assumed that literals with decimal poitns are floats. Scheme allows a simple override with #e. 04:39:39 reading "5.55" as an inexact seems to be purely a low-level efficiency concern or laziness, so far as i can tell 04:41:14 If it's laziness to make things easier for people, let's hear it for laziness. 04:41:21 what is the compatibility argument? 04:41:42 kniu [~kniu@pool-71-106-4-84.lsanca.dsl-w.verizon.net] has joined #scheme 04:42:04 that someone has "5.55" in a text file somewhere, and they intend for it to be inexact or to be represented as an ieee float? 04:42:17 and we want to use the scheme reader on that text file? 04:45:17 is it that the question is not what we think the user intended when they had "5.55" in some text for the reader, but rather compatibility with what we want the *print* format to be? 04:47:01 because print format would be a good argument, imho. making it print inexacts with #i prefix would actually break substantial legacy code 04:48:55 well, i'm not sure how much legacy code would be affected, if "#i" prefix is added only on "write" and not on "display" 04:48:57 -!- waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has quit [Remote host closed the connection] 04:49:14 waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has joined #scheme 04:49:54 probably a little code i wrote would break, but that's fixable, and it would break only because i was being lazy 05:04:10 -!- Fare [~Fare@c-24-218-127-11.hsd1.ma.comcast.net] has quit [Ping timeout: 265 seconds] 05:07:04 -!- jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has quit [Ping timeout: 265 seconds] 05:07:32 mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has joined #scheme 05:08:57 walterma` [~user@c-68-54-64-79.hsd1.fl.comcast.net] has joined #scheme 05:09:00 -!- dfeuer [~dfeuer@wikimedia/Dfeuer] has quit [Ping timeout: 265 seconds] 05:09:29 -!- prsteele [~user@c-76-113-57-166.hsd1.nm.comcast.net] has quit [Ping timeout: 265 seconds] 05:09:57 dfeuer [~dfeuer@wikimedia/Dfeuer] has joined #scheme 05:11:58 prsteele [~user@c-76-113-57-166.hsd1.nm.comcast.net] has joined #scheme 05:12:23 -!- prsteele [~user@c-76-113-57-166.hsd1.nm.comcast.net] has left #scheme 05:12:52 -!- waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has quit [Ping timeout: 265 seconds] 05:13:50 -!- walterma` [~user@c-68-54-64-79.hsd1.fl.comcast.net] has quit [Ping timeout: 265 seconds] 05:21:10 -!- cky [~cky@cpe-065-190-148-048.nc.res.rr.com] has quit [Ping timeout: 245 seconds] 05:22:45 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 05:25:45 -!- neilv [~user@dsl092-071-029.bos1.dsl.speakeasy.net] has quit [Quit: Leaving] 05:30:50 mathk [~mathk@lns-bzn-54-82-251-88-28.adsl.proxad.net] has joined #scheme 05:35:32 walterma` [~user@c-68-54-64-79.hsd1.fl.comcast.net] has joined #scheme 05:36:35 -!- walterma` is now known as waltermai 05:36:39 -!- saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has quit [Remote host closed the connection] 05:38:21 -!- mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has quit [Ping timeout: 258 seconds] 05:39:03 saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has joined #scheme 05:42:13 Delita [~pete@cpe-74-64-94-88.hvc.res.rr.com] has joined #scheme 05:44:17 -!- Quadrescence [~Quad@unaffiliated/quadrescence] has quit [Ping timeout: 265 seconds] 05:49:32 Quadrescence [~Quad@unaffiliated/quadrescence] has joined #scheme 05:51:39 Modius [~Modius@cpe-24-28-30-165.austin.res.rr.com] has joined #scheme 05:52:31 -!- Modius [~Modius@cpe-24-28-30-165.austin.res.rr.com] has quit [Max SendQ exceeded] 05:53:23 Modius [~Modius@cpe-24-28-30-165.austin.res.rr.com] has joined #scheme 05:53:38 phax [~phax@unaffiliated/phax] has joined #scheme 05:54:35 -!- cpr420 [~cpr@unaffiliated/cpr420] has quit [Quit: Bye!] 06:00:12 ASau` [~user@83.69.227.32] has joined #scheme 06:01:24 -!- ASau [~user@83.69.227.32] has quit [Ping timeout: 240 seconds] 06:03:04 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 240 seconds] 06:04:34 -!- luz [~davids@201.17.88.176] has quit [Quit: Client exiting] 06:05:10 -!- joelmccracken [~joelmccra@pool-72-95-149-22.pitbpa.east.verizon.net] has quit [Quit: joelmccracken] 06:09:35 -!- hohoho [~hohoho@p4ae269.tokynt01.ap.so-net.ne.jp] has quit [Remote host closed the connection] 06:09:36 -!- ASau` [~user@83.69.227.32] has quit [Read error: Connection reset by peer] 06:10:08 ASau` [~user@83.69.227.32] has joined #scheme 06:11:07 hohoho [~hohoho@p4ae269.tokynt01.ap.so-net.ne.jp] has joined #scheme 06:15:39 -!- asarch [~asarch@189.188.148.93] has quit [Quit: Leaving] 06:17:04 -!- jonrafkind [~jon@c-67-172-254-235.hsd1.ut.comcast.net] has quit [Ping timeout: 258 seconds] 06:18:58 adu [~ajr@softbank220043138128.bbtec.net] has joined #scheme 06:19:12 -!- toast` [~toast`@c-71-231-102-232.hsd1.wa.comcast.net] has quit [Quit: toast`] 06:23:51 -!- saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has quit [Quit: This computer has gone to sleep] 06:26:27 xwl_` [~user@esprx01x.nokia.com] has joined #scheme 06:43:15 -!- ASau` [~user@83.69.227.32] has quit [Ping timeout: 265 seconds] 06:44:50 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 06:52:45 saccade [~saccade@209-6-54-113.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 06:56:48 R3cur51v3 [~Recursive@209-20-84-78.slicehost.net] has joined #scheme 07:13:06 -!- waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has quit [Remote host closed the connection] 07:13:23 waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has joined #scheme 07:20:25 rdd [~rdd@c83-250-52-182.bredband.comhem.se] has joined #scheme 07:20:28 -!- xwl_` [~user@esprx01x.nokia.com] has quit [Remote host closed the connection] 07:21:34 HG` [~HG@xdsl-92-252-121-46.dip.osnanet.de] has joined #scheme 07:27:49 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 07:34:12 meder__ [~meder@c-69-143-116-194.hsd1.md.comcast.net] has joined #scheme 07:41:56 -!- meder__ [~meder@c-69-143-116-194.hsd1.md.comcast.net] has quit [Ping timeout: 248 seconds] 07:50:44 -!- paperkettles [~chris@2001:5c0:1104:f400:226:bbff:fe0c:b57f] has quit [Quit: paperkettles] 07:53:37 drwho [~drwho@c-76-124-164-157.hsd1.pa.comcast.net] has joined #scheme 08:01:21 -!- pigoz [~pigoz@lilac.feralhosting.com] has quit [Ping timeout: 240 seconds] 08:10:49 -!- Spewns [~jake@97-92-222-240.dhcp.stls.mo.charter.com] has quit [Quit: Leaving.] 08:13:11 rdd` [~rdd@c83-250-52-182.bredband.comhem.se] has joined #scheme 08:14:37 -!- rdd [~rdd@c83-250-52-182.bredband.comhem.se] has quit [Ping timeout: 246 seconds] 08:14:44 -!- R3cur51v3 [~Recursive@209-20-84-78.slicehost.net] has quit [Ping timeout: 240 seconds] 08:14:56 cthuluh [moo@wxcvbn.org] has joined #scheme 08:15:23 -!- rdd` is now known as rdd 08:15:41 will_ [~will@79.83.74.151] has joined #scheme 08:16:05 hello 08:23:22 -!- will_ [~will@79.83.74.151] has quit [Quit: Quitte] 08:23:50 paperkettles [~chris@ip72-195-132-159.ri.ri.cox.net] has joined #scheme 08:25:12 schmir [~schmir@mail.brainbot.com] has joined #scheme 08:25:15 will_ [~will@151.74.83-79.rev.gaoland.net] has joined #scheme 08:28:51 lvillani [~lvillani@fedora/lvillani] has joined #scheme 08:31:03 mmc [~michal@109.112.54.32] has joined #scheme 08:31:06 cky [~cky@cpe-065-190-148-048.nc.res.rr.com] has joined #scheme 08:36:37 masm [~masm@2.80.159.86] has joined #scheme 08:46:29 stis_ [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 08:48:31 fradgers- [~fradgers-@5adafe9d.bb.sky.com] has joined #scheme 08:52:50 adu [~ajr@softbank220043138128.bbtec.net] has joined #scheme 08:54:07 -!- mbohun [~mbohun@202.124.74.202] has quit [Quit: Leaving] 08:54:09 -!- fradgers- [~fradgers-@5adafe9d.bb.sky.com] has left #scheme 08:54:13 fradgers- [~fradgers-@5adafe9d.bb.sky.com] has joined #scheme 08:54:31 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Client Quit] 08:54:51 If I use (let ((x (proc))) (proc2 x) (proc3 x)), is proc run seperately for proc1 and proc2, or is proc run once, proc2 and proc3 therefore receiving the same values? 08:55:21 -!- Quadrescence [~Quad@unaffiliated/quadrescence] has quit [Ping timeout: 240 seconds] 08:59:25 -!- waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has quit [Remote host closed the connection] 09:01:23 offby1` [~user@q-static-138-125.avvanta.com] has joined #scheme 09:03:36 -!- offby1 [~user@pdpc/supporter/monthlybyte/offby1] has quit [Ping timeout: 276 seconds] 09:04:05 ... 10 minutes 09:04:16 would it hurt to wait just 10 minutes for an answer? 09:05:33 I guess he did not really want to know 09:05:35 -!- bgs000 [cheshire@gateway/shell/57o9.org/x-gbwzajzklhwdlnop] has quit [Read error: Operation timed out] 09:07:00 Jafet [~Jafet@unaffiliated/jafet] has joined #scheme 09:08:04 -!- broquaint [81911bca88@spc2-brig11-0-0-cust40.asfd.cable.virginmedia.com] has quit [Ping timeout: 240 seconds] 09:08:30 broquaint [e4652a55ed@spc2-brig11-0-0-cust40.asfd.cable.virginmedia.com] has joined #scheme 09:08:54 -!- leppie [~lolcow@196-210-177-53.dynamic.isadsl.co.za] has quit [Read error: Connection reset by peer] 09:09:33 leppie [~lolcow@196-210-177-53.dynamic.isadsl.co.za] has joined #scheme 09:11:12 Quadrescence [~Quad@unaffiliated/quadrescence] has joined #scheme 09:13:55 bgs000 [cheshire@gateway/shell/57o9.org/x-utihptsftlszmgek] has joined #scheme 09:19:51 karme [~user@2a01:4f8:100:51c1::4] has joined #scheme 09:25:26 mmc1 [~michal@109.112.35.15] has joined #scheme 09:26:49 -!- mmc [~michal@109.112.54.32] has quit [Ping timeout: 265 seconds] 09:27:02 Hi I wrote a little scheme interpreter, I would like to know if is there any executable test suite that cover the scheme (R5RS or anyother) ? 09:27:51 google r5rs_pitfalls.scm 09:28:06 that's a tough test to pass 09:28:53 if you want some library stuff, the r5rs_test.scm in chibi scheme should LOAD fine in any scheme 09:30:50 foof, that looks great. pitfalls is to much at the current state, but the r5rs test looks more realistic at this moment. 09:32:38 do you have syntax-rules? 09:34:25 foof no. I a very simple interpreter. I was looking for a set of test that check lambda, begin, etc 09:34:39 justicefries [~gerred@65.100.130.168] has joined #scheme 09:35:07 foo, this is my first attempt to write an interpreter. 09:36:41 sure, then you just want to redefine test at the top as a procedure 09:37:11 -!- justicefries [~gerred@65.100.130.168] has quit [Quit: justicefries] 09:37:28 justicefries [~thefry@65.100.130.168] has joined #scheme 09:38:50 Komi [Komi@83.231.61.211] has joined #scheme 09:39:27 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 09:39:36 foof, I have been using rackunit, with something like (check-equal? (evaluate #f) #f "false value ") 09:40:57 paint [~paint@unaffiliated/paint] has joined #scheme 09:41:28 hi 09:49:14 CBro2007 [~manukaul@213.1.222.66] has joined #scheme 09:52:59 -!- mmc1 [~michal@109.112.35.15] has quit [Ping timeout: 264 seconds] 09:53:42 just reading through SICP 09:53:59 I actually just started.. have more of a C/C++ background 09:54:05 but this stuff is really interesting 09:54:06 :) 09:54:23 but wondering if Scheme can be used for some real world programming? 09:54:38 or is Common Lisp the lisp dialect that is more in use? 09:54:47 You might be interested in this then, CBro2007 - http://universityofreddit.com/v2/class.php?id=57 09:55:50 broquaint: how does it work? 09:56:12 is that your site? 09:56:47 I am listening to some UCB lectures online in youtube.. he is pretty good 09:57:04 only thing is that his examples aren't as applicable .. so I am working those out on my own 09:57:28 I actually came across a site where people have done all the solutions to the excercises ... so I can compare mine to theirs 09:58:29 It's not my site, CBro2007, just a recent effort for people to go through SICP collectively. 09:58:41 k 09:58:58 sounds good but it means I will have to pace myself to them and might be a pain to do that 09:59:00 :) 09:59:05 Hehe 09:59:24 AIUI Lisp gets more coverage in real world usage. 10:00:48 what s AIUI? 10:00:56 never heard of it.. not that I am a LISP person 10:01:25 As I Understand It 10:01:28 mmc [~michal@109.112.35.15] has joined #scheme 10:01:38 This might be of interest with regards to the real world application of Lisp - http://lambda-the-ultimate.org/node/2491 10:02:12 CBro2007, Clojure is gaining a lot of attention 10:02:28 wow there a lot of LISP dialects huh? 10:03:02 I am actually going to start a FP course next semester and they use Standard ML 10:03:28 but I hear that this SICP book clears up a lot of fundamentals about FP and helps to think in a more Functional way so to say 10:03:47 is that a good starting point to learn functional programming? Even if its not LISP we will be using? 10:04:47 It's a fine starting point, CBro2007, you might also want to look at How To Design Programs - http://www.htdp.org/ 10:04:48 -!- lvillani [~lvillani@fedora/lvillani] has quit [Quit: Leaving] 10:05:35 it looks like when you are going into something more large scale the functional aspects get diluted with OO and other low-level stuff 10:06:04 broquaint, I agree, HTDP is a better starting point. 10:07:20 what to think functionally? 10:07:34 I like SICP though.. its very well written and its examples are pretty good 10:07:59 I actually wanted to get my head around recursion much more and FP seems to do these really well 10:08:32 If you're comfortable with SICP and want to get ti grips with recursion then stick with it. 10:08:40 s/ti grips/to grips/ 10:08:49 recursion in imperative programming is always give 2-3 pages in a book.. while with FP its almost like a loop 10:08:58 instead of looping you seem to recurse a lot :) 10:09:11 I could be wrong with what I am seeing... but seems to be the case most of the time 10:09:50 ok thanks.. and back to the video lecture now 10:09:56 another book I was looking at was Little Schemer before 10:10:03 -!- jmcphers [~jmcphers@218.185.108.156] has quit [Remote host closed the connection] 10:10:15 but someone asked me to read SICP before using LSchemer 10:10:44 jmcphers [~jmcphers@218.185.108.156] has joined #scheme 10:12:18 Also good and worth a read. 10:12:35 You could probably read The Little Schemer in conjunction with SICP to be honest, I think they complement each other. 10:14:56 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 10:22:08 adu [~ajr@softbank220043138128.bbtec.net] has joined #scheme 10:27:43 -!- mmc [~michal@109.112.35.15] has quit [Ping timeout: 265 seconds] 10:33:48 mmc [~michal@109.116.184.5] has joined #scheme 10:39:27 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 10:39:57 paint [~paint@unaffiliated/paint] has joined #scheme 10:45:03 -!- mmc [~michal@109.116.184.5] has quit [Ping timeout: 240 seconds] 10:51:47 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 10:52:24 mmc [~michal@109.116.184.5] has joined #scheme 11:06:11 -!- gabot [~eli@winooski.ccs.neu.edu] has quit [Ping timeout: 264 seconds] 11:10:47 CBro2007_ [~manukaul@213.1.222.66] has joined #scheme 11:10:47 -!- CBro2007 [~manukaul@213.1.222.66] has quit [Read error: Connection reset by peer] 11:15:58 gravicappa [~gravicapp@80.90.116.82] has joined #scheme 11:24:25 -!- justicefries [~thefry@65.100.130.168] has quit [Quit: justicefries] 11:26:38 -!- CBro2007_ [~manukaul@213.1.222.66] has quit [Quit: CBro2007_] 11:27:37 metasyntax` [~taylor@72.86.89.174] has joined #scheme 11:39:02 dark_ [~dark@engcomp.ufrn.br] has joined #scheme 11:39:30 i am looking for a very simple implementation of scheme, in build sense 11:39:38 (fewer dependencies, written in C, etc) 11:39:48 -!- hohoho [~hohoho@p4ae269.tokynt01.ap.so-net.ne.jp] has quit [Ping timeout: 248 seconds] 11:39:51 i need to compile it, every dependency i need to install myself 11:39:54 any suggestion? 11:39:58 chicken, maybe? 11:39:58 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 11:40:16 also a interpreter 11:40:22 an interpreter is more important, actually 11:40:35 infact, just an interpreter 11:41:12 ok chicken has an interpreter 11:41:29 paint [~paint@unaffiliated/paint] has joined #scheme 11:45:58 mmc1 [~michal@109.112.14.73] has joined #scheme 11:46:33 alvatar [~alvatar@17.127.222.87.dynamic.jazztel.es] has joined #scheme 11:47:07 -!- mmc [~michal@109.116.184.5] has quit [Ping timeout: 240 seconds] 11:48:23 ok, compiling chicken.. 11:55:18 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 11:55:46 -!- Nshag [user@lns-bzn-57-82-249-63-218.adsl.proxad.net] has quit [Ping timeout: 260 seconds] 11:58:38 compiled, =) 11:59:21 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 12:02:57 -!- snarkyboojum [~snarkyboo@110-174-43-105.static.tpgi.com.au] has quit [Quit: snarkyboojum] 12:05:30 -!- schmir [~schmir@mail.brainbot.com] has quit [Remote host closed the connection] 12:16:12 snarkyboojum [~snarkyboo@110-174-43-105.static.tpgi.com.au] has joined #scheme 12:30:31 acarrico [~acarrico@pppoe-68-142-49-233.gmavt.net] has joined #scheme 12:31:58 Nshag [user@lns-bzn-53-82-65-18-119.adsl.proxad.net] has joined #scheme 12:33:13 NNshag [user@lns-bzn-23-82-248-86-52.adsl.proxad.net] has joined #scheme 12:33:52 -!- will_ [~will@151.74.83-79.rev.gaoland.net] has quit [Quit: Quitte] 12:35:06 CBro2007 [~manukaul@213.1.222.66] has joined #scheme 12:35:30 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 12:36:48 -!- Nshag [user@lns-bzn-53-82-65-18-119.adsl.proxad.net] has quit [Ping timeout: 240 seconds] 12:37:02 -!- snarkyboojum [~snarkyboo@110-174-43-105.static.tpgi.com.au] has quit [Quit: snarkyboojum] 12:37:55 -!- phax [~phax@unaffiliated/phax] has quit [Remote host closed the connection] 12:39:27 joelmccracken [~joelmccra@pool-72-95-149-22.pitbpa.east.verizon.net] has joined #scheme 12:39:58 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 12:41:58 paint [~paint@unaffiliated/paint] has joined #scheme 12:43:17 -!- antoszka [~antoszka@unaffiliated/antoszka] has quit [Quit: +++ killed by SIGSEGV +++] 12:48:50 zard1989 [~user@Joe.m4.ntu.edu.tw] has joined #scheme 12:49:19 nowhereman [~pierre@AStrasbourg-551-1-48-119.w92-148.abo.wanadoo.fr] has joined #scheme 12:49:38 -!- joelmccracken [~joelmccra@pool-72-95-149-22.pitbpa.east.verizon.net] has quit [Quit: joelmccracken] 12:50:09 dark_: chicken has very few dependencies, indeed. You need only gcc and make, basically. 12:50:20 -!- nowhere_man [~pierre@AStrasbourg-551-1-89-111.w81-49.abo.wanadoo.fr] has quit [Ping timeout: 276 seconds] 12:50:57 (GNU make) 12:51:33 yes, i'm running the interpreter. now i have to figure out how to make my application.. (a theorem prover. i think i will do backtracking with (amb). it sounds cool) 12:52:22 hmm, there is a ##logic.. 12:52:37 Nice. There's #chicken if you have chicken-specific questions. 12:53:10 ok=) 12:57:22 antoszka [~antoszka@unaffiliated/antoszka] has joined #scheme 13:01:56 -!- Jafet [~Jafet@unaffiliated/jafet] has quit [Ping timeout: 248 seconds] 13:03:47 mmc [~michal@109.117.134.8] has joined #scheme 13:05:17 -!- mmc1 [~michal@109.112.14.73] has quit [Ping timeout: 265 seconds] 13:10:08 joelmccracken [~joelmccra@66.37.58.254] has joined #scheme 13:10:47 Jafet [~Jafet@unaffiliated/jafet] has joined #scheme 13:12:31 hi guys, I am reading section 1.3 in SICP about higher order fns.. I think I understand what its advantages are from the examples... but where does it apply? 13:12:37 I have a C/C++ background 13:12:48 can this be thought of a way of doing overloading? 13:13:02 no, it's a generic function 13:13:03 but obviously more powerful 13:13:18 i mean, i don't know this chapter, but think about C's qsort 13:13:22 dark_: and when would you choose to write a higher order fn 13:13:38 CBro2007, when i am doing operations that can be generalized to any function 13:13:57 CBro2007, do you know hoq qsort (man 3 qsort) works? 13:13:58 the example I am looking at is to compute the sums of series 13:14:03 hmm 13:14:11 i think the most interesting high order function is map 13:14:11 so its pretty cool how it works 13:14:27 map receives a function and a list, and returns a list that applies the function to all elements 13:14:32 -!- lusory [~bart@bb219-74-123-108.singnet.com.sg] has quit [Read error: Connection reset by peer] 13:14:46 so if the function doubles a number, '(1 2 3) becomes '(2 4 6) 13:14:49 I have done some perl too and I think I seen a map there too 13:15:08 which might have been copied from functional languages :) 13:15:25 of course it is =) python is also full of FP 13:15:32 ruby even more 13:15:50 hmm I wish I had done some sort of LISP earlier on or something 13:15:53 would have been fun 13:15:58 :) 13:16:05 this SICP is pretty well written too I think 13:16:47 yes it is o.o 13:16:59 i followed the lectures on youtube as well 13:17:04 very nice .-. 13:17:06 (map (lambda (x) (+ x 2)) '(1 2 3)) => (3 4 5) 13:17:08 the ones with UCB? 13:17:25 someone said they were outdated but the link said it was from 2010 13:17:35 so I am assuming this was a pretty recently taught course 13:17:45 or did you check out the ones from MIT? 13:18:07 http://www.youtube.com/watch?v=zQLUPjefuWA 13:18:21 no, it's from the 80's! 13:18:24 =) 13:18:31 -!- bgs000 [cheshire@gateway/shell/57o9.org/x-utihptsftlszmgek] has quit [Changing host] 13:18:31 bgs000 [cheshire@unaffiliated/bgs100] has joined #scheme 13:18:31 -!- bgs000 [cheshire@unaffiliated/bgs100] has quit [Changing host] 13:18:31 bgs000 [cheshire@gateway/shell/57o9.org/x-utihptsftlszmgek] has joined #scheme 13:18:33 -!- bgs000 is now known as bgs100 13:18:41 nah cannot view youtube videoes from here 13:18:49 just tell me the title of the video :) 13:18:55 SICP / What is "Computer Science" ? 13:19:03 i searched sicp youtube at google 13:19:10 CBro2007: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ 13:19:12 but there is also links to the video in hi-res at the page 13:19:19 but below the video does it say University of Cal Berkley? 13:19:27 no, it's from MIT 13:19:30 ah thats MIT ones yeah? mario-goulart ? 13:19:34 ah ok 13:19:40 I been following the one with UCB 13:19:45 he is pretty good too 13:19:47 mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has joined #scheme 13:19:54 just search for .. SICP + UCB 13:20:03 am on lecture 3 now :) 13:20:09 lusory [~bart@bb119-74-153-71.singnet.com.sg] has joined #scheme 13:20:14 where he talked about higher order fns 13:20:16 i like the introduction of sicp .-. i planned to translate it more than one time 13:20:38 translate it to what? 13:21:00 To Visual Basic? 13:21:23 heh 13:21:28 hohoho [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 13:25:46 adu [~ajr@softbank220043139062.bbtec.net] has joined #scheme 13:27:10 -!- hohoho [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 13:27:54 do I need to learn Lambda Calculus to understand Scheme better? 13:28:07 There is mention of using Lambda calculus for higher order fns 13:28:22 -!- alvatar [~alvatar@17.127.222.87.dynamic.jazztel.es] has quit [Read error: Connection reset by peer] 13:28:45 ? 13:29:19 CBro2007: Not needed. 13:29:42 mario-goulart: can I think of lambda as "anonymous functions" 13:29:52 Yes. 13:29:53 alvatar [~alvatar@252.127.222.87.dynamic.jazztel.es] has joined #scheme 13:29:58 whereby you don't have to give it a specific name .. but its handy to use 13:30:00 ah ok 13:30:02 That's what they are. 13:30:08 yeah sounds like it :) 13:30:14 wicked! 13:30:44 I wonder if lambda is just a scheme thing? or will it be used in most FP languages? 13:30:48 like ML, Haskell etc? 13:31:33 mario-goulart: don't know if you have had any experience with the more modern FP langs? 13:31:59 Other languages have lambda too. I guess it's from Lisp. 13:32:39 CBro2007: if by modern FP langs you mean haskell, I have no experience. 13:32:53 k 13:32:59 yeah Standard ML maybe? 13:33:14 Haskell has lambda e.g. \x -> x*x 13:33:16 so learning this Lambda concept will help 13:33:28 bremner: ok thanks 13:33:34 No. I'm mostly used to dynamic programming languages. 13:33:46 so is the \ meaning lambda? 13:33:50 yes 13:34:12 (lambda (x) (* x x)) if my scheme is not too broken 13:35:00 -!- paint [~paint@unaffiliated/paint] has quit [Ping timeout: 248 seconds] 13:35:11 ok 13:35:15 I guess any language calling itself functional should have a lambda equivalent, since that seems equivalent to having first class functions to me. 13:35:15 gabot [~eli@winooski.ccs.neu.edu] has joined #scheme 13:35:25 ok 13:35:38 I am just learning it now.. reading through SICP to get the hang of how FP works 13:36:16 was wondering how much different Common Lisp is from Scheme? 13:36:33 some people say that Scheme has a very neat syntax in comparison to Common Lisp 13:36:56 If I go through SICP I assume that I am also getting the hang of some scheme too 13:37:09 just wondering how much is transferrable? 13:40:05 paint [~paint@unaffiliated/paint] has joined #scheme 13:40:29 CBro2007: A lambda is just a function without a name. Many languages have them. 13:40:50 metasyntax: yep I got that.... 13:41:04 what about the similarity between Common LISP and Scheme? 13:41:08 is there a lot similar? 13:42:03 On many levels, most languages are similar, if you're new to the idea of "functional programming" then a lot of the ideas you'll learn are usable even in languages which aren't considered "functional" usually. 13:42:25 but scheme is by no means completely functional. 13:43:07 ok 13:43:25 but I mean its good to illustrate the concepts though yeah? 13:43:35 Absolutely 13:43:56 CBro2007: Common Lisp standardizes a lot of things that the Scheme Reports didn't, but Scheme implementations almost always make up for that with their own capabilities. 13:44:32 k 13:44:47 yeah there are like a million lisp interpretors out there :) 13:45:44 And Lisp machines 13:46:13 I mean then how do LISP people choose which implementation to go with? 13:46:25 Mostly by experimentation. 13:46:41 You wouldn't want to go half way through a project and going.. oh shit this is missing and I cannot do it using this implementation 13:46:45 what then? 13:46:53 Or at least that's the case for me. I find that with Scheme each implementation has its own strengths and depending on what I want to do I choose the one that fits the task. 13:46:58 I suppose you got to implement it all yourself then yeah? 13:47:12 CBro2007: For the most part, yes. :-) 13:47:13 metasyntax: sounds like a real pain 13:47:15 :) 13:47:37 I mean then you got to have years of experience writing Scheme code to know really which implementation will work and which one won't 13:47:38 Fare [~Fare@c-24-218-127-11.hsd1.ma.comcast.net] has joined #scheme 13:47:53 Right. So, if you don't have that experience, ask someone who does. 13:47:55 maybe thats what is the biggest buzzkill when it comes to coding in LISP 13:48:07 chandler: yeah thanks :) 13:48:09 -!- mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has quit [Ping timeout: 240 seconds] 13:48:23 CBro2007: That's my biggest buzz kill. 13:48:36 It's the same as any tool choice. Once you have a great deal of experience, you can make an informed decision yourself. Until you get there, ask for advice. 13:49:27 CBro2007: If you're looking to get started, I recommend Chicken Scheme. It's got a lot of features, and nice libraries for common tasks. Guile is also very good in this respect, and will see a new release soon. 13:49:49 Guile is good in that respect? 13:49:54 chandler: I use C... I couldn't imagine if I had a choice of using like 20 compilers and they all implemented some subsets of everything I needed 13:49:55 I wouldn't hardly say so. 13:50:03 racket is another possibility I would say. 13:50:08 I use DrRacket 13:50:10 CBro2007: Again, same with me 13:50:14 Maybe we are long lost internet bros 13:50:33 hehe 13:50:44 I am just learning this stuff now really... so I am a super newbie 13:50:50 CBro2007: You're choosing more than just a compiler. It's more akin to choosing a C compiler *and* an operating system on which to get started, and each has its own standard library. 13:50:52 but I suppose with time you get used to stuff 13:51:12 chandler: which sounds even more crazy :) 13:51:13 chandler: There's a more than fair chance that it had what I needed when I used it, and that has caused me to find it complete. :-) 13:51:50 CBro2007: I would dare say that Racket is the obvious choice for a new user, though. It has a comprehensive set of libraries out of the box for things like GUI programming, writing web applications and clients, working with data structures, etc. It is well documented, and most importantly there are many other Racket users here who can help out. 13:52:03 CBro2007: I don't really know what your goals are, but you might find Common Lisp more at home, even if it is a little bit uglier. 13:52:22 well I really want to read and complete SICP 13:52:35 coz I said to myself I would read through it over summer break 13:52:37 :) 13:52:51 Plus yeah I want to get the hang of the functional paradigm 13:52:57 coz it helps my C and C++ too 13:53:17 If by "helps" you mean "makes C more of a pain in the ass", then yes, it does. 13:53:21 Racket also comes with its own editor / IDE called DrRacket; you might find this to be useful if you don't want to dive into Emacs right away. 13:53:52 what I like the most with FP is that you guys really go deep into Recursion ... while imperative languages treat topics like recursion like step sons or some shit 13:54:06 chandler: yeah I use DrRacket on my mac... 13:54:19 chandler: though I set the language to #lang scheme 13:54:44 That's a compatibility language, though you probably won't notice the difference between that and "#lang racket". 13:54:53 Quadrescence: why would C become more of a pain in the ass with this stuff? 13:55:12 chandler: maybe not for the simple stuff I am trying to do in there 13:55:53 CBro2007: When you start getting used to passing functions to functions and having closures under your belt, you're going to try to emulate that in C with function pointers and bla bloo bla and then you'll get sad that you can't capture a lexical environment and pick it apart and make ad hoc objects and bla bla bla 13:56:08 nah I wouldn't :) 13:56:18 trust me you will 13:56:25 I would make use of the recursion more 13:56:30 metasyntax: Until Guile 2.0 is released, I probably wouldn't recommend it to a new user. The 1.x version doesn't have anything to recommend it against other implementations. 13:56:52 Once you go Scheme/related you won't be the same guy ever again 13:56:56 CBro2007: With due respect, I don't think you can anticipate how learning Scheme will change your thinking about programming just yet. :-) 13:56:57 Quadrescence: I have used function potiners and stuff... and I know they become unmanageble with time 13:57:58 chandler: I think I know what function pointers are in C and I don't think learning Scheme will suddenly make me love them and use them like crazy 13:58:00 :) 13:58:13 CBro2007: My point is that if you're like your average person, you're going to fall in love with Scheme and the idea, write your own interpreter and compiler, make it all grand, and you'll code so fast in Scheme that you won't want to be dragged along by C 13:58:33 yeah maybe 13:58:41 I must not be the average person. I spend quite a lot of time coding in C yet. It's a different mindset. 13:58:46 I believe in different horses for different courses 13:58:55 CBro2007 is right; Scheme won't make you love function pointers. 13:59:23 chandler: I agree, but you'll just want to be able to pass functions and write stuff like "map" and whatever. 13:59:25 I mean if I want something fast my first instinct is to code it in C or C++ 13:59:36 Quadrescence: I will? I haven't, really. 13:59:37 if I want to parse files do regular exps and stuff.. I just use Perl for that 13:59:59 Hi I am writing my own interpreter, How 'define' should be write, as a normal primitive or it should be recognize by the evaluator function ? 14:00:04 hmm don't know about that... 14:00:07 for example 14:00:13 chandler: Yeah, I agree with you there. I tend to have the stupid tenacity to try to learn from beta code I have to build myself. 14:00:29 I know some Java guys who write C code and their comments in the code look like the java docs tags 14:00:40 :) 14:00:45 pdelgallego: What is a "normal primitive"? 14:00:47 and in C that looks slightly weird 14:01:07 hohoho [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 14:01:19 chandler: Err not you, but CBro2007. Maybe it was just me, but at first, I wanted to write C like Scheme, and it just didn't happen. And I still am frustrated about the busywork I have to do in C to get stuff done. And I code in C every day, and will be probably for the next couple years. 14:01:30 pdelgallego: `define' is an odd beast. At the top level, it can either be a binding form or a mutation form. Inside the body of a `lambda', it's a binding form. 14:01:31 At first => when I got into lisp/scheme 14:01:56 Quadrescence: Perhaps the problem is that what you're trying to do is better suited to a high-level language. 14:02:09 chandler, well that is a good question. By normal I mean that 'define' is not recognize by the evaluator as a special form and it has not access to the environment 14:02:19 Quadrescence: I understand what you mean.. because when I started writing C++ I had the tendency to write it almost like C 14:02:23 :) 14:02:32 luz [~davids@201.17.88.176] has joined #scheme 14:02:52 -!- mauke [~mauke@p3m/member/mauke] has quit [Ping timeout: 246 seconds] 14:02:54 but it doesn't work that way yeah... I mean you still got to write C++ the C++ way and C the C way .. 14:03:03 chandler, that is exact my problem. at the top level it can access the environment, but in any other scope it will work like a let. 14:03:10 pdelgallego: It needs access to the environment for sure. Consider that if `x' is unbound, (define x 5) binds `x'. If it already is bound, it's equivalent to (set! x 5) . 14:03:22 CBro2007: Yeah. Maybe you won't fall into the trap then. :) 14:03:24 anyway back to some reading then.. but thanks Quadrescence chandler 14:03:34 Quadrescence: lets hope not 14:03:43 mauke [~mauke@p3m/member/mauke] has joined #scheme 14:04:03 CBro2007: Also, IIRC, there's a special #lang for SICP in DrRacket 14:04:06 I don't remember though, 14:04:31 Yes, there is: http://www.neilvandyke.org/sicp-plt/ 14:04:47 chandler, do you know any resource that talk about it. I have Lisp in Small Pieces access, but it dont cover this point 14:05:00 Yes, you might want to use chandler's link CBro2007. SICP uses some slightly different primitives. 14:05:13 ok cool 14:05:17 thanks will check it out 14:05:30 chandler: how do I get it to work in Dr Racket though? 14:05:31 It's still essentially Scheme, just with a couple different names. 14:05:58 but the SICP 2nd edition's example code didn't have anything that I didn't have in Dr Racket so far 14:06:20 its only the stuff I saw in the UCB SICP lectures that had stuff like first, butfirst etc.. that I couldn't find 14:06:27 lvillani [~lvillani@fedora/lvillani] has joined #scheme 14:06:33 -!- Fare [~Fare@c-24-218-127-11.hsd1.ma.comcast.net] has quit [Quit: Leaving] 14:07:09 CBro2007: Yeah, those should be in the SICP #lang 14:08:09 ok didn't get that part... in the SICP lang? 14:08:25 CBro2007: See chandler's link 14:08:35 is that link saying that I got to download another Scheme interpretor? or is it just something I can add in to Dr Racket? 14:08:49 Something you add to DrRacket 14:09:03 Racket used to be called PLT Scheme. 14:09:26 Ah ok 14:09:39 I don't know those identifiers will be present and have the same meaning in the PLT SICP language; I think the video lecture you were following is a little bit old, or references details of the implementation they're using (STk) that aren't in other implementations. 14:10:09 chandler: yeah I am just listening to what he talks about.. he got a few good things he mentions 14:10:26 chandler: otherwise I am just working thrugh the book's examples and they work fine for me 14:10:43 Well, then you probably don't need to do anything else 14:11:50 nope 14:11:51 :) 14:11:55 boily [~boily@poste205-171.wl.t.ulaval.ca] has joined #scheme 14:12:50 pdelgallego: You might want to look at TSPL, which is an excellent text covering the semantics of Scheme: http://scheme.com/tspl4/ 14:13:01 It won't teach you about how to write an interpreter, but it will tell you more about what you're interpreting. 14:14:09 One thing you might do to simplify the problem for now is to treat every symbol at the top level as a possible binding, so that `define' is equivalent to `set!' in that context. 14:16:16 asarch [~asarch@189.188.151.93] has joined #scheme 14:16:35 pdelgallego: Does your interpreter support hygienic macros? If not, most of the complexity drops away. 14:16:54 -!- boily [~boily@poste205-171.wl.t.ulaval.ca] has quit [Quit: leaving] 14:17:54 mmc1 [~michal@109.117.188.254] has joined #scheme 14:18:14 -!- mmc [~michal@109.117.134.8] has quit [Read error: Connection reset by peer] 14:18:26 chandler, I doesn't support anykind of macro yet. Is a very simple interpreter. No continuation, no macro, just the barebones of an interpreter. I am at the point of implement let, letrec, and define. 14:18:37 chandler, Or at least that is my agenda. 14:20:01 chandler, is my first attempt to write an interpreter. Till now has been easy so far. I guess the difficult parts come now. 14:21:05 If you're not doing macros, it's not that difficult. Use the strategy I described above for the toplevel. For inner defines, rewrite (lambda args (define a ...) (define b ...) ... some-non-define-form ...) into (lambda args (letrec ((a ...) (b ...) ...) some-non-define-forms ...) . 14:21:28 The same thing applies to `let', `let*', and `letrec' bodies. 14:21:49 Mandar [~armand@pha75-21-78-228-186-233.fbx.proxad.net] has joined #scheme 14:24:58 chandler, that sound right, at least until I face the macro implementation. 14:25:01 -!- leppie [~lolcow@196-210-177-53.dynamic.isadsl.co.za] has quit [Read error: Connection reset by peer] 14:25:34 leppie [~lolcow@196-210-177-53.dynamic.isadsl.co.za] has joined #scheme 14:25:58 chandler, It is normal that an interpreter has a way to pass the enviroment to external functions? or is like cheating? 14:26:34 fowlduck [~fowlduck@2002:cc0f:6d26:0:fa1e:dfff:fed7:9dc1] has joined #scheme 14:26:53 "external functions"? External to what? 14:27:28 if external functions means you are offloading some parts of the interpreter to a separate program/library, then it's a good design imo 14:27:50 the less your core interpreter has, the better 14:28:06 chandler, I mean that are not part of the evaluator function 14:28:16 dark_, yes, that what I mean 14:28:57 i once saw a compiler that had no notion of what is a sum. it's defined elsewhere 14:29:26 dark_, well that is the way I am trying to go. 14:29:39 (but you can reuse scheme's +, if you are making an interpreter for a language sufficiently similar to scheme) 14:29:47 xissburg [~chatzilla@187.3.134.216] has joined #scheme 14:30:40 dark_, chandler, this is my evaluator so far http://gist.github.com/487501 14:31:10 its about 130 lines 14:31:28 -!- lvillani [~lvillani@fedora/lvillani] has quit [Ping timeout: 276 seconds] 14:31:53 MrFahrenheit [~RageOfTho@users-33-211.vinet.ba] has joined #scheme 14:33:17 -!- offby1` is now known as offby1 14:33:20 -!- offby1 [~user@q-static-138-125.avvanta.com] has quit [Changing host] 14:33:20 offby1 [~user@pdpc/supporter/monthlybyte/offby1] has joined #scheme 14:33:57 I am trying to define as much as I can out of the evaluator function. 14:40:22 toast` [~toast`@c-71-231-102-232.hsd1.wa.comcast.net] has joined #scheme 14:41:05 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 14:42:35 paint [~paint@unaffiliated/paint] has joined #scheme 14:45:29 pdelgallego, like that extended-env*? i think it's fine 14:45:48 i don't know much of scheme, but this pattern matching seems nice too 14:45:58 (i'm from ml) 14:46:11 well, need to go. bye 14:46:18 -!- dark_ [~dark@engcomp.ufrn.br] has quit [Quit: Leaving] 14:46:30 -!- toast` [~toast`@c-71-231-102-232.hsd1.wa.comcast.net] has quit [Quit: toast`] 14:49:55 mister_m [~matthew@c-71-201-6-9.hsd1.il.comcast.net] has joined #scheme 14:55:41 -!- lusory [~bart@bb119-74-153-71.singnet.com.sg] has quit [Read error: Connection reset by peer] 14:57:13 -!- gravicappa [~gravicapp@80.90.116.82] has quit [Ping timeout: 260 seconds] 15:00:39 lusory [~bart@bb121-6-247-192.singnet.com.sg] has joined #scheme 15:26:31 -!- Jafet [~Jafet@unaffiliated/jafet] has quit [Ping timeout: 252 seconds] 15:27:46 -!- CBro2007 [~manukaul@213.1.222.66] has quit [Quit: CBro2007] 15:34:34 -!- samth_vacation is now known as samth 15:54:39 CBro2007 [~manukaul@cpc2-sgyl9-0-0-cust659.sgyl.cable.virginmedia.com] has joined #scheme 16:00:07 guys just wondering if you have a reference cheat sheet or something for scheme? 16:00:24 where you can just look up the structure of what a fn must look like or a let for example? 16:02:24 -!- alvatar [~alvatar@252.127.222.87.dynamic.jazztel.es] has quit [Quit: leaving] 16:02:56 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 16:03:07 CBro2007: the specification for scheme in the rnrs documents is small enough that it can serve that purpose 16:03:08 http://docs.racket-lang.org/reference/let.html?q=let#(form._((lib._racket/private/letstx-scheme..rkt)._let)) 16:03:44 thanks askhader 16:03:55 Komi: whats rnrs? 16:04:25 CBro2007: it depends on what scheme implementation you use 16:04:32 DrRacket 16:05:04 well racket *is not* exactly scheme 16:05:13 so better look at the racket documentation 16:05:44 Komi: well I actually use the #lang scheme in DrRacket 16:05:49 so I don't think I am using Racket 16:05:57 or am I? :) 16:06:30 askhader: was that reference more for Racket? the Let syntax looks different to what it is in SICP 16:07:08 Hmm, let is the same for scheme and racket afaik 16:07:45 ok haven't seen the [ ] in the let from the SICP example 16:08:04 (let (( ) 16:08:09 in the book 16:09:23 is Racket a more newer kind of Scheme or something? I have never heard it being used before 16:09:41 -!- aquanaut` [~user@kroger-p-outside.randomhouse.com] has quit [Remote host closed the connection] 16:12:21 -!- jimrees_ [~jimrees@ita4fw1.itasoftware.com] has quit [Quit: Ex-Chat] 16:14:25 CBro2007: [] serve the same purpose as () 16:14:35 it's just a different syntax 16:14:43 hmmm 16:15:04 Komi: so scheme has letrec? let* etc too? 16:15:11 or is that specific to Racket? 16:15:12 the let syntax is: (let (bindings) expresions) 16:15:27 where bindings is an associative pair 16:15:32 curi_ [~curi@adsl-99-114-139-86.dsl.pltn13.sbcglobal.net] has joined #scheme 16:15:32 ok 16:15:40 i.e: (let ((a 10) (b 20)) (+ a b)) 16:15:42 http://docs.racket-lang.org/reference/let.html?q=let 16:16:01 on this page I see a lot of other let variants... are these scheme too? or just for racket? 16:16:15 CBro2007: some of them are standard in scheme 16:16:21 let, letrec, let* 16:16:33 but racket might extend scheme with a lot of new features 16:16:53 so should I use racket? 16:17:02 or scheme to understand SICP? 16:17:17 you can use racket with SICP 16:17:20 k 16:19:09 talk about excessiv use of brackets 16:19:10 :) 16:19:15 *excessive 16:21:00 there might be some oddities though 16:21:21 for example, 'if' must have an else clause 16:21:52 where most schemes would accept (if (< x 10) (display "hello")) 16:22:05 in racket you might write: (and (< x 10) (display "hello")) 16:22:50 That would usually be written with `when', not `and'. 16:23:42 chandler: why? 16:24:35 It's rather unusual to use `and' in a situation where the return value is ignored. 16:25:21 Using AND expresses the intent to compute a boolean logical conjunction; using WHEN expresses the intent of a one-armed conditional for effect, not for value. 16:25:33 If your intent is the latter, you should use WHEN. 16:25:56 Doesn't when also return the result? 16:26:26 i agree though that the intent is clearer using when 16:26:40 Using WHEN has the potential to aid debugging: (WHEN ) might expand to (IF (BEGIN ) (MAKE-UNDEFINED-VALUE "a WHEN branch not taken")). Then, when your broken program tries to take the car of the undefined value, you might get an error message that helps you to find where the value came from -- unlike the #F that AND will return. 16:27:59 choas [~lars@p5B0DCA59.dip.t-dialin.net] has joined #scheme 16:28:27 Even when you only have one body form, using `when' is a good idea because you can easily stick a second form in there. For instance, one could easily change (when (confirm-the-launch?) (launch-the-missles)) into (when (confirm-the-launch?) (display "Commencing termination of terrestrial life!") (launch-the-missles)) . 16:28:28 a good reason then, i always used 'and' in racket 16:29:02 That works with `and', but it isn't very clear, and you might later change `display' into some kind of logging procedure that happens to return #f in some circumstances. 16:29:09 In that case, chandler, I think I'd be happier if DISPLAY could return #F and you used AND. Maybe that's not such a great example! 16:30:26 In the event that it becomes necessary to take off and nuke a zombie-infested Earth from orbit, I'd want the event to be well-logged and reliably so. :-) 16:30:36 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 16:32:52 ASau [~user@83.69.227.32] has joined #scheme 16:41:36 -!- paint [~paint@unaffiliated/paint] has quit [Read error: Operation timed out] 16:41:45 meder [~meder@c-71-206-10-49.hsd1.md.comcast.net] has joined #scheme 16:43:39 paint [~paint@unaffiliated/paint] has joined #scheme 16:45:06 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 16:53:40 -!- Mandar [~armand@pha75-21-78-228-186-233.fbx.proxad.net] has quit [Quit: Quitte] 17:01:38 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 265 seconds] 17:05:41 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 17:08:45 gauche has weak-vector providing weak weak pointers, do other schemes have similar functionality? how do they call it? i ask because one can implement something i would call after-gc-hook on top of it and wonder what already exists? 17:08:57 ~s/weak weak/weak 17:09:55 racket calls it weak reference i guess 17:10:14 Practically every Scheme system has some notion of weak references. 17:10:27 Riastradh: is there some common ground? 17:13:32 No, they all look different in some way or another, of course. 17:13:41 It's Scheme, after all; what did you expect, consistency between implementations? 17:13:55 :-) 17:14:17 hmm can't find how or wether it is exposed to the language in racket 17:15:35 weak-box 17:15:48 Did you try searching for "weak" in the documentation? 17:16:20 Racket has both weak boxes and key-weak hashes. 17:16:29 karme: This may be of some interest to you http://groups.google.com/group/comp.lang.scheme/msg/3dae225e3aa2ed2e 17:18:16 chandler: first i searched for weak references and didn't find it - later found it (weak-box) via "memory management" 17:18:35 IJP_: reading ... 17:18:47 Did you try searching for "weak"? 17:19:44 chandler: no searched for "weak references" 17:19:50 e.g. http://docs.racket-lang.org/search/index.html?q=weak 17:20:45 chandler: and if i search for weak using w3m i get http://docs.racket-lang.org/reference/eval-model.html?=weak => not weak-box 17:21:15 chandler: the racket docs are not very w3m friendly 17:21:29 That's true, yes. 17:21:46 chandler: using conkeror searching for weak works very well 17:22:36 IJP_: nice 17:23:23 -!- choas [~lars@p5B0DCA59.dip.t-dialin.net] has quit [Ping timeout: 265 seconds] 17:28:19 uh guardian looks nice 17:30:15 if i understand it right i can do something before gc with that, right? 17:30:34 before gc of an object that is 17:30:53 or i could decide to keep it anyway 17:31:38 where with a weak reference/pointer i can only do something after the object was gced 17:39:26 -!- hohoho [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 17:42:51 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 17:44:39 paint [~paint@unaffiliated/paint] has joined #scheme 17:45:24 hotblack23 [~jh@p57B5DFD7.dip.t-dialin.net] has joined #scheme 17:49:39 does anyone use larceny? 17:50:07 I believe the preferred nomenclature is "commit". 17:51:03 larceny the scheme implementation 17:51:30 mister_m: sometimes 17:53:19 Fare [~Fare@ita4fw1.itasoftware.com] has joined #scheme 17:54:07 it seems to support a lot of SRFIs is why I ask 17:54:20 -!- mathk [~mathk@lns-bzn-54-82-251-88-28.adsl.proxad.net] has quit [Read error: Connection reset by peer] 17:54:30 mathk [~mathk@lns-bzn-35-82-250-242-84.adsl.proxad.net] has joined #scheme 17:54:54 gravicappa [~gravicapp@ppp91-78-230-193.pppoe.mtu-net.ru] has joined #scheme 17:55:16 From what i see in \lib\SRFI\*.sch, yes quite a lot 17:56:51 is that a good gauge of how decent an implentation is? 17:57:00 implementation* 17:57:48 there are some missing though 17:57:53 (no threads) 17:58:56 hm 17:58:56 i don't know if that's a good metric, but i found larceny pleasing to work with 17:59:07 and in particular very efficient 17:59:27 mister_m: It isn't one of the most well-used implementations here, and it's not being maintained as far as I can tell 17:59:40 I'm leaning towards chicken, people seem happy with it, and it seems to be well maintained 17:59:58 Chicken = happiness 18:00:45 If you're looking for efficiency, Gambit would be a better choice. 18:01:34 I'm not too concerned about efficiency at this point in my scheme career 18:02:03 OK. Well, Gambit is still a good choice. I personally use Racket. Chicken is also a good choice. 18:02:17 gambit compiles to c doesn't it? 18:02:23 As does Chicken. 18:02:34 I'm happy with chicken too 18:02:45 pretty happy, in fact 18:02:47 chandler, those are the three implementations that I've heard the most about 18:02:52 both include interpreters though (if memory serves me well) 18:10:51 -!- acarrico [~acarrico@pppoe-68-142-49-233.gmavt.net] has quit [Quit: Leaving.] 18:13:03 mister_m: what do you intend to do with scheme? 18:13:21 mario-goulart, right now, as a learning vehicle 18:14:07 Ok, so I think any of chicken, gambit and racket would do the trick. 18:14:44 cool 18:14:50 thank you for the input everyone 18:16:37 You're welcome. If you're inclined to one chicken, racket or gambit, join #chicken, #racket or #gambit 18:17:53 I was thinking, when somebody asks for a good Scheme impl to learn on, does it really matter much which? The basic Scheminess isn't in all the extra libs an implementation may provide, but in the essential common aspects. Maybe even a minimal implementation is "best" since it can't distract you. 18:18:13 Not that I don't think bigger Schemes are good, since I suggested Chicken and Guile 2.0 earlier. :-) 18:18:16 Yes, it does really matter which. 18:18:23 metasyntax, that depends what you think is useful to learn with 18:18:30 There are implementations of Scheme which are downright broken. 18:18:44 for example, the "universe" system in Racket is a substantial library, but also great for learning 18:18:50 There are implementations of Scheme which are very well documented, and which many people here also use and can provide assistance for if need be. 18:21:07 Good point, chandler. 18:21:15 community matters 18:22:45 hadronzoo [~user@24.40.129.231] has joined #scheme 18:23:46 I meant to imply that one wouldn't suggest something which is broken. To explicitly refine my statement: if a new user is stuck with the choice between one of the many "famous" implementations, like Chicken, Gambit, Guile, Racket, GNU/MIT... 18:24:54 I agree that community is important as you evolve, but for beginning learning it seems like the stuff that one covers (e.g. The Little Schemer, SICP) is largely universal rather than implementation-specific. But yeah, like samth said I suppose that depends on what exactly you hope to get out of it. 18:24:57 -!- bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [Ping timeout: 240 seconds] 18:26:15 Then again, I am also a big dabbler, and not much of an expert yet, so perhaps it's just my personal approach to learning coming through. 18:26:42 metasyntax: It depends on the person. If someone is comfortable installing Chicken - possibly from source - and running it, and is comfortable with Emacs or some other editor that can sanely edit Scheme, then it's a fine choice. 18:27:18 aehrisch [~aehrisch@vhost.knauel.org] has joined #scheme 18:27:22 For someone who is running Windows, or whose familiarity with the shell is low, it might not be the best starting point; Racket might be a better choice. 18:28:32 For example, I like to learn by making useful things, or things that I can use in practice. That can make a difference depending on what the implementation has to offer. 18:30:39 I personally think that Racket is the best universal default choice for this reason. It's a good choice for someone who is looking for a friendly point-and-click environment, and it's also a good choice for someone who just wants to run a REPL from the shell. 18:31:26 It's also very good for making useful things. :-) 18:31:37 indeed 18:34:08 Hm, good points, all. Thanks for your perspectives. 18:34:46 bweaver [~user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has joined #scheme 18:43:09 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 18:44:03 -!- Delita [~pete@cpe-74-64-94-88.hvc.res.rr.com] has quit [Ping timeout: 276 seconds] 18:45:09 paint [~paint@unaffiliated/paint] has joined #scheme 18:45:51 -!- hotblack23 [~jh@p57B5DFD7.dip.t-dialin.net] has quit [Quit: Leaving.] 18:50:52 phao [~phao@189.107.197.199] has joined #scheme 18:53:19 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 18:54:02 justicefries [~thefry@173-14-6-4-Colorado.hfc.comcastbusiness.net] has joined #scheme 19:02:47 Spewns [~jake@97-92-222-240.dhcp.stls.mo.charter.com] has joined #scheme 19:05:49 Delita [~pete@74.64.94.88] has joined #scheme 19:09:47 I can't remember whether anyone else opined on the question of whether DYNAMIC-WIND should admit simultaneous entrance in multiple threads. 19:11:52 I didn't, and I don't know. 19:12:14 I don't see why not, honestly. 19:12:38 Here's why not: it doesn't make much sense unless you are sure that the state the entrance and exit procedures modify is thread-local. 19:13:45 Why does it have to be thread-local as opposed to being appropriately locked or serialized? 19:14:35 `Thread-local' may be too strong a condition, but `thread-related' suffices, I think. 19:14:45 -!- phao [~phao@189.107.197.199] has quit [Quit: Leaving] 19:15:06 phao [~phao@189.107.197.199] has joined #scheme 19:15:09 I don't see why it's any different than calling an ordinary procedure from multiple threads, honestly. 19:15:28 Ordinary procedures by default don't necessarily alter state. 19:15:39 A DYNAMIC-WIND entrance or exit procedure that doesn't alter state is useless. 19:17:35 Unless you go to some trouble to ensure that the DYNAMIC-WIND point is safe to instantiate in multiple threads simultaneously, it is generally not safe to do so -- and if you have gone to that trouble, then you could decide to use an alternative procedure to declare the fact, say THREADED-DYNAMIC-WIND. 19:17:36 They don't necessarily do so, but many do. Also, "alter state" doesn't necessarily mean "mutate a variable". It could just as easily perform I/O or alter control flow. The latter two are more likely to be thread-tolerant. 19:18:44 I suppose something which alters control flow is probably likely to depend on mutation, though. 19:20:07 This arose because I was wondering about the purpose of continuation barriers. 19:20:24 Still, if one is going to admit threads I don't see why `dynamic-wind' procedures ought to be treated differently than ordinary ones. Any procedure which mutates or has a side-effect must be checked for thread safety in such an environment. 19:20:28 jimrees_ [~jimrees@ita4fw1.itasoftware.com] has joined #scheme 19:21:10 Guest85240 [~altF4@tm.84.52.169.45.dc.cable.static.telemach.net] has joined #scheme 19:23:35 -!- saccade [~saccade@209-6-54-113.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Quit: This computer has gone to sleep] 19:23:36 As far as I understand, the purpose of a continuation barrier is to report to the right party an error about multiple entrances into an extent into which multiple entrances don't make sense. 19:24:43 Example: you have a GUI loop, which has a lot of horrible awful state such as a connection to an X server, and which doesn't make sense to enter more than once (with continuations; once it has stopped, you might start it up again from the beginning, though). 19:25:07 This GUI loop sometimes makes callbacks into code written by another party. 19:25:57 The author of the GUI loop wishes to express that re-entering the GUI loop won't work, and so calls the callback with a continuation barrier. 19:26:27 This is approximately like (dynamic-wind (let ((already? #f)) (lambda () (if already? (error)) (set! already? #t)) callback (lambda () 0)), with one difference. 19:27:31 The difference is that if the part of the program written by the other party saves its continuation, and then in some other dynamic context -- once the callback has returned, or in another thread -- someone invokes the continuation, with a continuation barrier, it is the handler in that other dynamic context that handles the error. 19:27:45 The DYNAMIC-WIND form, however, will call the GUI loop's condition handler. 19:28:05 I'm confused. 19:28:14 OK. 19:28:31 Don't barriers prevent replacement of the barrier, not re-entry? Perhaps you're referring to a different kind of barrier than what is implemented by Racket. 19:28:42 I'm talking about continuation barriers in Racket. 19:29:31 Example: ((call-with-continuation-barrier (lambda () (call-with-current-continuation (lambda (c) (lambda () (c (lambda () 0] loses, I believe. 19:29:39 rudybot: eval (let ((v (call/cc values))) (when v (call-with-continuation-barrier (lambda () (v #f))))) 19:29:40 chandler: error: continuation application: attempt to cross a continuation barrier 19:30:21 I can work around that continuation barrier -- that error is actually a bug in racket. 19:31:12 rudybot: eval (let ((v (call-with-composable-continuation values))) (when v (call-with-continuation-barrier (lambda () (abort-current-continuation (default-continuation-prompt-tag) (lambda () (v #f))))))) 19:31:15 Riastradh: your sandbox is ready 19:31:24 rudybot: eval (let ((v (call-with-composable-continuation values))) (when v (call-with-continuation-barrier (lambda () (abort-current-continuation (default-continuation-prompt-tag) (lambda () (v #f)))))) 'i-win) 19:31:24 "A continuation barrier is another kind of continuation frame that prohibits certain replacements of the current continuation with another. Specifically, while an abort is allowed to remove a portion of the continuation containing a prompt, the continuation can be replaced by another only when the replacement also includes the continuation barrier." 19:31:24 Riastradh: ; Value: i-win 19:31:54 Well, that's not what it does! 19:33:46 Matthew Flatt told me last week that he would update the definition of CALL-WITH-CURRENT-CONTINUATION to use the trick I just showed, and that its current behaviour, without the trick, is a bug. 19:33:46 I'm confused (again). The example I gave seems to follow the text I quoted. 19:34:00 The bug is that there is a restriction on CALL-WITH-CURRENT-CONTINUATION which can be worked around, so the restriction doesn't really do anything at all. 19:34:14 Actually, I'm not sure how the text I quoted makes sense given the way that aborts work; namely, the "replacement" bit is performed by the prompt handler, is it not? 19:34:29 No, the replacement part is done by invoking a composable continuation. 19:34:55 (The prompt handler might do just that, but the default prompt tag just calls the procedure passed as the second argument to ABORT-CURRENT-CONTINUATION.) 19:35:05 ((...which, in this case, does invoke a composable continuation, but it doesn't have to.)) 19:35:26 rudybot: eval (list 1 (abort-current-continuation (default-continuation-prompt-tag) (lambda () 0))) 19:35:26 Riastradh: ; Value: 0 19:35:51 rudybot: eval (list 1 (call-with-composable-continuation (lambda (c) (abort-current-continuation (default-continuation-prompt-tag) (lambda () (c 0)))))) 19:35:51 Riastradh: ; Value: (1 0) 19:36:37 So what does "the continuation can be replaced by another only when the replacement also includes the continuation barrier" mean? 19:37:02 Uhhh...you've got me! I give up. What *does* it mean? 19:37:19 All I know is how I've observed MzScheme behave and what Matthew Flatt has told me. 19:37:38 I don't know what it means. 19:37:44 I didn't understand the documentation either, which is why I asked about it on the Racket mailing list. 19:38:17 Ah, well, I'd be following the Racket mailing list more closely if I could read it in a threaded fashion using Gmane. 19:38:28 See . 19:39:36 So, as far as I understand it, the purpose of continuation barriers is as Matthew Flatt began his reply: 19:39:52 `Use a continuation barrier when calling unknown code and when it's too painful to contemplate multiple instantiations of the continuation leading to the call.' 19:41:25 What is the difference between what call/cc does now and the abort trick you demonstrated earlier? 19:41:39 Nothing, really, except that it works in some cases when the abort trick doesn't work. 19:42:00 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 19:42:09 Specifically, if there is a barrier between the prompt and the continuation of CALL-WITH-COMPOSABLE-CONTINUATION, the latter signals an error, but CALL-WITH-CURRENT-CONTINUATION doesn't. 19:42:16 Hence the elaborate CALL-WITH-NEFARIOUS-CONTINUATION in my message. 19:43:05 -!- ASau [~user@83.69.227.32] has quit [Remote host closed the connection] 19:43:27 ASau [~user@83.69.227.32] has joined #scheme 19:43:53 (With any luck, you'll soon get just as confused as I got about continuation barriers!) 19:44:41 paint [~paint@unaffiliated/paint] has joined #scheme 19:44:47 I'm still not used to the Racket terminology for delimited continuations, so I'm going through a lot of internal translation overhead. 19:45:39 kephas [~pierre@AStrasbourg-551-1-48-119.w92-148.abo.wanadoo.fr] has joined #scheme 19:45:42 -!- nowhereman [~pierre@AStrasbourg-551-1-48-119.w92-148.abo.wanadoo.fr] has quit [Ping timeout: 260 seconds] 19:45:43 I'm reading mflatt's reply to you now. In his first motivating example, I agree that delimited continuations provide a much cleaner solution to the problem. 19:45:46 Would it be easier if I said `delimiter' rather than `prompt'? 19:46:41 No; I think I've reabsorbed it now. 19:48:51 `quotes' 19:49:03 Hmm? 19:49:06 "using a barrier instead of `dynamic-wind' relieves the programmer from explicitly identifying the start of every sensitive continuation". 19:49:09 How? 19:49:36 It prevents that continuation from being used simultaneously in multiple threads. 19:49:46 -!- Guest85240 [~altF4@tm.84.52.169.45.dc.cable.static.telemach.net] has left #scheme 19:50:07 -!- phao [~phao@189.107.197.199] has quit [Ping timeout: 240 seconds] 19:50:22 phao [~phao@189.107.139.177] has joined #scheme 19:50:38 And here's the important part: when you try to use it in another thread, the error is signalled in the dynamic context of the invoker, not in the dynamic context of the continuation. 19:51:04 How does it prevent me from having to explicitly identify those sensitive continuations, though? The semantics differ, but the need to install a barrier explicitly remains. 19:51:58 You need to identify only the calls to unknown code. You don't need to identify the exact extent of the sensitive continuation. 19:52:55 That is, you may come to an unknown call and realize, `I have lots of state here that I can't imagine being used in multiple threads. I don't know when this fact began, or when it will end, but I do know I'm about to make an unknown call, so I'll make it with a continuation barrier.' 19:52:56 -!- mathk [~mathk@lns-bzn-35-82-250-242-84.adsl.proxad.net] has quit [Read error: Connection reset by peer] 19:53:04 mathk [~mathk@lns-bzn-35-82-250-242-84.adsl.proxad.net] has joined #scheme 19:53:34 Suppose there was a `dynamic-prewind' operator that executed a guard before a continuation captured within the extent of the prewind was invoked (replacing the current continuation). Would barriers be implementable using this operator? 19:55:01 So you mean that in ((with-handler foo (lambda () (dynamic-prewind (let ((d? #f)) (lambda () (if d? (error)) (set! d? #t))) (lambda () (cwcc (lambda (c) (lambda () (with-handler bar c], it would be the BAR handler that handles the error, not FOO? 19:55:22 (CWCC is CALL-WITH-CURRENT-CONTINUATION there, not CALL-WITH-COMPOSABLE-CONTINUATION.) 19:55:41 Yes. 19:56:19 That would work, yes: then (define (call-with-continuation-barrier procedure) (dynamic-prewind (let ((already? #f)) (lambda () (if already? (error)) (set! already? #t))) procedure)) 19:57:00 Is `dynamic-prewind' implementable in Racket today? 19:57:25 Not to my knowledge, but I don't know Racket very well. 19:57:40 Is there anything other than CALL-WITH-CONTINUATION-BARRIER that you'd like to express with DYNAMIC-PREWIND? 19:57:49 (I think the answer is "no", but I figured that you had been poring over the continuations reference recently.) 19:58:53 pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has joined #scheme 19:59:06 lulinha [~dummy@nkvd.ath.cx] has joined #scheme 19:59:07 -!- lulinha [~dummy@nkvd.ath.cx] has left #scheme 19:59:59 I'm still thinking about it. 20:01:43 lulinha [~dummy@nkvd.ath.cx] has joined #scheme 20:01:44 -!- lulinha [~dummy@nkvd.ath.cx] has left #scheme 20:02:18 I can imagine a continuation that uses some external resource using `dynamic-prewind' to ensure that it is called only in extents where that resource is available. 20:03:10 And to signal an error if it is not available, rather than, say, to block? (E.g., (dynamic-wind lock-the-mutex ... unlock-the-mutex).) 20:03:34 Yes; I was thinking more along the lines of a connection to an external database. 20:03:37 I suppose this would be an example of a selective barrier. 20:05:46 In any case, there are two concerns here: one is protecting a continuation from multiple simultaneous entrance (consider (let ((x (make-cell 0))) (unknown-procedure) (frobnicate x)) -- this expression is OK to evaluate in multiple threads, but UNKNOWN-PROCEDURE's continuation is not); the other is, to the end of inhibiting that, calling the right handler, 20:06:07 "calling the right handler," 20:06:13 because if you call the wrong handler, that handler might cause resources to be released too soon. 20:06:14 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 20:06:17 (I truncated myself that time!) 20:06:39 (Ah, but how did you know *when* to truncate yourself? The IRC server didn't tell you, after all!) 20:06:58 (I truncated myself to pause for a dramatic finale to the sentence.) 20:07:42 (Ah, you deployed drama in the inadvertent service of reliable message delivery.) 20:08:11 (Exactly. It fit with the mood at the moment of Brahm's sonata I'm listening to, also.) 20:08:19 ...good grief!! 20:08:22 `Brahm's'? 20:08:24 What am I smoking? 20:08:37 Everybody's catching typo fever. 20:08:54 alvatar [~alvatar@161.127.222.87.dynamic.jazztel.es] has joined #scheme 20:09:23 Well, I'm going to blame the cretins who smoke out the window right under the air conditioner feeding into this room, although they're just smoking tobacco. 20:10:19 Regarding protecting procedures from multiple simultaneous entrance, I'm still thinking about what the right thing to do here is. 20:10:43 Continuations, not procedures, remember. 20:10:52 Er, yes. 20:11:39 (Easy answer: outlaw side effects! Problem: sending a message to a process is a side effect...) 20:12:36 -!- langmartin [~user@exeuntcha2.tva.gov] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 20:12:38 It occurs to me that in mflatt's second motivating example where a setup routine calls a GUI event handler which calls back into unknown code, it might be useful to not prevent simultaneous entry from multiple threads, but to instead only allow one thread to wind back into the GUI toolkit; any other thread would wind straight from the callback to the caller of the event loop. 20:12:43 (That probably wasn't clear.) 20:13:58 fod [~fod@92.251.255.7.threembb.ie] has joined #scheme 20:14:55 (I'm still thinking about how to describe what I'm picturing clearly.) 20:16:12 polydiploid 20:16:26 (call-with-current-continuation (lambda (return-to-caller) (let ((running? #f)) (lambda () (if running? (return-to-caller)) (set! running? #t)) gui-loop (lambda () (set! running? #f] ; Apply mutices as needed. 20:16:30 Like that? 20:16:54 Uh, I forgot to say DYNAMIC-WIND. 20:17:02 -!- joelmccracken [~joelmccra@66.37.58.254] has quit [Quit: joelmccracken] 20:17:12 (call-with-current-continuation (lambda (return-to-caller) (let ((running? #f)) (dynamic-wind (lambda () (if running? (return-to-caller)) (set! running? #t)) gui-loop (lambda () (set! running? #f] 20:20:50 I think that's it, yes. The first time a callback unwinds into the GUI loop, the portion of the continuation between the call to `gui-loop' and the call to a callback is "punched out" of any continuations captured during the extent of the callback, such that those continuations subsequently unwinds directly from where the callback is called to where `gui-loop' is called. 20:21:16 "subsequently unwind" 20:24:21 -!- fod [~fod@92.251.255.7.threembb.ie] has quit [Remote host closed the connection] 20:24:29 -!- hadronzoo [~user@24.40.129.231] has quit [Read error: Connection reset by peer] 20:25:47 Hmm... 20:26:05 Suppose we have (define (gui-loop) (dynamic-wind enter-gui %gui-loop exit-gui)). 20:26:52 Now, I save a continuation somewhere inside the original call to %GUI-LOOP, pass it off to another thread, and invoke it there. 20:27:15 Let's say I give it the argument 5. 20:27:40 What DYNAMIC-WIND entrance or exit procedures are called, and where does control go? 20:27:46 (in the other thread) 20:28:30 What's happening in the current thread? Has `exit-gui' already been called once? 20:29:43 Or was this not related to my last scenario? I'm confused again. 20:29:56 I'm still trying to decide if my last idea actually makes sense, and I'm leaning towards "no". 20:30:33 The GUI loop is still running. 20:30:37 ...in the original thread. 20:30:52 This is just expanding on your scenario. 20:31:33 saccade [~saccade@MEDICAL-ONE-TWENTY-SIX.MIT.EDU] has joined #scheme 20:32:05 RageOfThou [~RageOfTho@users-55-33.vinet.ba] has joined #scheme 20:32:26 If the call to `gui-loop' is guarded as I described, then when the continuation saved inside `%gui-loop' is invoked on another thread, the `enter-gui' continuation would not be called, and on unwind it would bypass `exit-gui'. 20:32:35 Whoops - I'll be back in about a half an hour. 20:33:27 But would control enter the GUI loop nevertheless, just without calling ENTER-GUI? 20:34:12 On a totally unrelated note, while chandler is gone, and if anyone else is paying attention: 20:34:31 What do various Scheme systems do about floating-point exceptions? 20:35:15 MIT Scheme unmasks all hardware floating-point exceptions it can, and goes to some effort to figure out where it was, so that you get a stack trace if you divide by zero. 20:35:37 hadronzoo [~user@64.134.178.191] has joined #scheme 20:35:56 -!- xissburg [~chatzilla@187.3.134.216] has quit [Quit: ChatZilla 0.9.86 [Firefox 3.6.7/20100713130626]] 20:36:06 -!- MrFahrenheit [~RageOfTho@users-33-211.vinet.ba] has quit [Ping timeout: 260 seconds] 20:36:08 Scheme48 doesn't do anything about floating-point exceptions. 20:36:52 Sorry, I should clarify: MIT Scheme unmasks all the IEEE 754 floating-point exceptions it can on the hardware. (It doesn't do anything about non-IEEE 754 ones.) 20:39:20 typemore [~typemore@unaffiliated/typemore] has joined #scheme 20:39:28 anyone tried to write a scheme interpreter on top of lua? 20:41:41 typemore: there are some lua interpreters on top of scheme 20:41:46 First Google hit for "scheme in Lua" -> http://www.artisancoder.com/2008/06/toy-scheme-interpreter-in-lua/ 20:41:53 For chicken and guile, IIRC 20:42:11 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 20:43:56 what the heck is "google" 20:44:41 paint [~paint@unaffiliated/paint] has joined #scheme 20:44:49 Riastradh, I believe that Racket just produces NaNs (or infinities) in all of those cases 20:45:16 choas [~lars@p5B0DF0BA.dip.t-dialin.net] has joined #scheme 20:46:01 scheme48 just signals SIGFPE? 20:46:03 zbigniew: it's an anagram for "el go-go", a famous mexican transsexual 20:46:24 *zbigniew* googles that 20:46:30 samth, perhaps a little more to the point: does Racket go out of its way to request anything from the operating system or hardware about floating-point exceptions, either to mask or unmask them, or to query exception flags after floating-point operations? 20:46:50 Riastradh, I don't believe it does, but I'm not certain 20:47:08 do you have an easy way of telling? 20:47:44 in particular, I don't think there are any special floating-point execeptions 20:49:06 zbigniew, if the operating system delivers SIGFPE, Scheme48 will crash and burn. But Scheme48 doesn't mask or unmask any hardware floating-point exceptions, and it doesn't query exception flags after floating-point operations, although it does check, say, division by zero. It doesn't check, say, (sqrt -1.); for that it quietly gives a NaN. 20:49:40 samth, well, what happens if you divide by zero, or ask for (sqrt -1.)? 20:50:24 how do you say sum (replicate 10 0.1) in scheme? 20:50:25 Can Scheme programs control what happens? 20:50:37 mauke: 1 20:50:49 Riastradh: did you mean: 0.9999999999999997 20:50:52 > (sqrt -1.) 20:50:52 0+1.0i 20:51:08 > (/ 1.0 0.0) 20:51:08 +inf.0 20:51:09 Nope, mauke. 20:51:32 Prelude> sum (replicate 10 0.1) :: Rational 20:51:33 1%1 20:51:41 -!- phao [~phao@189.107.139.177] has quit [Quit: Leaving] 20:51:50 mauke, (apply + (replicate 10 0.1)) 20:51:54 See, exactly 1, except that Scheme doesn't distinguish between `the integer 1' and `the rational 1'. 20:52:02 presuming we've defined `replicate' 20:52:05 samth: *** ERROR IN (console)@2.11 -- Unbound variable: replicate 20:52:20 (reduce + 0 ...) would be a better translation than (apply + ...). 20:52:24 Riastradh: and it returns .9999999999999999 because there's no Rational 20:52:41 (apply + (vector->list (make-vector 10 (/ 1 10)))) 20:52:41 Riastradh, I use (apply + ...) all the time 20:52:43 samth: is there a replicate in some library? 20:52:45 mauke, sorry, what is `it', and why do you say that there is no Rational? 20:52:50 (I'm probably going to hell for that one) 20:52:57 mauke, it depends what scheme you're using 20:52:58 Riastradh: 'it' = my scheme 20:53:07 -!- pizza_ [pizza@poipu/supporter/pizza-milkshake] has quit [Remote host closed the connection] 20:53:21 -!- gravicappa [~gravicapp@ppp91-78-230-193.pppoe.mtu-net.ru] has quit [Read error: Operation timed out] 20:53:27 Riastradh: and there is no Rational because that expression returns a floating point number, and by then it's too late 20:53:52 that all depends on whether 0.1 reads as exact or inexact 20:53:55 homie [~user@xdsl-87-79-188-175.netcologne.de] has joined #scheme 20:53:55 mauke, if there are no rational numbers in your Scheme system, then it's pretty broken, but judging by the error message, it looks like Gambit, so it should suffice to write `#e0.1' rather than `0.1' to get an exact result. 20:54:09 wbooze [~user@xdsl-87-79-188-175.netcologne.de] has joined #scheme 20:54:34 That or 1/10. 20:55:12 -!- saccade [~saccade@MEDICAL-ONE-TWENTY-SIX.MIT.EDU] has quit [Quit: This computer has gone to sleep] 20:55:18 so if I change the expression, I get a different result. amazing. 20:55:20 (In Haskell, the type system infers, from my having written `:: Rational' at the end of the whole expression, that I wanted the original 0.1 to be exact. Scheme, having no such static type system, cannot infer this thus.) 20:55:28 I know 20:55:51 -!- typemore [~typemore@unaffiliated/typemore] has quit [Quit: leaving] 20:55:57 mauke, are you trying to make a point by asking the question? If so, you may find it easier to make your point than to ask questions to which you seem to know the answer already. 20:56:22 my question was about sum and replicate 20:56:35 you told me the result would be 1 when I know it isn't 20:57:05 mauke, the result is certainly 1 in some schemes 20:57:17 Actually, that raises an interesting question: is a Scheme system required to promote whatever it gets from the reader to the highest reasonable level of precision available? 20:57:18 Well, that's right, because your question was incompletely specified -- you didn't say the type of the expression. 20:57:20 ok, that's interesting 20:57:36 for example, in the various student languages provided with Racket, 0.1 is an exact number 20:57:48 Here's Scheme48 0.57: 20:57:52 > ,open srfi-1 20:57:52 > (reduce + 0 (make-list 10 0.1)) 20:57:53 1. 20:57:59 Riastradh: I didn't specify a type, so the default type is used. I didn't specify a default type, so the default default type is used. which is Double. 20:58:00 Gambit also has the concept of 0.1 as an exact number, it just doesn't use that type by default. 20:58:43 gnomon, every non-tiny scheme should have that concept, I was just pointing out one where the literal expression mauke wrote would do what he wanted 20:59:00 mauke, right, and it sounds like you're complaining that Gambit's default type is Double; but I think a more productive discussion is about whether *Scheme's* default argument type is Double, and I think we're going to discover that the spec leaves that area rather murky. 20:59:22 no, I'm complaining that there's no standard "replicate" function 20:59:34 and also that the various specs are far from the last word on scheme 20:59:45 mauke, have you looked at IOTA? That's been standardized in SRFI-1 for rather some time. 20:59:47 mauke, yes, there is: SRFI 1's MAKE-LIST. 20:59:58 IOTA is slightly different. 21:00:03 True, true. 21:00:15 `iota' is sometimes called `build-list' 21:01:05 can you recommend me a scheme that won't annoy me too much, interface-wise? 21:01:10 Nope. 21:01:23 mauke, I personally recommend Racket ( racket-lang.org ) 21:01:38 But I can suggest that you try Racket, and I can mention that if you have problems with MIT Scheme I may be able to fix them. 21:01:40 it should run in a terminal, be able to load code from file, have a --help option, and exit on EOF 21:01:40 'racket' used to annoy me more than it does now 21:02:00 mauke, there are many schemes with those properties 21:02:03 oh, and it shouldn't omit random parts of the language, like bignums 21:02:17 I'm off to have dinner now. 21:02:35 Bon appétit! 21:02:35 it should provide command line editing + code completion, preferably using libreadline 21:02:46 mauke, racket does that to 21:02:47 two 21:02:49 too 21:02:55 tout 21:03:05 Tu! 21:03:08 hmm, no ebuild 21:03:15 mauke: chicken is an option too. It uses -help instead of --help though. 21:03:17 mauke: you could try chicken 21:03:18 Toute? Tous, toutes... 21:03:19 see http://docs.racket-lang.org/readline/ 21:04:09 mario-goulart: chicken also accepts --help, we are saved 21:04:12 zbigniew: how do I run it? 21:04:47 mauke: first, go to the start menu... 21:04:50 wow, chicken is retarded 21:05:26 zbigniew: I don't have a start menu 21:06:02 mauke: well shit, go get one! What are you wasting time here for? 21:06:52 zbigniew: sorry, I sort of assumed you were trying to help 21:06:56 -!- asarch [~asarch@189.188.151.93] has quit [Ping timeout: 276 seconds] 21:07:44 I was, until you decided in 38 seconds or less that Chicken was "retarded" 21:08:16 Unless that's the new term for "super-cool". In that case, right on, man! 21:08:44 I ran "chicken". that printed some version information and told me to use "-help" for information on how to use it 21:08:49 oh well 21:09:14 -!- HG` [~HG@xdsl-92-252-121-46.dip.osnanet.de] has quit [Quit: Leaving.] 21:09:16 If that's retarded, you'll find most if not all implementations of Scheme to be retarded. 21:09:18 -!- alvatar [~alvatar@161.127.222.87.dynamic.jazztel.es] has quit [Quit: leaving] 21:09:29 I ran "chicken -help", which gave me a long list of uninteresting command line options, as well as "Usage: chicken FILENAME OPTION ..." 21:09:41 it also said to use - to make it read from stdin 21:09:46 nothing about an interactive mode 21:09:48 mauke: ok, come back when you want to learn how to start the interpreter 21:09:53 mauke: chicken is the compiler. You probably want csi 21:10:11 so I thought, what the hell, let's try "chicken -" 21:10:27 zbigniew: Well, "retarded" is certainly not a politically correct term anymore, and there are much finer-grained diagnoses available now, such as "bignum-challenged". 21:10:29 it said "compiling `-' ..." and I knew I was wrong here 21:10:38 Yes, you are. Use `csi'. 21:10:43 chandler: (use numbers) 21:10:48 -!- mmc1 [~michal@109.117.188.254] has quit [Ping timeout: 240 seconds] 21:10:53 saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has joined #scheme 21:10:55 chandler: but, a valid point 21:11:09 but I thought, "let's see some error messages", so I entered ",,," and quit with ctrl-d 21:11:25 and the fucking thing said "generating `-.c' ...", and it did 21:11:30 mauke: ever tried "ed"? 21:11:38 and that's when I knew it was retarded 21:11:39 zbigniew: Sorry, I'm just tweaking the chickenistas. :-) 21:11:47 ed is the standard unix editor! 21:11:59 zbigniew: no 21:12:16 mauke: If this confuses and frightens you, you're in for an adventure of UNIX proportions. 21:12:26 zbigniew: I asked first how to run it 21:12:57 and you told me to "go to the start menu" instead of saying "man csi" or whatever 21:13:19 well, and in the mean time that other stuff I just described happened 21:13:25 mauke: see http://chicken.wiki.br/man/4/Getting%20started 21:13:30 *mario-goulart* & 21:13:45 back to reading about racket 21:13:51 mario-goulart, did you just background your own process? 21:13:59 *gnomon* prods mario-goulart with fg 21:14:14 Next he's going to invoke his own continuation from multiple threads simultaneously. That will make Riastradh's head explorb. 21:14:17 mauke: csi 21:14:27 *mario-goulart* kills himself with kill %1 21:15:14 it should provide command line editing + code completion, preferably using libreadline 21:15:21 mmc [~michal@109.117.188.254] has joined #scheme 21:15:29 chandler, Riastradh's head explorbification will have to wait until he finishes eating! 21:16:20 It'll just happen, and he won't know why because he's not here. 21:16:24 oh god, DrRacket 21:16:41 how about no, you ... you website, you 21:17:20 chandler, that will shock and possibly horrify emma and the cats, presumably; or at least a cup of tea and a very surprised bowl of curry. 21:18:06 Surprisingly, the only thing the bowl of curry thought was "oh no, not again". 21:18:07 -!- kephas [~pierre@AStrasbourg-551-1-48-119.w92-148.abo.wanadoo.fr] has quit [Ping timeout: 240 seconds] 21:18:13 kephas [~pierre@AStrasbourg-551-1-42-228.w92-148.abo.wanadoo.fr] has joined #scheme 21:18:26 Sounds lke the ending to Spaceballs 21:19:22 mauke, what's wrong with your website? 21:19:31 not mine, http://docs.racket-lang.org/ 21:19:47 works great for me 21:19:58 it makes it unnecessarily hard to find out if there's a terminal repl 21:20:07 and it tells me to run DrRacket 21:20:40 http://docs.racket-lang.org/guide/intro.html 21:20:46 mario-goulart, under the Tools section, the first entry is "DrRacket: Programming Environment", and the second entry is "raco: Racket Command-Line Tools". 21:20:52 I still remember trying DrScheme some years ago, and that was when I stopped looking at scheme 21:21:15 gnomon: none of which mention 'racket' 21:21:28 mauke: I'm beginning to suspect that you're more interested in complaining about how difficult it is to find information than you are in actually finding information. 21:22:15 no, I'm just a bit annoyed. this is supposed to be fun! 21:22:44 For the record, the introduction to the Guide mentions `racket': http://docs.racket-lang.org/guide/intro.html 21:24:19 chandler: how do I know I'm supposed to look in there, and not "Quick: An Introduction to Racket with Pictures" or "Racket Command-Line Tools" or whatever? 21:24:56 it's a bit unfortunate that the language is also called Racket 21:25:21 Did you click on the "getting started" link at the very top of the documentation index? That describes the most helpful entry points into the documentation. 21:25:32 yes 21:26:11 then I clicked on "How to Design Programs" and "Quick: An Introduction to Racket with Pictures" 21:26:18 Are you new to programming? 21:26:28 but not on "Guide: Racket" because that "... describes the rest of the Racket language", which I don't care about right now 21:26:32 no 21:26:54 Then you should have skipped the link to HtDP, since that was in the clause "If you are new to programming or if you have the patience to work through a textbook". 21:27:34 I didn't even read that 21:28:06 I think we've found the root of the problem. 21:28:10 Well, if you're going to tl;dr the documentation, I can't help you. 21:28:13 and information for beginners isn't always bad 21:28:18 waltermai [~user@c-68-54-64-79.hsd1.fl.comcast.net] has joined #scheme 21:28:20 especially when I'm new to an environment 21:28:30 -!- justicefries [~thefry@173-14-6-4-Colorado.hfc.comcastbusiness.net] has quit [Quit: justicefries] 21:28:57 chandler: "Of course, you should feel free to mix and match the above two tracks, since there is information in each that is not in the other." 21:29:15 drracket has this debug system that will take you through your code as it runs, step by step by step, showing which procedures are called and how variables are modified all along the way. does emacs have anything like that? 21:29:29 waltermai: You mean, for Elisp? 21:29:35 for scheme. 21:29:52 For which Scheme? Racket? 21:29:55 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 21:30:10 I'm pretty much just using drracket as a scheme ide 21:30:19 #lang scheme 21:31:03 For what it's worth, "#lang scheme" actually is the old name for Racket. There's no reason not to use "#lang racket" now. 21:31:13 as a side note, it is unclear to me how racket is different at all. seems like an srfi on steroids pretty much. but I'm more interested in this interactive debug mode. 21:31:56 mauke: Indeed. But if you haven't the patience to read, you might not find the information you're looking for. 21:32:12 Racket is a Big Thing, and the documentation is correspondingly Big. I'd suggest not complaining now that you've gotten an answer and just moving on. 21:32:38 chandler: oh indeed, the racket documentation is *fantastic*. 21:32:46 big doesn't mean it has to be badly organized 21:32:54 waltermai: That was directed at mauke. 21:33:08 ...just a comment from the peanut gallery. :) 21:33:26 -!- fowlduck [~fowlduck@2002:cc0f:6d26:0:fa1e:dfff:fed7:9dc1] has quit [Remote host closed the connection] 21:33:45 mauke: I think there's a case that the "getting started" section could use a bit more elaboration in order to draw out the landing points a bit more clearly. Other than that, I don't think there's much to complain about. 21:34:02 mauke: docs.racket-lang.org's search utility is the mf bomb. sorry to horn in on yalls conversation midway through. 21:34:58 there's nothing in http://docs.racket-lang.org/getting-started/index.html or http://docs.racket-lang.org/index.html that tells me if this scheme comes with a command-line interpreter (and if so, what it's called) 21:35:24 but the answer is right there in http://docs.racket-lang.org/guide/intro.html 21:36:15 (that's two clicks away from the last link (of 6) in http://docs.racket-lang.org/getting-started/index.html, i.e. not the most obvious place) 21:36:30 also from the 3rd link 21:36:30 Indeed. But the information you're looking for is irrelevant to someone who has never used a shell and is just getting their first taste of programming. 21:36:33 waltermai: any such emacs debugging mode would have to tie pretty deeply into the implementation 21:36:43 phao [~phao@189.107.196.189] has joined #scheme 21:36:53 waltermai: slime48 being the only real attempt that I can think of (SLIME for Scheme48) 21:37:00 waltermai: You might want to look at Geiser. 21:37:04 I don't know if it has a stepper, though. 21:37:13 mauke, if you've going to be unhappy with anything that isn't aimed solely at people who use command lines, the racket docs may not make you happy 21:37:14 not yet 21:37:17 malcolmci [~malcolmci@203.171.96.17.static.rev.aanet.com.au] has joined #scheme 21:37:20 but i think that says more about you 21:37:20 samth: yes, but I'm supposed not to look at the third link, because it's for people who are new to programming 21:38:00 in that case, the first link in the section for you tells you to start drracket 21:38:07 which is indeed what's recommended 21:38:13 *tommylommykins* peers in 21:38:42 schmir [~schmir@p54A902E7.dip0.t-ipconnect.de] has joined #scheme 21:38:44 mauke: So, look at the sixth link then. Also, is this really worth getting this frustrated over? I could understand if you looked around for an hour before finding the information, but you asked here and it was answered. 21:39:04 samth: I found DrScheme extremely annoying, so I doubt I'd find DrRacket pleasant 21:39:06 well, I wasn't aware of Geiser, sorry. 21:39:24 zbigniew: Now you are! 21:39:33 heh 21:39:36 Indeed. 21:39:40 mauke, that's fine, but you shouldn't be surprised when its developers disagree 21:40:25 mauke: More generally, if you already know how to program aren't you accustomed to constant frustration yet? Nothing is easy; nothing is delivered on a silver platter, and nothing works until you make it so. Having to click around a bit to find the relevant Racket documentation is small potatoes in the world of programming-related frustration. 21:40:32 for what it's worth, I couldn't build drracket on mips, emailed the devs, and they fixed the source pretty quickly. 21:40:46 I like how jao answered in under 15 seconds though, now that's response time! 21:41:30 chandler: I have higher expectations of scheme 21:41:31 chandler, ain't that the truth 21:42:19 oh hey, racket build failed 21:42:23 ../../../gracket/gc2/../../wxcommon/wxJPEG.cxx:727:5: error: 'png_set_gray_1_2_4_to_8' was not declared in this scope 21:42:41 what kind of system are you on? 21:42:49 gentoo linux, x86 21:43:06 can you paste the output of 'configure' somewhere? 21:43:25 can I just run it again? 21:43:37 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 21:43:47 (Why am I not surprised by the "gentoo" answer?) 21:43:48 i don't know - i've never used gentoo 21:43:54 *gnomon* picks out the "gentoo" keyword and performs the associated action 21:43:59 -!- hadronzoo [~user@64.134.178.191] has quit [Ping timeout: 276 seconds] 21:44:21 samth: what does that have to do with gentoo? 21:44:21 gnomon: Said action being providing a link to http://funroll-loops.info/ ? 21:44:45 paint [~paint@unaffiliated/paint] has joined #scheme 21:44:56 mauke, i was assuming you used 'emerge' 21:45:03 chandler, said action being inflammatory if I were to describe it herein. 21:45:05 did you download the source yourself? 21:45:08 samth: yes 21:45:17 ah, ok 21:45:19 samth: I didn't find anything with emerge -s racket 21:45:29 gnomon: an allergic response, then 21:45:30 gnomon: I'm fairly certain the action I just performed was a bit inflammatory! 21:45:37 then go to $WHEREVER/racket/src 21:45:41 and run ./configure 21:46:01 http://codepad.org/H8f4SUgO 21:46:05 zbigniew, that would be an accurate characterization! Allergic, and unfair, but also correct unfortunately often. 21:46:17 -!- choas [~lars@p5B0DF0BA.dip.t-dialin.net] has quit [Quit: leaving] 21:46:51 mauke, can you paste the whole make output too? 21:46:53 chandler, now that I have actually loaded the URL, I see what you mean! 21:49:25 chandler: ha 21:56:09 samth: http://mauke.ath.cx/tmp/make.output 21:57:15 mauke, thanks 21:57:41 -!- karme [~user@2a01:4f8:100:51c1::4] has quit [Remote host closed the connection] 21:58:51 what version of libpng do you have? 21:59:18 media-libs/libpng-1.4.3 according to equery 22:00:15 ah, that's the problem 22:00:23 they seem to have removed that in libpng 1.4 22:01:08 That's odd; I have libpng 1.4.3 and I haven't had issues building Racket. 22:01:54 mauke, try running configure with --disable-libpng 22:01:55 preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #scheme 22:03:22 -!- schmir [~schmir@p54A902E7.dip0.t-ipconnect.de] has quit [Ping timeout: 260 seconds] 22:03:28 ... Or maybe I was not building Racket on this system. 22:03:33 samth: http://repos.archlinux.org/wsvn/packages/racket/trunk/libpng-1.4.patch 22:04:09 -!- mister_m [~matthew@c-71-201-6-9.hsd1.il.comcast.net] has quit [Quit: Leaving.] 22:04:46 -!- pdelgallego [~pdelgalle@1503031474.dhcp.dbnet.dk] has quit [Ping timeout: 260 seconds] 22:05:40 mauke, i think you should try the patch chandler just linked to 22:06:51 (repos.archlinux.org)-- # what the hell is "application/octetstream" supposed to be? 22:08:38 mauke: I think it would be better for everyone if you found an IRC channel (and a universe) that lived up to your expectations. 22:08:58 I will inform the Arch developers - *nicely* - that they have a typo somewhere. 22:09:32 yeah, text/plain vs. application/octetstream - the keys are right next to each other 22:09:47 I bet it's deliberate, though 22:09:47 What makes you think that 'text/plain' is at all appropriate for this? 22:09:53 it's a text file 22:10:00 It's clearly supposed to be 'application/octet-stream', though. 22:10:03 ok, maybe text/x-diff or whatever 22:10:09 What encoding is the text in? 22:10:18 ASCII or a superset 22:10:22 Which superset? 22:10:27 irrelevant 22:10:31 it only uses 7-bit chars 22:10:41 This patch, or any patch in general? 22:10:45 this patch 22:10:56 Is the server supposed to introspect the patch to determine that it's ASCII before serving it? 22:11:17 Er, maybe just "inspect" there. 22:11:17 depends 22:11:39 No, it doesn't. Patches aren't text. They might contain text of one encoding, or text of multiple encodings. 22:11:45 it could just leave the encoding unspecified 22:11:55 That's not text, then. 22:12:02 heh 22:12:55 then I suppose it should look at the contents first 22:13:32 That would be wildly unreasonable. Patches are binary files, and the server should not be sniffing at the content to determine if it might be something that could be served as 'text/mumble'. 22:13:56 ok, that's news to me 22:14:06 I've always thought patches are text files 22:14:29 Learn something new every day, eh? 22:15:23 yep 22:15:48 but see I bet it's deliberate, though 22:18:13 good news, everybody! the patch worked and racket compiled. 22:18:28 samth++ chandler++ 22:20:31 mauke, glad that worked 22:20:44 hopefully we'll get that patch integrated upstream soon 22:22:01 -!- samth is now known as samth_away 22:30:41 *bremner* wonders why this isn't a problem on debian unstable. 22:31:12 -!- CBro2007 [~manukaul@cpc2-sgyl9-0-0-cust659.sgyl.cable.virginmedia.com] has quit [Quit: CBro2007] 22:36:54 -!- malcolmci [~malcolmci@203.171.96.17.static.rev.aanet.com.au] has quit [Quit: Leaving] 22:38:40 -!- mmc [~michal@109.117.188.254] has quit [Ping timeout: 245 seconds] 22:43:44 -!- paint [~paint@unaffiliated/paint] has quit [Quit: IRC is just a multiplayer Notepad] 22:45:15 paint [~paint@unaffiliated/paint] has joined #scheme 22:46:02 mmc [~michal@109.116.136.206] has joined #scheme 22:46:13 -!- stepnem [~stepnem@88.103.132.186] has quit [Ping timeout: 260 seconds] 22:50:00 stepnem [~stepnem@88.103.132.186] has joined #scheme 22:58:11 -!- masm [~masm@2.80.159.86] has quit [Quit: Leaving.] 23:04:10 fowlduck [~fowlduck@2002:cc0f:6d26:0:fa1e:dfff:fed7:9dc1] has joined #scheme 23:14:59 -!- mathk [~mathk@lns-bzn-35-82-250-242-84.adsl.proxad.net] has quit [Quit: ..zzZzzZ] 23:22:43 -!- Modius [~Modius@cpe-24-28-30-165.austin.res.rr.com] has quit [Ping timeout: 260 seconds] 23:26:23 -!- fowlduck [~fowlduck@2002:cc0f:6d26:0:fa1e:dfff:fed7:9dc1] has quit [Remote host closed the connection]