00:07 (quit) ynniv: Quit: ynniv 00:17 (quit) jeapostrophe: Ping timeout: 250 seconds 00:29 (join) sw2wolf 00:59 (join) RacketCommitBot 00:59 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/WaddgA 00:59 RacketCommitBot: racket/master c818eb3 Robby Findler: Fix the new lexer interaction when some of the lexer states were... 00:59 (part) RacketCommitBot 01:12 Sgeo: Is there no (define ((constantly foo) bar) foo) built into Racket? 01:12 Sgeo: I keep seeing examples using lambda directly for that use case 01:13 mithos28: rudybot: doc const 01:13 rudybot: mithos28: your sandbox is ready 01:13 rudybot: mithos28: http://docs.racket-lang.org/reference/procedures.html#(def._((lib._racket%2Ffunction..rkt)._const)) 01:13 Sgeo: Oh, ok 01:14 Sgeo: So why do I keep seeing examples like (lambda (stx) (syntax "I am foo"))) 01:15 jonrafkind: where 01:15 Sgeo: http://www.greghendershott.com/fear-of-macros/Transform_.html 01:15 Sgeo: Pretty sure I've seen similar in official Racket documentation but don't remember where 01:15 vyz: are there any good libraries for event driven programming in racket? 01:16 mithos28: vyz: What do you mean event driven programming? 01:16 jonrafkind: it would be pointless to abstract a small function to some constant function 01:16 mithos28: there is thunk* 01:16 vyz: something like nodejs's libev, setinterval function to make something happen every n milliseconds 01:18 mithos28: vyz: (thread (thunk (let loop () (sync (alarm-evt (+ n (current-inexact-milliseconds)))) (something) (loop)))) 01:18 vyz: i dont think you're human, you are clearly more intelligent 01:19 vyz: mithos, do you write lisp for a living? 01:20 mithos28: sadly no 01:20 vyz: thats surprising 01:20 vyz: although most people dont like the lack of maintainability that lisp codebases introduce 01:20 Sgeo: mithos28, hmm, is it idiomatic in Racket to write code in a synchronous style and just use the light-weight threads for concurrency, rather than explicit CPS node.js style? 01:21 mithos28: Sgeo: Yes, because explicit cps is a pain 01:21 Sgeo: Awesome 01:22 mithos28: and you always have call/cc if you need the continuation, you don't need to cps 01:22 Sgeo: All I know is that Oleg dislikes call/cc. 01:22 Sgeo: How does call/cc interact with threads? 01:22 Sgeo: I should port my mamb operator to Racket 01:22 mithos28: vyz: I use some internal languages which have no equal in terms of unmaintainablity 01:23 Sgeo: Is better monads the preferred monad library? 01:23 mithos28: Sgeo: It works how you would expect 01:23 mithos28: Sgeo: I don't know of a standard monad library 01:24 vyz: thats the problem, its just not feasible to integrate into a system where there's more than 3 or 4 people working on a system, it gets too fluid 01:24 vyz: typed racket is a welcome component to confront that 01:24 Sgeo: Are exceptions resumable? 01:25 Sgeo: Because I looked at the guide and see no indication that they are. 01:25 Sgeo: Maybe I skimmed too fast? 01:25 mithos28: Sgeo: Sorta 01:25 mye: lately I've been running in a weird drracket bug where it keeps darkening some paren highlights. Anyone has encountered this? 01:25 vyz: i havent 01:25 mithos28: rudybot: doc raise 01:25 rudybot: mithos28: http://docs.racket-lang.org/reference/exns.html#(def._((quote._~23~25kernel)._raise)) 01:25 mithos28: Sgeo: Look there more info 01:26 mithos28: The primitive one's are not, but you can make custom ones resumable 01:26 (quit) jonrafkind: Ping timeout: 264 seconds 01:27 mithos28: vyz: I don't see racket any more hard to work with than python for large groups of developers 01:27 vyz: that contradicts the fact that large groups are using python in most cases 01:27 Sgeo: Hmm, does Racket's web framework mandate a continuation-based web site? 01:27 vyz: when was the last time you saw racket code on hackernews or somewhere? 01:27 Sgeo: I think continuations make web sites ... ugly 01:28 vyz: I had an idea to recreate jekyll in racket 01:28 vyz: just generate html with markup 01:28 Sgeo: easier to program, but very ... stateful 01:28 vyz: simple, clean 01:28 mithos28: vyz: Do you have evidence that the reason that people are not using racket because it doesn't scale with large groups, versus some other reason 01:28 vyz: mithos, no and when you put it like that, i may have been misleading in saying that, but I believe it to be true nevertheless 01:29 mithos28: Sgeo: No, you can do standard RESTful stuff, but it emphasizes the continuation part because thats what is special that it brings to the table 01:30 Sgeo: Hygienic macros present a sort of barrier to writing macros, and that barrier might make code easier to understand as fewer macros are made, I think 01:30 Sgeo: (I understand unhygienic macros, hygienic macros ... confuse me) 01:30 mithos28: vyz: What about the Racket dev team? 01:30 mithos28: Sgeo: What is confusing about them, you don't need to do gensym and things work how you expect. 01:31 vyz: open source development is fundamentally dissimilar from closed source corporate development 01:31 Sgeo: mithos28, I expect to be able to run arbitrary code at macroexpand time to transform the input code as I want 01:31 mithos28: Sgeo: You can 01:31 Sgeo is reading some tutorial on Racket's macros now 01:31 mithos28: I think you must be looking at syntax-rules 01:31 vyz: corporate development environments are full of delegation and talking and emails, while open source devs just want the code to be fast and furious 01:32 Sgeo: mithos28, but that mechanism is more ... difficult to understand, dealing with syntax objects, than defmacro 01:32 mithos28: syntax objects are a separate concern from hygiene 01:32 mithos28: they could exist in an unhygenic system to add annotations such as line numbers 01:33 mye: but they are the objects carrying scope info right? 01:34 mithos28: mye: Racket's do, but in theory you could have syntax-objects without hygiene 01:34 mithos28: and certain implementations of hygiene don't use syntax objects 01:35 mye: for me the confusing part was and is with-syntax :) It got better when I read it's just a nested syntax-case 01:37 Sgeo: I guess saying that I like Tcl is not the right thing to say here? >.> 01:37 Sgeo keeps reading about Racket 01:38 mithos28: I dislike Tcl because gitk is written in it, and they somehow cannot figure out how to get it to come to the front when I launch it 01:39 mye: I wish DrRacket had an entry in the context menu when clicking on a macro that would show the expansion inline. That would be awesome. 01:44 mye: sigh, what am I doing wrong when instead of a response? set-servlet-handler! gets a request… This is the most useless blame in a contract violation ever, showing only internal webserver functions 01:45 vyz: i wish drracket didnt abuse my ram 01:46 (quit) mithos28: Quit: mithos28 01:46 Sgeo: I do like how ... easy it sounds to redefine function application and put an entire module inside a form 01:47 Sgeo: I take it that if Racket didn't have first-class continuations, it would be possible to make a language that provided them 01:47 Sgeo: WIthout needing to explicitely wrap everything in some form 01:48 (join) mithos28 01:49 vyz: im just here for the paren 01:51 mithos28: Sgeo: No, because CPSing is a whole program transformation 01:51 mithos28: How would you use 'map' with a function that needed the continuation 01:51 mithos28: without rewriting map 01:59 Sgeo: Does let over defines not work? I can only assume that they don't, otherwise what is splicing-let for? 01:59 mithos28: What do you want to do? 02:00 mithos28: Splicing let allows the defines to be visible outside the let 02:01 Sgeo: Ah 02:01 Sgeo: So defines in a let don't leak out? 02:01 Sgeo: Ok 02:16 dyoo: Sgeo: back at 7pm, when you're asking about that paragraph on Custodians, they mean something like this: 02:16 dyoo: https://gist.github.com/4411396 02:17 dyoo: Where one tries to call things that allocate resources, when the current custodian has already shut down 02:17 Sgeo: Ah, ok 02:17 dyoo: but yeah, that paragraph's confusing. I'll propose a patch to the docs with this example just to disambiguate. 02:17 Sgeo: Cool 02:18 Sgeo: I'm glad that I indirectly helped out Racket's documentation 02:18 dyoo: :) 02:28 dyoo: Sgeo: ok, I've asked on dev (http://lists.racket-lang.org/dev/archive/2012-December/011373.html) So unless I get completely ignored, we'll get this fixed. 02:29 Sgeo: dyoo, thank you 02:30 dyoo: Sgeo: with regards to hooking your own values into custodians, you will probably want to look at: http://docs.racket-lang.org/foreign/Custodian_Shutdown_Registration.html 02:31 dyoo: but that starts touching foreign-function-interface stuff, which I have admittedly not played with enough to be competent. 02:31 Sgeo: Why is that in ffi stuff? 02:33 (join) Nisstyre-laptop 02:33 dyoo: Because the other built-in resources in Racket (files, ports, etc.) already register with the current custodian. It's when we need to connect to foreign resources 02:33 dyoo: that we need to customize how they shut down under custodian shutdown 02:36 Sgeo: :/ not sure why that should prevent me from defining my own kind of resource that needs management. What about a connection to an IRC server, and when the custodian tells everything to shut down, I want to tell the server good-bye rather than it being abrupt? 02:36 Sgeo: As an example 02:38 dyoo: Sgeo: yes, that makes sense. But I think the custodian system is sort of the catch-all for managing low-level resources 02:39 dyoo: For the situation that you're considering, that sounds more like something that can be initiated at a higher level, as a shut-down procecdure, or with an exception handler. That being said, maybe the custodian concept can be expanded to do high-level shutdown. Couldn't hurt to ask on the mailing list for feedback 02:40 Sgeo: Hmm, mailboxes aren't themselves first-class? 02:40 Sgeo: I know the same situation is in Erlang, but Factor has first-class mailboxes 02:40 dyoo: Sgeo: mailboxes? 02:40 Sgeo: Rather than "one mailbox per thread" 02:41 Sgeo: Oh, there are async channels 02:41 dyoo: Unfortunately, I'm not too familiar with mailboxes from Factor. Are the similar to "Channels"? http://docs.racket-lang.org/reference/channel.html?q=channel#(tech._channel) 02:42 Sgeo: More similar to http://docs.racket-lang.org/reference/async-channel.html?q=channel 02:42 Sgeo: Async channels 02:42 dyoo: I see. Well then, yes. :) 02:42 dyoo: Ack, gotta go. Good luck to you. 02:42 (quit) dyoo: Quit: dyoo 02:42 mithos28: Sgeo: Async channels are built upon the same thing as threads, but thread channels have less synchronization overhead on reading 02:43 mithos28: as there is only one possible reader 02:43 mithos28: I believe you are misunderstanding what custodians do, if you want them to handle graceful shutdown 02:44 mithos28: In the situation they are useful, there are 3 parties. The library writer, the library user, and the host. 02:45 mithos28: The host is running code for the library user in its environment. This code may be malicious/buggy 02:46 mithos28: When the library user's code misbehaves, the host wants to get rid of it immediately. 02:47 mithos28: Custodians allow the library writer to tell the host how to clean up all the resources that the user created 02:52 Sgeo: wrap-evt is basically fmap on events? 02:52 mithos28: Sgeo: Yep 02:52 Sgeo: Monad libraries should really consider events to be a monad imo 02:53 Sgeo: Or, well, event..ness 02:54 mithos28: Isn't that FRP? 02:54 Sgeo: Not... sure, but what's wrong with using synchronizable events in that manner? 02:55 mithos28: Nothing, I was just saying that it had been done 02:58 asumu: Sgeo: re: understanding macros, I recommend greghendershott's macro tutorial. 02:58 asumu: http://www.greghendershott.com/fear-of-macros/ 03:00 Sgeo: Looked through that 03:02 (quit) mithos28: Quit: mithos28 03:03 Sgeo: How safe is the sandboxed evaluation stuff? 03:04 Sgeo: I don't understand this snippet 03:04 Sgeo: (let ([e (make-evaluator 'racket/base)]) 03:04 Sgeo: (e (,e 1))) 03:04 Sgeo: How is , being used outside a ` ? 03:05 asumu: Usually pretty safe. It doesn't allow filesystem access, has timeouts, etc. Sometimes there are bugs. 03:05 Sgeo: Someone should make a try-racket site 03:06 asumu: That example probably has a typo... 03:07 asumu: Yeah, I think it's supposed to have a quasiquote around the (,e 1) 03:08 asumu will fix that doc bug later 03:09 asumu: Sgeo: thanks for finding it 03:10 Sgeo: You're welcome 03:10 Sgeo: http://25.media.tumblr.com/tumblr_m3c7wfyTr91r8lqovo1_400.png 03:10 Sgeo: 03:16 Sgeo: The contact's -> is going to confuse me because I spent a lot of time playing with Clojure 03:16 Sgeo: *contract 03:21 (join) bitonic 03:24 Sgeo: Minor typo: 03:24 Sgeo: "a name for the function or method associated with the contract and either the phrase ?contract violation? or ?violated it?s contract? depending on whether the contract was violated by the server or the client;" 03:24 Sgeo: it's instead its 03:24 Sgeo: Don't know if that's in docs or in Racket 03:25 Sgeo: (As in, whether docs are accurately reporting on grammar error in Racket, or incorrect) 03:42 (quit) bitonic: Remote host closed the connection 03:46 Sgeo: What happens when I want to mix the laziness of Racket's lazy language with the static typing of Typed Racket? 03:55 Sgeo: rudybot, help 03:55 rudybot: Sgeo: bug ..., help [], version, quote, source, url, seen , uptime, t8 ..., init [], eval ..., give ..., apropos ..., desc , doc 03:56 (quit) sw2wolf: Quit: ERC Version 5.3 (IRC client for Emacs) 03:56 Sgeo: eval 'test 03:56 Sgeo: ,'test 03:56 Sgeo: rudybot, eval 'test 03:56 rudybot: Sgeo: your sandbox is ready 03:56 rudybot: Sgeo: ; Value: test 03:56 Sgeo: rudybot, eval #:test 03:56 rudybot: Sgeo: error: #:1:0: #%datum: keyword used as an expression in: #:test 03:56 Sgeo: rudybot, eval #'#:test 03:56 rudybot: Sgeo: ; Value: # 03:56 Sgeo: rudybot, eval (syntax->datum #'#:test) 03:56 rudybot: Sgeo: ; Value: #:test 03:56 Sgeo: ? 03:57 Sgeo: Oh, is that the same as '#:test 03:57 Sgeo: ? 03:58 (quit) francisl: Quit: francisl 04:06 Sgeo: Why does frtime need a whole new language? 04:12 Sgeo: Ah, so it's that one could use a behavior as though it were an ordinary value? 04:21 Sgeo: Hmm, or not 04:47 (quit) Nisstyre-laptop: Ping timeout: 250 seconds 04:55 (join) ThePawnBreak 05:06 (join) bitonic 05:11 Sgeo: asdf can't copy from the text editor that slideshow's tutorial opens 05:13 Sgeo: http://pastie.org/5596719 05:13 Sgeo: The two disks drawn are not the same, the lower one is filled in while the upper one is not 05:13 Sgeo: On my system, I mean 05:48 (join) Okasu 05:53 Okasu: Hello, i'm trying to eval region with Geiser but it fails with "#lang not enabled in the current context"? How can i fix it? 06:56 (join) RacketCommitBot 06:56 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/LA4nEw 06:56 RacketCommitBot: racket/master 4041e3c Asumu Takikawa: Fix sandbox doc example 06:56 (part) RacketCommitBot 07:12 (join) MayDaniel 07:20 Okasu: For example i have basic hello-world form "Continue" article, how can i run it without drracket? Plain "racket -f hello-world.rkt" does nothing. 07:21 (join) hash_table 07:42 (join) RacketCommitBot 07:42 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/wS4wdA 07:42 RacketCommitBot: racket/master 05ce8bc Matthew Flatt: win32: fix MinGW vs. MSVC build problem 07:42 (part) RacketCommitBot 07:45 (quit) kofno: Read error: No route to host 07:45 (join) kofno 07:56 (join) add^_ 08:07 (join) soegaard 08:49 Sgeo: Would it be a terribad idea to use Datalog as a database? 08:49 Sgeo: Occasionally serializing to disk and reading from disk? 08:51 (join) masm 09:19 (join) masm_ 09:19 (quit) masm: Quit: Leaving. 09:20 (join) dzhus 09:22 (nick) masm_ -> masm 09:23 (join) mizu_no_oto 09:27 (join) anRch 09:28 (quit) mizu_no_oto: Ping timeout: 264 seconds 09:40 (quit) kofno: Remote host closed the connection 09:51 (join) masm 09:54 (join) kofno 09:56 (join) mizu_no_oto 09:57 (join) mithos28 10:01 (quit) dzhus: Remote host closed the connection 10:17 (quit) add^_: Remote host closed the connection 10:20 (join) wwj 10:20 (quit) dca: Quit: ZNC - http://znc.in 10:24 Sgeo: I swear I'm going to slap the author of better-monads 10:25 (part) wwj 10:28 Cryovat: What's up, Sgeo? 10:28 (quit) soegaard: Quit: soegaard 10:29 Sgeo: Why is everyone and their mother under the delusion that if they write lift, the user is going to need to pass in the number of arguments the function will take 10:30 Sgeo: There's a handy dandy function that both Clojure and Racket have called "apply". Haskell doesn't have it. Clojure and Racket functions can do things that Haskell functions cannot. 10:30 Sgeo: Including writing a generic lift 10:32 Okasu: Guys? 10:32 Sgeo: Actually, looking at better-monads more closely, it may be so fundamentally broken that it's flat out impossible to even write functions that use bind or return outside of the lexical scope of a with-monad 10:32 (join) jeapostrophe 10:32 (quit) jeapostrophe: Changing host 10:32 (join) jeapostrophe 10:32 Sgeo: I'm not sure, I'm not good with Racket macros 10:33 Cryovat: If you can't do that, it seems like it defeats the point 10:33 Okasu: How can i run example from Continue without drracket? 10:34 Okasu: Only with plain old racket. 10:34 Okasu: One option is to make module out of that example but i wonder if it possible to run it without mods? 10:34 (quit) kofno: Remote host closed the connection 10:35 Sgeo: Cryovat, look at the definition of with-monad in http://planet.racket-lang.org/package-source/toups/functional.plt/1/1/better-monads.rkt 10:35 rudybot: http://tinyurl.com/byclhgl 10:35 Sgeo: It looks like it's just shoving the body into a let form 10:36 Sgeo: Okasu, I looked before, I'm not sure I see a hello world in Continue, unless the web related one? 10:37 Okasu: Sgeo: http://docs.racket-lang.org/continue/#(part._.Getting_.Started) This one. 10:37 Okasu: Sorry for inaccuracy. 10:39 Cryovat: My insufficient macro-foo is confusing me a bit 10:39 Cryovat: But I can't see how that would achieve anything close to Haskell 10:40 Sgeo: Well, the big problem of doing monads in a dynamically-typed language (or a statically-typed language where the types don't change the running program) is the lack of return-type polymorphism 10:40 Sgeo: So to do return, there needs to be another way to pass in the type information 10:41 Sgeo: Here, it's being done with a with-monad macro 10:41 Sgeo: You give with-monad a value representing the monad, and within its scope bind and return are defined 10:41 Sgeo: But... it looks like it's lexical scope. With no way to get inside it outside of with-monad 10:41 Sgeo: So, I don't see a general way to, say, define sequence 10:42 Sgeo: Okasu, try without -f 10:42 Sgeo: racket hello.rkt worked for me 10:43 Okasu: Sgeo: Heh, thanks, works fine for me to. :) 10:43 Cryovat: That seems inconvenient 10:43 Okasu experiencing serious brain lags. 10:44 Cryovat: I don't really see the big need for monads in Scheme 10:44 Okasu: http://dfns.dyalog.com/max_scode.htm http://dfns.dyalog.com/max_examp.htm Interesting. 10:44 Okasu: Cryovat: Agreed. 10:45 (quit) anRch: Quit: anRch 10:46 (nick) Raynes -> baranosky 10:46 Sgeo: better-monads defines a monad called the-syntax-monad 10:47 (join) kofno 10:47 Sgeo: That sounds like it could be useful, if it wasn't trapped in a piece of junk library 10:51 (join) soegaard 10:52 Cryovat: Probably better to steal the idea and start over then ;) 10:52 Sgeo: I was hoping to steal better-monads and implement it in Clojure 10:53 Sgeo: Because the Clojure monad implementations aren't all that great 10:53 Sgeo: But.... no way 10:53 Sgeo: Not now 11:00 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 11:03 (join) jao 11:03 (quit) jao: Changing host 11:03 (join) jao 11:09 (quit) kofno: Remote host closed the connection 11:21 (quit) soegaard: Quit: soegaard 11:29 (join) soegaard 11:54 mye: I've a question about send/suspend and continuations (kinda new to this). In the docs for it it is said send/suspend "returns" the request. These quotes are there literally. send/suspend has a request? return value. So am I right that it returns the value as usual? Or must I do something special to capture the continuation? 11:58 (join) netrino 12:00 (join) cipher 12:04 (quit) mithos28: Quit: mithos28 12:06 (join) mithos28 12:09 (join) mizu_no_oto 12:32 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 12:32 (quit) netrino: Read error: Connection reset by peer 12:40 (join) kofno 12:40 mithos28: asumu: ping 12:43 (quit) kofno: Remote host closed the connection 12:50 (quit) jeapostrophe: Ping timeout: 250 seconds 12:58 (quit) cipher: Read error: Operation timed out 13:14 (join) jonrafkind 13:16 (join) francisl 13:24 (join) dnolen 13:32 (quit) dnolen: Ping timeout: 245 seconds 13:33 (quit) mithos28: Quit: mithos28 13:33 (join) mithos28 13:39 (join) add^_ 14:13 (join) blubberdiblub 14:30 (quit) mithos28: Quit: mithos28 14:48 (part) firefux 14:53 (join) RacketCommitBot 14:53 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/Tl_7cA 14:53 RacketCommitBot: racket/master ede0e3c Matthias Felleisen: at JPR's request: modified memq to return boolean and added memq? to teaching languages... 14:53 (part) RacketCommitBot 15:19 (quit) karswell: *.net *.split 15:19 (quit) em: *.net *.split 15:19 (join) em 15:20 (quit) jao: Ping timeout: 260 seconds 15:24 (join) karswell 15:27 (join) nejucomo 15:29 (quit) soegaard: Quit: soegaard 15:39 (quit) francisl: Quit: francisl 15:49 (join) bro_grammer 15:52 (join) soegaard 15:52 (quit) hash_table: Ping timeout: 255 seconds 15:59 (quit) nejucomo: Ping timeout: 276 seconds 16:03 (quit) blubberdiblub: Ping timeout: 252 seconds 16:04 (join) blubberdiblub 16:05 (join) nejucomo 16:18 (quit) Okasu: Quit: Lost terminal 16:23 (join) mye 16:27 (quit) vyz: Read error: Connection reset by peer 16:39 (join) univyrse 16:39 (join) offby1 16:40 offby1: Is there some way to get "raco test" to exit with a non-zero status if some tests failed? 16:48 (join) Nisstyre-laptop 16:50 (nick) univyrse -> vys 16:50 (part) vys: "Leaving" 17:04 (part) nejucomo 17:25 (join) Fare 17:30 mye: when using stateless or stateful servlets, send/formlet seems to use the send/suspend from the stateful implementation, so is that a problem when used in stateless servlets? 17:32 (join) neilv 17:35 (join) anRch 17:38 (quit) masm: Ping timeout: 260 seconds 17:38 asumu: mye: nothing special you have to do. The continuation plumbing is not something you usually have to think about. 17:38 asumu: The URL argument is how you use the continuation 17:42 asumu: offby1: I don't know that it can do that in general, because test submodules can have tests defined in any way (manually, rackunit, etc.) 17:42 asumu: I suppose if you use rackunit, you could call `run-tests` and call `exit` if there are unsuccessful tests. 17:43 (join) masm 17:46 offby1: asumu: yeah, but I assume that if I call "exit" in one file, it'll prevent the other files from running. 17:46 asumu: Ah, yeah, that's true. Hmm. 17:48 offby1: I always get the feeling that I'm not doing tests the "right way", but I've never figured out what the right way is. 17:50 neilv: i released a new version of overeasy the other day that gets closer to right. but i threw out the old stuff for multi-file and haven't replaced that part yet 17:51 neilv: http://www.neilvandyke.org/overeasy/ 17:57 Sgeo: Hi neilv. I started working through SICP a while ago (put it down a while ago too, but intend to resume), and am using your SICP language 18:00 (join) francisl 18:03 mye: I don't understand why this code loops the formlet page https://gist.github.com/4415889 18:04 mye: Someone here does? 18:04 neilv: hi Sgeo. i hope that sicp language was of some help. i am looking for someone to take it over and improve it 18:15 Sgeo: I didn't really get that far in SICP, I should start again 18:20 offby1: neilv: cool. ``Note that a given instance test-section syntax appear inside procedures and loops'' doesn't parse as English though 18:28 (join) mithos28 18:30 (quit) bro_grammer: Ping timeout: 245 seconds 18:30 neilv: offby1: thanks 18:31 Sgeo: Hmm. What happens if I want to document examples via Scribble but I don't want to actually run the examples because they do IO stuff? 18:32 neilv: Sgeo: you use forms like "racketblock" and "racketresult" 18:32 neilv: and "racketinput" 18:39 (quit) karswell: Remote host closed the connection 18:41 (join) jeapostrophe 18:43 (join) kofno 18:43 (quit) Fare: Ping timeout: 260 seconds 18:45 (quit) add^_: Quit: The Garbage Collector got me... 18:49 (join) karswell 18:51 (quit) anRch: Quit: anRch 18:55 asumu: mye: works for me if you take out the #:stateless thing 18:57 mye: asumu: ah, thank you for trying, I'm very irritated right now about the send/suspend stuff… :( 19:00 asumu: mye: well, I don't think send/formlet is supposed to be used with stateless things. It uses send/suspend from the stateful library, after all. 19:00 asumu: Though I could be wrong, I don't use the webserver stuff enough to know. 19:01 mye: yeah, I thought so too, I'll just rewrite it with the other send/suspend. 19:03 (quit) kofno: Remote host closed the connection 19:06 mye: Here is the error now that plagues me since yesterday https://gist.github.com/4416224 19:07 mye: No idea why it gets a request and where 19:07 mye: all I changed was add the send/formlet 19:07 mye: and reenable stateless 19:07 (join) nejucomo 19:08 mye: I must be doing something stupid but I don't see it! 19:29 mye: Indeed! The module must use #lang web-server instead of #lang racket 19:29 mye: weird but… so it is. I was initially using this as a submodule, the servlet that is 19:29 mye: and you can't use a #lang for a submodule 19:29 mye: right? 19:30 mye: it's just like require with submodules 19:31 (join) Fare 19:33 (quit) mithos28: Quit: mithos28 19:36 (quit) MayDaniel: Read error: Connection reset by peer 19:40 (quit) soegaard: Quit: soegaard 19:44 (quit) ThePawnBreak: Quit: Leaving 19:49 (join) kofno 19:54 (quit) kofno: Remote host closed the connection 19:55 (join) mithos28 19:58 (quit) mithos28: Client Quit 19:59 (join) kofno 20:01 (quit) kofno: Remote host closed the connection 20:02 (quit) nejucomo: Ping timeout: 276 seconds 20:02 Sgeo: In Racket, if you want to radically change the syntax, it gets its own language, but in Factor, you can have different syntax within a program using mostly normal syntax 20:02 Sgeo: :/ 20:03 (join) kofno 20:04 asumu: mye: no, submodules can have a #lang... in a sense. 20:05 asumu: A (module foo bar ...) names a module `foo` using "language" `bar` 20:05 asumu: OTOH, module* and module+ use the surrounding module as the base, so you can't specify a language. 20:05 mye: asumu: but giving it web-server gave me an error 20:05 asumu: What error? 20:06 mye: will check swiftly 20:06 asumu: Sgeo: you can use #reader, but I'm not sure that's really a desirable feature in general... 20:07 mye: module: no #%module-begin binding in the module's language in: (module srv web-server (...(start req) (send/suspend ... 20:07 Sgeo: asumu, Factor uses it to embed EBNF syntax into code, for example 20:07 Sgeo: It also has XML literals due to that feature but I think XML literals suck 20:08 Sgeo: Also used for defining lexical scope when that's needed 20:08 (join) mye_ 20:10 mye_: seems to work with /lang. Five letters to pull my hair out *grml* 20:11 asumu: Yeah, that's odd. Submodules came far after the web-server so there's probably some unanticipated weirdness there. 20:11 (quit) mye: Ping timeout: 245 seconds 20:11 (nick) mye_ -> mye 20:16 Sgeo: Can a loaded module be renamed such that re-declaring the module under the old name results in the module being in memory twice, once under the new name and the newer version under the old name? 20:18 jonrafkind: you could write a macro that defines the module with two different names 20:18 jonrafkind: but I guess the proper answer is to use units and instantiate them twice 20:19 Sgeo: I was hoping for the module to not necessarily be co-operating 20:20 jonrafkind: the only "normal" way is to instantiate the module in another phase, you get a unique instance for each phase 20:20 jonrafkind: what do you need it for? 20:21 Sgeo: jonrafkind, thinking of the possibility of module A needing version 1 of module X, and module B needing version 2 of module X, and module C needing both A and B 20:21 Sgeo: How can this be resolved/ 20:21 Sgeo: ? 20:22 jonrafkind: but version 1 and 2 of X will be different files right 20:22 Cryovat: http://www.4clojure.com/problems 20:22 Cryovat: This was linked on Hacker News 20:22 jonrafkind: (require "X-1.rkt") (require "X-2.rkt") 20:22 Cryovat: That's pretty cool 20:23 Sgeo: jonrafkind, but what if A calls it X and B calls it X, would C have to change A and B? 20:23 Sgeo: And they're typically on the hard drive as X, but the user of C is willing to call it X-1 and X-2 20:23 Sgeo: Or does Planet do this sort of thing? 20:23 Sgeo: I'd like to see a Planet without the reliance on a central server 20:23 jonrafkind: so you want in A (require x) and in B (require x) ? 20:23 Sgeo: yes 20:24 jonrafkind: well someone is going to have to put the different versions of x in different files 20:24 jonrafkind: in planet you can do (require (planet 1 2 x)) or whatever to specify a version 20:24 Cryovat: Would be cool if there was some file where essentially 20:24 (quit) neilv: Ping timeout: 260 seconds 20:25 Cryovat: (define planet (make-repository "http://planet.racket-lang.org/index.something")) 20:25 Sgeo: I can almost guarantee that try-racket and 4racket would be more accurate to Racket than try-clojure and 4clojure are to Clojure 20:25 jonrafkind: I think in planet2 you have more control over the server 20:25 jonrafkind: i mean the repository 20:26 Sgeo: tryclj and 4clojure use Clojail for sandboxing. Clojail uses a not completely accurate recursive macroexpander. 20:27 Cryovat: Having a try-racket would be very cool 20:27 Sgeo: Yes 20:28 Cryovat: I've mentioned it before, but I don't have the knowhow to make it :( 20:32 (quit) bitonic: Ping timeout: 252 seconds 20:33 Sgeo: Probably cobble together code from tryhaskell with code from rudybot 20:35 (quit) cdidd: Ping timeout: 252 seconds 20:35 Sgeo: Actually, we'd want users to be able to try writing modules, right? 20:36 rudybot: Careful, don't poke. Ow. 20:36 Cryovat: Would that be necessary? 20:36 Cryovat: It'd be a text box on a web page 20:36 asumu: You can write modules at the REPL anyway. 20:37 asumu: rudybot: (module foo racket (define x 3) (provide x)) 20:37 rudybot: asumu: Done. 20:37 asumu: rudybot: (require 'foo) 20:37 rudybot: asumu: Done. 20:37 asumu: rudybot: x 20:37 rudybot: asumu: ; Value: 3 20:37 asumu: Though yeah, a try-racket with #lang would be nicer in some ways. 20:37 Sgeo: Can't use #lang languages at a REPL 20:37 Cryovat: Where does that semicolon come from? :o 20:39 jonrafkind: you can use #lang's at the repl 20:39 jonrafkind: its some argument to racket 20:39 jonrafkind: racket -I blah, I think 20:40 (join) mizu_no_oto 20:40 Sgeo: jonrafkind, o.O 20:40 asumu: Random: is it just me or is there a "Could not connect to remote server" message in the background of http://blog.racket-lang.org/ ? 20:40 asumu: Well, you cna start the REPL in a language, but you can't change it. 20:40 asumu: *can 20:40 (quit) masm: Remote host closed the connection 20:41 asumu: I guess try-racket could just have a choice widget or something. 20:41 asumu: And work like rudybot 20:41 Cryovat: Where do you see it asumu? 20:41 Sgeo: Someone should make a language with freeform language extension 20:41 asumu: rudybot: init typed-racket 20:41 rudybot: asumu: error: default-load-handler: cannot open input file: "/mnt/racket-5.2.900.1/collects/typed-racket/main.rkt" (No such file or directory; errno=2) 20:41 asumu: rudybot: init typed/racket 20:41 rudybot: asumu: your typed/racket sandbox is ready 20:41 Sgeo: So, just use one language in the middle of antother 20:41 Sgeo: Reader and all 20:41 asumu: Cryovat: near the definition of `b1` in the top post 20:42 Cryovat: Can't see anything like that 20:42 Cryovat: Blogger having a bad moment? 20:42 asumu: Hmm, okay my browser must be weird. I don't see it in firefox either. 20:42 asumu: Oh, and it went away. 20:45 (join) mithos28 20:45 (quit) mithos28: Client Quit 20:48 (quit) spiderweb: Read error: Connection reset by peer 20:54 Cryovat: Heh 20:54 Cryovat: For some reason, I ended up on the Intro Projects wiki page, which sent me on to Rosetta Code 20:54 Cryovat: Racket is currently missing an entry on the Quine page 20:55 Cryovat: There is one for Scheme though 20:59 (quit) Nisstyre-laptop: Quit: Leaving 21:03 Sgeo: What happens if I want to redefine function application just within the body of one function that should see other definitions in the surrounding module and should be available to the surrounding module? 21:03 Sgeo: A macro that says "ok, function application is different here") 21:05 jonrafkind: hm, im not sure you can do that.. 21:05 Sgeo: I'd like to be able to though 21:06 Cryovat: Would said function be called bind perchance? ;) 21:06 Sgeo: Would it be possible to make a macro that rebinds #%app within the body given to it? 21:09 Sgeo: Hmm, I think it might be possible 21:11 (quit) kofno: Remote host closed the connection 21:16 jonrafkind: oh right actually I think that is reasonable 21:17 jonrafkind: maybe 21:18 Sgeo: I don't entirely understand the label phase level 21:19 (join) sw2wolf 21:19 Sgeo: If it's used to bring stuff in for documentation, won't phase 1+ stuff still need to run to find all relevant definitions that would be available to a phase 0 program? 21:21 (join) kofno 21:22 (quit) kofno: Read error: Connection reset by peer 21:22 (join) nejucomo 21:26 Cryovat: Stupid question time: Whhy does both apply and #%app exist? 21:27 (join) mithos28 21:30 jonrafkind: #%app is a primitive form that is really no different from normal function application 21:30 jonrafkind: so (f 1 '(2 3)) is different from (apply f 1 '(2 3)) 21:30 jonrafkind: the latter is the same as (f 1 2 3) 21:31 (join) RacketCommitBot 21:31 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/baVy6A 21:31 RacketCommitBot: racket/master 8b7379a Matthew Flatt: docs: clarification for `immutable?' 21:31 RacketCommitBot: racket/master 7cb7bea Matthew Flatt: fix non-JIT build... 21:31 (part) RacketCommitBot 21:31 jonrafkind: #%app is kind of only relevant for the expander. its part of the core AST that is sent to the compiler 21:31 (quit) jschuster: Ping timeout: 252 seconds 21:31 Cryovat: So every normal function application has an #%app in front of it? 21:32 Cryovat: +implicit 21:32 jonrafkind: yea 21:32 jonrafkind: the expander rewrites (f a) as (#%app f a) 21:32 Cryovat: Could apply have been used there, or do they have different semantics? 21:33 jonrafkind: apply is a normal function 21:34 jonrafkind: (apply f a) is rewritten as (#%app apply f a) 21:34 sw2wolf: then why the compiler needs #%app ? 21:34 jonrafkind: its how it recognizes function applications 21:35 Cryovat: Ah, tried entering #%app and apply into the REPL 21:35 jonrafkind: you know when you write a normal parser you parse f(a) into something like (Invocation f (Args a)) 21:35 jonrafkind: that (Invocation) AST thing is what racket calls #%app 21:35 Sgeo: Cryovat, it's so that things can change what function application does 21:36 Sgeo: (+ 1 2 3) turns into (#%app + 1 2 3). So if I change the meaning of #%app, I change what (+ 1 2 3) means 21:36 Cryovat: Ah, that makes sense 21:37 Cryovat: Thanks :) 21:37 Sgeo: You're welcome 21:38 sw2wolf: user program donot need to use #%app ? 21:39 jonrafkind: no 21:39 Cryovat: sw2wolf: It seems very much like one of those things you should never touch unless you have a very good reason for it 21:39 (join) jschuster 21:39 Cryovat: And if you do, you're probably doing things too complicated ;) 21:39 jonrafkind: Sgeo, actually I know why rebinding #%app might not work, because the app that you bind in the macro will not be used by the expander 21:39 sw2wolf: Cryovat: i see 21:41 Sgeo: Cryovat, you know the lazy language? It's easy to imagine it changing #%app for its purposes 21:41 Cryovat: That's true 21:42 Cryovat: I have a feint hope that one day, there might be a marriage of Lazy Racket and Typed Racket ;) 21:42 (join) kofno 21:42 Sgeo: That's sort of one of my criticisms of Racket currently, it doesn't seem obvious how to combine two languages 21:43 Sgeo: Cryovat, Haskell fan? 21:43 asumu: Sgeo: label phase import happens on compiled programs, so phase 1+ computations should already have run. 21:43 Cryovat: Kind of 21:43 Cryovat: I've been trying to get into Haskell for a while 21:43 Cryovat: And keep on having "oh, awesome!" moments reading about it 21:43 asumu: AFAIK, anyway. I don't know the implementation details of label-phase. 21:44 Cryovat: But it still makes me feel incredibly stupid :\ 21:49 sw2wolf: haskell is a "theory language" which is not VERY practical 21:50 Sgeo: The most impractical things about Haskell to me are difficulty of macros and difficulty of changing running code 21:50 Sgeo: It occurs to me that both do kind of apply to Racket 21:50 Cryovat: I think it can be practical language once you get into it 21:50 Cryovat: It's just that it forces so much theory on you 21:50 sw2wolf: You can learn its concepts but hard to use i real programming 21:51 (quit) mithos28: Quit: mithos28 21:51 Sgeo: Its form of I/O can be really convenient sometimes 21:55 Sgeo: Why is this disallowed? (define (foo) (define bar 5)) 21:55 Sgeo: rudybot, eval (define (foo) (define bar 5)) 21:55 rudybot: Sgeo: error: #:1:0: begin (possibly implicit): no expression after a sequence of internal definitions in: ((define bar 5)) 21:56 offby1: rudybot: (define (foo) (define bar 5) bar) 21:56 rudybot: *offby1: your sandbox is ready 21:56 rudybot: *offby1: Done. 21:56 offby1: rudybot: (foo) 21:56 rudybot: *offby1: ; Value: 5 21:57 Sgeo: offby1, I know, but what's so bad about a useless define in a useless definition? 21:57 Sgeo: It might be bad to write by hand, but macros can easily produce "bad" (ugly) code in some circumstances, and should macros have to check for that? 21:58 Cryovat: I'd say yes 21:58 (join) mithos28 21:58 Cryovat: Macros are magical 21:58 Sgeo: I'd say no. 21:58 Cryovat: So they should fail as quickly as possible 21:58 (join) spiderweb 21:59 Sgeo: Why should a macro need to be burdened by checks to make sure it's not producing "useless" code that still actually makes sense? 21:59 asumu: It's not that it's useless. It's just that definitions are not expressions and there cannot return a result. 21:59 asumu: *therefore cannot 22:00 asumu: In an imaginary world where definitions evaluated to void and were expressions, it would be legal code. 22:00 Cryovat: Why don't they? 22:00 Cryovat: Scheme legacy? 22:01 Cryovat: To me, the most obvious thing would be for a definition to evaluate to its value 22:01 asumu: It makes scoping weird. What's the scope of the binding of x in (f (define x 3) 5)? 22:01 Cryovat: Ah, that's true 22:01 asumu: (assuming 'f' is bound to a function and not a macro) 22:04 asumu: I guess in languages with implicitly declared variables, the answer is that there's a default scope. 22:05 asumu 's personal opinion is that implicit variables are more trouble than they're worth 22:06 (join) serhart 22:06 Cryovat: Agreed 22:06 Cryovat: It's a nightmare in Javascript 22:07 mye: for me, programming is a nightmare. Good thing I'm a masochist :-P 22:08 sw2wolf: Can plt-web-server be used to production ? 22:09 sw2wolf: Are there any VPS which supports using plt-web-server ? 22:09 asumu: sw2wolf: sure, and there are people that do. Like http://iwl.me/ 22:09 sw2wolf: great ! 22:10 Cryovat: Is racket-lang.org "self-hosted"? 22:10 Sgeo wonders if Heroku could be made to use Racket 22:10 sw2wolf: me too 22:10 asumu: (also apparenlty I write like Arthur Clarke) 22:11 asumu: https://github.com/onixie/heroku-buildpack-racket 22:11 Cryovat: Are you a fan? :D 22:11 (join) RacketCommitBot 22:11 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/-pHXIg 22:11 RacketCommitBot: racket/master 9b62726 Robby Findler: tweak the latex rendering of ╔ and company 22:11 (part) RacketCommitBot 22:12 asumu: Yeah, I enjoyed his _Childhood's End_ especially. 22:12 Cryovat: I haven't read that :/ 22:13 Cryovat: Hmm 22:13 Cryovat: There is a Kindle version 22:13 asumu also liked the 2001 series, of course. :p 22:13 Cryovat: I haven't read too much classical sci fi 22:14 Cryovat: I started on one of the Foundation books by Asimov, but found it... weird 22:14 Sgeo: Apparently I write like Isaac Asimov 22:14 Sgeo: Based on one of my Tumblr posts 22:14 (quit) mizu_no_oto: Ping timeout: 255 seconds 22:15 (join) RacketCommitBot 22:15 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/3Bdvjg 22:15 RacketCommitBot: racket/master 0d01db8 Sam Tobin-Hochstadt: Fix type of `log-message`. 22:15 (part) RacketCommitBot 22:15 Sgeo: What happens if someone is using the nick RacketCommitBot when it comes in? 22:17 jonrafkind: it probably just alters its name, appending a _ or 1 to it 22:17 sw2wolf: What is the difference between "(define (out format-string . args) ...)" and "(define (out format-string args) ... )" ? 22:17 mye: sw2wolf: args is a list with the arguments 22:17 (join) mizu_no_oto 22:17 jonrafkind: common lisp doesn't have rest args? 22:18 sw2wolf: CL has &rest 22:18 jonrafkind: oh, so its like that i guess 22:20 sw2wolf: mye: thx 22:21 sw2wolf: jonrafkind: it is simple than CL's &rest 22:21 sw2wolf: at least type little 22:23 (join) Kaylin 22:23 Sgeo: sw2wolf, you may or may not be pleased to know that in Racket, rest parameters and keyword parameters won't get in eachother's way 22:23 sw2wolf: oh 22:24 Sgeo: um 22:24 Sgeo: Looking at the guide, actually, accepting both rest and keyword arguments is ugly 22:24 sw2wolf: i would like to hear 22:25 Sgeo: n/m not ugly 22:25 Cryovat: It sounds a bit icky :P 22:26 Sgeo: rudybot, eval (define (foo #:a a #:b b . rest) (list b a rest)) (foo #:a 5 #:b 6 1 2 3) 22:26 rudybot: Sgeo: ; Value: (6 5 (1 2 3)) 22:26 Sgeo: The trick is that #:a is not actually a value, unlike in CL 22:26 Sgeo: Keyword arguments don't work by looking at the rest of the arguments 22:27 Sgeo: rudybot, eval (define (foo #:a a #:b b . rest) (list b a rest)) (foo 1 2 3 #:a 5 #:b 6) 22:27 rudybot: Sgeo: ; Value: (6 5 (1 2 3)) 22:28 Sgeo: rudybot, eval #:not-actually-a-value 22:28 rudybot: Sgeo: error: #:1:0: #%datum: keyword used as an expression in: #:not-actually-a-value 22:28 Sgeo: rudybot, eval #:not-actually-a-value 5 22:28 rudybot: Sgeo: error: #:1:0: #%datum: keyword used as an expression in: #:not-actually-a-value 22:29 sw2wolf: a bit tricky ? 22:29 Sgeo: #%datum is another hook that's pervasive in fully expanded syntax, similar to #%app 22:29 Sgeo: In your own language, you could redefine #%datum to allow keywords to be arguments 22:30 Sgeo: I guess that #%app does some special thing when it sees keywords, but don't know 22:30 asumu: rudybot: (keyword? '#:foo) 22:30 rudybot: asumu: your typed/racket sandbox is ready 22:30 rudybot: asumu: ; Value: #t 22:30 rudybot: asumu: ; stdout: "- : Boolean\n" 22:30 asumu: They have to be quoted to be values. 22:30 Sgeo: rudybot, eval (define (foo #:a a #:b b . rest) (list b a rest)) (foo 1 2 3 #:a 5 '#:b 6) 22:30 rudybot: Sgeo: error: foo: requires an argument with keyword #:b, not supplied; arguments were: 1 2 3 '#:b 6 #:a 5 22:31 asumu: (you can apply with quoted kws via `keyword-apply`... but usually you don't want/need to) 22:32 Sgeo: The need for a separate keyword-apply is the thing that bothers me about the way Racket handles it 22:33 asumu: `apply` also takes keywords, actually 22:33 asumu: rudybot: (apply (lambda (#:x [x 5]) x) #:x 7) 22:33 rudybot: asumu: error: #:1:16: lambda: not an identifier at: #:x in: (lambda (#:x (x 5)) x) 22:34 asumu: rudybot: (apply (lambda (a #:x [x 5]) x) #:x 7) 22:34 rudybot: asumu: error: #:1:18: lambda: not an identifier at: #:x in: (lambda (a #:x (x 5)) x) 22:34 Sgeo: asumu, but when you're writing a function that's just going to take the same arguments as some other function, do stuff, then call the other function with those arguments, you need to deal with keywords with keyword-apply and that other thing 22:35 Sgeo: A simple wrapper with a rest argument and apply doesn't cut it, the way it would with CL or Clojure 22:35 asumu: rudybot: init racket 22:35 rudybot: asumu: your sandbox is ready 22:35 asumu: rudybot: (apply (lambda (a #:x [x 5]) x) '(5) #:x 7) 22:35 rudybot: asumu: ; Value: 7 22:36 asumu: Sgeo: yes, that's true. 22:37 (nick) sw2wolf -> sw2wolf{away} 22:42 Fare: keyword-apply ? 22:42 Fare: rudybot: keyword-apply 22:42 rudybot: Fare: Hmm. (keyword-apply p (append k0 k1) (append a0 a1) (append p0 p10)) doesn't work; you need to merge the sorted lists, or KEYWORD-APPLY needs to sort itself. 22:43 Fare: rudybot: doc, keyword-apply 22:43 rudybot: Fare: The need for a separate keyword-apply is the thing that bothers me about the way Racket handles it 22:44 asumu: rudybot: doc keyword-apply 22:44 rudybot: asumu: http://docs.racket-lang.org/reference/procedures.html#(def._((lib._racket%2Fprivate%2Fbase..rkt)._keyword-apply)) 22:44 asumu: Fare: ^ 22:45 Sgeo: Why is rudybot quoting me? 22:46 Fare: asumu: thanks 22:47 (quit) serhart: *.net *.split 22:47 (quit) lusory: *.net *.split 22:47 (quit) offby1: *.net *.split 22:47 (join) offby1 22:47 Fare: I don't love keyword-apply but I don't love the alternatives either. 22:47 (quit) nejucomo: Ping timeout: 276 seconds 22:47 (quit) offby1: Changing host 22:47 (join) offby1 22:48 Fare: whichever way you do things, when you make function calls fancy, that fanciness will lead to complexity in "reflective" features that explicitly handle it. 22:51 mye: I read in a post by Rob Pike golang doesn't support optional args bc. it leads to bad interface design. Now I have a little devil in my head that makes me feel bad when I use fancy interfaces and I don't even know why :x 22:51 Fare: I might have done it by reifying argument calls as finite association maps from argument positional index or keyword to value, or something. 22:52 (join) nejucomo 22:53 Fare: with lists and sequences being objects satisfying the "finite association map" interface. 22:55 (quit) jeapostrophe: Ping timeout: 265 seconds 22:56 (join) jeapostrophe 22:56 (quit) jeapostrophe: Changing host 22:56 (join) jeapostrophe 22:58 (quit) mithos28: Quit: mithos28 22:59 (join) mithos28 23:04 (quit) jeapostrophe: Ping timeout: 255 seconds 23:10 (join) serhart 23:11 (quit) nejucomo: Remote host closed the connection 23:12 (join) nejucomo 23:12 Sgeo: There's a lot of really cool stuff that's in the reference but not in the guide 23:19 (join) Shvillr_ 23:19 (quit) Shviller: Disconnected by services 23:19 (nick) Shvillr_ -> Shviller 23:21 mithos28: Is there a reason that there is a box-cas! but not the equivalent for vector? 23:21 (quit) Shvillr: Ping timeout: 260 seconds 23:22 (join) Shvillr 23:28 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 23:28 (quit) francisl: Quit: francisl 23:30 (join) spiderweb 23:46 Sgeo reads dyoo's brainfuck tutorial 23:46 Sgeo: Erm, I guess it's not really about Brainfuck 23:49 Sgeo: Actually, I think dyoo consistently censors the name 23:52 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 23:58 (quit) kofno: Read error: Connection reset by peer