00:00 rck: evening, starting sicp. anyone mind showing me around racket? 00:00 rck: trying to load a file into the repl and then be able to call functions from that file 00:00 mithos28: (load "file.scm") 00:00 rck: yeah I tried that 00:01 mithos28: what happened? 00:01 rck: seems to work but racket doesn't know about my functions 00:01 rck: namespace or something I'm missing? 00:01 lewis1711: you need to do provide 00:01 rck: lewis1711: mind elaborating? 00:02 mithos28: rck: Are you following sicp to the letter (more or less)? 00:02 lewis1711: (provide ...) or (provide (all-defined-out)) if you just want everything 00:02 rck: mithos28: I'm on chapter 1 so pretty standard scheme stuff so far 00:02 didi: lewis1711: `load' is different from `enter!'. 00:03 didi: Nah, `require'. 00:03 mithos28: rck: you will have some issues because sicp is so old, and doesn't have a module system 00:03 mithos28: what does your file that you are trying to load look like 00:03 rck: just 3 functions 00:03 (quit) francisl: Quit: francisl 00:03 mithos28: can you paste it somewhere? 00:03 rck: sure one sec 00:04 rck: http://community.schemewiki.org/?sicp-ex-1.3 00:04 rck: not mine but the first example is pretty close 00:04 didi: rck: Is the file you want to load in the same directory which you started Racket? 00:04 rck: yup 00:04 mithos28: load works fine for me 00:04 rck: (load "filename") 00:04 rck: then you can (function x y z)? 00:04 mithos28: yep 00:04 rck: strange 00:05 mithos28: can you paste your whole setup 00:05 rck: okay thanks. I'll keep researching 00:05 rck: mithos28: what exactly do you mean? 00:05 mithos28: Show the actual file you are using, and what your repl looks like 00:06 mithos28: I'm guessing you are glossing over some key difference that you don't know is key 00:06 rck: my file is exactly like the top example from that site. I did add #lang scheme though 00:06 mithos28: that would be it 00:06 rck: repl is homebrew install racket 00:06 didi: :^) 00:07 mithos28: If you want to use load you need to remove the #lang scheme 00:07 rck: no lang directive at all? 00:07 mithos28: correct 00:07 rck: haha oy. thanks! 00:08 mithos28: If you want to use a #lang you need to use provide and require, because that is the module system 00:08 rck: ahhh okay 00:09 rck: yep works 00:09 rck: hurray 00:09 didi: Go rck! 00:09 sw2wolf: How about enter! ? 00:10 mithos28: sw2wolf: enter! is for the module system 00:11 sw2wolf: mithos28: require is same as enter! ? 00:12 mithos28: no, enter! requires using the module system 00:12 (join) Meldasu 00:12 mithos28: It is the same as the DrRacket repl 00:12 lewis1711: what's the "idomatic" thing to do when your struct needs some constructor logic? right now I just make a little function called "make-structname" and only export that. 00:12 mithos28: lewis1711: I would use structname*, and export that 00:13 mithos28: renamed of course 00:13 mithos28: So you are doing it the right way 00:13 (join) dyoo 00:13 lewis1711: you mean define structname*, then export structname? yeah that makes sense 00:14 lewis1711: *export it as 00:14 mithos28: Yeah so the only change was make-structname to structname* in the inside of the module 00:14 mithos28: As star usually implies mostly the same thing but slightly different 00:15 dyoo: lewis1711: idiomatically, I make a separate function, and export that. Example: https://github.com/dyoo/data-red-black/blob/ordered-set/data/red-black/ordered-set.rkt#L51 00:15 rudybot: http://tinyurl.com/b2garrx 00:16 Meldasu: Hello, I am looking for a little help with an assignment i have, not sure where else i would find people who even know what im talking about so if you know a better place i could ask let me know, but anyway I am supposed to "draw the Pda which accepts all strings in the set {x in {a,b}* | na(x) = nb(x)}" and the empty string ins in the language. anyone able to give me some direction or help? 00:16 dyoo: If I really want to disguise it as if it were the real constructor, I could rename it from 'new-ordered-set' to 'ordered-set', but usually I don't bother. :) 00:16 mithos28: To really disguise it you need to use procedure-rename 00:17 Kaylin: pushdown automaton? /me so that's like a finite state machine with a stack? 00:17 Kaylin remembers vaguely. 00:17 dyoo: Meldasu: unfortunately, that's not a racket question; it's a theory-of-computation question, and most of us here probably don't have the background to help. It's been a while since I've read Sipser. 00:18 Meldasu: do you maybe know an IRC where i could find help for this? 00:18 lewis1711: I did nfas and dfas in racket, not pdas though (I thought I'd do it in ruby, ran out of time, and failed the assignment :() 00:19 mithos28: na(x) = number of a's in x? 00:19 lewis1711: Meldasu: http://docs.racket-lang.org/unstable/Automata__Compiling_State_Machines.html#%28part._dfa%29 this may help (IIRC, pdas are an extenion of nfas) 00:19 rudybot: http://tinyurl.com/b8shvff 00:19 dyoo: Meldasu: no, sorry, dunno 00:20 dyoo: lewis1711: no, PDAs are more powerful. They get to use a stack. NFAs don't. 00:20 Meldasu: okay, thank you for your help :] 00:20 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 00:22 (quit) rck: Quit: WeeChat 0.3.9.2 00:22 lewis1711: dyoo: yes I know that, but an NFA is a good starting point for one, isn't it? like I said I ran out of time :P the state machines thing in racket cant handle custom transition functions though 00:22 lewis1711: that I can see, so my link was useless 00:23 lewis1711: oh wait, it can 00:24 lewis1711: sort of :/ 00:25 (quit) jao: Ping timeout: 246 seconds 00:28 dyoo: If the interpretation for na() and nb() is what mithos28 guessed, then I'm not even sure it can be processed by pushdown automata. I can't think of a way to express what Meldasu's language is with a context free grammar, which is equivalent in power to pushdown automata. Therefore: I suspect it's not, but again I'm rusty with theory-of-computation, and I'd need to be able to use the pumping lemma for CFAs in anger to be positive. 00:28 dyoo: s/CFA/PDA 00:28 mithos28: pushdown automata can do it if my interpretion is correct 00:31 lewis1711: rudybot:  (require unstable/automata) 00:31 rudybot: lewis1711: your sandbox is ready 00:31 rudybot: lewis1711: error: default-load-handler: cannot open input file: "/mnt/racket-5.2.900.1/collects/unstable/automata.rkt" (No such file or directory; errno=2) 00:32 lewis1711: :( 00:35 didi: lewis1711: I just tried to make a grid game but I suck at it. :^( 00:36 (join) gatlin_ 00:38 lewis1711: oh herp derp 00:38 lewis1711: rudybot:  (require unstable/automata/machine) 00:38 rudybot: lewis1711: Done. 00:45 (quit) Meldasu: Quit: Page closed 00:52 (join) RacketCommitBot 00:52 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/2YAUuQ 00:52 RacketCommitBot: racket/master f607a3b Neil Toronto: Added stress test: libmpfr C struct accessor vs. Racket struct accessor 00:52 RacketCommitBot: racket/master 769e8b4 Neil Toronto: Added `array->list-array'... 00:52 (part) RacketCommitBot 00:55 (quit) jeapostrophe: Ping timeout: 255 seconds 01:00 (quit) dyoo: Quit: dyoo 01:04 (quit) didi: Quit: ERC Version 5.3 (IRC client for Emacs) 01:07 sw2wolf: After `git clone https://github.com/plt/racket.git`, how can i make it up to date later ? 01:07 sw2wolf: quickly 01:07 mithos28: git pull 01:07 sw2wolf: thx 01:08 sw2wolf: i want to reinstall racket withouy using FreeBSD ports where i canot config its installation 01:09 sw2wolf: mithos28: how can i config racket to make it install quickly ? 01:09 mithos28: Why do you need it to install quickly? Isn't it a one time cost? 01:10 sw2wolf: i recall it takes VERY long to install racket from freesbd ports. 01:11 mithos28: I haven't had any issues on OS X, I don't know what the issue on freebsd is so I cannot say what you would need to change 01:11 mithos28: --disable-documentation will speed it up 01:11 sw2wolf: yes 01:11 mithos28: but at the loss of local documentation 01:12 sw2wolf: last time `raco setup ...` takes long time 01:12 mithos28: the docs are part of that step 01:13 sw2wolf: yes, i can see doc online 01:15 (quit) mceier: Quit: leaving 01:17 sw2wolf: It is making now after `configure --prefix=$HOME/racket --disable-documentation` ... 01:25 lewis1711: sw2wolf: aren't freeBSD ports source code? 01:25 lewis1711: not binary distribution. if you install from the shell scripts on the racket site it should be quick 01:30 sw2wolf: lewis1711: freebsd port cannot config racket's option 01:31 sw2wolf: --disable-documentation makes it faster than before 01:31 sw2wolf: haha, make finish ! i will `make install` now 01:32 lewis1711: yes, but with FreeBSD ports you have to compile source code. Which is why it's slow. You can use pre-compiled racket 01:32 sw2wolf: there is no racket package 01:32 mithos28: lewis1711: Compiling racket from source is fast compared to compiling the racket libraries to bytecode 01:33 sw2wolf: it seems `make install` will take long time than `make` 01:34 sw2wolf: mithos28: you are right ! now it is `raco setup: ...` 01:34 lewis1711: mithos28: what do the install scripts do from the "downloads" section? never found those to be slow 01:35 mithos28: lewis1711: Those usually have the bytecode compiled 01:35 sw2wolf: lewis1711: maybe precompiler binary 01:35 mithos28: you notice this if you are compiling from head 01:36 mithos28: because remaking the racket binary is fast, but every library needs to be recompiled 01:38 sw2wolf: BTW, the module name i.e. "aaa/bbb" must have directory aaa/bbb in OS ? 01:38 sw2wolf: same as java 01:38 mithos28: sw2wolf: Only if you use the default module resolver 01:39 sw2wolf: then can i choose other module resolver ? 01:39 mithos28: You can write your own 01:40 sw2wolf: i think most racketer will use default one ? 01:40 mithos28: yes 01:40 sw2wolf: thxc 01:40 sw2wolf: i see 01:47 (quit) gatlin_: Ping timeout: 252 seconds 01:57 lewis1711: is there a functional update funciton for lists? something like (update '(1 2 3) 2 add1) => '(1 2 4) 01:57 lewis1711: I know how to write a function myself, but why invent the wheel? 02:37 (join) mceier 02:53 lewis1711: maybe I shouldn't be using combinatorial methods for a functional that is essentially linear algebra, even if I am reducing the domain to discrete numbers 02:53 sw2wolf: Why "--dsable-documentation" it still `raco setup: rendering: /../.../*,scrbl` ? 02:54 lewis1711: whoops wrong channel 02:56 jonrafkind: sw2wolf, what about -D 02:57 sw2wolf: it should be "--disable-docs" when configuring racket ? 02:58 sw2wolf: jonrafkind: install racket 02:58 (quit) Demosthenex: Ping timeout: 265 seconds 02:58 jonrafkind: --disable-docs yea I guess 02:59 sw2wolf: it wastes my time now re-configure :( 03:00 jonrafkind: you can just do 'make plain-install && raco setup -D' 03:00 (join) Demosthenex 03:01 sw2wolf: jonrafkind: thx, no docs will be fast 03:06 (join) tilde` 03:09 (quit) Demosthenex: Ping timeout: 252 seconds 03:11 (join) Demosthenex 03:11 (join) mye 03:17 (join) hkBst 03:17 (quit) hkBst: Changing host 03:17 (join) hkBst 03:21 (quit) Demosthenex: Ping timeout: 244 seconds 03:22 (join) Demosthenex 03:23 lewis1711: so many algorithms are only provided in a horribly imperative way. which means I either have ugly code or waste time translating it. 03:45 (quit) hkBst: Ping timeout: 260 seconds 03:46 (join) hkBst 03:46 (quit) hkBst: Changing host 03:46 (join) hkBst 03:46 sw2wolf: How to understand this code snippet: 03:47 sw2wolf: (let ([var val]) 03:47 sw2wolf: (case-lambda 03:47 sw2wolf: [() var] 03:47 sw2wolf: [(new-val) (set! var new-val)])) 03:47 mithos28: Its a box 03:47 sw2wolf: what's case-lambda ? 03:48 mithos28: a function that acts differently depending on the number of arguments 03:48 mithos28: ie it 'cases' off of the number of arguments 03:48 sw2wolf: the function is: (define* (make-fun-box val) (...))) 03:51 sw2wolf: then how to call make-fun-box ? 03:53 sw2wolf: there is only one argument val ? 03:59 (quit) jonrafkind: Ping timeout: 250 seconds 04:02 (quit) Demosthenex: Ping timeout: 260 seconds 04:04 (join) Demosthenex 04:27 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 04:38 (quit) Kaylin: Read error: Connection reset by peer 04:54 (join) nathanpc 05:10 (join) bitonic 05:32 lewis1711: is there anything like "first" that doesn't throw an exception on an empty list? 05:43 (join) myx 06:13 (join) skanev 06:15 (quit) SamB: Remote host closed the connection 06:25 mye: lewis1711: was trying to translate some CL code to racket yesterday, ran into this as well. I'm not sure what the rationale behind this is. 06:25 mye: probably it forces you to properly handle cases 06:36 (quit) skanev: Quit: skanev 06:53 (join) francisl 07:00 (join) sw2wolf 07:04 (join) masm 07:07 (join) skanev 07:07 (quit) francisl: Quit: francisl 07:17 (join) kofno 07:27 (quit) skanev: Quit: skanev 07:30 (quit) bitonic: Ping timeout: 252 seconds 07:39 (join) soegaard 07:45 (join) skanev 07:48 (join) francisl 07:51 (part) sw2wolf: "Leaving" 07:58 (join) RacketCommitBot 07:58 RacketCommitBot: [racket] plt pushed 6 new commits to master: http://git.io/Am9niA 07:58 RacketCommitBot: racket/master a6eb219 Matthew Flatt: avoid spurious arity mismatch in {s,n}boyer benchmarks 07:58 RacketCommitBot: racket/master ea79cc4 Matthew Flatt: benchmark noise... 07:58 RacketCommitBot: racket/master 4721a79 Matthew Flatt: define-logger: make `(define-logger X)' define `X-logger' 07:58 (part) RacketCommitBot 07:58 (quit) soegaard: Quit: soegaard 08:01 (join) jeapostrophe 08:01 (quit) jeapostrophe: Changing host 08:01 (join) jeapostrophe 08:20 (part) lewis1711 08:20 (quit) vu3rdd: Ping timeout: 260 seconds 08:25 (quit) tilde`: Read error: Connection reset by peer 08:25 (join) tilde` 08:39 (quit) tilde`: Read error: Connection reset by peer 08:40 (join) tilde` 08:42 (join) mizu_no_oto 08:46 (quit) tilde`: Read error: Connection reset by peer 08:46 (join) tilde` 08:48 (quit) kofno: Remote host closed the connection 08:49 (join) kofno 09:09 (quit) jeapostrophe: Ping timeout: 244 seconds 09:09 (join) tilde`_ 09:10 (quit) tilde`_: Read error: Connection reset by peer 09:10 (quit) tilde`: Read error: No buffer space available 09:18 (join) bitonic 09:27 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 09:32 (join) francisl_ 09:32 (quit) francisl: Ping timeout: 252 seconds 09:32 (nick) francisl_ -> francisl 09:37 (join) mizu_no_oto 09:48 (quit) myx: Read error: Operation timed out 09:49 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 09:57 (quit) skanev: Quit: skanev 09:58 (join) skanev 10:02 (join) myx 10:17 (join) Aune 10:29 (join) mizu_no_oto 10:32 (join) hash_table 10:38 (join) anRch 10:40 (join) gatlin_ 10:45 (join) jeapostrophe 10:45 (quit) jeapostrophe: Changing host 10:45 (join) jeapostrophe 10:55 jeapostrophe: asumu: what's left to make pfds work on p2? 10:55 jeapostrophe: i was going to start porting it today, but noticed that it all looks ready 10:58 (quit) mceier: Quit: leaving 10:58 (quit) em: Ping timeout: 260 seconds 10:59 (join) em 11:00 (quit) gatlin_: Ping timeout: 248 seconds 11:01 (quit) bitonic: Ping timeout: 260 seconds 11:02 (join) bitonic 11:03 (join) francisl 11:10 (quit) karswell: Excess Flood 11:13 (join) masm1 11:14 (quit) hkBst: Remote host closed the connection 11:15 (join) karswell 11:15 (quit) masm: Ping timeout: 255 seconds 11:18 (join) gatlin_ 11:22 (join) netrino 11:23 (quit) francisl: Ping timeout: 244 seconds 11:25 (join) francisl 11:25 (quit) noelw: Quit: noelw 11:28 (quit) bitonic: Ping timeout: 256 seconds 11:29 (quit) Aune: Quit: Hath Deprated 11:30 asumu: jeapostrophe: it should already work. I was going to revise some of the docs, but maybe I should just put it up and revise later. 11:31 jeapostrophe: +1 to that :) 11:31 (join) bitonic 11:32 (join) samth 11:33 (join) Kaylin 11:33 (join) soegaard 11:47 samth: jeapostrophe: what's the current plan for moving things from `collects` to planet2? 11:47 samth: besides sirmail? 11:47 jeapostrophe: samth: robby, matthew, and i think that we need the resolver w/ auto install before that is appropriate 11:48 jeapostrophe: after it is in place, i hope for a massive exodus 11:48 samth: jeapostrophe: i feel like the bigger hurdle is building the releases 11:49 jeapostrophe: i was just going to say that i think matthias, eli, and the others put a lot of stock into that 11:49 jeapostrophe: but eli seems to have a good idea 11:49 samth: sure, i understand 11:49 samth: i just think that even auto-installation is insufficient for, say, the 2htdp collection 11:49 (quit) gatlin_: Ping timeout: 250 seconds 11:50 samth: on the other hand, there are some collections that could move out even now 11:50 samth: handin-server, eg 11:50 (quit) jrslepak: Quit: What happened to Systems A through E? 11:50 jeapostrophe: ya, math, slideshow 11:50 jeapostrophe: i think there will be a bit where even though we could cut them (like 2htdp) we won't 11:50 samth: right 11:51 samth: i'd be fine with moving slideshow even with no new support (speaking as a heavy slideshow user) 11:51 samth: but there's a docs issue there 11:51 samth: asumu: ping 11:58 (join) RacketCommitBot 11:58 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/tGSbsg 11:58 RacketCommitBot: racket/master f7d7bf0 Sam Tobin-Hochstadt: Increase some DrDr timeouts. 11:58 (part) RacketCommitBot 12:00 samth: jeapostrophe: are you working on fixing http://drdr.racket-lang.org/25863/collects/meta/check-dists.rkt 12:01 samth: jeapostrophe: also, do you know if this is fixable: http://drdr.racket-lang.org/25862/collects/tests/gracket/windowing.rktl ? 12:04 (quit) bitonic: Ping timeout: 260 seconds 12:06 (join) bitonic 12:07 (quit) anRch: Quit: anRch 12:07 (quit) francisl: Remote host closed the connection 12:07 (join) samth_ 12:07 (join) francisl 12:12 jeapostrophe: samth: the second isn't fixable according to robby. we've tried many variations of X setups and WMs and it is just unreliable on X 12:13 jeapostrophe: samth: i hadn't noticed the first. i don't get why tests can't rely on meta, since neither is distributed 12:17 (join) mceier 12:20 (join) MayDaniel 12:24 (quit) masm1: Quit: Leaving. 12:29 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 12:30 (join) lewis1711 12:37 (join) mizu_no_oto 12:38 (quit) skanev: Quit: skanev 12:47 (join) sizz 12:48 (quit) sizz_: Ping timeout: 260 seconds 13:02 samth: jeapostrophe: i don't get that either 13:02 samth: jeapostrophe: for the second one, can we just disable that test on DrDr? 13:03 jeapostrophe: I think that Robby wants it because it has had different errors before 13:03 jeapostrophe: I think we should change the test to use < .. < rather than = 13:03 jeapostrophe: because it is only ever a few values 13:03 (join) RacketCommitBot 13:03 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/RbtLSQ 13:03 RacketCommitBot: racket/master 8fc0aed Sam Tobin-Hochstadt: Increase another timeout. 13:03 (part) RacketCommitBot 13:03 samth: jeapostrophe: i don't mean the whole file, just that one bit of it 13:04 (join) muraiki0 13:04 (quit) bitonic: Ping timeout: 244 seconds 13:04 (quit) samth_: Ping timeout: 265 seconds 13:06 (join) spiderweb 13:08 jeapostrophe: ah, email robby maybe 13:10 (join) gatlin 13:11 (quit) muraiki0: Quit: Page closed 13:18 (join) dyoo 13:18 (join) jonrafkind 13:22 (join) masm 13:25 (join) samth_ 13:34 (quit) samth_: Ping timeout: 240 seconds 13:34 (join) nejucomo 13:35 samth: jeapostrophe: also, this looks like a planet2 issue: http://drdr.racket-lang.org/25864/collects/tests/zo-path.rkt 13:36 nejucomo: In the same module I have: (begin-for-syntax (let (...) (lambda (a b c) (let ([a2 (match a [...] [(cons foo bar) (my-function foo bar)])]) ...))) 13:37 nejucomo: Oops, there's a (define func ...) wrapping the outer let (as an immediate child of begin-for-syntax). 13:37 nejucomo: Then in a macro I call (func ...), but I get "bar" is an unbound identifier in the call to my-function. 13:37 nejucomo: I can't see why. 13:41 stamourv: nejucomo: Can you paste the code somewhere? 13:42 nejucomo: Sure. 13:42 (join) skanev 13:45 nejucomo: Here's the output of tests showing the unbound identifier error: http://codepad.org/PuBMOJlP 13:46 nejucomo: Here's the revision of the module which has this bug: https://bitbucket.org/nejucomo/sappho-on-racket/src/941fd6d7becda6981f0432e22e844bac25eb759e/lib/sappho/lang/main.rkt?at=lexical-purity-context-app-syntax 13:46 rudybot: http://tinyurl.com/a2aqw58 13:47 nejucomo: Oh... Hm. It says line 146 which is the *pattern* of a match, not the body... 13:48 nejucomo: Oh, no, it does say line 147, which is the body of the match clause. I was looking at the wrong output. 13:50 nejucomo: It may be a bit involved, and I'm still a bit shaky on syntax transformers, templates, unquoting, etc... 13:52 stamourv: nejucomo: Have you tried `(require (for-syntax racket/match))' ? 13:56 (join) didi 14:04 nejucomo: Ah, I'll try that. 14:04 nejucomo: -but without that, shouldn't match be an unbound identifier? 14:07 nejucomo: That didn't alter the error message. 14:09 (join) RacketCommitBot 14:09 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/FhA_7Q 14:09 RacketCommitBot: racket/master fff5212 Neil Toronto: Fixed infinite printing loop... 14:09 (part) RacketCommitBot 14:11 (join) neilv 14:13 (join) ijp 14:14 nejucomo: Oh, that *did* fix it, I was requiring for-syntax the wrong module. 14:14 nejucomo: Thanks. 14:17 (join) SamB 14:20 neilv: is anyone other than plt people using planet2? 14:21 neilv: i just read the docs, and skimmed the email lists 14:22 (quit) skanev: Quit: skanev 14:24 (join) jrslepak 14:24 nejucomo: How can I prevent error messages from being truncated with ... ? 14:24 (quit) jonrafkind: Ping timeout: 252 seconds 14:25 neilv: error-print-context-length ? error-print-width ? 14:26 nejucomo: Thanks. 14:29 mye: neilv: is there a way to make the expected and result values in overeasy line up underneath each other? I find it to be very convenient in all the other test libs I use, e.g. when comparing string values or nested lists. 14:31 (join) bitonic 14:31 neilv: mye: yes, i've been meaning to do that 14:32 neilv: mye: i'm also probably going to change it to use the new logging facility in 5.3.1, and get rid of that automagic changing the reporting format when you have a test-section 14:33 neilv: i got sidetracked with making planet1 easier to use, not knowing planet2 was imminent 14:35 mye: neilv: an api to plug in output formats is still a good idea IMO. 14:36 neilv: mye: yes. i want to work rough spots out of the default 14:36 neilv: first 14:37 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 14:39 (quit) francisl: Quit: francisl 14:40 (join) jonrafkind 14:43 nejucomo: I have a syntax-case pattern which matches (X Xs ...) and in the expansion clause I call (my-function #'(X Xs ...)). 14:45 nejucomo: I have something like: (let [(my-function (lambda (xs) (for/list ([x (syntax-e xs)]) (mytransform x))))] ...) 14:45 nejucomo: -but the result of (syntax-e xs) looks like a cons of two syntaxes, instead of a list of syntaxes. 14:46 nejucomo: Basically I just want to define a syntax that has a repeated part where there must be at least one element, then I want to access each element of this repetition as a syntax object. 14:46 nejucomo: What's a good way to do this? 14:47 nejucomo tries passing #'(cons X (Xs ...)) to my-function... 14:50 neilv: syntax-e is too low-level. try syntax->list with #'(X Xs ...) 15:03 asumu: jeapostrophe: I just got this error from raco pkg. Any idea what I did wrong? https://gist.github.com/4236031 15:05 (quit) sethalves: *.net *.split 15:05 (quit) cky: *.net *.split 15:05 (quit) elliottcable: *.net *.split 15:05 (quit) rapacity: *.net *.split 15:11 (join) sethalves 15:11 (join) cky 15:11 (join) elliottcable 15:11 (join) rapacity 15:11 (quit) elliottcable: Max SendQ exceeded 15:12 (join) elliottcable 15:22 (quit) nejucomo: Ping timeout: 276 seconds 15:22 (quit) myx: Ping timeout: 248 seconds 15:24 (join) gridaphobe 15:24 (join) nejucomo 15:30 nejucomo: Could anyone point me to a simple example of syntax-parameterize in use? 15:31 nejucomo: I have (define-syntax-parameter foo ...) (begin-for-syntax (define-syntax foo-special ...)) (define-syntax bar ... (syntax-parameterize ([foo foo-special]) ...)) 15:31 nejucomo: -but I get a syntax error on "foo-special". 15:31 jeapostrophe: asumu: it looks like there is an error in Matthew's tar reader for some tars produced by github 15:31 jonrafkind: dont put the foo-special in a begin-for-syntax 15:31 jeapostrophe: asumu: you should download the tar (or link to it) and send it to him 15:33 nejucomo: jonrafkind: If I don't, then I get: "expand: unbound identifier in module (in the transformer environment, which does not include the macro definition that is visible to run-time expressions) in: foo-special" 15:34 nejucomo: I've run into this error before and I don't understand it. I think it's because I don't have a clear understanding of phases, perhaps? 15:34 nejucomo: Does "the macro definition that is visible to run-time expressions" mean that some macro transformations happen in phase 0? 15:34 jonrafkind: nejucomo, are you doing (define-syntax bar (lambda stx) #'(syntax-parameterize ([foo foo-special]) ...) ? 15:35 jonrafkind: that is are you returning a syntax object with the syntax-parameterize inside it? 15:35 nejucomo: No, the syntax-parameterize is not inside a syntax. 15:35 jonrafkind: it should be 15:36 nejucomo: Ok, I tried that and now I get: "expand: unbound identifier in module (in phase 1, transformer environment) in: foo-special" 15:36 nejucomo: What a minute, how are those two error messages different? 15:36 jonrafkind: ok can you paste a complte example 15:36 nejucomo: Isn't the "transformer environment" the same as "phase 1" ? 15:37 jonrafkind: yes 15:37 nejucomo: Sure, just a sec. 15:38 jonrafkind: oh wait the expr is a transformer expr 15:38 jonrafkind: ok i think you just dont want to bind foo-special as a define-syntax, just do (begin-for-syntax (define (foo-special stx) ...)) 15:39 nejucomo: The language module is here: https://bitbucket.org/nejucomo/sappho-on-racket/src/2165c524bad02d3cd8a1b85b0998cb7b9689048e/lib/sappho/lang/main.rkt?at=lexical-purity-context-app-syntax 15:39 rudybot: http://tinyurl.com/aza2uym 15:39 jonrafkind: because foo itself is already bound as a macro so you dont need to bind its value (what syntax-parameterize changes) to a macro too 15:39 nejucomo: -and I can pastebin the error output if you'd like. 15:40 jonrafkind: does it work now 15:40 nejucomo: Ok, that helps a bit. Could you point me to how/where macros are implemented? What does "define-syntax" do? 15:40 nejucomo tries. 15:40 nejucomo: My understanding of macros is getting in the way... 15:40 jonrafkind: ah good question! 15:40 nejucomo: Currently the foo-special is defined like: (define-syntax foo-special (syntax-rules ...)) 15:40 jonrafkind: http://docs.racket-lang.org/guide/phases.html?q=phases#(part._.Phases_and_.Bindings) 15:41 jonrafkind: define-syntax creates a binding at phase 0 whose value lives in phase 1 15:41 jonrafkind: (begin-for-syntax ...) allows you to make bindings at phase 1 15:41 nejucomo: -but is syntax-rules a stand-alone macro or a keyword of (define-syntax) ? 15:41 jonrafkind: its a macro that is bound at phase 1 15:41 jonrafkind: he body of a define-syntax is a phase 1 expression 15:41 jonrafkind: so anything you execute there must be bound at phase 1 15:41 nejucomo: In the former case, I could just alter my definition from: (define-syntax foo-special (syntax-rules ...)) -to- (define foo-special (syntax-rules ...)) -right? 15:42 jonrafkind: although syntax-rules is actually provided at both phase 0 and phase 1 for some reason 15:42 jonrafkind: uhm arent those the same things 15:42 jonrafkind: oh wait 15:42 jonrafkind: define vs define-syntax 15:43 nejucomo: Ah... a "binding at phase 0 whose value lives in phase 1" is my first lead on understanding why phases confuse me so much... 15:43 jonrafkind: hm actaully that error doesnt make sense, both define and define-syntax produce a phase 0 binding 15:43 nejucomo: I had thought a binding and its value must live in the same phase. 15:43 jonrafkind: but define excepts its expression to also be at phase 0 while define-syntax uses phase 1 15:43 nejucomo: Is there any difference between define and define-syntax other than the phase of the value expression? 15:44 jonrafkind: well the expander treats things defined with define-syntax specially 15:44 jonrafkind: but other than that no 15:44 nejucomo attempts (printf "Thingy: ~V\n" (syntax-rules () [blah blah])) 15:45 jonrafkind: syntax-rules expands to (lambda (stx) ...) 15:45 jonrafkind: so it will just be a function 15:45 nejucomo: Ok, great, that's helps a bit. 15:47 nejucomo: Ok, so the *similarities* between define and define-syntax are their grammar, but the differences are that the former creates a value binding and the latter creates a transformer binding, and I'm still not sure about phases. 15:48 jonrafkind: right 15:48 nejucomo: -> (printf "Thingy: ~V\n" (syntax-rules () [x x])) 15:48 nejucomo: ; readline-input:50:23: syntax-rules: bad syntax in: (syntax-rules () (x x)) 15:48 jonrafkind: you have to put parens around the pattern 15:48 jonrafkind: [(x) x]) 15:48 nejucomo: Thanks! 15:49 nejucomo: Ok that clears up a bit of understanding there... 15:49 jonrafkind: i guess the docs use the term 'transformer binding' to mean a binding at phase 0 whose value lives in phase 1 15:50 jonrafkind: i would rather 'transformer' just be an alias for phase 1 though 15:50 nejucomo: So where I use syntax-parameterize, which is inside a template, the right-hand of the parameter is presently a name, and it needs to be bound to a transformer in phase 1, correct? 15:50 nejucomo rereads Phases and Bindings to understand how a binding can live in phase yet have a value in another phase. 15:50 nejucomo: Well, lunch first. 15:51 (nick) nejucomo -> neju|lunch 15:52 (quit) cdidd: Ping timeout: 248 seconds 15:53 jonrafkind: well that is the magic of define-syntax 15:53 jonrafkind: its the bridge between phases 15:54 jonrafkind: without it you couldnt communicate anything between phases 15:54 jonrafkind: http://pastebin.com/ysKjzkdx neju|lunch in case it hepls 16:03 (join) mizu_no_oto 16:16 (quit) dyoo: Quit: dyoo 16:48 (quit) gatlin: Ping timeout: 264 seconds 16:49 (quit) kofno: Remote host closed the connection 16:50 didi: Wow, `collects/xml/path.rkt' is match heavy. 16:51 (quit) neilv: Quit: Leaving 16:57 (quit) hash_table: Ping timeout: 250 seconds 17:12 (quit) jrslepak: Quit: What happened to Systems A through E? 17:25 (quit) didi: Ping timeout: 264 seconds 17:36 ozzloy: https://gist.github.com/4236873 how do i get a stack trace from rackunit test failures? (lines 57 through 70) 17:38 asumu: ozzloy: if you can catch the exception, you can use `error-display-handler` to print its stack trace. 17:38 asumu: You may need to put it in a test-case to catch the exception. 17:39 ozzloy: check failures are exceptions? 17:40 asumu: rudybot: eval (require rackunit) (define tc (test-case (check-equal? 2 3))) 17:40 rudybot: asumu: your sandbox is ready 17:40 rudybot: asumu: error: current-test-name: expected argument of type ; given: # 17:40 asumu: rudybot: eval (require rackunit) (define tc (test-case "foo" (check-equal? 2 3))) 17:40 rudybot: asumu: ; stderr: "--------------------\nFAILURE\nname: check-equal?\nlocation: (# 1 41 42 18)\nexpression: (check-equal? 2 3)\nactual: 2\nexpected: 3\n\nCheck failure\n--------------------\n--------------------\nfoo\nFAILURE\nname: check-equal?\nlocation: (# 1 47 48 18)\nexpression: (check-equal? 2 3)\nactual: 2\nexpected: 3\n\nCheck failure\n--------------------\n" 17:40 asumu: Hmm. 17:40 (quit) MayDaniel: Read error: Connection reset by peer 17:41 asumu: rudybot: (with-handlers ([exn:test:check? (lambda (e) (error-display-handler "foo" e))]) (test-case "foo" (check-equal? 2 3))) 17:41 rudybot: asumu: ; stderr: "--------------------\nfoo\nFAILURE\nname: check-equal?\nlocation: (# 1 97 98 18)\nexpression: (check-equal? 2 3)\nactual: 2\nexpected: 3\n\nCheck failure\n--------------------\n" 17:42 ozzloy: i'll come back to this later 17:42 ozzloy: asumu, thanks for now 17:42 ozzloy: for the help 17:43 (quit) mizu_no_oto: Ping timeout: 240 seconds 17:44 asumu: It should be possible to catch the exception. I just don't remember how. 17:45 (quit) mye: Ping timeout: 240 seconds 17:46 (join) gatlin 17:50 (join) MayDaniel 17:52 (quit) Kaylin: Read error: Connection reset by peer 17:52 (join) Kaylin 17:54 (quit) MayDaniel: Read error: Connection reset by peer 17:54 (join) hash_table 17:56 (join) MayDaniel 17:56 (join) jrslepak 17:59 (quit) MayDaniel: Read error: Connection reset by peer 18:00 asumu: ozzloy: here's a way to do it, but I'm not sure it'll give you much useful info: https://gist.github.com/4237247 18:03 (quit) hash_table: Ping timeout: 252 seconds 18:04 (quit) Kaylin: Read error: Connection reset by peer 18:12 (join) anRch 18:12 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 18:27 (quit) ijp: Read error: Connection reset by peer 18:28 (join) ijp 18:29 (join) jao 18:29 (quit) jao: Changing host 18:29 (join) jao 18:30 (quit) bitonic: Ping timeout: 260 seconds 18:33 (join) RacketCommitBot 18:33 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/W1oRTw 18:33 RacketCommitBot: racket/master cde226c Burke Fetscher: redex-generator: correctly drop failure continuations 18:33 (part) RacketCommitBot 18:33 (join) bitonic 18:36 (quit) gatlin: Ping timeout: 255 seconds 18:39 (quit) anRch: Quit: anRch 18:40 (quit) jeapostrophe: Ping timeout: 252 seconds 18:41 (join) RacketCommitBot 18:41 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/UoB0dA 18:41 RacketCommitBot: racket/master 92c5025 Burke Fetscher: add some random generation tests 18:41 (part) RacketCommitBot 18:42 (join) gatlin 18:47 (quit) gatlin: Ping timeout: 252 seconds 19:09 soegaard: Anyone interested in testing this: https://gist.github.com/019d30cfed891b1899b9 19:09 soegaard: I have tested on Mountain Lion 64 bit. 19:11 (join) jeapostrophe 19:11 (quit) jeapostrophe: Changing host 19:11 (join) jeapostrophe 19:12 asumu: Don't have a convenient Mac here, but can try later. 19:13 soegaard: thanks 19:25 (join) sw2wolf 19:36 (quit) dca: Ping timeout: 246 seconds 19:39 (join) dca 19:40 (quit) masm: Quit: Leaving. 19:42 (quit) soegaard: Quit: soegaard 19:49 (join) dnolen 19:56 (join) dyoo 19:59 (quit) jonrafkind: Read error: Operation timed out 20:07 nejucomo: Is there a way to generate a guaranteed unique value in terms of eq? 20:07 (quit) netrino: Ping timeout: 276 seconds 20:07 (quit) dnolen: Remote host closed the connection 20:09 (join) dnolen 20:14 Nisstyre: nejucomo: you could make a nullary struct I think 20:14 nejucomo: Hm. 20:16 Nisstyre: nejucomo: (struct unique ()) (define foo (unique)) (define bar (unique)) (eq? foo bar) 20:16 Nisstyre: that returns #f 20:16 Nisstyre: is that what you want? 20:16 nejucomo: Ok, thanks. 20:16 nejucomo: I think so. 20:17 nejucomo: I want to bind a name to a value which has 2 cases: it is either a unique default value which could never be returned from a given function, or it is a return value of the function. 20:17 nejucomo: -then I want to distinguish if the value is from the function or not. 20:17 Nisstyre: nejucomo: sounds like Maybe :P 20:18 Nisstyre: http://en.wikipedia.org/wiki/Monad_(functional_programming)#The_Maybe_monad 20:19 Nisstyre: this can be done in Racket quite easily 20:19 Nisstyre: although typed racket would provide a stronger framework to check correctness 20:20 nejucomo: Indeed. Is there a Maybe in racket? 20:20 nejucomo: I could also track whether or not the function was called by a separate binding... Maybe that's simplest. 20:21 nejucomo: I'm familiar with Maybe from haskell. I think typed racket would be overkill at this point, I just want to solve a simple problem. 20:21 nejucomo: I realized there's already another distinction in another binding I can use, so no need for any of these more elaborate approaches. 20:21 Nisstyre: something like > (struct Maybe ()) > (struct Nothing Maybe ()) > (struct Just Maybe (a)) 20:21 Nisstyre: would be simple and would work with match 20:23 Nisstyre: e.g. (match (foo 3) [(Just a) a] [(Nothing) "Nothing"]) 20:24 Nisstyre: cool right? 20:28 nejucomo: Ah, that is cool! I was imagining a variant syntax for racket, but I didn't realize that's already possible with struct inheritance. 20:28 nejucomo: rudybot: (struct Maybe ()) 20:28 rudybot: nejucomo: your sandbox is ready 20:28 rudybot: nejucomo: Done. 20:28 nejucomo: rudybot: (struct Nothing Maybe ()) 20:28 rudybot: nejucomo: Done. 20:28 nejucomo: rudybot: (struct Just Maybe (a)) 20:28 rudybot: nejucomo: Done. 20:29 nejucomo: (Maybe? (Nothing)) 20:29 nejucomo: rudybot: (Maybe? (Nothing)) 20:29 rudybot: nejucomo: ; Value: #t 20:29 nejucomo: Ok, cool. 20:29 Nisstyre: yep, Racket is awesome 20:29 dyoo: nejucomo: http://docs.racket-lang.org/ts-reference/type-ref.html?q=option#(form._((lib._typed-racket/base-env/base-types..rkt)._.Option)) 20:30 dyoo: I could have sworn I saw Maybe already there, but Option should have similar behavior 20:31 dyoo: With regard to making a unique value: I've often used cons to create a unique value 20:31 (join) tsion 20:31 (quit) tsion: Changing host 20:31 (join) tsion 20:31 dyoo: sorta like: (define unique-val (cons 'unique #f)) 20:31 dyoo: and then just make sure I don't export it :) 20:32 (quit) gridaphobe: Ping timeout: 248 seconds 20:32 nejucomo: Ah, I wasn't sure if cons was guaranteed unique, because I noticed somewhere cons cells are immutable in racket. 20:32 nejucomo: -but I had thought of mcons. 20:32 nejucomo searches for docs on cons and mcons. 20:32 dyoo: they're still unique. I hope! Let me double check to make sure, but I'm fairly certain they're guaranteed to allocate unique values 20:33 dyoo: Yeah, the docs use the term "newly allocated" in http://docs.racket-lang.org/reference/pairs.html#(def._((quote._~23~25kernel)._cons)) 20:33 dyoo: so at least the docs back up that idea 20:33 dyoo will be back in a moment 20:33 nejucomo: Right, I just read "newly allocated". 20:34 nejucomo: I'm still tempted to use mcons just in case someday (cons) magically reuses memoized results. ;-) 20:37 dyoo back 20:38 (quit) jrslepak: Quit: What happened to Systems A through E? 20:39 dyoo: looking at the question more closely; another technique people occassionally do here is pass a success and fail function, to force the user to account for both possibilities 20:39 dyoo: a hybrid approach is something like how hash-ref deals with missing keys: 20:39 dyoo: let's see if rudybot is happy with me this time... 20:39 dyoo: rudybot: (define ht (make-hash)) 20:39 rudybot: dyoo: your sandbox is ready 20:39 rudybot: dyoo: Done. 20:40 dyoo: rudybot: (hash-ref ht 'foobar (lambda () 'not-found)) 20:40 rudybot: dyoo: ; Value: not-found 20:40 dyoo: It's just that hash-ref provides a default "failure function" that raises an exception. 20:42 (quit) bitonic: Ping timeout: 255 seconds 20:43 (join) gatlin 20:43 nejucomo: dyoo: There are three cases: success, fail, and no result. 20:44 dyoo: nejucomo: checking something... 20:45 nejucomo: Option looks ambiguous (I haven't read about typed racket yet) because #f is a valid result. 20:45 dyoo: nejucomo: there's actually a nice paper that talks about this. Dunno if you're interested: "Toward Leakage Containment" ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/pubs/iucstr346.ps.gz 20:45 nejucomo: Neat. 20:46 nejucomo: Thanks. 20:48 nejucomo: Actually I realized a continuation-style seems cleanest. 20:49 dyoo: I do like return values, of course. :) But maybe CPS style is appropriate for what you're doing. 20:53 (join) jrslepak 20:55 nejucomo: I may have spoken too soon. ;-) I'm still in that newbie phase where I try three different approaches to each small-scale issue. 20:55 nejucomo: I have a (struct S (a b c)) -where a b and c should either be #f or a procedure. 20:56 nejucomo: I thought maybe this would be a general pattern of "get a and call it with args or, if it is #f, do this other thing". 20:56 dyoo: yes, I've seen that pattern once or twice. It shows up in make-do-sequence 20:56 nejucomo: But maybe I want a simpler: get a, or if it is #f, return this default. 20:58 (quit) SamB: Remote host closed the connection 20:59 (quit) mithos28: Quit: mithos28 20:59 (join) cdidd 21:00 sw2wolf: I studied CL by hacking stumpwm before. now i want to study racket in which i found RWin. but RWin is just a prototype. Can you racketter tell me a more practical racket application(s) for me to study ? 21:00 (join) mithos28 21:02 dyoo: sw2wolf: good question! I'd just been poking at fairly middle-sized modules in PLaneT. Do you already know about PLaneT? 21:02 (join) PCChris 21:03 sw2wolf: dyoo: i heard of PLaneT same as QuickLisp in CL ? 21:03 dyoo: I believe so, at least from a quick google of the term "QuickLisp". :) 21:03 dyoo: Here's the url: 21:03 dyoo: http://planet.racket-lang.org/ 21:04 sw2wolf: then any practical PLT you recommend me to start ? 21:05 nejucomo: I'm used to ( . ) in lisp-likes to mean there is a cons cell with 's value as the cdr. It looks like that works in racket in the context of quote. 21:05 nejucomo: rudybot '(1 . (2)) 21:05 nejucomo: ? 21:05 bremner: rudybot: init racket 21:05 rudybot: bremner: your sandbox is ready 21:05 bremner: rudybot: eval '(1 .(2)) 21:05 rudybot: bremner: ; Value: (1 2) 21:05 (join) mizu_no_oto 21:05 nejucomo: -but that syntax doesn't seem to mean what I think it means outside of quote, such as in normal procedure application: 21:06 dyoo: sw2wolf; thinking… well, I know that rudybot here is on github too, so maybe that might be interesting? Let me see if I can find the github url... 21:06 nejucomo: rudybot (+ 1 . (2)) 21:06 mithos28: nejucomo: The reader interprets it as a cons 21:06 mithos28: rudybot: (+ 1 . (2)) 21:06 rudybot: mithos28: your sandbox is ready 21:06 rudybot: mithos28: ; Value: 3 21:06 dyoo: sw2wolf: https://github.com/offby1/rudybot 21:06 nejucomo: Does '.' get handled above the reader level? 21:06 mithos28: nejucomo: No 21:06 nejucomo: Hey wait a minute... 21:06 nejucomo glances at local repl... 21:06 sw2wolf: dyoo: thx 21:06 mithos28: you need the colon for rudybot 21:06 (quit) mizu_no_oto: Client Quit 21:07 dyoo: sw2wolf: it might also be worthwhile to ask the racket user's mailing list this question; would be interesting to see what else people propose 21:07 dyoo: I have my own projects, but they're sorta messy at the moment.. :) 21:07 nejucomo: Oh... heh... nevermind. I had a spurious quote in my local test. 21:07 sw2wolf: dyoo: good suggestion 21:07 dyoo: nejucomo: should be at the reader level. 21:07 nejucomo: -so in that case, . is kind of a simple replacement for apply, right? 21:08 (join) SamB 21:08 mithos28: nejucomo: Not really 21:08 nejucomo: In fact, it might be "leaner" than apply. 21:08 mithos28: it only works if the list is literal, and then you might as well not include the . and extra () 21:09 nejucomo: mithos28: How is it different, neglecting keyword arguments (which I don't understand yet...) 21:09 nejucomo: mithos28: Oh, of course. Ok. 21:09 nejucomo: -because (f x . xs) gets parsed as an improper list terminated by a symbol... 21:10 mithos28: right 21:10 nejucomo: Ok, back to the user's guide. 21:10 (quit) SamB: Remote host closed the connection 21:14 (join) gridaphobe 21:28 (join) Havvy 21:28 (quit) Havvy: Changing host 21:28 (join) Havvy 21:29 Havvy: Does Typed Racket have Option[a] where a is another type? 21:29 mithos28: Havvy: Sorta 21:30 mithos28: rudybot: (: t (Option Number)) 21:30 rudybot: mithos28: error: reference to an identifier before its definition: : in module: 'program 21:30 mithos28: rudybot: init typed/racket 21:30 rudybot: mithos28: your typed/racket sandbox is ready 21:30 mithos28: rudybot: (: t (Option Number)) 21:30 rudybot: mithos28: Done. 21:30 mithos28: rudybot: (define t (or #f )) 21:30 rudybot: mithos28: Done. 21:31 Havvy: rudybot: t 21:31 rudybot: Havvy: say I have a list (#t '()) how do I append elements to '()? Do I have to create a new list at each append, or can I use something like set-cdr! ? 21:31 mithos28: It depends on what you want Option to mean, 21:31 mithos28: Havvy: You have a different interpreter session than me 21:32 Havvy: Oh. 21:32 Havvy: But overall, (Option MyType) works. 21:32 Havvy: ? 21:33 mithos28: Yes it is equivalent to (U #f MyType) 21:33 mithos28: Which means that (Option (Option MyType)) is the same as (Option MyType) 21:34 Havvy: So you use #f instead of 'none. 21:45 (join) kofno 21:48 (join) francisl 21:55 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 22:03 (join) mizu_no_oto 22:06 (quit) mizu_no_oto: Client Quit 22:13 (quit) dyoo: Quit: dyoo 22:14 nejucomo: Is there a convenient way to define a function that takes any number of positional arguments and keyword arguments? 22:25 (quit) mithos28: Quit: mithos28 22:30 (join) mithos28 22:30 (quit) kofno: Remote host closed the connection 22:32 (quit) gatlin: Ping timeout: 244 seconds 22:43 (quit) ijp: Ping timeout: 264 seconds 22:45 (join) sw2wolf 22:51 (quit) Shviller: Read error: Connection reset by peer 22:51 (join) Shviller 23:00 (quit) nathanpc: Quit: Computer has gone to sleep. 23:05 (join) mye 23:08 (join) vu3rdd 23:08 (quit) vu3rdd: Changing host 23:08 (join) vu3rdd 23:09 (join) mizu_no_oto 23:17 mithos28: nejucomo: make-keyword-procedure 23:26 (join) gatlin 23:31 nejucomo: Thanks. That seems more heavy handed than I had hoped, but that could do. 23:31 mithos28: nejucomo: What do you want to do? 23:31 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 23:32 nejucomo: mithos28: I abandoned that plan. 23:34 nejucomo: What I wanted to do was write a procedure which takes a variable number of arguments, plus a keyword argument, then matched the positional args and called other procedures, passing along the keyword argument. 23:35 mithos28: ok, well if you want more help with what you are trying to do, just ask 23:40 nejucomo: Thanks! 23:43 (quit) francisl: Quit: francisl 23:45 (quit) gatlin: Ping timeout: 255 seconds 23:50 (join) jonrafkind 23:51 (join) gatlin 23:56 (join) didi 23:57 (join) mye_ 23:59 (quit) mye: Ping timeout: 240 seconds 23:59 (nick) mye_ -> mye