00:05:48 Guest97094 [~user@cust-seco21th2-46-193-64-247.wb.wifirst.net] has joined #scheme 00:06:20 dnolen [~user@pool-96-224-16-85.nycmny.east.verizon.net] has joined #scheme 00:07:11 -!- Guest97094 is now known as pjb` 00:07:25 -!- pjb` is now known as pjb 00:26:44 -!- toekutr [~user@50-0-51-11.dsl.static.sonic.net] has quit [Remote host closed the connection] 00:30:59 -!- youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has quit [Ping timeout: 260 seconds] 00:31:49 -!- karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 00:41:58 Diabellical [~diabellic@ip184-186-1-92.no.no.cox.net] has joined #scheme 00:43:08 all: new to functional programming here, curious about the course 61A at Berkeley...has anyone seen the lectures with Brian Harvey etc? 00:44:40 karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 00:46:04 -!- Diabellical [~diabellic@ip184-186-1-92.no.no.cox.net] has left #scheme 00:48:06 Diabellical [~diabellic@ip184-186-1-92.no.no.cox.net] has joined #scheme 00:49:20 anyone here familiar with the 61A course at UC 00:51:09 -!- Diabellical [~diabellic@ip184-186-1-92.no.no.cox.net] has quit [Client Quit] 00:58:19 -!- ivan\ [~ivan@unaffiliated/ivan/x-000001] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 01:00:04 -!- offby1 [~user@pdpc/supporter/monthlybyte/offby1] has left #scheme 01:01:19 -!- LeoNerd [~leo@fairy.dictatorshipcake.co.uk] has quit [Quit: Client] 01:03:45 Diabellical [~diabellic@ip184-186-1-92.no.no.cox.net] has joined #scheme 01:05:38 LeoNerd [~leo@fairy.dictatorshipcake.co.uk] has joined #scheme 01:07:52 Diabellical: i don't have any personal experience with the course, but Brian Harvey looks like an interesting person. 01:08:12 SICP is an excellent introduction to function programming imo 01:08:38 Diabellical: but it looks like there have been some changes to the course recently: http://www.cs.berkeley.edu/~bh/61a.html 01:10:52 looks like you might want to consider enrolling in 61AS instead 01:12:15 Yes, I am curious about the changes. My understanding is that they are currently using the "spirit of SICP" but in python 01:12:42 both options online are available (lectures with Brian with Scheme, and the newer lectures with Python) 01:13:07 I am curious of anyones take on the teaching of SICP through python vs learning through scheme 01:13:14 I know some basics of programming (with python) 01:16:41 -!- Diabellical [~diabellic@ip184-186-1-92.no.no.cox.net] has quit [Remote host closed the connection] 01:19:09 -!- karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 01:23:59 jcowan [~John@mail.digitalkingdom.org] has joined #scheme 01:24:12 etothepii [~diabellic@ip184-186-1-92.no.no.cox.net] has joined #scheme 01:25:20 bad connection: curious if anyone has any thoughts of the SICP taught via 61A with Scheme vs Python (new version). 01:26:36 I certainly see their point. A friend who wrote (well, adapted) his first bit of Scheme described it as "building a cathedral out of matchsticks." 01:27:36 Kids today (heh heh) just aren't used to not having Every Lib Known To Man available as needed. 01:29:08 Of course, personally I'm working on that. :-) 01:29:32 karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 01:29:45 ivan\ [~ivan@unaffiliated/ivan/x-000001] has joined #scheme 01:32:33 -!- karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 01:37:51 @jcowan, right. Is there reason to think that python-functional with all its libs puts us at a pedagogical disadvantage, or do you think it is reasonable to learn a reasonably pure approach to concepts with these newer tools also? 01:38:42 (only my second time in an IRC room: is the preffered ediquite for talking "at" someone "name: " or "@name"?) 01:39:10 name: 01:39:25 surrounder: thanks 01:45:23 karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 01:49:36 -!- karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 01:51:07 Tau [~Euler@186-194-45-62.i-next.psi.br] has joined #scheme 01:51:12 -!- MrFahrenheit [~RageOfTho@cable-77-221-21-70.dynamic.telemach.ba] has quit [Ping timeout: 264 seconds] 01:52:19 etothepii: Also, the kool kids call them channels. 01:52:55 jcowan: thanks! 01:55:57 etothepii: Python isn't too different from scheme. In this case, the language used is probably not going to put you at any disadvantage. 01:56:21 etothepii: You could also follow along in Scheme by doing the assigned exercises in both languages. 01:56:38 You'll probably have a chance to explore some interesting contrasts. 01:57:09 m4burns: that might be the best option. I really enjoy Brian Harvey's teaching style, but there seem to be some interesting additions to the course as current. 01:58:02 m4burns: I suppose my only consideration was if primarily learning via Scheme would provide a simplicity and elegance that would be more pedagogically valuable 01:58:51 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Ping timeout: 276 seconds] 01:59:55 karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 02:00:09 etothepii: Scheme is syntactically simpler than python, for sure; that simplicity is great for picking up the language and getting right to the meaning of programs without much confusion of reading or writing programs. If you already have experience with python, then this probably doesn't matter. 02:01:27 etothepii: But if you want to consider the elegance of the language, then definitely follow the exercises in Scheme. 02:01:40 m4burns: great, thanks for the advice 02:04:06 etothepii: you're welcome 02:04:39 -!- gffa [~unknown@unaffiliated/gffa] has quit [Quit: sleep] 02:07:16 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Ping timeout: 248 seconds] 02:07:17 -!- karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has quit [] 02:13:08 -!- kk` [~kk@unaffiliated/kk/x-5380134] has quit [Ping timeout: 248 seconds] 02:13:25 how can i create executable files with mit scheme? 02:15:36 b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has joined #scheme 02:23:38 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 02:36:40 that depends on the scheme system you are using 02:39:10 "mit scheme" :) 02:41:14 karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 02:41:56 oh sorry 02:43:27 spiderweb [~lcc@unaffiliated/lcc] has joined #scheme 03:01:33 -!- masm [~masm@bl17-202-197.dsl.telepac.pt] has quit [Quit: Leaving.] 03:15:51 peterhil [~peterhil@91-157-48-10.elisa-laajakaista.fi] has joined #scheme 03:19:01 -!- spiderweb [~lcc@unaffiliated/lcc] has quit [Quit: leaving] 03:19:40 spiderweb [~user@unaffiliated/lcc] has joined #scheme 03:22:21 -!- jrajav [~jrajav@66-188-176-243.dhcp.roch.mn.charter.com] has quit [Quit: phunq, sandwich store loop, WHAT NO UNIVERSE] 03:25:13 cdidd [~cdidd@89-178-119-48.broadband.corbina.ru] has joined #scheme 03:35:49 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 03:42:44 -!- spiderweb is now known as tesla` 03:42:55 -!- tesla` is now known as spiderweb 03:49:12 Tau: see http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-user/Compiling-Programs.html 03:49:13 http://tinyurl.com/blcu5yj 03:50:14 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Ping timeout: 244 seconds] 03:51:23 -!- b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has quit [Remote host closed the connection] 03:52:18 b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has joined #scheme 03:52:22 jcowan i had seen that page. but it seems there is no explanation on how compiling lisp codes as we do with gcc for ex. 03:52:46 jcowan i have compiled lisp code using the (cg "file") thing. it generates a .bci, .bin and a .com. 03:53:08 jcowan i can't execute them in the usual feshion ./compiled-thing 03:53:55 Right, you still have to execute them from Scheme with "load". 03:54:05 Tau: Just shebang it? 03:54:07 yacks [~yacks@180.151.36.171] has joined #scheme 03:54:29 Euthy hmm, shebang? 03:54:38 Yes, you can always create a script that will execute Scheme. If you want real stand-alone executables, you need Gambit or Chicken or Stalin. 03:54:47 Tau: What OS? 03:54:52 jcowan debian. 03:55:28 jcowan so, i cant do something like python file.py with scheme? 03:56:25 *jcowan* boots Linux 03:56:28 Sure you can. 03:57:07 jcowan hmm 03:57:17 jcowan i tried scheme file.scm 03:57:22 but it doesnt seem to work. 03:57:31 Create a world file (analogue of .pyc file) and run it with mit-scheme --band 03:57:49 See http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-user/World-Images.html for details on that. 03:57:50 http://tinyurl.com/d9trvwm 03:58:04 It won't run any faster, but it will execute. 03:58:50 jcowan so, the 'world' file is a .com file, right? 03:58:56 then i do mit-scheme -band file.com? 03:59:09 after compiling it with (cf 'scheme-file') 04:00:24 Try that. It only talks about using (disk-save) at the page there. 04:00:24 -!- b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has quit [Remote host closed the connection] 04:00:33 But maybe it can run compiled files too. 04:00:39 Note that it's now --band, not -band. 04:00:46 (GNU coding standards.) 04:01:45 jcowan i see. 04:01:47 jcowan lemme try. 04:02:04 b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has joined #scheme 04:02:33 Tau: http://en.wikipedia.org/wiki/Shebang_(Unix) 04:02:40 spiderwe` [~user@174-28-174-68.albq.qwest.net] has joined #scheme 04:04:17 Euthy oh. 04:04:19 Euthy i see. 04:04:24 -!- spiderweb [~user@unaffiliated/lcc] has quit [Ping timeout: 264 seconds] 04:04:43 mark_weaver [~user@209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 04:05:26 etothepii: I strongly disagree with m4burns about the differences between Python and Scheme not being important. 04:05:33 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 252 seconds] 04:06:02 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 04:06:26 A great deal of what you can learn from SICP involves exposure to different programming styles that are quite awkward to express in Python. 04:06:28 Well, at one level the difference between Fortran and Cobol isn't important either, but tell that to the compiler authors! 04:07:01 Also, python's support for closures is quite clumsy. 04:07:18 alexei_ [~amgarchin@p4FD61402.dip0.t-ipconnect.de] has joined #scheme 04:07:24 Python is heavily optimized for a particular style of programming, namely object-oriented programming. 04:07:48 more specifically, objects containing mutable state. 04:08:28 jcowan http://codepad.org/unXv9Qde 04:08:33 Stateful objects are one approach to programming that some people seem to think is appropriate in almost all circumstances, but many of us disagree with that. 04:10:32 -!- mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has quit [Ping timeout: 255 seconds] 04:10:45 -!- alexei [~amgarchin@p4FD617CE.dip0.t-ipconnect.de] has quit [Ping timeout: 265 seconds] 04:11:11 That's true. 04:11:35 I have the great desire to design a programming language that is *really* balanced between FP and OO. 04:11:43 -!- spiderwe` [~user@174-28-174-68.albq.qwest.net] has quit [Ping timeout: 260 seconds] 04:11:57 Why not Scala? 04:12:11 jcowan: What do you mean by OO exactly? 04:12:47 (that was in response to "balance between FP and OO") 04:12:58 The reason I ask is that one might consider Haskell to qualify, if OO needn't involve stateful objects. 04:14:02 Haskell I'd consider the extreme at the FP end that isn't, like, totally and completely useless. 04:14:06 or if you want stateful objects, what about CLOS-based systems in Scheme? 04:14:09 Actually my inspiration is Steelman. 04:15:12 *mark_weaver* reads up on Steelman 04:15:20 All languages have a pure and an impure part. In C, the preprocessor is pure and everything else is impure. In Haskell, it's almost all pure except for monadic I/O and all its works. 04:15:57 Scheme and ML have pure and impure totally intertwingled. In Algol 60 (though this was not appreciated at the time) there is a pure metalanguage that generates a simple imperative language. 04:16:22 I'd say that monadic I/O is pure also. 04:16:25 However, it can generate infinite amounts of it, so they would have to be implemented as coroutines. (In practice this is not done, but it could be.) 04:16:43 It's pure until you ask what its actual semantics are, and then it's another story. 04:17:03 Anyway, although Ada is just another intertwingled language, the Steelman requirements have some *very* interesting parts. 04:17:42 In particular, they require both functions and subroutines, which in my vision will be precisely the line between the pure and the impure. 04:18:35 I'll be interested to see what you come up with! 04:19:52 but apart from things like unsafePerformIO, I'm still not sure what is impure about monadic IO. 04:21:19 mark_weaver: I agree that there are significant differences between the languages, but I think that a reasoning student should be able to sort out the exercises SICP gives in Python just as well as in Scheme. 04:21:20 but admittedly, this is not an area of expertise for me... 04:23:03 In particular, I strongly agree that it will be difficult to express some things in Python. 04:23:11 Not for me either. 04:23:16 m4burns: The point is, SICP is about introducing the reader to many different programming styles (which Python is not able to gracefully support), and building things like interpreters and compilers, which becomes considerably more complex when you need to worry about the complex syntax of a language like Python. 04:23:43 However, note that Haskell + IO has to have two semantic layers, only one of which is denotational. What the monad *does* can only be understood (at least by me) operationally. 04:24:02 I don't think Python is very good for higher-order programming either, given that lambdas can only contain expressions, not statements. 04:24:09 haskell io is a crazy business. 04:24:14 toekutr [~user@50-0-51-11.dsl.static.sonic.net] has joined #scheme 04:24:20 i gave up learning haskell due to its io scheme. 04:24:31 mark_weaver: Yes, but for someone who already has experience in Python, the added complexity due to syntax should be acceptable. 04:24:36 sure, you can work around these limitations, but the simple concepts become obscured by the hoops you need to jump through to do these things in Python. 04:25:00 Hmm. I don't think it's of the essence that it's Scheme for which SICP defines compilers/interpreters. You wouldn't want to implement Python in Python as a course project, no, but you could implement something simpler. It's slightly more student-efficient to implement the language you have already learned anyway. 04:25:02 mark_weaver: I suppose it could be discouraging and very annoying. 04:25:36 But not fundamental. 04:25:56 jcowan: That's an important point. The metacircular evaluator idea falls apart in Python, since implementing a Python interpreter is highly nontrivial. 04:26:08 In one of the SICP lectures, an entire meta-circular interpreter is written on the blackboard. try doing that in Python. 04:26:18 Yup. 04:28:15 Sure, but is meta-circularity essential? I think not. Indeed, one of my projects is to write a pedagogical interpreter in Scheme -- for JavaScript: The Good Parts. 04:28:46 haha, that's pretty cool. 04:29:14 For me, SICP opened by eyes to a larger world, by giving me an appreciation for many styles of programming that I'd never seen before. I can't imagine how my eyes could have been opened in the same way in Python, mainly because those other styles are so awkward in Python that I doubt I would be able to appreciate their beauty. 04:29:22 Yes, it won't be as instantly comprehensible as Scheme-in-Scheme, but it also doesn't give you the misleading air of understanding Scheme before you understand it. 04:29:56 and what about The Reasoned Schemer? Try doing that in Python. 04:29:57 mark_weaver: An excellent point, and I agree that SICP wouldn't be improved by rewriting it in Python. The transition of 6.001 reflects something quite different. 04:30:06 I can't even do it in Scheme, personally. 04:30:40 The difficulties there are conceptual, not with the substrate. 04:30:59 mark_weaver: If teaching the beauty of various styles of programming is the objective, then certainly python can not compete with scheme. 04:31:39 For a first course in FP, I'm not sure that beauty need be the objective. 04:31:47 For me, that was the greatest thing I learned from SICP. Otherwise it would have been just another introduction to programming. 04:31:50 In SICP, it's a main focus. 04:32:36 well, i suppose we find that we agree 04:33:15 excellent :) 04:33:35 Beauty may have been the wrong word to use. 04:33:56 expressivity, ease of authorship 04:33:59 To my mind, the aesthetics are not really the important thing. 04:34:07 Back to Haskell, it was only on my current re-read of SPJ's "Talkckling the Awkward Squad" that I really understood why you can throw exceptions anywhere but only catch them in IO. 04:34:12 tackling 04:34:31 It's because throwing has a clear denotational semantics (namely Wrong) but catching is only operational. 04:35:10 However, to give an alternative style of programming a fair introduction, you mustn't use a language that makes it extremely awkward to write code in such a style. 04:35:40 and unfortunately, most programming languages are highly tailored to one or two programming styles, at the expense of all others. 04:37:40 etothepii: If you do decide to take the course, beware ^ and I strongly suggest you go over SICP again in Scheme. 04:37:48 -!- etothepii [~diabellic@ip184-186-1-92.no.no.cox.net] has quit [Quit: Leaving] 04:37:52 well then 04:37:54 jcowan: interesting. I confess it has been many years since I looked carefully at Haskell. I'm not sure why catching could not be defined using denotational semantics, by passing the exceptions back as special return values. 04:38:51 Well, yes, but you'd have to widen the type system insanely. I've thought about doing that. That is sort of what ML does, and Pure too. 04:39:53 I was just about to make the point that programming in the monad only in Haskell is perverse, just as programming only in the preprocessor (more realistically, only in C++ templates) is. The language is unsuited for it and not really unified. 04:40:00 well, every return value could be either one of two things: an exception, or a normal value. the type of an expression would only affect the "normal value" part of the return. 04:40:11 What I want is one unified language that will let you program with equal naturalness either functionally or imperatively. 04:40:30 Yes, SPJ makes that point. It's really an excellent article. 04:41:49 jcowan: Okay, I'll add it to my reading queue. Thanks for the suggestion! SPJ always makes for an interesting read :) 04:41:51 http://research.microsoft.com/en-us/um/people/simonpj/papers/marktoberdorf/mark.pdf 04:41:52 http://tinyurl.com/ydvno8v 04:42:19 I was wondering who Mark Toberdorf was for a while there. 04:43:02 haha :) 04:43:41 jcowan: have you looked at Clean ? 04:44:10 Yes, but not to any profit. Static type systems, frankly, baffle me. 04:44:38 They only began to come clear for me a year or so ago, and even now I have to hold down my visceral loathing for the whole idea. 04:44:49 so why not just use Scheme, or something like it? 04:46:23 In Scheme the functional and the imperative are, as I say, intertwingled. That's a Good Thing, but I want to do a different Good Thing. 04:46:51 What do you mean by intertwingled? 04:46:58 and what different Good Thing do you want? 04:47:02 Also, Steelman calls for a static type system (though it doesn't go into specifics, and certainly doesn't require a monomorphic system), and I find design under constraint an enjoyable challenge. 04:47:34 One in which, as in Haskell, I can point to part of the code and say "This is the functional code" and another and say "This is the imperative code". 04:48:16 In general, Scheme implementations can't do that: a full-program compiler can figure out that everything is functional, but most don't bother because functional-only programs are rare and not too useful. 04:48:48 In particular, in this language functional code can't call imperative code, so it always has a denotational interpretation. 04:49:03 ah, I see.. yes, that would be very useful for compilers. 04:49:21 asasdasd [1810cc9f@gateway/web/freenode/ip.24.16.204.159] has joined #scheme 04:49:40 So maybe Scheme but with an additional type: functions (as opposed to procedures)? 04:49:55 where functions are not allowed to call procedures. 04:50:00 There are more ramifications; I don't think Scheme could be said to meet Steelman. 04:50:03 (as a whole) 04:50:30 An interesting Steelman requirement is that functions need to be able to write to global variables. Steelman does not, however, require that it can read them! 04:51:14 So my idea is to have a "set!" construct which can appear in functions solely to set global variables; the RHS of a set! is the only place in which global variables are in scope in a function. 04:51:26 (By variables I mean truly mutable variables, of course.) 04:51:36 ah, that is indeed interesting. 04:51:56 Ada itself has no restrictions of this sort. 04:52:06 so you could, for example, keep a count of how many times a function has been called... but the return value cannot be affected by those global variables. 04:52:52 In that way IMO it fails the true Steelman challenge, though in a way that was probably unsatisfiable in 1983. 04:53:01 Just so, and in fact S mentions that as one use. 04:53:27 That means that the compiler will have to compile functions with set!s strictly, but can treat all other functions lazily. However, this remains at the level of implementation, not something you can count on. 04:53:42 jcowan: do you have a link to a Steelman paper you like? 04:53:47 Yes. 04:54:22 The wikipedia page on Steelman points to this: http://www.dwheeler.com/steelman/steelman.htm 04:54:40 Does anyone know how to run code in DrRacket or Racket and be able to enter input to it, via std in? 04:54:51 In the GUI the input box keeps disappearing 04:55:03 dwheeler is the originator of the readable lisp project, including SRFI-105 (curly infix) 04:55:37 Yes, that gives Steelman itself plus dwheeler's "Ada, C, C++, and Java vs. The Steelman", which serves as a very useful commentary. 04:55:43 asasdasd: probably better to ask in #racket. Can you pastebin what you have there? 04:56:14 Wheeler's pages have been my source. 04:56:33 ah good idea :) 04:57:21 jcowan: actually, that's a good point about functions with 'set!' having to be treated specially.. that seemingly negates most of the advantages that an optimizer could gain from the distinction between functions and procedures. 04:58:00 jcowan: what is the justification for requiring that functions must be able to mutate globals? 04:58:05 Well, it depends on if you use the feature, which is *locally* apparent. A Scheme compiler can't determine if a procedure is pure functional without being able to trace all its calls, which is the halting problem. Here it's visible in the syntax. 04:59:00 jcowan: it's not locally apparent if a function calls an unknown function (e.g. higher-order functions) 05:00:19 Well, the point about set! is that since it has no denotational semantics, its actions reflect the implementation. If the set!-procedure isn't called because of lazy treatment of its callees, then it isn't called, that's all. 05:00:41 That's in fact what you would want to know when deploying such a counter. 05:02:29 4C says: The language shall attempt to minimize side effects in expressions, but shall not prohibit all side effects. A side effect shall not be allowed if it would alter the value of a variable that can be accessed at the point of the expression. Side effects shall be limited to own variables of encapsulations. The language shall permit side effects that are necessary to instrument functions and to do storage management within functions. The order 05:02:30 of side effects within an expression shall not be guaranteed. [Note that the latter implies that any program that depends on the order of side effects is erroneous.] 05:03:10 I interpret that as meaning that the actual performance of a side effect in a (pure) expression is not guaranteed either. 05:03:32 "Own variables of encapsulations" = static variables or class variables. 05:04:20 well, if an implementation is allowed to call a function fewer times than a strict interpretation of the code would imply (e.g. by common subexpression elimination, partial evaluation, constant folding, or whatever), then of course that's fine. as you say, that's what you want if the global being set is something like a profiling counter or a cache. 05:05:03 Good point that the classical optimizations are a kind of laziness; I never saw that before just now. 05:05:05 though again, I'm not sure why 'set!' can't have a denotational semantics. 05:06:09 the denotational semantics can simply pass the store around, and a 'set!' can simply create a new store that's the same as the old store except for a single location being changed. 05:07:38 jcowan: do you know what was the motivation behind requiring side effects within functions? 05:07:53 *requiring support for side effects 05:09:25 unfortunately, allowing writes but not reads is not enough to implement things like laziness, memoization, caches, etc. 05:09:36 No. 05:09:43 But then we have the procedures. 05:10:16 Well, you can see it right there: "to instrument functions and do storage management". 05:10:31 -!- asasdasd [1810cc9f@gateway/web/freenode/ip.24.16.204.159] has left #scheme 05:10:32 One of the interesting things about Haskell is that even in the pure subset of the language, memoization is still allowed (indeed mandated) internally. 05:11:17 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 248 seconds] 05:11:28 Non-Stalinist compilers for normal (non-Haskellish) languages can't do classical optimizations around procedure calls, because it might break the operational semantics. But (still unnamed language) compilers can. 05:11:40 well, that's also interesting.. because storage management is indeed another case of "pure" constructs using mutation internally.. but that's another case where writes are not enough.. you need reads as well. 05:11:53 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 05:12:14 Yes. One of the roadblocks I've had is thinking about the implications for constructors. 05:12:51 I want to use my Celebes Kalossi design on the class side, which involves stateful traits, but I haven't solved the initialization problem for them. 05:12:52 spiderweb [~lcc@unaffiliated/lcc] has joined #scheme 05:14:16 Is your Celebes Kalossi design written up somewhere? 05:14:34 Not all in one place, alas. 05:15:35 http://recycledknowledge.blogspot.com/search?q=%22celebes+kalossi%22 05:15:47 It's overly terse, for which I apologize. 05:17:02 Also http://recycledknowledge.blogspot.com/2005/06/oop-without-inheritance.html which predates the name. 05:17:17 I've sometimes thought about how to optionally annotate Scheme procedures as being "pure" (in a sense), but the problem I always run into is that, in practice, there needs to be limitations to the purity. In practice, you need to be able to do things like storage allocation, garbage collection, and initialization in constructors... and it is highly desirable to be able to do things like caching, memoization, loging, d 05:17:17 tracing, etc... 05:17:39 *logging, debugging output, tracing, etc... 05:18:43 So that leads to wanting some limited notion of purity, where I can tell the compiler (and the reader of the program) that a given procedure is pure for purposes that the caller needs to care about... 05:18:46 Well, that's my point: programs need both pure and impure procedures, and they should work equally well. Scheme solves that in one way, my designs in another. 05:19:09 Would this annotation be confirmable by the compiler, or does it have to trust the user? 05:19:33 I don't know, I've never come up with a good design. 05:19:56 These complications are what has prevented me from going beyond vague thoughts. 05:21:38 heck, you can't even make a circular structure without mutation. 05:21:50 Scheme is IMHO kind of a local minimum, like Unix: if you don't do things the Scheme way in Scheme, you are punished. Its extensibility is introverted. 05:22:37 I don't understand what you mean. What is the "Scheme way", and how are you punished? Can you give an example? 05:24:37 Well, for example, adding explicit static typing to Scheme always looks like a bag on the side; it can't be done in a way that doesn't break compatibility wholesale. 05:25:52 The minimalist syntax gives this effect. One of the complaints about SRFI 9, for example, is that you can't really add anything to it. SRFI 99 stuffs in about all the features that can be stuffed, and only by extending the conventions until they topple over. R6RS broke with the past and went to a keyword-based syntax, but the R7RS WG rejected it (including me). 05:27:42 You can of course create macros that provide any syntax you want, but most macros still "look like Scheme" and that's because of the introversion of the community. 05:27:46 -!- b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has quit [Remote host closed the connection] 05:29:17 Hmm, I'm not sure how any dynamically-typed language could be converted to a statically-typed one without breaking compatibility, but I confess I haven't thought much about it. 05:29:46 I don't see what attributes of Scheme make this harder to do in Scheme than other languages. 05:30:03 mark_weaver: there's a lot of research in this area, Typed Racket is pretty interesting for something Scheme-like and some of what work is being portd to Clojure as well. 05:31:09 Indeed, Typed Racket sounds very interesting, and I intend to take a close look at it sometime. 05:31:13 the idea that you can add types later to an untyped logic go back to ... Haskell Curry :) 05:31:14 You'd break rigid compatibility adding static types to Python, yes, but you wouldn't break, well, spiritual compatibility. 05:31:31 It would still look like Python. 05:32:07 jcowan: you've possible got Wadler's blame calculus to handle interaction between the typed component and the untyped component. 05:32:10 possibly 05:32:35 I've read about that but can't say I grok it. 05:34:17 An example. Lambda lists in Scheme are lists of identifiers. Now suppose we allow sublists in a lambda list. Does that mean (a) static typing, (b) default values, (c) destructuring bind? One thing is for sure, it can't mean all of them, though all of them would be useful at some time or other. 05:34:38 You could discriminate using keywords, but they are unSchemely. 05:36:00 well, if you want to add static typing, then you'll want to declare the return type as well... so I'd say you need to use something other than 'lambda'. 05:36:25 or alternatively, provide a construct that wraps any expression and also declares its type.. 05:36:37 so then you declare the type of the entire lambda expression. 05:36:59 though I feel foolish for coming up with such ideas off the top of my head when we should be looking at Typed Racket. 05:37:22 I once proposed a solution in Chicken to the asymmetry between a procedure saying how many arguments it can get and not being able to say how many values it returns: 05:37:29 (lambda 4 (a b c) ...) 05:37:34 b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has joined #scheme 05:37:41 Everyone screamed "Ugly! Ugly! Never!" and ordered me out of the house. 05:39:05 jcowan: I guess I don't see why anyone needs to make these decisions as types don't need to be a part of Scheme or a Scheme compiler at all. Optional annotations + a separate tool which delivers the analysis step. To me static typing as opt-in is critical. 05:39:14 well, I'd agree that it would be ugly that way. 05:39:35 That aesthetic judgement is part of what I'm calling being punished for not doing things the Scheme way. 05:39:37 dnolen: I agree. 05:39:56 dnolen: I agree with opt-in, but not with automatic inference. 05:40:18 Typed R says things like [[[ 05:40:19 (: distance (pt pt -> Real)) 05:40:19 (define (distance p1 p2) 05:40:19 (sqrt (+ (sqr (- (pt-x p2) (pt-x p1))) 05:40:19 (sqr (- (pt-y p2) (pt-y p1)))))) 05:40:20 ]]] 05:40:30 jcowan: just because that suggestion would be ugly doesn't mean that there isn't a better solution that isn't so ugly. 05:40:35 Now does that first line look like Scheme to you? 05:40:48 mark_weaver: Yes, I accept that I'm not an arbiter of taste. 05:40:59 It so happens I don't think it's ugly. 05:41:32 jcowan: yes Typed Racket is still relatively new, type inference doesn't seem to be a focus as of yet. 05:41:53 In Chicken, because it CPS-converts everything, continuations should be as efficient as procedures, but they're not because they have to check the number of arguments at run time. 05:42:08 jcowan: I'm hopefully that some of Scheme miniKanren stuff may be put to good use here at least in the Typed Clojure version of Typed Racket. 05:42:11 dnolen: it uses local type inference and intentionally doesn't use global type inference. 05:42:17 There is obviously no way to deduce (short of whole-program optimization) how many values a procedure returns, so there should be a way to write it down. 05:42:29 that typed racket example looks good to me, though perhaps the '->' syntax in the type is not very schemey. 05:42:40 Thuryago. 05:42:56 dnolen: though its inference could still be improved with, say, the stuff they're using in Scala. 05:43:16 asumu: yes, I've seen ambrosebs talk about that a bit. Certainly would need to type standard lib first - but I don't see why downstream libs couldn't mostly be inferred. 05:44:24 dnolen: some of the type system features makes global type inference more difficult and possibly intractable, IIRC. 05:45:01 After much thinking and muddling, I have decided to use sigils in Flopsy, my NotQuiteScheme, precisely because although they are unSchemely, they are *permitted* in Scheme, and so code in Flopsy will also run in Scheme correctly. 05:46:14 asumu: I've heard that, though I don't understand the details enough. Curious to find out more. 05:48:20 dnolen: samth would know better, but I think features like intersection function types (useful for typing case-lambdas) are challenging for inference. 05:50:49 Another thing that makes Steelman attractive today is that IEEE decimal floats satisfy Steelman's demand for fixed-point numbers nicely (and more). 05:59:44 wow, interesting conversation.. 06:00:47 jcowan: the article you posted is interesting 06:01:49 Which? 06:02:19 jcowan: I've just read the first one.. I need to read the second. 06:02:46 (note: I am a newbie learning scheme right now) 06:03:04 but I do find the article very interesting. 06:03:50 spiderweb: You mean the Awkward Squad paper? 06:04:43 jcowan: http://recycledknowledge.blogspot.com/search?q=%22celebes+kalossi%22 06:04:57 celebes kalossi 06:05:21 ah. Thanks. 06:05:29 That I will take credit for, not the others! 06:05:33 :-) 06:11:17 -!- dnolen [~user@pool-96-224-16-85.nycmny.east.verizon.net] has quit [Ping timeout: 245 seconds] 06:21:36 -!- spiderweb [~lcc@unaffiliated/lcc] has quit [Quit: leaving] 06:22:02 -!- sirdancealot [~sirdancea@98.82.broadband5.iol.cz] has quit [Ping timeout: 246 seconds] 06:22:10 spiderweb [~user@unaffiliated/lcc] has joined #scheme 06:23:02 sirdancealot [~sirdancea@98.82.broadband5.iol.cz] has joined #scheme 06:25:04 -!- mark_weaver [~user@209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Ping timeout: 250 seconds] 06:31:29 -!- Obfuscate [~keii@unaffiliated/obfuscate] has quit [Ping timeout: 246 seconds] 06:32:41 Obfuscate [~keii@unaffiliated/obfuscate] has joined #scheme 06:43:41 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 06:47:12 Nisstyre-laptop [~yours@oftn/member/Nisstyre] has joined #scheme 06:48:39 -!- r126l [~ruwin126@120.142.67.254] has quit [Ping timeout: 246 seconds] 06:49:20 -!- pchrist [~spirit@gentoo/developer/pchrist] has quit [Ping timeout: 246 seconds] 06:49:42 pchrist [~spirit@gentoo/developer/pchrist] has joined #scheme 06:50:38 r126l [~ruwin126@120.142.67.254] has joined #scheme 06:52:08 -!- alexei_ [~amgarchin@p4FD61402.dip0.t-ipconnect.de] has quit [Read error: Connection reset by peer] 07:00:54 -!- nego [~nego@c-98-226-254-138.hsd1.il.comcast.net] has quit [Quit: Lost terminal] 07:20:54 jewel [~jewel@105-236-138-67.access.mtnbusiness.co.za] has joined #scheme 07:24:21 -!- nowhereman [~pierre@AStrasbourg-551-1-47-42.w92-148.abo.wanadoo.fr] has quit [Read error: Connection reset by peer] 07:27:06 nowhere_man [~pierre@AStrasbourg-551-1-47-42.w92-148.abo.wanadoo.fr] has joined #scheme 07:36:33 gravicappa [~gravicapp@ppp91-77-166-37.pppoe.mtu-net.ru] has joined #scheme 07:39:07 -!- jcowan [~John@mail.digitalkingdom.org] has quit [Quit: Leaving] 07:42:35 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 252 seconds] 07:43:13 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 07:46:35 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Quit: Leaving] 07:50:33 -!- yacks [~yacks@180.151.36.171] has quit [Ping timeout: 252 seconds] 08:00:27 -!- jonrafkind [~jon@racket/jonrafkind] has quit [Ping timeout: 252 seconds] 08:05:44 -!- spiderweb [~user@unaffiliated/lcc] has quit [Quit: ] 08:10:36 spiderweb [~user@unaffiliated/lcc] has joined #scheme 08:12:24 jrapdx [~jra@c-76-115-235-187.hsd1.wa.comcast.net] has joined #scheme 08:24:12 yacks [~yacks@180.151.36.171] has joined #scheme 08:26:02 pnpuff [~Eternit9a@unaffiliated/pnpuff] has joined #scheme 08:29:42 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 08:30:44 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 08:40:24 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Ping timeout: 264 seconds] 08:42:53 -!- pnpuff [~Eternit9a@unaffiliated/pnpuff] has quit [Quit: leaving] 08:46:37 -!- toekutr [~user@50-0-51-11.dsl.static.sonic.net] has quit [Remote host closed the connection] 08:49:42 -!- spiderweb [~user@unaffiliated/lcc] has quit [Remote host closed the connection] 08:51:30 spiderweb [~user@unaffiliated/lcc] has joined #scheme 09:02:26 -!- gravicappa [~gravicapp@ppp91-77-166-37.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 09:20:33 youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has joined #scheme 09:50:08 -!- wbooze [~wbooze@xdsl-78-35-189-199.netcologne.de] has quit [Ping timeout: 265 seconds] 09:50:12 -!- yacks [~yacks@180.151.36.171] has quit [Ping timeout: 248 seconds] 09:50:57 -!- Tau [~Euler@186-194-45-62.i-next.psi.br] has quit [Remote host closed the connection] 09:51:35 yacks [~yacks@180.151.36.171] has joined #scheme 09:53:05 mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has joined #scheme 10:22:42 graememcc [~chatzilla@host86-150-89-191.range86-150.btcentralplus.com] has joined #scheme 10:24:11 -!- yacks [~yacks@180.151.36.171] has quit [Ping timeout: 245 seconds] 10:28:49 -!- hypnocat [~hypnocat@unaffiliated/hypnocat] has left #scheme 10:29:20 -!- youlysses is now known as youlysses_ZZZzzz 10:32:55 spobat [~spobat@p5B2DE483.dip.t-dialin.net] has joined #scheme 10:37:18 -!- robot-beethoven [~user@c-24-118-142-0.hsd1.mn.comcast.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 10:41:36 -!- Nisstyre-laptop [~yours@oftn/member/Nisstyre] has quit [Ping timeout: 264 seconds] 10:41:42 add^_ [~add^_@m83-190-161-220.cust.tele2.se] has joined #scheme 11:23:15 -!- youlysses_ZZZzzz is now known as youlysses 11:23:54 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Ping timeout: 265 seconds] 11:33:04 -!- spobat [~spobat@p5B2DE483.dip.t-dialin.net] has quit [Quit: Leaving] 11:34:35 -!- cdidd [~cdidd@89-178-119-48.broadband.corbina.ru] has quit [Ping timeout: 252 seconds] 11:34:58 ASau` [~user@217.118.90.197] has joined #scheme 11:36:38 -!- ASau [~user@217.118.90.158] has quit [Ping timeout: 250 seconds] 11:42:56 amgarchIn9 [~amgarchin@p4FD61402.dip0.t-ipconnect.de] has joined #scheme 11:55:14 -!- ASau` [~user@217.118.90.197] has quit [Remote host closed the connection] 11:55:16 -!- mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has quit [Read error: Connection reset by peer] 11:55:29 ASau` [~user@217.118.90.197] has joined #scheme 11:55:30 mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has joined #scheme 12:12:11 -!- mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has quit [Quit: Leaving.] 12:12:21 mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has joined #scheme 12:28:35 -!- spiderweb [~user@unaffiliated/lcc] has quit [Ping timeout: 265 seconds] 12:41:00 -!- b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has quit [Remote host closed the connection] 12:42:37 b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has joined #scheme 13:00:40 protist [~protist@125-237-130-19.jetstream.xtra.co.nz] has joined #scheme 13:11:46 masm [~masm@bl17-202-197.dsl.telepac.pt] has joined #scheme 13:25:45 -!- pjb [~user@cust-seco21th2-46-193-64-247.wb.wifirst.net] has quit [Remote host closed the connection] 13:29:13 pjb [~user@cust-seco21th2-46-193-64-247.wb.wifirst.net] has joined #scheme 13:29:20 -!- pjb is now known as Guest42821 13:34:35 tcleval [~funnyguy@177.19.95.62] has joined #scheme 13:37:04 MrFahrenheit [~RageOfTho@cable-77-221-21-70.dynamic.telemach.ba] has joined #scheme 13:45:45 gffa [~unknown@unaffiliated/gffa] has joined #scheme 13:46:35 -!- Guest42821 is now known as pjb 13:47:24 gravicappa [~gravicapp@ppp91-77-166-37.pppoe.mtu-net.ru] has joined #scheme 13:52:11 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 14:11:32 -!- masm [~masm@bl17-202-197.dsl.telepac.pt] has quit [Ping timeout: 248 seconds] 14:20:06 -!- tcleval [~funnyguy@177.19.95.62] has quit [Quit: Lost terminal] 14:30:37 masm [~masm@bl17-202-197.dsl.telepac.pt] has joined #scheme 14:38:20 spiderweb [~user@unaffiliated/lcc] has joined #scheme 14:41:43 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 260 seconds] 14:56:07 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 14:56:43 -!- graememcc [~chatzilla@host86-150-89-191.range86-150.btcentralplus.com] has quit [Ping timeout: 244 seconds] 14:59:38 graememcc [~chatzilla@host86-143-39-53.range86-143.btcentralplus.com] has joined #scheme 15:00:28 -!- amgarchIn9 [~amgarchin@p4FD61402.dip0.t-ipconnect.de] has quit [Quit: Konversation terminated!] 15:15:32 -!- youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has quit [Ping timeout: 255 seconds] 15:27:24 -!- youlysse` [~user@75-132-17-145.dhcp.stls.mo.charter.com] has quit [Quit: brb... o/] 15:29:57 -!- ASau` [~user@217.118.90.197] has quit [Ping timeout: 248 seconds] 15:31:26 graememcc_ [~chatzilla@host86-167-59-144.range86-167.btcentralplus.com] has joined #scheme 15:32:54 -!- graememcc [~chatzilla@host86-143-39-53.range86-143.btcentralplus.com] has quit [Ping timeout: 244 seconds] 15:33:05 -!- graememcc_ is now known as graememcc 15:41:31 hiroakip [~hiroaki@p54A6A3DA.dip.t-dialin.net] has joined #scheme 15:53:06 sambio [~sambio@190.57.227.109] has joined #scheme 15:53:24 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Ping timeout: 248 seconds] 16:04:01 creep [~acbf666df@2a01:270:dd00:7700:404:dead:beef:cafe] has joined #scheme 16:04:34 jrajav [~jrajav@66-188-176-243.dhcp.roch.mn.charter.com] has joined #scheme 16:08:03 hash_table [~quassel@5acb42dd.bb.sky.com] has joined #scheme 16:12:09 hey 16:12:30 yacks [~yacks@180.151.36.171] has joined #scheme 16:14:34 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 16:19:33 Hello. 16:42:43 cdidd [~cdidd@95-28-46-122.broadband.corbina.ru] has joined #scheme 16:46:15 -!- jewel [~jewel@105-236-138-67.access.mtnbusiness.co.za] has quit [Ping timeout: 252 seconds] 16:56:45 -!- b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has quit [Remote host closed the connection] 16:57:23 b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has joined #scheme 16:57:25 -!- sambio [~sambio@190.57.227.109] has quit [Ping timeout: 248 seconds] 16:58:46 -!- hiroakip [~hiroaki@p54A6A3DA.dip.t-dialin.net] has quit [Ping timeout: 245 seconds] 17:00:06 sambio [~sambio@host116.190-228-67.telecom.net.ar] has joined #scheme 17:01:29 tupi [~user@186.205.46.201] has joined #scheme 17:07:00 -!- sambio [~sambio@host116.190-228-67.telecom.net.ar] has quit [Ping timeout: 248 seconds] 17:07:07 sambio_ [~sambio@190.57.227.109] has joined #scheme 17:09:30 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Ping timeout: 276 seconds] 17:13:32 -!- hash_table [~quassel@5acb42dd.bb.sky.com] has quit [Ping timeout: 255 seconds] 17:19:15 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 17:26:48 kk` [~kk@unaffiliated/kk/x-5380134] has joined #scheme 17:27:17 -!- protist [~protist@125-237-130-19.jetstream.xtra.co.nz] has quit [Ping timeout: 265 seconds] 17:28:20 -!- mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has quit [Ping timeout: 248 seconds] 17:38:21 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 17:46:24 -!- antoszka [~antoszka@unaffiliated/antoszka] has quit [Quit: +++ killed by SIGSEGV +++] 17:49:49 wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has joined #scheme 17:59:25 -!- wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has quit [Quit: none] 18:00:17 wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has joined #scheme 18:28:28 antoszka [~antoszka@unaffiliated/antoszka] has joined #scheme 18:30:55 dnolen [~user@cpe-74-64-61-245.nyc.res.rr.com] has joined #scheme 18:36:58 -!- wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has quit [Ping timeout: 250 seconds] 18:40:42 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 18:41:46 bananagram [~bot@c-98-198-236-112.hsd1.tx.comcast.net] has joined #scheme 18:50:36 -!- sambio_ [~sambio@190.57.227.109] has quit [Ping timeout: 264 seconds] 18:54:42 wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has joined #scheme 18:56:23 -!- b4283 [~b4283@1-172-83-247.dynamic.hinet.net] has quit [Remote host closed the connection] 19:04:39 bipt [~bpt@cpe-071-070-253-241.nc.res.rr.com] has joined #scheme 19:07:49 -!- yacks [~yacks@180.151.36.171] has quit [Ping timeout: 265 seconds] 19:12:17 mark_weaver [~user@74-94-165-125-NewEngland.hfc.comcastbusiness.net] has joined #scheme 19:17:05 snowylike [snowylike@91-67-171-156-dynip.superkabel.de] has joined #scheme 19:18:19 honkfestival [~honkfesti@198-84-183-94.cpe.teksavvy.com] has joined #scheme 19:20:31 yacks [~yacks@180.151.36.171] has joined #scheme 19:29:48 Fare [~fare@68-245-80-209.pools.spcsdns.net] has joined #scheme 19:30:25 vyz [~univyrse@68-190-59-32.dhcp.mtgm.al.charter.com] has joined #scheme 19:33:50 ASau [~user@217.118.90.203] has joined #scheme 19:36:47 sambio [~sambio@190.57.227.109] has joined #scheme 19:37:05 amgarchIn9 [~amgarchin@p4FD61402.dip0.t-ipconnect.de] has joined #scheme 19:52:37 -!- wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has quit [Quit: Client Quit] 19:58:47 mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has joined #scheme 19:59:59 -!- tupi [~user@186.205.46.201] has quit [Ping timeout: 260 seconds] 20:01:33 ase [~se@ip56583baa.direct-adsl.nl] has joined #scheme 20:09:34 wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has joined #scheme 20:10:43 -!- mark_weaver [~user@74-94-165-125-NewEngland.hfc.comcastbusiness.net] has quit [Ping timeout: 265 seconds] 20:21:06 -!- graememcc [~chatzilla@host86-167-59-144.range86-167.btcentralplus.com] has quit [Quit: ChatZilla 0.9.89 [Firefox 17.0.1/20121129165506]] 20:35:42 -!- Fare [~fare@68-245-80-209.pools.spcsdns.net] has quit [Ping timeout: 250 seconds] 20:35:59 Nisstyre-laptop [~yours@oftn/member/Nisstyre] has joined #scheme 20:38:12 -!- Belaf [~campedel@net-93-144-31-127.cust.dsl.teletu.it] has quit [Ping timeout: 248 seconds] 20:44:36 -!- snowylike [snowylike@91-67-171-156-dynip.superkabel.de] has quit [] 20:47:32 -!- acedia [~rage@unaffiliated/ffs] has quit [Quit: leaving] 20:47:54 acedia [~rage@unaffiliated/ffs] has joined #scheme 20:54:36 Belaf [~campedel@net-2-40-0-43.cust.dsl.teletu.it] has joined #scheme 20:57:23 robot-beethoven [~user@c-24-118-142-0.hsd1.mn.comcast.net] has joined #scheme 20:59:57 -!- robot-beethoven [~user@c-24-118-142-0.hsd1.mn.comcast.net] has quit [Remote host closed the connection] 21:00:11 robot-beethoven [~user@c-24-118-142-0.hsd1.mn.comcast.net] has joined #scheme 21:04:55 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 21:17:44 -!- jonrafkind [~jon@racket/jonrafkind] has quit [Ping timeout: 250 seconds] 21:24:18 spobat [~spobat@p5DC77F0F.dip.t-dialin.net] has joined #scheme 21:25:11 -!- honkfestival [~honkfesti@198-84-183-94.cpe.teksavvy.com] has quit [Quit: Computer has gone to sleep.] 21:27:51 -!- ASau [~user@217.118.90.203] has quit [Remote host closed the connection] 21:29:09 -!- cdidd [~cdidd@95-28-46-122.broadband.corbina.ru] has quit [Remote host closed the connection] 21:30:43 pothos_ [~pothos@114-36-237-107.dynamic.hinet.net] has joined #scheme 21:30:59 -!- pothos [~pothos@114-36-228-46.dynamic.hinet.net] has quit [Ping timeout: 260 seconds] 21:31:10 -!- pothos_ is now known as pothos 21:34:41 okay, this might sound like a stupid question, but I'll ask it anyway :) 21:35:02 -!- dca [~dca@95-28-17-78.broadband.corbina.ru] has quit [Ping timeout: 245 seconds] 21:35:03 How can I make two statements within one encapsulations, e.g. printing function parameters 21:35:22 (define (f a b) # print value of a and value of b # (do actual stuff)) 21:36:01 spobat: `progn'. 21:36:20 taylanub, ehm what? :D 21:36:24 -!- mmc1 [~michal@178-85-64-28.dynamic.upc.nl] has quit [Quit: Leaving.] 21:36:30 mmc2 [~michal@178-85-64-28.dynamic.upc.nl] has joined #scheme 21:36:42 Weird name, yes. There's `prog1' which evaluates any number of forms and returns the value of the first, `prog2' which does the same and returns the value of the second, and `progn' which is also the same and returns the value of the last. 21:36:50 spobat: (progn (foo) (bar) (baz)) 21:37:34 prog1 is `undefined` here. 21:37:46 Oh wait .. we're in #scheme. O_o 21:37:57 I thought this is #emacs. Scheme has `begin' instead. 21:38:03 (begin (foo) (bar) (baz)) 21:38:18 hehe^^. Okay. 21:38:28 It always returns the result of the last, I see 21:38:45 this seems interesting, though: http://www.cs.utexas.edu/~novak/schemevscl.html 21:38:47 Not so sure about `begin', it might be unspecified. 21:38:56 3rd line 21:38:58 of the table 21:39:13 (or 2nd if you ignore the header) 21:39:46 ASau [~user@217.118.90.203] has joined #scheme 21:39:54 spobat: function bodies have implicit begins too. 21:39:55 okay, thank you! 21:40:18 rudybot: (define (f a b) (printf "~a ~a~n" a b) (printf "something else~n")) 21:40:20 asumu: your sandbox is ready 21:40:20 asumu: Done. 21:40:23 rudybot: (f 1 2) 21:40:24 asumu: ; stdout: "1 2\nsomething else\n" 21:40:41 asumu, aah! 21:40:43 yep, got it 21:43:39 Any ideas on this? write-line: unbound identifier in module in: write-line 21:43:47 "write" works, by the way 21:43:58 but I thought (write-line x) would be better than (write x) (newline) 21:44:40 Well I don't think `write-line' is a standardized function, and apparently whichever implementation you use doesn't have it either. 21:44:49 What are you using ? 21:46:00 that might be! 21:46:08 Here, I'm in the DrRacket explorer 21:46:18 which compiles probably more `racket` than `scheme` 21:46:44 I should test this on the MIT-GNU Scheme one 21:48:15 spobat: the closest in Racket is probably `displayln`, but you can easily define the function you want. 21:48:29 asumu, yep, you are right! 21:51:14 dca [~dca@95-28-53-187.broadband.corbina.ru] has joined #scheme 21:56:09 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Ping timeout: 276 seconds] 22:10:33 -!- jrajav [~jrajav@66-188-176-243.dhcp.roch.mn.charter.com] has quit [Quit: I tend to be neutral about apples] 22:17:17 -!- wbooze [~wbooze@xdsl-78-35-181-18.netcologne.de] has quit [Ping timeout: 265 seconds] 22:22:24 -!- SeySayux [SeySayux@libsylph/developer/seysayux] has quit [Ping timeout: 264 seconds] 22:23:05 the purpose of scheme is education, right? 22:24:27 Implementations like Racket and Guile are totally fit as replacements Perl, Python, Ruby, etc.. 22:24:27 SeySayux [SeySayux@libsylph/developer/seysayux] has joined #scheme 22:25:17 In fact they tend to perform better, and Scheme is arguably a higher-level language. 22:26:22 So theoretically it's a win-win situation to use a well-developed Scheme implementation instead of any other scripting language, but then there's the whole "popularity" and job-requirements thing .. 22:26:25 well the other languages you named are imperative 22:26:47 (mainly) 22:27:11 by the way, i've heared that "lisp-dialocs being slow" is nowadays more of a myth 22:27:18 I guess it would be safe to say that Scheme is leaning more towards the functional side on the imperative/functional scale, yes. 22:27:50 are you familiar with other functional languages? 22:27:52 Yes it is. The common-lisp implementation SBCL is known to compile to very fast machine code. Still not as much as C or C++ of course. 22:28:05 Haskell can be very fast too I think. 22:28:45 how could you define that Haskell is "more/less functional" than scheme probably is? 22:29:08 Some Scheme compilers should probably also be as fast as SBCL. Chicken maybe, but I know little in that area; I'd say just use C for the very performance-critical parts, and Scheme for the rest. Or hopefully Rust instead of C, in the future. 22:29:17 spobat: Haskell is *purely* functional. 22:29:37 how is scheme not purely functional? 22:29:41 (just a few aspects) 22:29:54 All the functions that end with ! in their name. 22:30:22 Okay, I've never come across such a function (I just started :)) 22:30:42 Basically they're those that "mutate" variables. Changing the value of a variable. 22:30:45 do theses !-functions have a specific name? 22:31:11 In Haskell, you never change the value in a variable, it always holds the value you gave it when you defined it (or called the function with the arguments, etc.). 22:31:18 set!, append!, etc. 22:31:31 set-car!, set-cdr! 22:31:51 You should probably learn of them soon enough if you're following some tutorial. 22:32:39 I saw something like this once in Haskell-snippet, as those Haskell-variables are just parameterless-functions returnig a fix value. 22:34:00 I think they call them "symbols" and not variables. (Not to be confused with symbols in lisp.) 22:35:10 -!- bipt [~bpt@cpe-071-070-253-241.nc.res.rr.com] has quit [Remote host closed the connection] 22:35:14 And yeah, I guess you could consider them constant functions. From what I know calling a function and referencing a variable has the same syntax in Haskell, so maybe on a theoretical level it's "the same thing." 22:37:50 wbooze [~wbooze@xdsl-78-35-136-243.netcologne.de] has joined #scheme 22:45:24 -!- ineiros_ [~itniemin@li271-145.members.linode.com] has quit [Remote host closed the connection] 22:45:32 ineiros [~itniemin@bayesianconspiracy.org] has joined #scheme 22:55:27 -!- Khisanth [~Khisanth@50.14.244.111] has quit [Ping timeout: 260 seconds] 22:57:24 -!- gravicappa [~gravicapp@ppp91-77-166-37.pppoe.mtu-net.ru] has quit [Ping timeout: 248 seconds] 22:58:09 ok :) 23:09:01 -!- wbooze [~wbooze@xdsl-78-35-136-243.netcologne.de] has quit [Quit: Client Quit] 23:09:36 Khisanth [~Khisanth@50.14.244.111] has joined #scheme 23:21:13 acarrico [~acarrico@pppoe-68-142-36-178.gmavt.net] has joined #scheme 23:25:24 -!- masm [~masm@bl17-202-197.dsl.telepac.pt] has quit [Quit: Leaving.] 23:33:03 -!- spobat [~spobat@p5DC77F0F.dip.t-dialin.net] has quit [Quit: Leaving] 23:35:45 -!- Nisstyre-laptop [~yours@oftn/member/Nisstyre] has quit [Quit: Leaving] 23:39:04 -!- mmc2 [~michal@178-85-64-28.dynamic.upc.nl] has quit [Ping timeout: 260 seconds] 23:40:17 -!- add^_ [~add^_@m83-190-161-220.cust.tele2.se] has quit [Quit: The Garbage Collector got me...]