00:00:26 -!- Sgeo has joined. 00:01:01 quines are a bit tricky 00:01:22 hmm 00:01:27 /\//\\\// 00:01:27 / -> \/ 00:01:30 could this be used? 00:01:49 no 00:01:54 nah... it would convert everything and you need just some 00:02:02 i don't know if that's why though :)= 00:02:27 plus, a \ in the "source" has to be escaped as \\, I think 00:02:28 it would loop. You can _never_ have the result contained in the source, even after unescaping 00:04:44 /a\/\a/\\\// 00:04:44 a/ -> a\/ 00:04:48 :D 00:04:54 but 00:05:04 won't help... i'd need an interpreter... 00:05:08 secondly, you cannot essentially have any source be a single character. 00:05:14 yeah 00:05:21 the interpreter is on the wiki page 00:05:25 perl? 00:05:27 isn't it 00:05:28 yep 00:05:31 hmm 00:05:41 i should do some dl'ing then 00:05:46 oh 00:05:53 i just considered adding a debugging option 00:05:59 i'd have to do that anyway :P 00:06:06 if it was an executalbe 00:06:07 *bl 00:06:09 -!- jix has quit (Read error: 110 (Connection timed out)). 00:06:12 sounds like a good addition 00:17:47 /sufficiently nonsential enough for much mass production/\/ (but mother(\/\\/pancreas polly\\/\\\/\\/\/ //pancreas polly/\/sufficiently nonsential enough for much mass production\/\ 00:18:04 .... 00:18:29 I have no clue what that will turn out as... but it seems like a step in the right direction... despite being utterly mind bending. 00:18:42 :D 00:19:49 ...attempting to interpret myself just leaves me going in circles.... but I'm hoping it's asynchronous circles. :) 00:21:57 you loos snefmmp right away there 00:22:01 *lose 00:22:19 ....snefmmp? 00:22:44 i won't write it 00:22:49 sufficiently nonsential enough for much mass production 00:22:58 ok the implementation now prints the program at each step if you give it the -d option. 00:23:39 well.... that was indended to be an "inbetween" encoding... I was hoping it would turn out as (mother being the equivalent of / 00:24:11 mm hmm 00:24:16 i don't know what that means 00:24:16 :\ 00:24:32 there is no use in an inbetween encoding 00:24:48 basically I'm thinking you need a replacement that replaces something with a replacement followed by / 00:25:35 ...or something equally convuleted. 00:26:44 in order to be able to recreate an inbetween coding you need something like storing it somewhere as two separate subpieces 00:30:20 well... my head is about to explode. 00:32:45 hm, this debugging was hard to separate from the output. Adding some brackets. 00:36:38 I SHALL TURN THIS INTO AN EASY TO THINK ABOUT GAME. 00:36:57 :) 00:37:43 i am sure that trusty old Mfit and Shanty will be happy to use different characters for / and \ :) 00:38:37 hmmmm.... good idea. 00:39:05 that's essentially what we need.... multiple interpreters. 00:39:39 btw someone asked whether the names Mfit and Shanty mean anything? 00:40:25 their names are fairly important to their function. 00:40:47 ...cleverly disguised iin nonsense words. 00:42:44 too cleverly :< 00:46:24 shanty isn't a nonsense word. 00:46:33 and miff it is neither 00:46:54 that doesn't help though 00:48:19 there are several things called Mfit apparently. 00:48:32 all things are help 00:48:42 and all things are true 00:59:00 i don't think i'm capable of making anything with ///, it took me 15 minutes to figure out how to make a quine in python :D 00:59:03 or 10 00:59:55 -!- tgwizard has quit (Remote closed the connection). 01:07:41 s='s=%r;print s%%s';print s%s 01:11:25 yeah, i win 01:11:49 win what? 01:12:46 a kitschy plastic cup with inscription? 01:14:45 well, i didn't remember you can do ';', neither that you can do "%s" 01:14:48 :) 01:15:35 ? 01:15:48 i think you mean %r 01:16:03 there is no actual %s format in that code 01:16:33 print(lambda a:a+chr(34)+a+chr(34)+chr(41))("print(lambda a:a+chr(34)+a+chr(34)+chr(41))(") 01:16:58 that is not the original though, took me < 2 min this time 01:17:00 much better 01:17:15 i shall learn it by heart 01:17:20 so i can make it in 20 sec 01:18:05 hehe wrote an interpreter for slashes... and python jammed, it's gone :D 01:18:31 how does python crashing make you lose your source? 01:18:40 why do they make all interpreters such that infinite loops kill them? 01:18:54 because i don't save it anywhere 01:18:57 ^C? 01:19:05 too late for that 01:19:30 don't you have perl? 01:19:35 nope 01:19:45 i think i just installed it though 01:19:57 activeperl build 5.8.8 01:20:03 i wonder what that means 01:20:33 this is a triumph of speech recognition: http://www.youtube.com/watch?v=KyLqUf4cdwc&mode=related&search= 01:21:00 and this is why speech recognition is a really flawed idea for coding 01:21:33 hmmm... 01:21:33 It would be terrible to code with speech recognition 01:21:48 I'm writting up the info for my collaboration thing.... 01:21:53 it might work with some languages, maybe forth, which has few delimiters 01:22:40 basically you just need to submit an interpreter in any language... the main process will feed the tokens one by one to the interpreters... 01:22:40 Perl is pretty much the worst language he could be using here in terms of character use 01:23:24 the only problem is that.... I don't have languages like C easily accessible on my computer (I still haven't figured out how to properly run C in Windows) 01:23:39 god that's good :o 01:23:49 i didn't know speech recognition is that good yet 01:24:42 obviously speech recognition *UI* isn't that good yet 01:25:11 -!- graue has quit ("Leaving"). 01:26:04 he just doesn't know how to use it 01:26:33 if 'press capital I' means 'I', i think it's pretty obvious 'capital I' does not work 01:26:57 -!- GreaseMonkey has joined. 01:28:23 i'd prefer it to understand certain syllables as 0,1,2,3...E,F and do the rest myself 01:29:04 man, that's terrible 01:29:26 are there better one's? 01:29:33 i've never seen anything like that :| 01:30:05 *ones 01:32:53 OSX has pretty nifty recognition, but it isn't designed to control the whole interface 01:33:08 It is cool how it can control everything 01:33:11 I wouldn't be surprised if 10.5 has better integration 01:33:24 But controlling everything would be infuriating 01:33:31 depends 01:33:47 http://www.youtube.com/watch?v=S9T3RXFDtfo&NR 01:33:48 Pressing keys is faster than verbalizing 01:34:08 M-k n, or "go to next window" 01:34:08 not really :\ 01:37:20 how long does it take to say "go to active window", compared to M-k k? 01:37:51 why do you have to day "go to active window"? 01:38:00 why can't you say "em kay kay" 01:38:20 or "em 'n' kay kay" 01:38:34 or just 'zwaf' 01:38:46 or just use my keyboard 01:39:10 well, i talk faster than type 01:39:13 so i wouldn't know 01:39:22 I've heard of speech recognition software causing speech problems 01:39:34 from changing your voice so it can recognize it 01:40:00 well, i don't see why you'd want to use english 01:40:38 you could easily make it recognize certaing murmurs 01:40:54 a phone did that 5 years ago i recall 01:41:35 of course, coding would be idiotic if you have hand to do it with 01:42:01 but i think it's be a faster way to navigate around the os 01:42:20 i don't like moving 01:43:07 (that last part had no relation to the former ones) 01:45:18 i'm starting to think it'd not be faster, but i still think it's cooler 01:51:35 star trek 01:54:00 speech recognition in star trek is pretty crazy, because LCARS (the OS, kinda) is supposed to use speech commands to assemble application software on the fly to perform the requested commands 01:54:36 essentially, LCARS has no programs- they're all created from LCARS's modular libraries at runtime 01:54:45 well, at that point i don't think there'd really be any need for humans on the ship... 01:54:49 fun 01:54:57 yeah... 01:55:25 LCARS would require a ludicrous amount of AI under the hood to work in speech mode 01:55:32 the GUI is pretty spiffy, though 01:55:40 or keykeyboard mode... 01:56:26 the idea of an interface consisting almost entirely of contextual menus and controls seems pretty workable 01:58:23 eh, if a GUI makes something easier, then I'm all for it. 01:59:00 .. 01:59:07 * SevenInchBread just saw what you guys were talking about. 01:59:11 in most cases, the minimalist GUIs we see on TV would never work, but LCARS is actually very well thought out 02:00:34 it's only real failing is multitasking, but multitasking isn't always what it's cracked up to be 02:01:02 plus, on star trek there's always plenty of screens allocated for the various tasks being done 02:01:52 methinks someone's a little too into it 02:02:00 * RodgerTheGreat shrugs 02:03:02 I just like how the operating system and the interface are deeply integrated, rather than the latter being an afterthought built seperately 02:07:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 02:09:05 http://esoteric.voxelperfect.net/wiki/Kallisti 02:11:29 u r teh clevar!!!!!!!!!!! 02:11:41 oh god, it begins again 02:12:47 hm 02:13:34 i don't get it 02:13:40 I dunno, it seems somehow less elegant than dupdog 02:13:42 :D 02:15:24 too bad. 02:15:30 Messiness == fun 02:18:06 SevenInchBread i don't get that :D 02:18:47 I couldn't think of a way to allow an arbitrary number of interpreters globally alter the source code... 02:18:59 so it can't be totally self-modifying. 02:19:07 they get the code, they return the code 02:19:12 it's that easy 02:19:29 plus, they always get a number indicating which token they are running 02:19:41 and they return another number indicating the next token 02:19:55 right right... but the problem with that is that there's no -order- in which they return them... unless I wait for each of them to output something before sending the token to another one. 02:20:54 well, make stdout the main program running the code 02:21:16 normal output is done like '\info \info' to the main program, 02:21:26 sorry 02:21:26 and if I let the interpreters affect the control flow of every other interpreter... there'd be countless race conditions. 02:21:47 output: ... endvalues: string number 02:21:48 each of the interpreters should be independent. 02:21:50 hmm 02:22:15 well, i meant you'd just assign one at the time 02:22:26 i can't figure out another way to do it with just stdio 02:23:14 it's boring if there's no self-modification 02:23:21 then there's really no language 02:24:04 ...I guess the interpreters could be simply be put in order... 02:24:29 well, that's what i implicitly suggested 02:25:29 not sure how the parser would no where to start over during a self-modification though... 02:26:55 hmm 02:27:10 i'm pretty sure that's not a sentence :| 02:27:16 but... hmm... 02:27:23 know 02:27:24 ah 02:27:36 SevenInchBread i already solver that 02:27:56 they get code and code pointer, they return new code and new code pointer 02:28:03 oh yeah, you're afraid of pointers 02:28:07 just an index :) 02:28:21 *solved goddamnit 02:28:47 not every language has pointers. 02:28:58 mmmm huh? 02:29:05 ...include Python (which I'll probably be implementing it in... or maybe Ruby) 02:29:09 *including 02:29:27 you mean they wouldn't understand a pointer given them? 02:29:28 oh. 02:29:37 you mean... just a number? 02:29:54 that's a little suspicious... but it would work. 02:29:56 1. that's stupid, pointer can't be anything more than a number, because everything is a number 2. yes 02:30:31 pointer is just a way to imply a number means an index, nothing more 02:30:44 just that it usually means an index to all the memory 02:30:54 i don't see why you go all berzerk every time you see it :) 02:31:32 anyways, i have some serious sleeping to do --------------------------> 02:31:45 cya 02:43:10 ...-shrug- just misunderstanding of terminology. 02:43:22 I have nothing against pointers... they're very useful. 02:56:00 ....I could take a dupdog-ian approach that doesn't use tokens. 02:56:48 just sheer... modification of the source code. 02:59:27 sounds awesome 02:59:50 the more this new language becomes like dupdog, the more fun I predict programming with it shall become 03:00:05 I still think Dupdog *might* be tc 03:01:56 -!- ShadowHntr has joined. 03:02:33 hi, ShadowHntr 03:02:47 evening 03:02:50 i just managed to run the Hello World program in the Haskell interpreter 03:03:35 (Dupdog interpreter) 03:03:53 kickass 03:04:01 still works? 03:04:18 Yeah, after I fixed a bug in the interpreter 03:04:53 cool 03:05:53 heh, funny that dupdog remained unnoticed for a couple of months... :) 03:08:21 and then a crack team of bored IRCers found it and started using it 03:14:40 Kallisti 5.0 - http://esoteric.voxelperfect.net/wiki/E%9AE1EBEBE%AFF%83F%84%E1F%83 03:14:48 ... 03:15:08 http://esoteric.voxelperfect.net/wiki/Kallisti 03:21:31 ...dupdog is like, the laziest invention ever. 03:27:25 does this fall under the juristiction of ABCDEF? 03:29:42 augh! 03:29:53 it's explicitly stated to never abbreviate that! 03:30:04 ... 03:30:27 The Adjudicated Blind Collaborative Design Esoteric Factory is an important name that deserves more than an acronym. 03:36:02 >.> 03:36:07 !help 03:36:10 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 03:36:12 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 03:45:43 RodgerTheGreat, where is the Haskell interpreter for dupdog at? 03:45:57 i haven't put it up yet 03:46:02 ah. 03:46:23 need to add a few features such as a main function :) 03:46:25 * SevenInchBread lost interest in dupdog... so never got around to fully fixing his implementation. 03:46:41 there is another implementation in thutu however. 03:46:48 heh, so it's functional now? 03:46:58 any implementation will do. 03:47:39 for some reason ais523 (i think it was him) didn't put a link on the wiki 03:48:08 it was on the channel recently, a pastebin link i think 03:50:50 ...I think Stue is the only one of my languages that had an implementation before it had a specification... still haven't written it up yet. 03:52:32 http://pastebin.ca/raw/397577 but you need to change 128 to 257, the current Hello World assumes mod 257 wrapping 03:54:24 eh... I wanted the source. :P 03:55:37 for some reason ais523 hasn't told us the original thutu. 03:57:54 I think she's a terrorist. 04:01:09 you think she's a she? 04:02:32 anyhow i hope my interpreter will deal better with lots of duplications. Shared functional data structure. 04:02:51 although with Haskell you never know about space. 04:03:32 nah, wasn't sure. I kind of prefer she over he when the gender is unknown. 04:06:08 I guess the wrap mod is implementation defined... 04:06:24 i intend to make it an option 04:06:52 in the meantime I should write the specification for Stue... and maybe fix up the interpreter a bit. 04:07:01 indeed i intend to have two: one used for output and one for internal/debugging use 04:07:18 and work on some of my unfinished languages... I've got one based on gravity sources. 04:07:52 not using any complicated math though... just simple spatial relations. 04:24:36 -!- wooby has joined. 04:32:09 -!- Arrogant has joined. 04:41:51 -!- GregorR_ has joined. 04:43:05 -!- GregorR_ has quit (Remote closed the connection). 04:59:03 deadbeefbabe 04:59:03 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 04:59:16 -!- wooby has joined. 05:02:37 -!- GreaseMonkey has quit (Remote closed the connection). 05:27:15 -!- ShadowHntr has quit ("End of line."). 05:29:50 -!- GreaseMonkey has joined. 05:31:32 ok, my bot works, now it's onto coding the lang 05:33:07 my bot is better~ 05:33:25 :P 05:36:34 i'm still making my own 05:36:38 so yeah 05:36:52 sadly my HD died and took GreaseBot with it 05:36:59 but there's new hope 05:37:35 my new bot is named "RoboMonkey" and has exactly the same functionality as it did in the very early stages of GreaseBot.... raw commands, and that's it. 05:37:55 now i'm working on the BrainSecks interpreter 05:37:58 ~raw TICKLE GreaseMonkey 05:38:54 don't you mean ~ctcp TICKLE GreaseMonkey ? 05:38:58 no 05:39:10 hmm, tickle isn't a command 05:39:16 I know 05:40:07 my new bot has several things of the old bot: the "PASS/NICK/USER" join method, and raw commands are like: 05:40:22 $PRIVMSG #esoteric i challenge you bsmnt_bot 05:57:02 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 06:00:15 -!- Arrogant has quit ("Leaving"). 06:39:20 Woooooooh, I have the best LCARS theme evar ^^ 06:39:30 falsehood 06:39:39 >_> 06:39:43 :( 06:40:11 hi gregor, i'm working on an esolang for my bot 06:40:37 GregorR ==> _|_ 06:41:05 bsmnt: i suggest you get your bot to do that 06:41:12 do what 06:41:31 print stull like that 06:41:34 *stuff 06:41:35 like: 06:41:41 ~fu nickname 06:41:50 ...or not. 06:43:13 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~fu (.+)", lambda x,y: bot.raw("PRIVMSG %s :fuck you, %s" % (y.group(1), y.group(2)))) 06:43:19 ~fu GreaseMonkey 06:43:19 fuck you, GreaseMonkey 06:44:11 lmao 06:44:25 that was absurdly involved 06:44:29 hmm, i cud replicate that in brainsecks code.... 06:44:35 and yet so funny... 06:44:47 >_^ 06:44:49 ^_< 06:46:03 x00>"PRIVMSG "%1[>,]" :"%0[>,]x0A>x00<[<]>[.>] 06:46:07 wait 06:46:14 x00>"PRIVMSG "%1[>,]" :fuck you, "%0[>,]x0A>x00<[<]>[.>] 06:46:23 yays, my code is shorter 06:46:31 what lang is your bot made in, bsmnt? 06:46:37 python 06:46:47 k 06:47:00 im making my second one in C, like the first 06:49:40 ...i love for() loops :D 06:49:54 ...why? 06:50:47 FOR...NEXT loops are the best loops of all time 06:50:54 * RodgerTheGreat high-fives GreaseMonkey 06:54:24 for loops are just glorified while loops 06:55:20 pfft 06:55:32 while loops are just underfeatured FOR...NEXT loops 06:55:57 nnnnnnnnnnnnn 07:00:31 for(i=0;array[i];i++){ /* stuff goes here */ } 07:00:36 beat that 07:01:10 i=0;while(array[i]){/*stuff goes here*/ i++} 07:01:47 in all fairness to whitespace: 07:01:47 for(i=0;array[i];i++){/*stuff goes here*/} 07:01:54 i=0;while(array[i]){/*stuff goes here*/i++;} 07:01:59 =X 07:02:00 =D 07:02:30 just because `while' is more letters than `for' 07:02:39 oh, and there's always: for(p=str;*p;p++){/* stuff goes here */} 07:03:06 i find for(i;c;p){s;} tidier 07:03:21 than i;while(c){s;p;} 07:03:32 yeah 07:07:16 hey, wanna ~fu another bot? 07:07:35 on #uncyclopedia , there's a SupyBot under the nick "AutoRTB" 07:07:42 ~fu AutoRTB 07:07:42 fuck you, AutoRTB 07:07:55 ~fu 1 2 07:07:55 fuck you, 1 2 07:08:05 k, so it doesn't split it into parameters 07:19:06 afk food 07:35:33 back 07:39:37 mmm, food 07:40:14 'night, guys 07:40:19 I need to hit the hay 07:40:49 -!- RodgerTheGreat has quit. 07:50:54 -!- anonfunc has joined. 07:51:20 -!- oerjan has quit ("ZZNNNNRRRKKKK"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:25:03 -!- ShadowHntr has joined. 09:27:00 -!- ShadowHntr has quit (Client Quit). 09:31:42 twos = iterate (2^) 0 09:31:49 discuss 09:51:31 -!- Sukoshi has joined. 09:53:42 -!- RoboMonkey has joined. 09:53:50 hi 09:54:05 brainsecks interpreter works :D 09:54:15 sadly only one command can be used though 09:54:39 that program: x00>"PRIVMSG "%2[>,]>x01%0[>,]x0A>x00<[<]" :"[<]>[.>] 09:55:07 ?x00>"PRIVMSG "%1[>,]>x01>"ACTION ">x01%0[>,]x01>x0A>x00<[<]" :"[<]>[.>] 09:55:08 twos = iterate (2^) 0 09:55:11 \dances 09:55:12 ACTION dances 09:55:51 ?x00>"PRIVMSG "%1[>,]>x01>x01>"ACTION "%0[>,]x01>x0A>x00<[<]" :"[<]>[.>] 09:55:52 \dances 09:55:53 * RoboMonkey dances 09:55:59 ooh yeah :D 09:56:13 sadly she only responds to me 09:57:12 Someone please find number of digits of 2^(2^(2^(2^(2^(2^(2^0)))))) 09:57:21 Not I. 09:58:38 65536^2 09:58:59 4294967296 09:59:03 10 digits 09:59:19 \10 digits 09:59:20 10 digits 09:59:22 um.. 09:59:26 no 09:59:34 \:( 09:59:35 :( 09:59:39 (2^(2^(2^(2^(2^(2^0))))) has over 19 thousand digits 09:59:50 i doubt it 10:00:01 19729 digits 10:00:22 2^(2^(2^(2^(2^(2^(2^0)))))) -> 2^(2^(2^(2^(2^(2^1))))) -> 2^(2^(2^(2^(2^2)))) 10:00:43 2^(2^(2^(2^(2^2)))) -> 2^(2^(2^(2^4))) -> 2^(2^(2^16)) 10:00:59 In haskell 10:01:00 2^(2^(2^16)) -> 2^(2^256) -> ... oh. 10:01:01 length $ show $ (2^(2^(2^(2^(2^(2^0)))))) 10:01:01 19729 10:01:15 Put another 2^ in front 10:01:19 how many digits? 10:01:19 wait 10:01:22 Someone can do math *clap clap clap*. 10:01:27 2^(2^65536) 10:02:42 $QUIT 10:02:43 -!- RoboMonkey has quit. 10:02:52 actually i gotta sleep 10:03:03 gonna sleep now, gnight 10:03:13 g'night GreaseMonkey 10:04:01 ?x00>"PRIVMSG #esoteric :gnight">x0A>x00<[<]>[.>] 10:04:03 \ 10:04:08 oops i'd quit it 10:04:10 -!- GreaseMonkey has quit ("Woot! RoboMonkey works! Woot again!"). 10:04:46 What's a cheap FPGA? 10:05:38 Or a cheap embedded device preferrably with a FORTH on-die, but not neccessarily so. 10:07:25 * Sgeo asks in Yahoo! Answers 10:10:11 Thanks. That's sure to get answers. 10:11:37 I meant about my question 10:11:42 >.> 10:12:20 Thanks, I guess. 10:13:25 -!- nazgjunk has joined. 10:32:38 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 10:35:25 -!- sebbu has joined. 11:03:11 -!- UpTheDownstair has joined. 11:03:43 -!- Sukoshi has quit ("さあ、ね。もう帰るわ!待ってね!"). 11:14:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 11:47:48 -!- UpTheDownstair has changed nick to nazgjunk. 11:52:29 -!- jix has joined. 12:04:59 -!- Sgeo has quit ("Leaving"). 13:04:28 -!- UpTheDownstair has joined. 13:05:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:05:50 -!- UpTheDownstair has changed nick to nazgjunk. 13:06:56 -!- sebbu2 has joined. 13:19:28 ::= 13:25:41 -!- sebbu has quit (Read error: 110 (Connection timed out)). 13:55:01 -!- RodgerTheGreat has joined. 13:55:21 hi guys 13:56:37 hijay 13:57:00 what are you up to this morning, oklopol? 13:58:35 woke up 2 hours ago, had a kebab, been reading about this racist mp wannabe... not that i'm a racist, but i like it when people have strong opinions, we have the elections today, but i don't think i'll bother to vote 13:58:44 that is all 13:58:51 i'd like to make my lang complete today 13:58:53 but 13:59:02 i gotta read for my matriculation exams tomorrow 13:59:07 the english thingie 13:59:15 ...and ya? 13:59:18 :P 13:59:59 I'm probably going to need to do some homework, but for now I'm just surfing 14:00:24 i had this idea about a lang where you have a concurrent for-each 14:00:31 everything is done at the same time 14:00:45 this is an issue when doing cellular automatons etc 14:00:51 you need to do the same thing for all 14:00:55 hm. so a foreach would essentially just thread everything out? 14:01:10 you can have two lists and copy from one to one, swapping all the time 14:01:20 lol- you should call it a noweach instead of a foreach 14:01:31 BUT that requires the whole array to be copied every time 14:01:34 which is slow 14:01:43 so you have to manually optimize in each case 14:01:47 AND 14:02:10 you can't just have the array and move, for example with wireworld, everything like the rules say 14:02:17 because only some parts move 14:02:34 that's very tedious to do, and the thing inherent in cellular automatons fades 14:02:39 the fact you only have one rule 14:02:54 so noweach would make those optimizations automatically 14:03:00 since i think i know how to do it 14:03:29 you just have to know how far the thingies CAN check for other living things, a living thing being one where rules apply 14:03:55 so... i'd optimize memory usage and cut out redundancy automatically for simple automatons like wirewordl 14:03:56 *ld 14:04:11 had this idea when making lopoda, which is kinda a cellular automaton 14:04:22 it's not really one though 14:04:28 hm 14:04:28 well 14:04:32 maybe it is 14:04:42 god i talk a lot 14:04:43 :\ 14:05:18 cellular automatons can be done like that already, for example with mark something's cellebration 14:05:33 it's just it's not really a language, just a set of modifiable rules 14:05:48 I think a noweach would be a genuinely useful feature- something not often seen in esolangs 14:05:57 you know, textboxes for "live while n neighbours" 14:06:07 'course, some of the side effects might be weird... 14:06:16 why is that? 14:07:04 i'm using an iterator that can change current cell, check neighbour cells and leave messages for current cells 14:07:25 *leave messages for neigbour cells 14:08:04 this is not the language i've designed really, it was just something i couldn't get outta my head when reading english 14:08:31 btw does bnf have a parser? 14:08:38 well, since foreach loops are generally just done on a group of objects, operating on each only individually, there probably wouldn't be a lot of difference. If you did something relating adjacent objects in an array or something your results might be counterintuitive from a programming standpoint, because programmers naturally thing iteratively 14:08:41 i've been making one, i don't think i'm the first :\ 14:08:50 I'm not aware of one... 14:09:13 *think iteratively 14:09:24 hmm, i use bnf with simplified regexes... and regexes postfix -> prefix 14:09:30 because it's easier to parse 14:09:45 and math is pre-/infix, why shouldn't regexes be 14:10:07 and i like it when things are counterintuitive 14:10:18 i suppose that's why i'm on this chan 14:10:40 you got my brain going again :< 14:10:53 how can i read the big book of tautologies now? 14:11:06 *maybe black book 14:11:29 heh 14:12:09 'the' had some sick quirks, but most of it i would've known 8 years ago 14:12:26 remember explaining one of the things i read there to a friend on the first grade 14:12:37 but, still it takes me ages to read 14:12:46 because i'm so slow at understanding text 14:13:04 http://www.vjn.fi/212.htm 14:13:08 something i wrote about this 14:14:13 i hope it's in english 14:14:17 forgot already :D 14:14:21 ya 14:15:42 noweach, lopoda, nopol implementation, oklotalk, nestor 14:15:54 i'd have some esoteric month doing those 14:16:03 oklotalk is not that esoteric though 14:16:36 an apl (or just apl if you consider the 'a' is an article in it's own right) thingie 14:16:48 that borrows the best of haskell and lisp 14:16:57 quoting from lisp, actually 14:17:27 i don't know what's from haskell since i can't remember all the things i've already thought through 14:17:39 but... prolly a lot 14:18:20 because i like python... but it doesn't use tail recursion (i think) and it isn't lazy 14:18:27 well 14:18:53 fib=[1 {--n+-n}] would be haskellish 14:19:11 you can specify a list as it's first values and a lambda to calc the rest 14:19:22 the lambda is fed an iterator object 14:19:40 in this case n, because it's the only free var in the lambda, so no need to specify explicitly 14:20:03 - is unary minus, but with an iterator it means "last" 14:20:19 and actually, the lambda should be {!--n+!-n} since we need the values 14:20:39 adding iterators is defined, as everything is always defined (:P) but makes no sence in this case 14:21:06 -!- anonfunc has quit. 14:21:20 in oklotalk everything is a valid program, but since the debugger makes tokenizing, nesting and running explicit in that you can do it as step by step as you like 14:21:25 it shouldn't be a problem 14:21:45 plus, i'm making all optimizations explicit as well of course 14:21:51 cool 14:21:52 and you can suggest optimizations 14:22:00 without need to alter code 14:22:09 you can have code and optimization separate 14:22:30 but, these are of course the more ambitious things i design for all my langs 14:22:48 that i'm able to code in ten years if i'm lucky :) 14:23:12 i'm making apl purely functional for one 14:24:10 you can quote lambdas to add them in a list `+ `{_*_} `{_-1} would make a list of 3 lambdas, or functions, no difference in oklotalk 14:24:25 you know, your ideas for "intelligent books" would be an interesting thing to apply to wiki-based books, or wikis in general 14:24:26 and that'd be pretty mych exactly the same as . in haskell 14:24:38 yeah, i thought about that too 14:24:53 then again, if it's in my head i consider it done 14:25:02 one reason for me not being that productive that often 14:25:03 hi 14:25:05 hi 14:25:39 i.must.go.feck.this.all------------------------------> 14:25:43 hi, SimonRC 14:29:18 * SimonRC reads oklopol's article. 14:30:04 oklopol: Go read Tim Berners-Lee's writings on the "Semantic Web". 14:31:26 i might, if you link it to me 14:32:21 if you read it in 45 secs, by the way, i'm quite impressed :) 14:32:32 now, really, REALLY really ----------------------------------> 14:33:01 really REALLY 09:31am? 14:34:17 I said that a bit late 14:56:12 ",[.,]" -> 14:56:12 {^(inc=`+)|(dec=`-)|(nxt=`>)|(prv=`<)|(out=`.)|(in=`,)|(loop=`[*.`])} 14:56:12 -> {out _[0]} 14:56:12 >>> 14:56:22 rego ------------------------------> 15:18:24 -!- helios24 has quit ("Leaving"). 15:45:37 -!- oerjan has joined. 15:49:00 -!- UpTheDownstair has joined. 15:51:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:58:28 -!- UpTheDownstair has quit ("Leaving"). 16:32:25 -!- sekhmet_ has joined. 16:32:43 -!- sekhmet has quit (Nick collision from services.). 16:33:00 -!- sekhmet_ has changed nick to sekhmet. 16:47:49 http://www.vjn.fi/beepiano.py 16:48:02 made this at school :PP fun toy 16:50:37 Somehow I didn't have the impression that okokokoko was about music. 16:50:43 oh, sweet- a simple piano 16:51:06 i wasn't specifically, it's about everything 16:51:13 it's a glorified foo 16:51:15 :) 16:51:46 i see. btw does the word "oklopol" mean anything? 16:52:09 it's a make-believe world we've written a few stories about 16:52:20 www.vjn.fi read when you learn finnish :) 16:52:30 when i first saw your name i assumed you were polish :) 16:52:33 *nick 16:52:33 haha 16:52:42 what's the difference between a real word and a make-believe word? 16:52:50 this is the real world 16:52:52 marketing 16:52:57 make-believe is some other one 16:53:01 a word's meaning is simply what you hold behind it 16:53:14 in oklopol, you'd call this one a bake-believe world 16:53:16 though make 16:53:18 not bake 16:54:07 real is just a this pointer 16:54:22 i have a vague recall that "oklo" means window in Czech, so "oklopol" would be a window Pole whatever that is 16:54:31 lol 16:55:00 we must invent a device known as a "window pole" 16:55:27 or create a language with this name 16:55:28 * oerjan recalls the pole vault exercise from the FRC Hellympics 16:59:20 btw if you can tell me a way to give the loudspeaker values directly, please enlighten me 16:59:34 i can only make square with that obviously 16:59:46 plus, you have to specify lenght beforehand 17:00:03 it'd get ugly to make holding mean a longer tone 17:00:34 i know how to access the pc speaker with asm, but that's no good since pc speaker is just square 17:02:13 hehe learning black diamond now :P 17:02:30 screw the exam, i'm playing beepiano! 17:06:56 i suppose the PlaySound function might be what you want 17:08:19 what lang, what usage 17:08:27 what function 17:09:10 the winsound module you already use 17:09:24 hmmm 17:09:28 i've used that 17:09:29 it seems more flexible than Beep 17:09:37 with my brainfuck player for example 17:09:43 but it requires me to create a wav 17:09:55 which is easy but imo idiotic to do real time 17:11:04 but perhaps you could pregenerate one for each frequency and use SND_LOOP 17:12:16 indeed 17:12:34 i first though i'd make real-time tone creating possible in the player 17:12:41 i might start thinking about that then 17:13:33 whoops. there appears to be a stupid restriction. 17:14:25 you cannot use string data except to play a single time synchronously, it seems 17:18:59 quite rofltastic 17:19:51 and using actual WAV files might give too much delay, though I don't know 17:26:20 -!- SevenInchBread has joined. 17:26:47 delay is not a problem 17:26:59 i'd just be too ashamed to use a file like that 17:27:20 GREETINGS COMRADES 17:27:41 i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx 17:27:47 and great, i'm stuck inside the house now, didn't let my drunk father in so he tried to open a special lock we have in the door that prevents opening from the inside 17:27:52 locking me in 17:28:11 fun stuff. 17:28:15 i tried to tell him i just won't let him in and he kept saying 'don't worry i'll get the door open' 17:28:22 :PP 17:28:25 yar! 17:28:49 OH HO 17:29:30 can such a lock be complying with fire regulations? 17:30:24 haha prolly not :D 17:31:19 i have no idea, but it's a 50 euro fee to get someone to open the door and my father went out getting one since he thought there was something wrong with the door :D 17:31:50 so... 50 euros to open a door given the key to that door 17:32:23 you _do_ realize this event does nothing to relax our stereotypes about the Finnish? ;) 17:32:39 :D 17:32:55 well, i think those stereotypes are correct 17:33:18 since most ppl i know are either drunks or absolutists 17:35:05 It seems like you should be able to write it in C. It occurs to me that Python's problem with strings might have something to do with garbage collection. 17:35:23 hmm sound possible 17:35:39 hmmm, what does Python do with strings? 17:35:43 but you could prolly circumvent that by keeping a pointer to the string in the code 17:36:08 smth="teh str"; and then use smth, i don't see how there could be a problem 17:36:14 best logic ever: "I'm not stereotyping, because the stereotypes are true!" 17:36:24 ....I hear that one all the time. 17:36:51 indeed, that's not my logic there though 17:37:10 yes, but then the module would have to do so automatically, and that might cause sound strings never to be freed if not done properly. I guess the Python implementers didn't bother. 17:37:22 yeah, as long as you've got a reference to the string, it shouldn't go away.... unless Python's GC goes wonky or something. 17:37:37 if it is copying things could be strange. 17:38:30 If I remember correctly, Python stores strings in const variables.... at least on the C end of things. 17:38:34 with the string being moved rather than deleted 17:39:59 i don't think const prevents the GC from moving things 17:40:43 it would have to be saved in some FFI unmovable format. There probably is something like that available, but there would be overhead. 17:41:55 hmmm... what are you trying to do? 17:42:07 oklopol is writing a simple piano program 17:42:49 i can write it in c as well 17:43:01 it's just python was the only one i knew sound stuff with 17:43:23 __import__("winsound").Beep(interva,freq) 17:43:24 *l 17:43:30 temptingly easy 17:43:32 oh 17:43:36 wait a min 17:44:09 hmm i have that same beep in c as well, it seems to be in stdio 17:44:14 BUT again it's just square 17:44:52 yeah but PlaySound is a Windows function. 17:45:28 Winmm.lib it says on the page i linked 17:45:28 that doesn't scare me 17:45:36 i know, i've used it as i said 17:45:42 but you said something about strings 17:46:00 i think that is only a problem with Python strings 17:46:14 but... can you play strings? 17:46:22 playsound plays .wavs 17:46:28 SND_MEMORY 17:46:41 well a memory block in .wav format 17:46:44 i presume 17:46:51 ah 17:46:56 i'll try to find the page 17:47:02 acutally 17:47:05 *actually 17:47:10 link if you have it open 17:47:13 i'd never find it 17:47:18 i already did. 17:47:28 oh :o 17:47:39 >i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx 17:47:40 shoops 17:47:42 *hoops 17:47:44 *whoops 17:47:52 indeed 17:47:57 i never saw that line 17:48:03 * oklopol reads well 17:48:33 anyhow i found it just by googling for PlaySound 17:48:45 mm well, maybe i'd have as well then 17:48:50 well well 17:51:13 nice... i can't both read and scroll that page simultaneously 17:51:50 hmmm i can only play one sound at a time with that? 17:52:21 SND_ASYNC, SND_NOSTOP 17:53:16 wait... you may be right. 17:53:37 then you must end all at once 17:54:12 i'd like being able to pres a key down and play a melody at the same time 17:54:14 *press 17:56:34 i suppose you could calculate the sum on the fly then 17:56:56 ah yeah 17:57:28 i'll just make a string for the next 50 ms every time 17:57:32 and play thta 17:57:34 *that 17:57:39 seems trivial 17:58:01 * SevenInchBread is playing around with stenography. 17:58:11 though, i've noticed an awful click in the beginnin when playing stuff with playsound 17:58:30 yeah, boundary condition worries me too 17:58:54 you really want something that can change sound smoothly 17:59:04 you mean waves going .-'-.-'-.-'--'-.-'-.-'-.-'--'-.-'-.-'- 17:59:06 ? 17:59:58 that is easy, you just check where that wave leaves by sin(clicks in 50 ms * current tone pitch) 18:00:07 and continue there 18:00:35 i am also thinking of the inevitable short timing mismatch 18:00:50 because of delay and imprecision 18:00:52 i mean, you can create the whole sound at once, then cut it into sequences of 50 ms and adding the wav header 18:00:57 well, true 18:01:11 but i think strings don't have much delay 18:01:20 because there's no file openage 18:04:02 by the way, piano is confusing since i use the accordions note system 18:04:17 i just named it piano because people don't know what an accordion is :) 18:04:21 -!- nazgjunk has joined. 18:04:51 i know what an accordion is. i think. 18:05:42 well, in finnish it's 'haitari', so not everyone knows what it is in english 18:05:52 or 'harmonikka' 18:06:45 -!- Sgeo has joined. 18:16:14 You might want to look at http://msdn2.microsoft.com/en-us/library/ms713503.aspx 18:16:26 A more powerful system, it seems 18:21:30 i'd like unsigned char set_lp(unsigned char newvalue) best :P 18:21:38 but there is none 18:21:55 'cept of course in my brainfuck... and many of my unimplemented langs 18:23:13 haha i can play stratovarious's black diamond on beepiano now :DD 18:24:34 afk 18:56:13 http://pb.vjn.fi/p245463223.txt black diamond 18:56:48 Basically set_lp is only going to work in a system with hard real timing, which does not include the modern consumer OSes 18:58:03 indeed i sometimes feel slightly annoyed at esoteric languages that call themselves concurrent while having exact scheduling. 18:59:39 are you referring to... what? 18:59:43 noweach? :D 19:00:09 i don't think you were particularly precise on that 19:01:03 i wasn't true 19:01:09 because i don't know the spesifics 19:01:17 although i don't understand why you don't use a purely functional updating for it. 19:01:18 just wondering what you were referring to 19:01:33 mmh maybe because i don't know what you mean 19:01:40 *what that is 19:02:05 -!- sekhmet has quit ("ups ftw \o/"). 19:02:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:02:22 -!- UpTheDownstair has joined. 19:02:28 ok yours is strictly scheduled as dataflow (because it's CA inspired) but not in exact timing 19:02:59 what i mean is that each step could simply calculate the next in parallel. 19:03:06 not really 19:03:13 or maybe 19:03:16 dunno 19:03:23 since the previous step is not modified, you don't get those timing issues 19:03:47 i think that might result in deadlock 19:03:47 *s 19:03:53 since they can refer to each other 19:04:18 no, because each refers only to the _previous_ state of the others, not to the one currently being calculated. 19:04:19 they can refer to the new state as well 19:04:28 if that's what you mean 19:04:30 in that case you have a problem 19:04:44 i might. 19:04:49 -!- UpTheDownstair has changed nick to nazgjunk. 19:04:59 but, indeed it's still easiest to do concurrently 19:05:38 and, it's not supposed to be used in anything where that might result in problems 19:05:41 CAs don't require copying, btw. You just switch which array you calculate from 19:05:43 just simple automatons 19:05:51 i know 19:05:59 but that's copying, 19:06:05 you have to move nops too 19:06:08 well 19:06:10 okay, not 19:06:11 :) 19:06:22 nops? 19:06:41 anyway, i think cellular automatons are easier to optimize in lang development than in an existing lang 19:06:49 nops, places that aren't used currently 19:07:04 it automatically skips those when optimizing 19:07:09 ah you mean things that don't change. 19:07:12 yes 19:07:38 well you can keep those in big blocks 19:08:05 so you only copy block pointers 19:08:30 hmm 19:08:41 ah 19:08:53 i think that's how the popular CA engines do it 19:09:36 seems like the easiest way out 19:09:44 i had a lot more complicated thing in mind 19:10:05 who can come up with the slowest way to calculate fibonacci numbers? 19:10:12 Me. 19:10:14 ... 19:10:20 the usual recursion without memoing is pretty slow. 19:10:27 not slow enough 19:11:01 then you can define addition using succ. 19:11:31 int fib(int n){sleep(2^2^2^2^2^2);if(n==1||n==2)return 1;return fib(n-1)+fib(n-2);} 19:11:38 oklopol: no 19:11:51 you did not specify that as illegal 19:11:59 you mean sleep(ackermann(n,n)) :) 19:12:15 much better 19:12:19 that should be okay 19:12:52 that's cheating 19:13:40 I don't understand when people say stuff like "add a (succ b) = succ (add a b)" 19:13:57 How do you compute that without a predeccesor function? 19:13:58 ...create an entire network of processes that pass around data and perform single computations one at time... communicating the data in the least signifigant bits of manipulated bitmaps of adorable kittens. 19:14:06 bsmntbombdood take a bf interpreter in bf, then make a function that takes a number n and makes bf interpret bf interpret bf... n times, the last one calculating next fib 19:14:10 you need a base case of course 19:14:11 then use it recursively 19:14:15 add a 0 = a 19:14:35 oh i see. 19:14:46 * SevenInchBread wins. 19:15:20 ...provided the kitten bitmaps are very large files. 19:15:37 the idea is to think of natural numbers as defined as being either zero or the succ of something. 19:15:44 I know 19:15:55 but how do you compute add? 19:15:56 so the first succ is simply pattern matching on the definition 19:16:04 without pred 19:16:12 add a b = succ (add a (pred b)) 19:16:13 you do have pred 19:16:22 in Haskell, essentially: 19:16:36 bsmntbombdood the same way as prev_num (n+1) = n 19:16:39 data Nat = Zero | Succ {pred :: Nat} 19:17:14 pred is not an ordinary function, but a field 19:17:14 you can pattern match certain things when ...their counterfunction is obvious :) 19:17:21 But our only operation on natural numbers is succ 19:17:25 *with functions in the pattern 19:17:52 well, it's magic 19:18:23 yes, but Succ is a constructor, so it is not just a function but also a pattern you can match on. Thus it really contains pred implicitly. 19:19:10 (and Haskell allows you to name both simultaneously) 19:20:38 -!- sekhmet has joined. 19:21:17 you could think of it another way: add a (Succ b) = Succ (add a b) is a defining axiom, not just a calculation. 19:22:43 hmm 19:23:33 the book i'm reading informally defines it using that definition, then formally defines it in lambda calculus using some primitive recursion function 19:24:03 you might want to look at something like the Coq proof assistant, which has inductive type definitions built in. 19:24:21 of course you cannot do it in pure lambda calculus. 19:25:34 consider the function to be constructed in order to fit the defining axiom, however. 19:27:11 there is a standard trick for embedding such datatypes and pattern matching into lambda calculus, however. 19:27:22 add = \m.\n.prim n m (\p.\q.(succ q)) 19:27:36 where 19:27:44 prim 0 c f = c 19:27:55 prim (succ n) c f = f n (prim n c f) 19:29:33 i think that prim is something like what Coq defines automatically given the data type definition 19:33:02 later 19:33:11 -!- oerjan has quit ("Hunting for food"). 19:45:10 How do you get wget to... not write to a file? 19:49:06 -O - 19:49:12 to write to stdout 19:51:17 cool. Thanks. 20:07:16 ...hrm, I can't get my HTTP server to work. Help? http://deadbeefbabe.org/paste/4036 20:15:25 -!- nazgjunk has quit ("Leaving"). 20:25:42 -!- nazgjunk has joined. 20:27:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:28:00 -!- nazgjunk has joined. 21:31:12 ...I wonder... 21:31:34 if it would be possible to fund the operation of an ISP without charging. 21:32:01 juno? 21:34:28 >.> 21:35:12 I'd love it if it were possible to make the Internet -completely- free... 21:35:23 yeah 21:40:13 omg commies in my internets! :D 21:42:33 the internet is a breeding ground for what amounts to communisim anyway... 21:42:44 piracy, creative commons... 21:43:11 yeah 21:43:14 true, i don't like any of those though 21:44:14 i'm under the impression it makes programming kinda a payless occupation 21:44:29 if i understand 'creative commons' right 21:44:32 i might not :) 21:46:42 well, things like open-source tend to de-emphasize the value of creative or innovative programmers, representing coding as more of a form of skilled labor. 21:47:26 I think of programming as more of an art than a manufacturing job. 21:47:49 me too, but i'd like to get my pay out of it as well 21:47:56 since there is nothing else i can do 21:48:18 well, i could do porno maybe, but that's it 21:49:50 the main problem is that because you can get so many things on the internet for free, people *expect* everything to be free, and feel entitled to everything without charge 21:50:13 yeah 21:50:20 big players can survive on ad revenue, but it's impossible to make a profit as a small developer that way 21:50:29 true 21:52:20 I suppose that's my main problem with open-source philosophy. I give away the source to most of what I make freely, but sometimes I want to make the decision to hang on to what I create. It should be my decision, but things like the GPL take that decision away and make it impossible to maintain control over software built on anything GPLed 21:53:02 it's kinda "forced freedom" that could be considered good for the community, but it fucks over the individual 21:54:00 and since I see programming as an art and something that is valuable when done properly, rather than hacked together, I think the individual should be important 21:55:25 not everyone can have the luxury of living off of people's donations like Stallman. I think he's a little detached from market reality, which should make people question his motivations 21:57:00 true 21:57:01 If I release software, it's either under the "Do whatever the fuck you want License" or the source is mine to keep. 21:57:27 what else could it be? 21:58:02 GPLed. BSD licensed. Any number of things that get in the way and create false illusions of openness or freedom. 21:58:38 If I cared wether someone else "stole" the code I distributed, I wouldn't have given it away in the first place 21:59:10 heh 21:59:29 the GPL is just a viral method for allowing the FSF (which I find dubiously trustworthy) to control the flow of code. 21:59:41 Yeah, I don't like the GPL 22:00:29 and in the same vein, I don't trust any "licenses", because all they serve to do is limit what people can do with code that's supposedly offered to a community for free 22:00:46 ............................................................................................... 22:01:00 Licenses, by definition, can only give freedoms. 22:01:49 In a copyright system, licenses and copyright assignment are the only ways to give anyone other than the original creator the right to copy the work. 22:02:09 Or rather, licenses are the only way to give anyone but the copyright holder(s) said rights. 22:02:15 So licenses by definition can only give freedoms. 22:04:03 if you ask me, the only license that isn't a lie is this one, which I urge everyone here to adopt: http://sam.zoy.org/wtfpl/ 22:04:50 -!- nazgjunk has quit ("Leaving"). 22:05:30 Your philosophy is both bizarre and completely stupid. 22:06:18 I prefer all rites reserved 22:06:33 *reversed 22:07:24 *rights too? 22:07:30 No 22:07:32 http://allritesreversed.com/ 22:07:53 indeed, the first one wasn't a correction either 22:42:16 -!- ShadowHntr has joined. 22:42:25 -!- sebbu has joined. 22:42:33 ...why is math terminology so confusing? 22:42:50 couldn't you like, simplify it some? 22:44:11 which part? 22:46:34 ...like, all of it. 22:46:48 -!- oerjan has joined. 22:49:20 it's not 22:49:57 most of the time 22:50:32 -!- sebbu2 has quit (Read error: 145 (Connection timed out)). 22:54:49 because it has to be precise 22:55:11 and it is already extremely simplified 22:55:49 i.e. who do you think invented overloading? :) 22:56:03 but there's like... ten billion different forms of notation. 22:56:22 I thought math was supposed to keep some uniformity? 22:56:30 where does it not? 22:57:18 math notation is designed for extreme consiseness without being unreadable by those who use it 22:57:26 *conciseness 23:00:29 * SevenInchBread is trying to figure out the notation behind the Fourier transform. 23:00:53 Which notation? 23:00:53 which is? 23:01:05 mathmaticians just make up stuff 23:01:42 specifically, http://en.wikipedia.org/wiki/Fourier_transform#Definition 23:02:02 I can't find an explaination on how to read the integral thing. 23:02:44 integrate the thingie, then take f(upper bound) and subtract f(lower bound) 23:02:51 you don't understand integrals? 23:02:53 where f is it integrated 23:03:09 heh 23:03:22 the bounds are infinite however. 23:03:26 ..... 23:03:43 well, true, you need a big calculator 23:03:46 so... if it helps any - I've never touched calculus... 23:03:58 well then you have a problem 23:04:04 then you are probably going to have some troubles... 23:04:54 I've only done high school algebra. 23:05:08 well, you can't blame math for you not knowing it 23:06:40 ...well, the problem is that I'm trying to learn it... but it's proving extremly difficult. 23:06:47 everything from the elongated s to dt is an integral, with upper bound infinity and lower bound minus infinity (this combines to mean integrate over all real numbers) 23:07:07 trying to pick it up quickly for reading that page? 23:07:15 ...pretty much. 23:07:32 well, i can't blame you, i've done the same thing 23:07:32 the part between is essentially a lambda term with free variable t 23:07:45 can't say i understand fourier transform either... 23:08:47 hmm i seem to get that now 23:09:01 but, suppose i have an array full of random stuff 23:09:08 upper bound is length of it 23:09:10 lower is 0 23:09:18 essentially you can think of integral as a higher-order function 23:09:18 so... what's the result of that notation? Is it a function, a number? 23:09:19 how do i integrate an array? :P 23:09:37 the result is a complex number in this case 23:09:40 i don't understand fourier transforms 23:09:40 SevenInchBread integration is func -> func 23:09:58 ah... hmmm... 23:10:23 -!- sekhmet has quit ("kernel++;"). 23:10:44 turns a function a into another function b that at x slopes a(x) 23:10:53 i think :) 23:10:57 integral :: Measure a -> (a -> Complex) -> Complex 23:12:01 oerjan why will that result in complex numbers? 23:12:04 the integral 23:12:10 ...yeah, I've never understood that little bit of Haskell-ish notation... :) 23:12:13 because there is an i in the function 23:12:22 but, it's in e^(_) 23:12:36 e^(x) always results in a real number i think 23:12:40 nope 23:12:43 oki 23:12:48 not if x is complex 23:13:02 e^(ix) is a unit complex number if x is real 23:13:06 I'm trying to read up on concepts related to sound waves. 23:13:16 or any wave for that matter. 23:13:20 e^(a+bi) = e^a * (cos b + i sin b) 23:13:22 e^(ix) = cos(x) + i*sin(x) 23:13:36 oh yeah 23:13:38 true 23:13:47 sorry, i'm bad at this 23:14:44 I'd like to translate the Fourier transform into an algorithm... so how do you get compute the integral of something? 23:15:17 i asked oerjan already, but he never answered :< 23:15:27 symbollically or numerically? 23:15:48 actually, i just threw it in the air 23:16:12 then again, most of what i say is implicitly a question for oerjan 23:16:15 numerically is obviously easier than symbolically 23:16:26 hmmm... it looks liike, in the most cases, it's just the area underneath the curve between those limits... in this case infinity. 23:16:38 if the function x is stepwise continuous you can use numerical methods 23:16:41 yeah 23:16:52 so.....how do you compute the area of something that's infinite. :P 23:17:06 what if it's a wav file for example? 23:17:09 by an integral of course :) 23:17:29 .... 23:17:49 the simplest way is to divide into small intervals and approximate it as constant on each 23:17:56 -!- sekhmet has joined. 23:18:09 then for each interval it is just the area of a square 23:18:21 riemann sum 23:18:27 yeah... just the chunk of the wave that is repeated would be all you need. 23:18:57 when you take the limit of smaller intervals, that is the riemann integral 23:19:20 the limit? 23:19:22 ah, that's why you use sum in actual implementations of fourier 23:19:24 right? 23:19:24 although there are more efficient methods if your function is also differentiable 23:19:33 exactly 23:19:56 because often you don't need fourier when you've made the function yourself 23:20:05 because you prolly know what it is if you made it 23:20:08 (requiring less subdivisions for accuracy) 23:20:35 * oklopol goes to sleep now -----> 23:21:04 if it is already a sum of sine waves then it is easier to transform using the known expression for them, yeah 23:21:27 ...what is fourier useful for exactly? 23:21:45 lots of things 23:22:37 but expressing a signal as a limit sum of sine waves is the most basic 23:23:02 >.> 23:23:35 dividing it up by frequency rather than time 23:23:59 hmm 23:24:39 so X(a) is the amplitude of the sine wave at frequency a? 23:24:47 is the fourier transform used to reproduce chords and multiple waves at the same time? 23:24:53 amplitude and phase 23:25:37 actually a and -a together give the sine and cosine wave parts. Complex numbers mix them a bit 23:26:01 That e^ix = cos x + i sin x thing 23:27:06 reversed as e^ix + e^(-ix) = 2 cos x and e^ix - e^(-ix) = 2 sin x 23:29:18 a sum of multiple waves, two for each frequency 23:32:09 if a signal is truly periodic with frequency f, then only frequencies that are integer multiples of f will appear 23:32:21 the rest will be 0. 23:33:20 SevenInchBread no, addition is for that 23:33:50 hmmm... so you just add the outputs? 23:33:56 That is essentially the point of Fourier _series_ 23:34:12 Yeah, the Fourier transform is linear so it preserves addition 23:34:35 I mean... the outputs of the sine waves. 23:34:53 SevenInchBread yes 23:35:07 you do fourier transforms for the opposite 23:35:17 figuring out what waves have been added 23:35:32 (and once again correct me if i'm wrong...) 23:35:51 Except there are some weird problems with summing the sine waves if the original function is not nice enough. 23:36:10 You need to do the limit in a more clever way than simple integration 23:39:10 This is because the result of the Fourier transform is not necessarily itself directly Fourier transformable 23:39:58 otherwise it would just be a matter of repeating the process with some constants and signs changed 23:41:08 I was thinking about making an interactive programming language for playing around with sound samples mid-play.. 23:41:33 like... some weird cross between programming and a synthesizer. 23:43:22 You might want to look at http://en.wikipedia.org/wiki/Discrete_Fourier_transform 23:45:17 It is for the case when you have a finite set of time points. 23:45:49 Incidentally all these different forms of Fourier transforms are united by the theory of dual groups. 23:46:51 Essentially for every kind of time group there is a dual frequency group. The real numbers are their own dual, as are the integers mod n 23:47:23 *every = every sufficiently nice (commutative, locally compact) 23:48:05 -!- sekhmet has quit ("ups tests..."). 23:48:06 -ahem- as a precaution... none of your explainations have helped me so far. -gentlemanly smile- 23:48:07 however the unit circle is dual to the integers, which explains why you get a Fourier _series_ from a periodic signal. 23:48:24 Not even the discrete fourier transform? 23:48:43 I admit the general stuff was mostly in case someone else was interested 23:49:06 time group and dual frequency group means nothing to me. :( 23:49:07 oerjan i don't think he'll need a fourier transform for what he defined 23:49:30 Well he needs a way to get frequencies from samples, doesn't he? 23:49:41 i don't think we will :\ 23:50:04 if he's doing what i think he's doing 23:50:14 I don't need to create sound files... I just want to mix multiple sound files together... among other things. 23:50:21 just a programmer's version of logic audio or guitar pro or such 23:50:54 .....yeah,.. ish 23:51:00 Well in that case you just add amplitudes together with coefficients 23:51:11 that's what i've been planning to do for ages 23:51:24 but i've never had a direct acces to the speaker 23:51:34 though oerjan maybe showed me the way 23:51:37 don't know yt 23:51:38 *yet 23:52:05 *acces 23:52:12 that Windows audio wave thing sounds complicated but it apparently solves the time gap problem 23:52:23 ...probablly heavily concurrent... because you need multiple "processes" playing all at once... like an interactive programming language mixed with a GUI. 23:54:12 There was something about mixing there too 23:55:37 You need that nowmap thing and a way to sum the result :) 23:56:54 But then concurrency may not be so important if they are independent - just loop over them for each time block, summing 23:57:15 assuming it is not so heavy you need multiple cores... 23:57:26 well, if they are done at the same time, it must be O(1) ! 23:57:29 :D 23:58:12 -!- jix__ has joined. 23:58:14 anyhow if it is anything like that audio wave thing then it will actually be event driven. 23:58:51 i saw something about getting a callback when the audio device is finished playing a data block 23:59:06 that might help 23:59:10 i hate events though 23:59:16 in fact there seemed to be a bunch of alternatives listed for how to do that