00:00:25 -!- alvatar [~alvatar@91.149.220.87.dynamic.jazztel.es] has quit [Quit: leaving] 00:05:59 chylli [~lchangyin@119.181.61.120] has joined #scheme 00:06:43 -!- tupi__ [~david@139.82.89.24] has quit [Remote host closed the connection] 00:09:15 -!- devinus [~devinus@ps23102.dreamhost.com] has quit [Excess Flood] 00:10:01 devinus [~devinus@ps23102.dreamhost.com] has joined #scheme 00:13:01 shadow_walker [~shadow_wa@189-47-236-47.dsl.telesp.net.br] has joined #scheme 00:16:09 -!- DrDuck [~duck@146.229.117.148] has quit [Ping timeout: 260 seconds] 00:17:57 -!- Azuvix [~Azuvix@174-27-34-218.bois.qwest.net] has quit [Quit: Leaving] 00:19:50 DrDuck [~duck@146.229.117.148] has joined #scheme 00:22:41 -!- yamanu [~yamanu@89.142.205.14] has quit [Quit: leaving] 00:23:01 bombshelter13b [~bombshelt@76-10-149-209.dsl.teksavvy.com] has joined #scheme 00:24:04 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Quit: Computer has gone to sleep.] 00:42:03 Azuvix [~Azuvix@174-27-34-218.bois.qwest.net] has joined #scheme 00:48:36 imran_sr [~imran@75-18-254-4.lightspeed.uncyca.sbcglobal.net] has joined #scheme 00:50:54 -!- dfkjjkfd [~paulh@183-15-ftth.onsnetstudenten.nl] has quit [Quit: Lost terminal] 00:58:55 copumpkin [~pumpkin@209-6-62-204.c3-0.sbo-ubr1.sbo.ma.cable.rcn.com] has joined #scheme 00:58:55 -!- copumpkin [~pumpkin@209-6-62-204.c3-0.sbo-ubr1.sbo.ma.cable.rcn.com] has quit [Changing host] 00:58:55 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 01:03:42 wbooze` [~user@xdsl-78-35-131-233.netcologne.de] has joined #scheme 01:03:55 homie` [~user@xdsl-78-35-131-233.netcologne.de] has joined #scheme 01:04:06 -!- mmc [~michal@cs181178061.pp.htv.fi] has quit [Read error: Connection reset by peer] 01:06:19 -!- homie [~user@xdsl-78-35-130-238.netcologne.de] has quit [Ping timeout: 260 seconds] 01:06:19 -!- wbooze [~user@xdsl-78-35-130-238.netcologne.de] has quit [Ping timeout: 260 seconds] 01:10:59 -!- tokam [~tokam@p54A7AD8D.dip.t-dialin.net] has quit [Quit: Leaving.] 01:11:40 -!- pygospa [~pygospa@217.191.194.189] has quit [Disconnected by services] 01:11:52 pygospa [~pygospa@217.191.219.194] has joined #scheme 01:12:15 mmc [~michal@cs181178061.pp.htv.fi] has joined #scheme 01:21:56 -!- kaemo [~mad5ci@d38-66.icpnet.pl] has quit [Read error: Operation timed out] 01:26:05 -!- Riastradh [debian-tor@fsf/member/riastradh] has quit [Ping timeout: 245 seconds] 01:29:03 lisppaste [~lisppaste@common-lisp.net] has joined #scheme 01:36:00 -!- jonrafkind [~jon@crystalis.cs.utah.edu] has quit [Ping timeout: 240 seconds] 01:37:54 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme 01:43:11 -!- DrDuck [~duck@146.229.117.148] has quit [Quit: Leaving] 01:51:47 pjb: I don't think it doesn't matter. using a language that lets you abstract more lets you get more done quicker 01:53:14 but there's plenty of other factors beyond technical for a startup, of course. 01:55:32 Adamant: metaprogramming is exponential. For any sizeable project, it doesn't matter if you start at 2^0 or at 2^1 (or even 2^2). Of course, if you start at 2^0, you start by multiplying it by 2, and once again, so the first two steps are 'lost'. I'm just telling Greenspun's Tenth Law here... 01:56:05 pjb: I have a feeling that Scheme might be hiding more often than Common Lisp, particularly since there are implementations that are easier to link in as a shared library. 01:56:30 chandler: TinyScheme is in use in a number of environments 01:57:03 alas :( 01:57:30 Perhaps. 01:57:54 foof: Well, it's better than nothing, and it's proof of a market (or use case, if you'd like to call it that) that could be well served by a better implementation. 01:58:00 githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has joined #scheme 01:59:26 foof: I think the people I'm thinking of would have used Chibi if it was available at the time 02:05:06 -!- turbofail [~user@adsl-99-50-22-193.dsl.pltn13.sbcglobal.net] has quit [Remote host closed the connection] 02:07:20 Riastradh [debian-tor@fsf/member/riastradh] has joined #scheme 02:09:44 -!- alexsuraci [~alex@pool-71-188-133-67.aubnin.fios.verizon.net] has quit [Disconnected by services] 02:09:47 -!- alexsura1i is now known as alexusraci 02:22:27 somnium [~user@184.42.17.189] has joined #scheme 02:25:22 jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has joined #scheme 02:26:29 *jcowan* unvanishes. 02:31:32 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: night] 02:32:00 -!- wgd [~will@76-205-0-91.lightspeed.stlsmo.sbcglobal.net] has quit [Ping timeout: 240 seconds] 02:32:03 Boo! 02:32:04 -!- acarrico [~acarrico@pppoe-68-142-43-164.gmavt.net] has quit [Ping timeout: 260 seconds] 02:33:00 wgd [~will@76-205-0-91.lightspeed.stlsmo.sbcglobal.net] has joined #scheme 02:35:26 Hoo! 02:36:05 *jcowan* writes up ThreadsCowan for WG2, being part of SRFI 18. 02:44:10 turbofail [~user@c-67-180-111-45.hsd1.ca.comcast.net] has joined #scheme 02:45:01 acarrico [~acarrico@pppoe-68-142-43-164.gmavt.net] has joined #scheme 02:54:14 -!- shadow_walker [~shadow_wa@189-47-236-47.dsl.telesp.net.br] has quit [Remote host closed the connection] 02:59:29 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 264 seconds] 03:07:17 -!- acarrico [~acarrico@pppoe-68-142-43-164.gmavt.net] has quit [Ping timeout: 255 seconds] 03:10:45 -!- Azuvix [~Azuvix@174-27-34-218.bois.qwest.net] has quit [Quit: Leaving] 03:16:24 *jcowan* realizes that SRFI-18 threads don't, in and of themselves, have to be implemented as threads: they could be processes, or even distributed processes. It's mutexes and condition variables that (in practice) force threadhood on SRFI-18 threads. 03:17:12 What is `threadhood'? 03:18:48 The property of being a (shared memory, Posix, Win32) thread. 03:19:24 Unfortunately I have but one word "thread" for that and for what SRFI 18 provides. 03:20:29 You can say `shared memory thread', `SRFI 18 thread', `pthread', &c., to disambiguate. 03:20:40 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Ping timeout: 245 seconds] 03:20:57 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 03:21:05 Well then: SRFI-18 does not require its threads to be shared memory threads. 03:21:06 Can you explain a bit further why you believe that the presence of mutexes and condition variables forces that implementation choice? 03:21:06 acarrico [~acarrico@pppoe-68-142-43-164.gmavt.net] has joined #scheme 03:21:52 I don't even know any systems in which SRFI 18 threads are implemented by pthreads (or Lose32 threads). 03:22:00 It seems to me that those are the things which *least* suggest that implementation style, at least given the presence of mutation in the language and library. 03:22:18 Guile does. 03:22:32 Oh, OK. 03:22:40 scottj [~scott@206.212.250.58] has joined #scheme 03:24:19 Well, green or OS, SRFI 18 is clearly written to assume shared-memory implementations. 03:25:01 Outside of the world of free implementations, Chez provides pthreads, but I don't know if it actually provides SRFI-18. (If not, it would be a pretty trivial wrapper to implement.) 03:25:31 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 03:25:45 `The thread system provides the following data types: . Thread (a virtual processor which shares object space with all other threads)' 03:26:02 I think that opening sentence of the specification is what makes SRFI 18 threads shared memory threads. 03:26:18 -!- Riastradh [debian-tor@fsf/member/riastradh] has quit [Remote host closed the connection] 03:27:52 True. But that is mere dictum: the procedures do not compel that interpretation, 03:27:59 especially given the later statement "It is an error for a thread to write a location in the store while some other thread reads or writes that same location." 03:28:07 -!- imran_sr [~imran@75-18-254-4.lightspeed.uncyca.sbcglobal.net] has quit [Quit: Leaving] 03:28:10 "While" can be interpreted to mean "at any time during its execution" 03:29:33 I'm not sure I follow. That statement seems like another way of saying that all mutation operations use appropriate exclusion mechanisms to protect against other threads reading or writing the location while it is being mutated. 03:30:01 It allows the implementation the flexibility to crash if some structure is read in the middle of a non-atomic mutation operation operating in another thread. 03:30:28 It doesn't do anything to ease the burden of implementing SRFI-18 threads in a non-shared-memory environment. 03:33:57 Mutating a location is different from mutating a structure: given a shared structure, you need to use explicit synchronization to protect it. It's unclear to me whether you need explicit sync to protect mutation of a mere location. 03:34:59 The statement you quoted definitively establishes that exclusion is required to protect mutation of any location in the context of SRFI-18. 03:35:31 I used the word "structure" incorrectly above; the word entered my brain because it's one of the situations where I've observed non-atomic mutation behavior in C in the past. 03:35:35 -!- MrFahrenheit [~RageOfTho@users-55-211.vinet.ba] has quit [Ping timeout: 240 seconds] 03:35:40 (In C and in Common Lisp, actually.) 03:36:58 That is, the user must do exclusion, not that the implementation must provide exclusion? 03:37:54 I don't see how that statement could be read as an implementation requirement. 03:38:01 Me either. 03:38:05 ... especially since the next sentence says "It is the responsibility of the application to avoid write/read and write/write races through appropriate uses of the synchronization primitives." 03:38:34 Riastradh [debian-tor@fsf/member/riastradh] has joined #scheme 03:38:37 Well then. If thread A mutates a location without using the sync primitives, then there is AFAICT no guarantee that thread B will *ever* be able to observe the mutated value of the location. 03:38:49 vu3rdd [~vu3rdd@nat/cisco/x-ofwpnjuleqpilthq] has joined #scheme 03:39:30 jcowan, `there is no guarantee that thread B will ever be able to observe the mutated value': there is a reasonable interpretation of the sentence you quoted under which your claim is false. 03:39:43 Enlighten me, then? 03:40:44 jcowan: One could plausibly stretch the definition of "while" a little bit, but there are other kinds of events which put an upper bound on that. In particular, concurrent access to ports is allowed. 03:40:48 Specifically, suppose thread A writes to the location, and observes the current time, t. In parallel, suppose thread B sleeps until time t'. If t < t', then subsequently B will observe A's write to the location. 03:41:34 (If t is not less than t', then the program is in error.) 03:41:36 That claim is false. If there's no memory barrier between t and t', B will not observe A's write. mutex-unlock! is, presumably, a memory barrier. 03:41:37 (Granted, physical machines do not support this interpretation.) 03:41:48 Ah, indeed. 03:41:59 SRFI 18 doesn't talk about memory barriers. 03:42:37 Yes, but they've written a general exclusion on "concurrent" access which is presumably intended to allow implementations to defer memory barriers until an operation such as mutex-unlock!. 03:42:49 ("concurrent" shouldn't be quoted there.) 03:44:22 In a green-thread implementation which takes pains to ensure that all memory operations are truly atomic, your claim is justified. 03:44:50 It says nothing about memory barriers or about partial ordering of reads from and writes to locations. In other words, it is not particularly well written as a specification of a shared memory thread system. 03:44:59 Atomicity is a separate issue. 03:46:10 Atomicity means that if A spends the interval (t0, t1) writing to a location, and B spends the interval (t0', t1') reading from the location, where t0 < t0' < t1 < t1', then B may read garbage from the location. 03:46:19 s/Atomicity/Lack of atomicity/1 03:46:36 (These intervals are time intervals, sorry.) 03:46:54 Or, more generally, demons may fly out of your nose, although B's reading garbage is a slightly more likely scenario. 03:47:21 Many a C program I've written has crashed, but never a sign of a nasal demon yet. 03:47:55 Sorry, I meant atomicity in the sense that any interrupt received (such as the timer used to implement preemptive green threads) may not interrupt a write in a way that leaves the write partially committed. 03:48:04 (blah blah blah, lots more qualifications, generalize to (t0, t1) \cap (t0', t1') nonempty, &c.) 03:48:09 So does my original claim, that the SRFI-18 thread procedures do not in themselves compel shared memory, stand? 03:48:55 I don't even know what that means, jcowan. 03:49:11 The opening sentence of the specification compels -- prescribes -- shared memory. What more do you need? 03:49:20 I'm not sure it does on its own. How does one get a mutex between two non-shared-memory processes? 03:49:44 Posix link-unlink semantics, for example. 03:50:11 (I suppose it must be closed over in the process's initial thunk.) 03:50:18 Slow and ugly, but correct. Alternatively, one can play games with hidden pipes. 03:50:27 I wasn't referring to the implementation level. 03:50:30 chandler, well...an interruption of A is kinda the same thing. Consider t1 to be \infty; then B reads garbage at any time after t0. 03:51:15 Riastradh: Right. I didn't mean to join any claims about memory barriers and atomicity; I was pointing out a separate condition under which your claim holds. 03:51:18 (Sorry for the confusion.) 03:51:20 I'm confused now. 03:51:28 Never mind. 03:51:43 jcowan: It would probably help if I understood where you were going with this. 03:52:10 I think I have just replied to several remarks that I misunderstood, so I am going to take a step back and return to asking jcowan what more he wants than the prescription in the opening sentence of a shared object space. 03:52:36 timj_ [~timj@e176193145.adsl.alicedsl.de] has joined #scheme 03:53:04 Riastradh: In principle, I don't think that such remarks actually constrain the domain of interpretation, given that you cannot count on any specific instance of sharing actually being observable. 03:54:16 ... except by the means through which it could be observed. Perhaps if I understood more the non-shared-memory semantics you had in mind, I could offer a better answer to your questions. 03:54:37 chandler: I'm thinking that a specification of SRFI-18 thread procedures and some appropriately constrained higher level mailbox/channel structure would jointly permit implementations to choose between shared-memory and non-shared-memory (or even distributed) implementations. 03:56:05 -!- timj [~timj@e176196108.adsl.alicedsl.de] has quit [Ping timeout: 245 seconds] 03:56:29 Or, as an intermediate position, a system in which only the mailboxes are in shared memory and the rest of the Scheme objects aren't. 03:56:42 I think you'd want some different synchronization primitives in that case. 03:57:09 Quite so, which is why I've been talking about SRFI-18 thread procedures specifically. 03:57:19 jcowan, when you say `SRFI 18 thread procedures', do you mean `the collection of procedures specified in SRFI 18 (which happen to be related to threads)', or `the subset of said procedures which pertain only to threads and not to mutices or condition variables'? 03:57:30 The latter. 03:58:49 So, in which existing, practical systems can one usefully employ common code using SRFI 18 in shared memory situations and in unshared memory situations? 03:59:00 What examples of such common code are there? 03:59:23 None, because people who use SRFI-18 have no practical alternative to mutexes and condition codes. 03:59:39 That I know of. 04:00:51 Sorry, I may have jumped ahead of myself a little, by assuming that the context of this discussion is WG2 standardization. 04:01:32 It is. 04:01:42 In WG2, there will be various things standardized that haven't been before. 04:01:45 I see. 04:02:08 As an aside: Is WG2 a standardization effort, or an innovation effort? 04:02:15 That would not have been my choice, but it's the WG's choice. 04:03:07 As much s..n and as little i..n as I can manage, but that turns out not to be zero. We are in particular tasked with looking at non-Scheme standard libraries de jure or de facto. 04:04:47 Riastradh: Gauche uses pthreads. 04:06:22 foof: What's your take on this idea? 04:06:24 jcowan: What are the constraints given that would exclude standardizing an existing interface like Scheme-CML, together with appropriate constraints on visibility or effects of mutation so as to make a distributed implementation practical? 04:06:54 The ignorance of the chair and the apathy of the membership. 04:09:16 Scheme-CML is pretty fundamentally not distributed. 04:11:04 (The threads/processes you get by calling SPAWN may be, but that's largely an irrelevant afterthought; the rendezvous protocol is the crux, and I don't think it is reasonably distributable -- it requires non-trivial synchronization of shared state between processes.) 04:12:36 Distributed algorithms are hairy, and if your algorithm was designed not to be distributed, it probably won't work very well that way. 04:13:05 Er, `wasn't designed to be distributed'. Of course if it was designed *not* to be distributed, then it won't work very well distributed... 04:14:01 Aside from the synchronization, Scheme-CML also revolves around passing Scheme objects between processes, rather than limited protocol messages. 04:14:19 Ah. The details had escaped me, and I had misremembered whether CML provided an asynchronous form of message passing in addition to synchronization. 04:14:29 -!- somnium [~user@184.42.17.189] has quit [Remote host closed the connection] 04:14:56 Passing Scheme objects is not a problem per se if the implementation can serialize and deserialize its own objects. 04:15:31 CML is designed for writing interactive programs that reliably don't lose messages. 04:19:53 chandler: I was thinking of requiring that only objects with a datum representation can be passed through a mailbox. Does that seem too restrictive? 04:20:32 -!- chemuduguntar [~user@smtp.touchcut.com] has quit [Ping timeout: 255 seconds] 04:20:58 Does the object that the expression (let ((x (cons '() '()))) (set-cdr! x x) x) evalutes to have a datum representation? 04:21:04 -!- tupi [~david@186.205.37.15] has quit [Quit: Leaving] 04:21:35 I don't think you should be designing a standard for this until you have built practical systems that demonstrate the mechanism's utility, feasibility, and robustness. 04:23:15 R7RS will have a CL-style representation of circular lists. 04:23:34 `Written representation', surely? 04:23:39 (or `external') 04:23:52 -!- masm [~masm@2.80.139.184] has quit [Quit: Leaving.] 04:24:31 Yes. 04:25:29 -!- bombshelter13b [~bombshelt@76-10-149-209.dsl.teksavvy.com] has quit [Quit: If only your veins were filled with oil, the world would rush to your rescue!] 04:27:48 Riastradh, I agree. But I'm not my own master in this situation. 04:32:28 What is it precisely that your master has commanded of you? 04:32:53 jcowan: SRFI-18 strongly implies shared-memory threads. 04:33:05 I don't necessarily think that's a good idea. 04:35:28 Riastradh: Nothing. If I stopped striving, WG2 would probably collapse. 04:36:44 -!- mmc [~michal@cs181178061.pp.htv.fi] has quit [Quit: Leaving.] 04:40:53 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Ping timeout: 255 seconds] 04:42:23 I am not sure I follow: `I'm not my own master in this situation.' `[My master has commanded of me] nothing.' 04:43:30 Jafet [~Jafet@unaffiliated/jafet] has joined #scheme 04:47:08 Well, the WG hasn't asked me to do anything, but the SC has asked me to get the WG to produce a report. 04:48:59 The WG has chosen the topics that constitute the parts of that report, but nobody (except Emmanuel Medernach) has provided any proposals on those topics, leaving it all up to me. 04:49:34 I have registered this situation with the SC, and they have viewed-with-alarm, but nothing happens unless I do it myself. 04:51:10 There's too much overlap with WG1. I for one certainly have no time to devote to WG2 until WG1 is done. 04:54:09 Which is a shame because all the fun topics are in WG2 :/ 04:54:18 Quite. 04:54:23 I think that illustrates a problem with the process that is not going to be solved by making a bogus standard. 04:55:23 *jcowan* shrugs off non-constructive criticism like a duck in the rain. 04:57:54 -!- clog [nef@bespin.org] has quit [Ping timeout: 260 seconds] 04:58:14 jcowan: I promise a WG2 regex proposal. 04:58:21 How do ducks in the rain shrug off non-constructive criticism? They don't even have shoulders. 04:58:24 Thanks. 04:58:31 Wiggle their feathers, I guess. 04:58:42 They duck! 04:58:51 Why a duck? 04:59:15 Because only a witch would give non-constructive criticism? 05:01:35 Which duck? 05:01:46 Or perhaps, duckwich? 05:03:42 "Scheme. The progamming language that is preferred by most ducks." 05:04:12 Isn't Ruby more of a duck's type? 05:04:19 The programming language that is ducked by most programmers. 05:04:58 *jcowan* is going to tell the SC that the schedule must be changed so that WG1 and WG2 are sequential rather than parallel. 05:05:03 make that MUST. 05:06:05 It's pretty much all optional modules, anyway, rather than the nested languages that the SC anticipated. 05:06:42 *eli* can see how ducks don't care much for how `syntax-rules' is nearly useless for public macros. 05:07:12 After all, they're mostly concerned with swimming in ponds rather than writing software. 05:07:23 What makes the WG2 process preferable to the SRFI process? 05:07:30 Why, and what is a public macro? 05:07:59 Riastradh: lack of SRFI editors? 05:08:18 Are the SRFI editors all gone? 05:08:40 jcowan: That was re my rant from a few days ago: `syntax-rules' is pretty awful for public macros -- ones where some (foo x) shouldn't throw an error ivolving `lambda', for example. 05:08:58 s/ivolving/involving/ 05:09:04 MichaelRaskin [~MichaelRa@195.178.216.22] has joined #scheme 05:09:05 Is this about implicit export? If not, I don't understand it. 05:10:10 eli: I think that might be better expressed as a complaint about the lack of convenient facilities for syntax-rules macros to detect and report syntactic violations. 05:10:24 Riastradh: Except for SRFI 100 *cough* *yack* *blort*, nothing has happened in SRFIWorld since mid-2009. 05:10:30 jcowan: I've made this point several times in the past: 05:10:32 Riastradh: In my experience they're slow to respond, and also want a nearly finished proposal up front. A concerted effort that just brings up ideas for discussion to hammer out into a standard is a good way to get a lot of new portable libraries for Scheme. 05:10:38 rudybot: (define-syntax-rule (fun args body ...) (lambda args body ...)) 05:10:41 eli: your racket sandbox is ready 05:10:41 eli: Done. 05:10:45 rudybot: (fun (x x) (+ x 1)) 05:10:45 eli: error: eval:1:8: lambda: duplicate argument name at: x in: (lambda (x x) (+ x 1)) 05:10:50 That. 05:10:56 Ah. 05:11:05 (Which is what chandler was talking about.) 05:11:18 How is that worse than getting "car: argument is not a pair" when you've passed the wrong argument to some procedure? 05:11:30 That's a problem too. 05:11:36 It's the same problem, 05:11:38 Hence contracts. 05:11:44 Error messages do tend to break abstractions. 05:11:49 but in the procedure case, you can write the test and throw an intelligent error. 05:12:01 In the `syntax-rules' case there is no way to do that. 05:12:14 Not an easy way, no. 05:12:34 I've done it, but it involves writing a mess of rules in CPS. 05:12:35 So in the procedural case they "tend to break abstractions" if you're not careful, and in the `syntax-rules' case they pretty much always do that. 05:12:40 Perhaps the term rewriting should allow some type annotations? 05:13:05 Yeah -- that CPS stuff can do it in some cases, but it's really not something that should be taken as more than an academic exercise in obscurity. 05:13:10 I don't see how type annotations will help in the duplicate-identifier case that eli pointed out. 05:13:13 *jcowan* agrees. 05:13:39 Some kind of annotations can help. 05:13:43 rudybot: doc syntax-parse 05:13:44 Annotate the pattern variable ARGS with the type BVL, chandler. 05:13:53 eli: no docs for a current binding, but provided by: syntax/parse 05:14:07 rudybot: (require syntax/parse) 05:14:07 eli: Done. 05:14:08 Some equivalent of the guard form in `syntax-case' combined with some presupplied guards for these cases would probably be of more use. 05:14:10 rudybot: doc syntax-parse 05:14:11 eli: http://docs.plt-scheme.org/syntax/Parsing_and_classifying_syntax.html#(form._((lib._syntax%2Fparse..rkt)._syntax-parse)) 05:14:13 It's trickier with LET, of course. 05:14:39 That's what I meant by type annotation: not run-time types, of course. 05:15:45 Something like (define-syntax my-let (syntax-rules () ((_ ((name value) ...) body ...) (unique-identifiers? name ...) (let ((name value) ...) body ...)))) is what I have in mind. 05:15:59 (A trivial example to be sure.) 05:16:17 chandler, SYNTAX-PARSE goes considerably beyond that, and I think it is worth looking into. I didn't read the paper because it was full of superfluous dingbats, being a PL theory paper, but recorded a mental note to look into the construct later. 05:18:01 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving] 05:18:03 chandler: Just that is enough to bring in a barrel full of bats that tend to scare some people. (Phases, etc.) 05:18:24 ... How does it introduce phases? 05:18:33 Riastradh: I think that the documentation should be pretty decent now, without the theory dingbats. 05:18:35 Riastradh: I'm looking at it now. 05:19:16 chandler: In your expression, `unique-identifiers?' is a syntax-level function, 05:19:22 eli: I'm thinking of this as a purely syntactic guard form. 05:20:01 Are these chiropteran bats, or baseball bats? 05:20:17 In particular, it'd be possible (though incredibly tricky!) in R5RS Scheme to implement a `define-syntax/guard' and friends that extended `syntax-rules' to support syntactic guard forms. 05:20:18 right -- I was about to say that otherwise it's a special kind of macro, and you need a bunch of these macros to cover all kinds of cases -- and that's likely to end up with some macro-level language for expressing these constraints. 05:21:12 (Which is undesirable since you'd be dealing with (a) the scheme language, (b) the `syntax-rules' language, (c) the additional constraints "library" which is a kind of yet another language.) 05:21:40 I'm not sure you need to cover that many cases. It doesn't seem to me that you really need more than forms for testing basic types - in particular, whether something is an identifier or not - and forms for testing free-identifier=? and bound-identifier=? relations. 05:22:16 How do you define new guards? 05:23:12 What kind of constraint do you want to express for which the ability to define new guards would be useful? 05:23:57 -!- scottj [~scott@206.212.250.58] has quit [Quit: leaving] 05:24:24 I don't think that's a reasonable question, chandler. 05:24:30 Riastradh: IIUC, that part would be easy -- you'd define them as new macros that expand to the primitive ones that chandler's talking about. 05:24:42 You don't know what kind of guards you need to express until you have figured out the syntax of your new form. 05:25:10 (But all of that is kind of icky IMO, since they're all macros which are used as assertions...) 05:25:28 eli: I suppose that'd work too, though it'd probably be best to have some kind of `define-guard' form instead of overloading `define-syntax' for the purpose. 05:26:04 eli, OK, but then you can't straightforwardly implement the system in terms of SYNTAX-RULES, if you want the guarded version of SYNTAX-RULES to report syntax errors in the guard. 05:27:14 I'm looking through foof-loop for examples of hairy guards, but what I'm finding is simple guards and complex error reporting. 05:28:26 Yeah, that's probably the more important concern about such an approach... (And IMO, that's the thing that will eventually lead this into being yet another language.) 05:28:56 chandler, why DEFINE-GUARD and not GUARDED-SYNTAX-RULES or something? 05:30:35 That'd work too. 05:30:39 Lead what into being yet another language? 05:31:04 A language for guards (and error reporting) in `syntax-rules'. 05:31:49 I've no general objection to that idea if the language is simple and expressive. 05:33:27 jcowan: The hairy error-reporting code that Riastradh mentioned. You'd want to produce complex error messages, so you'll need something like a format string and that story goes in a predictable way. 05:35:16 Given that the input is Scheme source, I don't think most of the crazy output-formatting directives of typical format procedures are really necessary. 05:36:03 I'm too tired to argue about this myself, but I think you folks should look at what foof-loop does to detect and report syntax errors, and argue amongst yourselves whether that sort of idiom (a) makes any sense at all to you, (b) makes any more or less sense than SYNTAX-PARSE, (c) is more or less palatable than arguing about phasing, and (d) is socially acceptable as an idiom for writing macros. 05:37:49 I am not aware of situations in which foof-loop produces bad or confusing error messages except as a bug. (In particular, it is a bug that SYNTACTIC-ERROR-IF-NOT-BVL is not implemented. If it were implemented, then foof-loop would generate good error messages for malformed BVLs.) Granted, I haven't looked deeply at foof-loop in a couple years. 05:38:17 (Implementing SYNTACTIC-ERROR-IF-NOT-BVL is left as an exercise for chandler.) 05:39:08 I'm pretty sure I lisppasted something which does that at one time, but I've forgotten anything that would let me search for it. 05:39:21 *eli* immediately groans, as he's thinking of openning up yet another homework directory etc... 05:39:55 chandler: The final is coming up soon -- so don't expect any extensions to the due date. 05:40:48 Heh. 05:40:59 What is a BVL? 05:41:11 Bound Variable List 05:41:16 Riastradh: hello. 05:41:19 Sometimes called a `lambda list', or a `formal parameter list'. 05:41:22 Hi. 05:41:23 Quite. 05:41:27 Thanks. 05:42:42 Oops. Here is a situation in which I bet foof-loop will give a bad error message: (loop ((x 0) (x 1)) ...) 05:42:56 Riastradh: now that emacs has something similar to CPAN. I think it'd be great to have paredit.el listed there. (See http://elpa.gnu.org/) 05:43:22 leo2007, isn't it? 05:43:49 sorry, I am still using 23.2.90 due to OSX. If it is then great!! 05:44:45 Riastradh: seems no, http://elpa.gnu.org/packages/ 05:45:25 Not much of an archive. 05:45:26 I thought there were a lot more packages than that in the ELPA. 05:46:36 has a lot more. But its paredit is pretty old. 05:47:38 Is Emacs 24 out now? 05:48:02 I think the person to ask about paredit in the ELPA is technomancy. 05:48:08 I have also blown off SRFI-18's toxic THREAD-TERMINATE! 05:49:25 -!- Fare [~Fare@ita4fw1.itasoftware.com] has quit [Quit: Leaving] 05:49:47 Riastradh: that one is official and built into emacs. 05:50:04 tromey's ELPA may disappear over time. 05:53:39 Well, anyway, ask technomancy about it. I don't know anything about the newfangled GNU Emacs package scheme, other than that it wanted paredit.el's heading to look different. 05:55:10 (If you can't find him on IRC here, his email address is phil at hagelberg dot org, except with the cgs unit of energy omitted from the domain name.) 05:57:41 Riastradh: does `syntactic-error-if-not-bvl' need to check the members of the bvl for identifier-ness? 06:01:50 jewel [~jewel@196-215-114-74.dynamic.isadsl.co.za] has joined #scheme 06:02:02 Yes...heh, are you taking my `exercise' quip seriously? 06:03:17 There is, by the way, a reason why I never got around to defining it: different Schemes have different notions of BVLs. For instance, in MIT Scheme, (FOO #!OPTIONAL BAR) is a kosher BVL, even though #!OPTIONAL is not a name. 06:03:40 (Extra credit if your solution takes this into account and works out of the box everywhere!) 06:05:18 bem [~bem@opendarwin/developer/chandler] has joined #scheme 06:05:51 -!- chandler [~bem@opendarwin/developer/chandler] has quit [Quit: leaving] 06:06:09 -!- bem is now known as chandler 06:13:00 Funny how DSSSL keywords are both the ugliest and the most widely adopted of DSSSL features. 06:22:51 Caleb-- [thedude@bzq-109-64-6-190.red.bezeqint.net] has joined #scheme 06:27:07 The #!FOO notation existed long before DSSSL. True, false, and nil were once written #!TRUE, #!FALSE, and #!NULL. 06:33:19 Indeed, they were once written *T* and *NIL*. 06:33:38 But what I referred to was the existence of such keywords at all, not their particular lexical syntax. 06:36:53 -!- jcowan [~John@cpe-98-14-172-204.nyc.res.rr.com] has quit [Quit: Leaving] 06:38:39 chemuduguntar [~ravi@118-92-3-79.dsl.dyn.ihug.co.nz] has joined #scheme 06:40:33 nilg [~user@85.239.138.109] has joined #scheme 06:46:59 *foof* likes #true and #false 06:47:29 I suppose you don't like single-character octothorpe dispatching, in that case. 06:52:32 No, it's just that #t and #f look too much alike. 07:01:08 rudybot: #true 07:01:14 eli: your racket sandbox is ready 07:01:14 eli: error: reference to an identifier before its definition: rue in module: 'program 07:01:26 rudybot: (version) 07:01:26 eli: ; Value: "5.0.1" 07:01:45 #true and #false are accepted in 5.0.2. 07:02:01 \o/ 07:03:04 Dawgmatix [~dman@203.187.211.57] has joined #scheme 07:04:33 clog [nef@bespin.org] has joined #scheme 07:08:35 -!- jewel [~jewel@196-215-114-74.dynamic.isadsl.co.za] has quit [Ping timeout: 245 seconds] 07:08:55 -!- Dawgmatix [~dman@203.187.211.57] has quit [Read error: Connection reset by peer] 07:10:26 drdo [~user@2001:690:2100:1b:226:8ff:fef7:3d9e] has joined #scheme 07:54:08 Modius [~Modius@cpe-70-123-158-125.austin.res.rr.com] has joined #scheme 07:58:01 Axsuul [~someone@97-93-99-133.static.mtpk.ca.charter.com] has joined #scheme 08:01:03 imran_sr [~imran@75-18-254-4.lightspeed.uncyca.sbcglobal.net] has joined #scheme 08:05:01 -!- REPLeffect [~REPLeffec@69.54.115.254] has quit [Ping timeout: 265 seconds] 08:05:57 REPLeffect [~REPLeffec@69.54.115.254] has joined #scheme 08:17:49 -!- turbofail [~user@c-67-180-111-45.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 08:20:44 -!- leo2007 [~leo@cpc1-cmbg13-0-0-cust596.5-4.cable.virginmedia.com] has quit [Quit: rcirc on GNU Emacs 23.2.90.2] 08:21:44 slom [~sloma@port-87-234-239-162.static.qsc.de] has joined #scheme 08:34:00 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 245 seconds] 08:37:50 dfkjjkfd [~paulh@183-15-ftth.onsnetstudenten.nl] has joined #scheme 08:39:32 leo2007 [~leo@cpc1-cmbg13-0-0-cust596.5-4.cable.virginmedia.com] has joined #scheme 09:05:37 mmc [~michal@cs181178061.pp.htv.fi] has joined #scheme 09:09:32 -!- Axsuul [~someone@97-93-99-133.static.mtpk.ca.charter.com] has quit [Ping timeout: 250 seconds] 10:22:57 dzhus [~sphinx@95-24-83-113.broadband.corbina.ru] has joined #scheme 10:44:26 schmir [~schmir@mail.brainbot.com] has joined #scheme 10:45:09 -!- mmc [~michal@cs181178061.pp.htv.fi] has quit [Quit: Leaving.] 10:45:59 -!- vu3rdd [~vu3rdd@nat/cisco/x-ofwpnjuleqpilthq] has quit [Remote host closed the connection] 10:47:27 shadow_walker [~shadow_wa@189-47-236-47.dsl.telesp.net.br] has joined #scheme 10:54:46 shadow_w_ [~shadow_wa@189.110.53.152] has joined #scheme 10:58:10 -!- shadow_walker [~shadow_wa@189-47-236-47.dsl.telesp.net.br] has quit [Ping timeout: 245 seconds] 11:03:15 -!- homie` [~user@xdsl-78-35-131-233.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 11:03:29 -!- wbooze` [~user@xdsl-78-35-131-233.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 11:04:02 foof` [~user@li126-140.members.linode.com] has joined #scheme 11:05:35 -!- foof [~user@li126-140.members.linode.com] has quit [Read error: Connection reset by peer] 11:06:26 wbooze [~user@xdsl-78-35-131-233.netcologne.de] has joined #scheme 11:06:33 homie [~user@xdsl-78-35-131-233.netcologne.de] has joined #scheme 11:17:59 -!- shadow_w_ [~shadow_wa@189.110.53.152] has quit [Remote host closed the connection] 11:20:05 -!- ASau [~user@95-26-92-70.broadband.corbina.ru] has quit [Remote host closed the connection] 11:21:06 ASau [~user@95-26-92-70.broadband.corbina.ru] has joined #scheme 11:22:26 -!- dfkjjkfd [~paulh@183-15-ftth.onsnetstudenten.nl] has quit [Quit: Lost terminal] 11:30:01 -!- drdo [~user@2001:690:2100:1b:226:8ff:fef7:3d9e] has quit [Ping timeout: 272 seconds] 11:31:38 -!- AtnNn [~welcome@modemcable060.239-177-173.mc.videotron.ca] has quit [Quit: g2g] 11:45:12 mmc [~michal@cs181178061.pp.htv.fi] has joined #scheme 11:47:20 drdo [~user@194.210.228.104] has joined #scheme 11:56:46 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Ping timeout: 276 seconds] 11:57:03 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 11:59:29 -!- slom [~sloma@port-87-234-239-162.static.qsc.de] has quit [Ping timeout: 264 seconds] 12:00:52 gravicappa [~gravicapp@80.90.116.82] has joined #scheme 12:07:26 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 12:14:42 slom [~sloma@port-87-234-239-162.static.qsc.de] has joined #scheme 12:15:20 tupi [~david@186.205.37.15] has joined #scheme 12:20:41 -!- pchrist [~spirit@gentoo/developer/pchrist] has quit [Ping timeout: 240 seconds] 12:20:53 pchrist_ [~spirit@gentoo/developer/pchrist] has joined #scheme 12:27:57 -!- chemuduguntar [~ravi@118-92-3-79.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 265 seconds] 12:40:51 -!- pchrist_ is now known as pchrist 12:41:25 chemuduguntar [~ravi@118-92-129-45.dsl.dyn.ihug.co.nz] has joined #scheme 12:42:56 -!- REPLeffect [~REPLeffec@69.54.115.254] has quit [Ping timeout: 265 seconds] 12:54:19 REPLeffect [~REPLeffec@69.54.115.254] has joined #scheme 13:00:11 vu3rdd [~vu3rdd@122.166.154.146] has joined #scheme 13:02:51 MrFahrenheit [~RageOfTho@users-33-107.vinet.ba] has joined #scheme 13:05:07 kaemo [~mad5ci@d38-66.icpnet.pl] has joined #scheme 13:12:13 wbooze` [~user@xdsl-78-35-144-183.netcologne.de] has joined #scheme 13:12:21 homie` [~user@xdsl-78-35-144-183.netcologne.de] has joined #scheme 13:13:20 -!- ASau [~user@95-26-92-70.broadband.corbina.ru] has quit [Remote host closed the connection] 13:14:01 ASau [~user@95-26-92-70.broadband.corbina.ru] has joined #scheme 13:15:25 -!- homie [~user@xdsl-78-35-131-233.netcologne.de] has quit [Ping timeout: 276 seconds] 13:15:25 -!- wbooze [~user@xdsl-78-35-131-233.netcologne.de] has quit [Ping timeout: 276 seconds] 13:17:53 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 13:24:36 Mandar [~armand@pha75-21-78-228-186-233.fbx.proxad.net] has joined #scheme 13:26:38 -!- imran_sr [~imran@75-18-254-4.lightspeed.uncyca.sbcglobal.net] has quit [Quit: Leaving] 13:36:42 -!- homie` [~user@xdsl-78-35-144-183.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 13:36:52 -!- wbooze` [~user@xdsl-78-35-144-183.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 13:40:03 wbooze [~user@xdsl-78-35-144-183.netcologne.de] has joined #scheme 13:43:55 homie [~user@xdsl-78-35-144-183.netcologne.de] has joined #scheme 13:48:19 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 13:58:51 -!- drdo [~user@194.210.228.104] has quit [Ping timeout: 272 seconds] 14:04:00 -!- Riastradh [debian-tor@fsf/member/riastradh] has quit [Ping timeout: 245 seconds] 14:04:08 -!- REPLeffect [~REPLeffec@69.54.115.254] has quit [Ping timeout: 265 seconds] 14:05:41 -!- gravicappa [~gravicapp@80.90.116.82] has quit [Remote host closed the connection] 14:12:48 -!- alexusraci [~alex@pool-71-188-133-67.aubnin.fios.verizon.net] has quit [Quit: leaving] 14:12:54 alexsuraci [~alex@pool-71-188-133-67.aubnin.fios.verizon.net] has joined #scheme 14:17:59 -!- alexsuraci [~alex@pool-71-188-133-67.aubnin.fios.verizon.net] has quit [Quit: leaving] 14:18:12 alexsuraci [~alex@pool-71-188-133-67.aubnin.fios.verizon.net] has joined #scheme 14:20:09 -!- nilg [~user@85.239.138.109] has quit [Read error: Connection reset by peer] 14:28:21 -!- Mandar [~armand@pha75-21-78-228-186-233.fbx.proxad.net] has quit [Ping timeout: 240 seconds] 14:41:33 langmartin [~user@exeuntcha2.tva.gov] has joined #scheme 14:44:56 -!- ecraven [~user@140.78.42.213] has quit [Ping timeout: 276 seconds] 14:56:05 drdo [~user@2001:690:2100:1b:226:8ff:fef7:3d9e] has joined #scheme 14:56:16 -!- Modius [~Modius@cpe-70-123-158-125.austin.res.rr.com] has quit [Quit: "Object-oriented design" is an oxymoron] 15:00:46 nilg [~user@85.239.138.109] has joined #scheme 15:06:57 ecraven [~user@140.78.42.213] has joined #scheme 15:11:49 aisa [~aisa@173-10-243-253-Albuquerque.hfc.comcastbusiness.net] has joined #scheme 15:22:28 -!- nilg [~user@85.239.138.109] has quit [Read error: Connection reset by peer] 15:23:10 nilg [~user@85.239.138.109] has joined #scheme 15:33:28 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 15:34:43 -!- slom [~sloma@port-87-234-239-162.static.qsc.de] has quit [Remote host closed the connection] 15:35:17 -!- nilg [~user@85.239.138.109] has quit [Read error: Operation timed out] 15:36:20 nilg [~user@85.239.138.109] has joined #scheme 15:38:24 -!- bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [Read error: Connection reset by peer] 15:43:00 femtoo [~femto@95-89-197-196-dynip.superkabel.de] has joined #scheme 15:47:14 puddingpimp [~dave@118-93-165-184.dsl.dyn.ihug.co.nz] has joined #scheme 15:50:04 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 260 seconds] 15:51:08 bweaver [~user@host-68-169-175-225.WISOLT2.epbfi.com] has joined #scheme 15:54:21 -!- mmc [~michal@cs181178061.pp.htv.fi] has quit [Ping timeout: 240 seconds] 16:05:35 Fare [~Fare@ita4fw1.itasoftware.com] has joined #scheme 16:07:40 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 16:12:56 -!- Adamant [~Adamant@unaffiliated/adamant] has quit [Quit: Adamant] 16:14:22 Adamant [~Adamant@c-68-51-145-83.hsd1.ga.comcast.net] has joined #scheme 16:14:22 -!- Adamant [~Adamant@c-68-51-145-83.hsd1.ga.comcast.net] has quit [Changing host] 16:14:22 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme 16:16:18 -!- Adamant [~Adamant@unaffiliated/adamant] has quit [Client Quit] 16:24:19 mmc [~michal@cs181178061.pp.htv.fi] has joined #scheme 16:26:18 xyu [~xyu@ppp85-141-232-246.pppoe.mtu-net.ru] has joined #scheme 16:26:54 -!- xyu [~xyu@ppp85-141-232-246.pppoe.mtu-net.ru] has left #scheme 16:44:01 bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has joined #scheme 16:56:26 -!- vu3rdd [~vu3rdd@122.166.154.146] has quit [Remote host closed the connection] 16:57:27 -!- tonyg_ is now known as tonyg 17:01:02 -!- kaemo [~mad5ci@d38-66.icpnet.pl] has quit [Ping timeout: 255 seconds] 17:11:45 -!- nilg [~user@85.239.138.109] has quit [Read error: Connection reset by peer] 17:16:25 asumu [~at@nomad.ccs.neu.edu] has joined #scheme 17:17:23 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 17:19:48 -!- samth_away is now known as samth 17:30:12 Gmind [~Welcome@113.190.160.104] has joined #scheme 17:32:09 hey 17:32:24 anyone can suggest me a good Scheme implementation ? 17:34:22 Are there any bad Scheme implementations? :> 17:35:40 -!- Quadrescence [~Quad@unaffiliated/quadrescence] has quit [Ping timeout: 245 seconds] 17:36:16 Gmind, I suggest Racket: http://racket-lang.org 17:36:20 -!- Jafet [~Jafet@unaffiliated/jafet] has quit [Ping timeout: 240 seconds] 17:36:40 LoL , franki^ , I don't mean that :P 17:36:55 just smt suitable and good support 17:37:27 samth:is racket a standard scheme ? 17:37:50 Gmind, what do you mean by 'a standard scheme' 17:38:07 Racket supports the existing Scheme standards, but also goes well beyond them 17:39:37 :P 17:39:47 you mean extensive ? 17:41:09 -!- schmir [~schmir@mail.brainbot.com] has quit [Remote host closed the connection] 17:51:08 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 17:51:58 i don't know what you mean by extensive 17:53:50 Oejet [~oejet@212.45.122.120] has joined #scheme 17:55:10 somnium [~user@184.42.17.189] has joined #scheme 17:55:27 -!- foof` is now known as foof 18:00:38 nilg [~user@85.239.138.109] has joined #scheme 18:03:35 Adamant [~Adamant@c-68-51-145-83.hsd1.ga.comcast.net] has joined #scheme 18:03:35 -!- Adamant [~Adamant@c-68-51-145-83.hsd1.ga.comcast.net] has quit [Changing host] 18:03:35 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme 18:04:27 -!- femtoo [~femto@95-89-197-196-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 18:05:41 Can I ask about the different between Lisp and Scheme ? 18:09:01 -!- drdo [~user@2001:690:2100:1b:226:8ff:fef7:3d9e] has quit [Ping timeout: 272 seconds] 18:09:40 -!- Euthydemus [~euthydemu@vaxjo7.80.cust.blixtvik.net] has quit [Ping timeout: 265 seconds] 18:11:46 theres quite a few, scheme has a unified namespace for values and functions, scheme has hygienic macros, some lisps are still dynamically scoped, and lisp people can't spell 18:13:15 can't spell ? 18:13:32 progn is not a word 18:13:39 nor is setf or setq 18:13:49 ...that's like saying strtoul isn't a word. 18:13:55 yes, C people also cannot spell 18:13:57 That doesn't mean anything about people's spelling ability. 18:13:58 :-P 18:14:02 Hahahaha. 18:14:06 evidence is 9/10ths of the law 18:14:20 or possession or whatever 18:15:32 oh you guys are funny 18:15:35 :D 18:16:13 can anyone tell me why the module example from the guile source does not work with guile? 18:16:31 Gmind, i was not joking 18:19:40 gravicappa [~gravicapp@ppp85-140-119-231.pppoe.mtu-net.ru] has joined #scheme 18:25:12 -!- githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has quit [Remote host closed the connection] 18:25:42 Riastradh [debian-tor@fsf/member/riastradh] has joined #scheme 18:27:10 Euthydemus [~euthydemu@vaxjo7.80.cust.blixtvik.net] has joined #scheme 18:40:24 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Remote host closed the connection] 18:40:25 Gmind: jonrafkind is joking about the "can't spell", but the possession is nine-tenths of the law is for serious. 18:40:36 no im not joking about 'cant spell' 18:41:00 Okay, neither am I joking when I say that jonrafkind can't spell, either. :-P 18:42:46 -!- MichaelRaskin [~MichaelRa@195.178.216.22] has left #scheme 18:46:43 -!- tonyg [~tonyg@navarone.ccs.neu.edu] has quit [Quit: leaving] 18:47:00 tonyg [~tonyg@navarone.ccs.neu.edu] has joined #scheme 18:47:59 creat 18:48:12 Quadrescence [~Quad@unaffiliated/quadrescence] has joined #scheme 18:48:35 franki^ 18:52:01 Gmind 18:55:24 dzhus89 [~sphinx@95-27-155-132.broadband.corbina.ru] has joined #scheme 18:56:42 -!- dzhus [~sphinx@95-24-83-113.broadband.corbina.ru] has quit [Ping timeout: 250 seconds] 18:58:58 -!- nilg [~user@85.239.138.109] has quit [Read error: Operation timed out] 19:02:09 yo 19:02:44 I am going to learn some fun in IronScheme with "the little schemer" 19:02:49 is that fine for beginner ? 19:02:50 :P 19:03:01 RageOfThou [~RageOfTho@users-55-101.vinet.ba] has joined #scheme 19:07:02 -!- MrFahrenheit [~RageOfTho@users-33-107.vinet.ba] has quit [Ping timeout: 255 seconds] 19:08:15 I've never used IronScheme, but it sounds good to me. If you have any problems you can come here and discuss them :) 19:08:18 dfkjjkfd [~paulh@144-13-ftth.onsnetstudenten.nl] has joined #scheme 19:08:43 what's atom ? 19:08:45 anyway 19:09:27 I think The Little Schemer explains that concept quite thoroughly 19:10:09 is this () a list ? 19:10:14 if that's a list 19:10:23 then there is problem with Ironscheme 19:11:53 Gmind: it's one particular print representation of the empty list, yeah, but it's not an expression. You'd have to type "'()" for that 19:12:00 (equivalently, (quote ())) 19:12:46 just as (1) isn't a valid expression (because 1 isn't a procedure) but '(1) and (quote (1)) and (list 1) both are. 19:12:49 *all are. 19:13:22 but "()" is equal to a string ? 19:13:26 isn't it ? 19:14:00 I mean you'd type '() 19:14:02 -!- cinch [~cinch@unaffiliated/cinch] has quit [Ping timeout: 250 seconds] 19:14:09 that is, apostrophe, open paren, close paren 19:15:12 oops, thanks 19:15:19 rudybot: eval () 19:15:22 tonyg: your sandbox is ready 19:15:22 tonyg: error: eval:1:0: #%app: missing procedure expression; probably originally (), which is an illegal empty application in: (#%app) 19:15:28 rudybot: eval '() 19:15:28 tonyg: ; Value: () 19:15:33 rudybot: eval "'()" 19:15:34 tonyg: ; Value: "'()" 19:15:48 both work 19:15:49 :P 19:16:04 could a valid list be '(1,2,3) 19:16:09 Gmind: no 19:16:10 Gmind: Only in Clojure. 19:16:17 rudybot: '(1 2 3) 19:16:17 tonyg: ; Value: (1 2 3) 19:16:23 rudybot: (list 1 2 3) 19:16:23 tonyg: ; Value: (1 2 3) 19:17:27 tonyg : worked :D 19:17:49 woow, I don't expect to see so much different here 19:18:34 even Haskell or F# don't have things like this 19:18:58 remind me of exactly math stuff :P 19:23:10 cinch [~cinch@85-127-97-42.dynamic.xdsl-line.inode.at] has joined #scheme 19:23:10 -!- cinch [~cinch@85-127-97-42.dynamic.xdsl-line.inode.at] has quit [Changing host] 19:23:11 cinch [~cinch@unaffiliated/cinch] has joined #scheme 19:24:02 Gmind: give it a bit. After a week or two you won't notice the syntax anymore. It is a little jarring at first 19:24:51 everyone encounter this at 1st ? 19:25:39 githogori [~githogori@220.sub-75-210-40.myvzw.com] has joined #scheme 19:26:46 Gmind: yep. Though it was, oh, 18 years ago I first encountered Scheme, so my memories of what it is like to be a beginner aren't very fresh :-) 19:28:11 -!- chemuduguntar [~ravi@118-92-129-45.dsl.dyn.ihug.co.nz] has quit [Remote host closed the connection] 19:28:15 god, you have used it for 18 years ! 19:28:20 nearly my age now 19:29:56 HG` [~HG@xdslee254.osnanet.de] has joined #scheme 19:31:07 yup, it's a grim prospect all right 19:31:41 So did you start with Scheme or LISP 1st ? 19:31:46 Scheme. 19:31:59 Never got my head around common lisp. There's still time, I figure. 19:33:49 I started out with a copy of R4RS that a friend mailed me. It's a good introduction, actually, and sets a reasonable context for later developments. 19:34:24 seem like a coincidence 19:37:32 tonyg: what implementation of scheme r u using right now ? 19:37:56 Gmind: scheme is probably what you want to learn. If you're well-versed in scheme, you'd be able to work on a common lisp project pretty easily, and scheme will have fewer distracting warts while you're learning 19:38:04 Gmind: mostly Racket (nee PLT Scheme). Previously, a lot of SISC and some Chicken. 19:38:14 and PLT racket is nearly as big as any common lisp 19:38:21 I agree 19:38:51 Not only is Scheme a more reasonable-sized language, it's also much closer to lambda-calculus 19:40:16 dzhus8989 [~sphinx@95-27-111-249.broadband.corbina.ru] has joined #scheme 19:41:34 -!- dzhus89 [~sphinx@95-27-155-132.broadband.corbina.ru] has quit [Ping timeout: 240 seconds] 19:41:34 -!- ASau [~user@95-26-92-70.broadband.corbina.ru] has quit [Remote host closed the connection] 19:41:36 hi there tonyg 19:41:40 tonyg, I've wanted to reach you for the last little while, but apparently don't have a good e-mail address for you. 19:42:00 oh! 19:42:07 I began using your packrat parser, but on not being able to reach you, wrote one of my own. 19:42:15 cool 19:42:18 ASau [~user@95-26-92-70.broadband.corbina.ru] has joined #scheme 19:42:23 It's become quite advanced at this point. 19:43:22 great. I've not been active in the scheme community over the past few years, so I haven't been maintaining any of my old code properly 19:43:34 The largest difference between mine and yours is that I wrote a compiler for PEG grammars => scheme. 19:43:42 nice 19:43:46 that's pretty cool 19:43:47 I'd at least like to say that I wouldn't have started this project without being exposed to your parser, so thank you. 19:44:06 np. I hope it was of some help. 19:44:20 aisa, sort of like this? https://github.com/kazzmir/Pegs/blob/master/peg.rkt 19:44:21 I've personally moved on to using an OMeta-inspired system rather than the packrat library 19:45:19 Someone pointed me to OMeta recently, but I don't quite understand how it differs from packrat parsing? 19:45:43 Pegs is the only other scheme packrat parser I know of, other than yours and mine. 19:45:51 it supports recursion into a single token, so can match trees 19:45:56 rather than just sequences 19:46:05 -!- dzhus8989 [~sphinx@95-27-111-249.broadband.corbina.ru] has quit [Ping timeout: 245 seconds] 19:46:05 aisa, I wrote pegs, fwiw 19:46:07 but it's actually very close under the covers 19:46:23 kanrafkind: I'm Alan Post, we've corresponded on the PEG mailing list. 19:46:36 oh ok 19:47:12 My parser takes files like this: 19:47:13 http://bugs.call-cc.org/browser/release/4/genturfahi/trunk/genturfahi.peg 19:47:21 and turns them into this sort of scheme code: 19:47:28 http://bugs.call-cc.org/browser/release/4/genturfahi/trunk/bootstrap.scm 19:49:11 aisa: Curious, are you a Dvorak typist? It's hard to mistype jon as kan in qwerty, but perhaps you're using neither layout. :-P 19:49:29 cky: I am on dvorak, and it does affect my typos. good catch. 19:49:40 :-D 19:49:51 I've been a Dvorak typist since 2003, so, I'm keenly aware of these things. :-) 19:50:26 I don't recall my exact year, but it is in that timeframe. 19:50:36 :-D 19:51:15 When I get around to writing my own Scheme-based OS (in my Copious Free Time, right), I plan to make Dvorak the default layout. qwerty support can be downloaded as a custom keymap. :-P 19:51:37 cky: that'll keep the rabble out ;-) ;-) 19:51:41 Hehehehehe. 19:52:17 hey, can I ask how to run scheme interpreter inside gVIM ? 19:53:06 Gmind: Google "vim slime". 19:53:11 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 19:53:13 You'll find a couple of scripts that you can use. 19:53:20 thanks 20:04:35 heiz [~heiz@ppp89-110-11-77.pppoe.avangarddsl.ru] has joined #scheme 20:04:42 Hi! 20:05:01 Can anyone explain me how call/cc works? 20:06:13 masm [~masm@2.80.139.184] has joined #scheme 20:07:23 schmir [~schmir@p54A914ED.dip0.t-ipconnect.de] has joined #scheme 20:07:53 heiz: http://community.schemewiki.org/?call-with-current-continuation 20:08:30 heiz: Have you used call-with-values before, and do you "get" how it works? 20:08:42 no 20:08:47 heiz: Okay, never mind. 20:08:47 that's a problem 20:09:10 heiz: call-with-values isn't directly related to call/cc, but it uses something called CPS (continuation passing style). 20:09:23 heiz: And if you understand CPS, then understanding call/cc is easier. 20:09:38 turbofail [~user@adsl-99-50-22-193.dsl.pltn13.sbcglobal.net] has joined #scheme 20:10:09 ok. I'll have a look on CPS. thanks 20:10:38 Good luck. :-) 20:13:25 -!- Gmind [~Welcome@113.190.160.104] has quit [Quit: Leaving.] 20:13:46 Gmind [~Welcome@113.190.160.104] has joined #scheme 20:17:43 -!- heiz [~heiz@ppp89-110-11-77.pppoe.avangarddsl.ru] has quit [Quit:     (xchat 2.4.5  )] 20:18:35 -!- schmir [~schmir@p54A914ED.dip0.t-ipconnect.de] has quit [Ping timeout: 245 seconds] 20:21:34 . 20:22:55 ? 20:23:38 ah ,noo... I'm just testing if I'm on the channel :P 20:23:49 Heh. 20:24:17 hey, is that much different between LISP and Scheme ? 20:24:37 If by "LISP" you mean Common Lisp, then yes, huge differences. 20:24:42 I'm thinking about choosing between them :P 20:24:43 yeah 20:24:46 Common Lisp 20:25:44 I think, asking whether you should use CL or Scheme in #scheme, is like asking whether you should vote Republican or Democratic in a gathering of Democrats. 20:26:00 no 20:26:07 don't even mean that 20:26:45 but if you say so, then , they really are different 20:27:00 Put it this way: 20:27:08 They are as different as Java vs JavaScript. 20:28:02 Java and JavaScript may, on the surface, have similar syntax, but they are very, very different languages. 20:29:23 Unthahorsten [~Unthahors@del63-3-88-177-167-25.fbx.proxad.net] has joined #scheme 20:29:56 ...... 20:30:58 Ok, i'll try to find out ... or... it's ok to learn both :D 20:33:59 Yeah, play with both a bit. Then you'll see just how different they are. :-P 20:41:00 Gmind: Oh, and for the record, I've never played Starcraft. 20:43:04 really ? 20:43:20 -!- HG` [~HG@xdslee254.osnanet.de] has quit [Quit: Leaving.] 20:43:39 btw, I have just create a page for scheme & Iron Scheme on FB , if anyone here have a FB acc, then .. :D http://www.facebook.com/pages/IronScheme/182742655075725 20:45:07 *franki^* would despise Facebook even if they had any regard for privacy whatsoever 20:45:17 But that's because I've used their API :P 20:45:34 drdo [~user@2.208.54.77.rev.vodafone.pt] has joined #scheme 20:45:36 for what ? 20:45:38 :D 20:45:39 APIs, I suppose 20:45:42 by Scheme ? 20:45:44 =)) 20:46:04 Unfortunately not, for work, with PHP. It's painful, I'd rather not talk about it. 20:46:09 This is a happy place 20:47:38 IRC freenode 20:47:40 :) 20:47:50 well .. 20:48:04 Scheme have Macro , right ? 20:49:04 Yes, Scheme has macros 20:51:47 Modius [~Modius@cpe-70-123-158-125.austin.res.rr.com] has joined #scheme 20:54:08 -!- jimrees_ [~jimrees@ita4fw1.itasoftware.com] has quit [Ping timeout: 255 seconds] 20:54:39 yamanu [~yamanu@89.142.205.233] has joined #scheme 20:57:57 can you make a simple example ? 20:57:57 :P 21:01:15 Gmind, (define-syntax-rule (while condition body ...) (let L () (when condition body ... (L)))) 21:01:39 that's a Racket example, but minor changes would allow it to work in a different Scheme 21:03:21 (define-syntax) could work ? 21:03:58 (define-syntax (syntax-rules () ((while condition body ...) (let L () (if condition (begin body ... (L)) #f)))) 21:04:11 What samth said. 21:04:21 The #f is optional in most implementations of Scheme except Racket. 21:05:48 yo 21:05:53 rudybot: (define-syntax while (syntax-rules () ((while condition body ...) (let L () (if codition (begin body ... (L)) #f)))) 21:05:53 cky: (define-syntax (syntax-rules () ((while condition body ...) (let L () (if condition (begin body ... (L)) #f)))) 21:06:01 rudybot: eval (define-syntax while (syntax-rules () ((while condition body ...) (let L () (if codition (begin body ... (L)) #f)))) 21:06:02 cky: your racket sandbox is ready 21:06:03 cky: error: eval:1:0: read: expected a `)' to close `(' 21:06:06 rudybot: eval (define-syntax while (syntax-rules () ((while condition body ...) (let L () (if codition (begin body ... (L)) #f))))) 21:06:06 cky: Done. 21:07:10 :D 21:07:20 woo , i must say I like this channel 21:08:48 jimrees_ [~jimrees@ita4fw1.itasoftware.com] has joined #scheme 21:09:27 thanks guys 21:10:26 Heh, it's got a typo still. Oh well. 21:14:26 jcowan [c6b912cf@gateway/web/freenode/ip.198.185.18.207] has joined #scheme 21:14:32 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Read error: Connection reset by peer] 21:14:55 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 21:15:05 *jcowan* unvanishes. 21:19:55 Gmind, is iron scheme a scheme for .NET ? Where does all that Iron come from? Advanced radioactive decay? 21:22:05 comes from successive fusion reactions 21:22:16 then distributed via supernova 21:23:05 yep 21:23:09 http://stackoverflow.com/questions/1194309/why-are-many-ports-of-languages-to-net-prefixed-with-iron 21:23:09 http://tinyurl.com/39c2d3f 21:23:34 Iron stuff is all stuff implemented on .NET 21:24:25 I think Schemer should give it a try :P 21:25:08 or a helping hand , 'cause it 's still being built by leppie 21:25:08 how does ironscheme compare to jrm's mitscheme for .net ? 21:25:14 http://ironscheme.codeplex.com 21:25:54 its version now is 1.0 RC 1, so I think not much things here yet 21:26:30 Fare: IronScheme does not have `call/cc'. 21:26:58 I think it will :P if someone make it 21:27:03 does kawa? 21:27:11 No, Kawa doesn't either. 21:27:18 Gmind: Do you understand why that's not trivial at all? 21:28:08 call/cc ? 21:28:13 or IronScheme ? 21:28:30 Supporting `call/cc' in something like IronScheme. 21:29:45 chandler: SISC does it the cheater's way. :-P (Using the heap for call frames.) 21:30:05 how is it cheating??? 21:30:20 Fare: It's cheating in the sense that you're completely bypassing the native runtime stack. 21:30:28 Of course, I think it's an awesome way. 21:30:31 Why is that cheating? 21:30:56 i think by "cheating" he meant "slow" 21:30:57 I didn't mean that in a negative way at all, just that most implementations that don't support full call/cc use the native stack. 21:31:30 So, using the heap is, in a way, a sleight of hand. Perhaps I should have picked a different word. My bad. 21:32:18 cky: I think CommonLarceny does the same 21:32:24 leppie: Nice. :-) 21:32:25 -!- mmc [~michal@cs181178061.pp.htv.fi] has quit [Ping timeout: 240 seconds] 21:32:38 some use the native stack, until they don't - like jrm's scheme. 21:32:42 not very efficient thought :( 21:33:14 Fare: You mean it uses the native stack until someone needs to use call/cc, then switches on the fly? 21:33:28 Mine uses the native stack, but most calls never return. ;-) 21:33:41 jimrees_: Right, but JVM/.NET won't let you do that. 21:33:46 At least not straightforwardly. 21:34:59 None of the features of JVM/.NET would matter to me, so I implemented in c++. 21:35:05 :-D 21:38:50 anybody know how stalin does call/cc? 21:39:06 Fare: the call/cc in IronScheme is more like call-with-escape-continuation from Racket 21:39:25 it covers the general use case at least :) 21:44:50 -!- Unthahorsten [~Unthahors@del63-3-88-177-167-25.fbx.proxad.net] has quit [Quit: goodbye] 21:46:06 schmir [~schmir@p54A914ED.dip0.t-ipconnect.de] has joined #scheme 21:46:22 leppie: I don't think "general" means what you think it means. 21:46:49 He's using an engineer's definition of `general', chandler, not a mathematician's. 21:47:01 Naturally, these are diametrically opposite definitions. 21:49:25 turbofail: At a very superficial glance at Stalin's sources, it appears to do CPS conversion. 21:49:54 yeah, i was just looking at the man pages and it mentions that too 21:50:51 says it does a partial CPS conversion 21:50:53 Kinda. Stalin performs flow analysis to find parts of the program that it can prove do not need the general CWCC: for those, it generates C in direct style (with setjmp and longjmp). For the parts of the program for which it can't prove this, it generates C in continuation-passing style. 21:51:34 Nice. 21:52:50 It would be quite feasible to use Chicken style on the CLR or the JVM, however. 21:53:45 jcowan: That's true, or at least is worth trying. 21:54:29 jcowan: In the JVM, throwing exceptions is cheap (creating the exception object is expensive), so the usual strategy is to create an exception object ahead of time, and just throw it around to bounce up all those stack levels. 21:55:43 Quite so. Also, the expensive part of creating exceptions is Throwable.fillInStackTrace, so you can subclass RuntimeException and override that method with an empty body. 21:56:31 Oh wow. I didn't know that it's non-final. 21:56:44 *cky* just learnt something new. 21:58:03 githogori_ [~githogori@220.sub-75-210-40.myvzw.com] has joined #scheme 21:58:53 -!- githogori_ [~githogori@220.sub-75-210-40.myvzw.com] has quit [Read error: Connection reset by peer] 21:59:02 githogori_ [~githogori@220.sub-75-210-40.myvzw.com] has joined #scheme 21:59:17 -!- githogori_ [~githogori@220.sub-75-210-40.myvzw.com] has quit [Read error: Connection reset by peer] 22:02:40 -!- schmir [~schmir@p54A914ED.dip0.t-ipconnect.de] has quit [Ping timeout: 240 seconds] 22:04:52 mmc [~michal@cs181178061.pp.htv.fi] has joined #scheme 22:08:40 -!- gravicappa [~gravicapp@ppp85-140-119-231.pppoe.mtu-net.ru] has quit [Ping timeout: 250 seconds] 22:15:59 yo 22:16:04 ;)) 22:17:09 gravicappa [~gravicapp@ppp85-140-119-231.pppoe.mtu-net.ru] has joined #scheme 22:17:16 leppie: r u there ? 22:17:42 trouble on importing clr DLL assembly 22:18:49 Azuvix [~Azuvix@174-27-34-218.bois.qwest.net] has joined #scheme 22:19:49 Gmind: Just ask the question. leppie will respond when present/able. 22:20:04 Gmind: ("trouble on importing clr DLL assembly" is probably not specific enough.) 22:20:58 Gmind: Consider pastebinning (or perhaps lisppasting, though it's not Lisp here) any exception and/or error messages that come up. 22:22:01 (oh... I see, so just whisper like this ? ) 22:22:41 What I mean is, you have to explain your problem in more detail. Obviously, it must work for leppie, or else it wouldn't be specified as a feature. 22:23:07 So, explain, perhaps in a pastebin post: 1. what you've tried (exact steps), 2. what you expected to see, 3. what you saw instead. 22:23:26 Under item 3, you would paste in any error and/or exception messages, verbatim with any stack traces present. 22:23:31 :P uhm.. ok . 22:23:56 Gmind: That is the standard protocol for asking for any kind of technical help. :-) 22:25:24 Gmind: In the case of a code-related question, item 1 would involve pasting a _minimal_ example that triggers the problem. 22:27:50 Mandar [~armand@pha75-21-78-228-186-233.fbx.proxad.net] has joined #scheme 22:30:05 -!- mmc [~michal@cs181178061.pp.htv.fi] has quit [Ping timeout: 240 seconds] 22:30:42 leppie: here come the code : http://pastebin.com/sQ3pGZPq 22:31:16 I am really confuse on import and using stuff with .NET assembly 22:31:31 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 22:32:18 Gmind: You definitely cannot say "(clr-reference bwapi-clr.dll)", because the Scheme reader will choke on that. 22:32:33 You might be able to say (clr-reference "bwapi-clr.dll"), though. 22:32:38 Why will the Scheme reader choke on that? 22:32:59 rudybot: '(clr-rreference bwapi-clr.dll) 22:33:00 Riastradh: your sandbox is ready 22:33:00 Riastradh: ; Value: (clr-rreference bwapi-clr.dll) 22:33:35 Riastradh: Hmm, I take that back. I always thought . is special because it's used for dotted pairs. 22:34:07 . is not a delimiter, however, and is a valid symbol constituent. 22:34:48 I see. Thanks for explaining that. :-) 22:34:56 could "./bwapi-clr.dll" be fine ? 22:35:37 since I put the file in the same folder with my scheme file ? 22:35:38 DrDuck [~duck@146.229.119.109] has joined #scheme 22:35:53 ...that's something I'll leave for leppie to answer. 22:37:39 ok, I put on the full path 22:37:45 it got the right one 22:37:47 but can't load 22:38:03 =.= must wait for leppie 22:38:21 I have done this on IronPython , IronRuby too 22:38:28 so IronScheme should work too 22:38:36 hope that :P 22:39:24 cky: if I import C++ native , how it would be in Scheme ? 22:39:45 will I need C++ header and its src code ? 22:39:46 What does "import C++ native" even mean? 22:39:59 ya, for example 22:40:06 *cky* does not use IronScheme, BTW. So if it's IronScheme-specific, I can't help. :-( 22:40:12 I want to import C++ DLL library 22:40:28 no , this time is in scheme 22:40:30 :P 22:40:35 Oh, I see. You want to use some sort of FFI. 22:40:40 ya 22:40:46 FFI ? 22:40:52 is it complicated ? 22:41:09 FFI == foreign function interface; it's a way to call into C libraries. 22:41:47 Example of an FFI: http://docs.racket-lang.org/foreign/ 22:42:03 most people here use racket ? 22:42:17 Not necessarily. Many Scheme implementations have FFIs too. 22:43:56 -!- Oejet [~oejet@212.45.122.120] has quit [Ping timeout: 255 seconds] 22:44:25 FFI could work with .dll ? 22:45:15 -!- aisa [~aisa@173-10-243-253-Albuquerque.hfc.comcastbusiness.net] has quit [Quit: aisa] 22:45:33 binding to a C++ library will be painful because you have to deal with name mangling 22:45:42 unless you are only dealing with C exported symbols 22:48:21 -!- DrDuck [~duck@146.229.119.109] has left #scheme 22:48:32 seem to be complicated 22:48:43 -!- yamanu [~yamanu@89.142.205.233] has quit [Ping timeout: 276 seconds] 22:50:04 name mangling is well defined for a particular compiler so its not terribly hard to do, just annoying 22:50:17 jonrafkind: One day, I want to write an FFI that could work (to a point) with the C++ ABI (as used by gcc, Intel, etc.). 22:50:41 shadow_walker [~shadow_wa@189.110.53.152] has joined #scheme 22:50:41 That's easy. You have a C++ compiler handy, right? 22:50:45 i almost attempted such a thing a while back, but the idea passed quickly enough 22:50:55 jonrafkind: Hahaha. 22:51:44 -!- homie [~user@xdsl-78-35-144-183.netcologne.de] has quit [Read error: Connection reset by peer] 22:52:19 Gmind: Riastradh's suggestion (if it's what I think it is) is right on the money. Just write a supplementary library, that includes your C++ header files, and exports them with extern "C". (You will need to do some tweaking for features that are C++-only, like passing-by-reference, namespaces, etc.) 22:52:44 T___T 22:52:49 homie [~user@xdsl-78-35-144-183.netcologne.de] has joined #scheme 22:53:11 Oejet [~oejet@212.45.122.120] has joined #scheme 22:53:25 I'm not C++ expert 22:53:33 Also add to the list: function overloading, operator overloading, virtual functions, etc. 22:53:48 Gmind: Is there a specific C++ library you're trying to use, then? 22:53:57 yes 22:54:04 Gmind: Someone well-versed in C++ can easily create decent C bindings for it. 22:54:06 -!- githogori [~githogori@220.sub-75-210-40.myvzw.com] has quit [Remote host closed the connection] 22:54:14 I forgot almost everything related to C++ 22:54:28 (I'd offer to do it, but the library you have in mind has to be interesting enough to me for me to want to spend the time on it. :-P) 22:55:40 -!- asumu [~at@nomad.ccs.neu.edu] has quit [Ping timeout: 245 seconds] 22:56:42 :P 22:56:44 oh... 22:56:49 it's BWAPI.dll 22:56:59 do you play Starcraft ? 23:02:04 -!- masm [~masm@2.80.139.184] has quit [Quit: Leaving.] 23:02:20 cky ? 23:06:14 Nope. :-P 23:06:19 Is bwapi for Starcraft, then? 23:06:30 -!- bweaver [~user@host-68-169-175-225.WISOLT2.epbfi.com] has quit [Ping timeout: 245 seconds] 23:08:08 -!- shadow_walker [~shadow_wa@189.110.53.152] has left #scheme 23:08:14 yes 23:08:30 masm [~masm@bl19-139-184.dsl.telepac.pt] has joined #scheme 23:08:30 it's an API for controlling game 23:08:33 from outside 23:08:48 http://code.google.com/p/bwapi/ 23:08:51 here it's 23:11:05 *checks* 23:12:13 -!- Oejet [~oejet@212.45.122.120] has left #scheme 23:12:22 -!- masm [~masm@bl19-139-184.dsl.telepac.pt] has quit [Client Quit] 23:13:13 hey 23:13:31 if a method call from C++ get no input but return bool 23:14:01 should that cause "type not found" if I call (clr-static-call BWAPIClient connect) 23:14:43 *Btw: have just got ironScheme to load my CLR DLL 23:14:58 now just how to use function extracting from that lib 23:14:59 :P 23:17:20 masm [~masm@bl19-139-184.dsl.telepac.pt] has joined #scheme 23:19:39 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has quit [Remote host closed the connection] 23:33:17 -!- homie [~user@xdsl-78-35-144-183.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 23:35:22 asumu [~at@129.10.191.170] has joined #scheme 23:39:00 homie [~user@xdsl-78-35-144-183.netcologne.de] has joined #scheme 23:43:24 -!- langmartin [~user@exeuntcha2.tva.gov] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 23:45:18 -!- cinch [~cinch@unaffiliated/cinch] has quit [Changing host] 23:45:19 cinch [~cinch@85-127-97-42.dynamic.xdsl-line.inode.at] has joined #scheme 23:53:24 -!- Azuvix [~Azuvix@174-27-34-218.bois.qwest.net] has quit [Quit: Leaving] 23:59:01 -!- devinus [~devinus@ps23102.dreamhost.com] has left #scheme