00:00:12 'series of jpg images' is actually a video format 00:00:15 can't remember its name 00:00:27 ihope_: H.264 is where it's at 00:02:12 So if I have one image displaying for half an hour... 00:04:59 The brk and sbrk functions are historical curiosities left over from ear- 00:04:59 lier days before the advent of virtual memory management. 00:05:01 SHUT UP OS X MANPAGES 00:05:25 -!- ihope has quit (Read error: 110 (Connection timed out)). 00:05:28 SimonRC: where is kigforth 00:13:44 -!- atsampson has joined. 00:14:50 so i have this MPEG file 00:14:52 it's porn 00:15:21 it was made by catting several smaller clips together 00:15:51 now, some players (MPlayer) play all of it, and some (Quicktime) stop after the first clip 00:16:36 i wonder if the mpeg standard is under-specified, or if mplayer is just really smart 00:17:42 That's what I'm normally wondering while watching catted together porn. 00:17:58 lament: mplayer smartness 00:18:01 lament: yes. 00:18:02 -!- slereah__ has joined. 00:18:15 Which, I suppose, means "both". 00:19:16 >:| 00:19:35 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 00:21:25 -!- olsner has quit ("Leaving"). 00:53:59 -!- Sgeo has joined. 01:10:46 hmmm 01:10:52 the eso-std.org pastebin will be up sometime 01:11:20 Is it ESO approved? 01:11:34 but of course. 01:11:43 unfortunately; pygments doesn't haev that many esolang highlighters right now 01:11:45 it has Brainfuck, though. 01:11:50 Still, writing 'em will be trivial. 01:12:12 What is there to highlight in BF apart from brackets? 01:17:02 slereah__: grouping 01:17:07 <> and +- and ,. 01:17:17 those groups should be highlighted differently but the same between chars 01:17:19 < and > the same 01:17:23 + and - the same, but different from <> 01:17:34 slereah__: Name the pastebin's code. :P 01:19:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 01:20:00 -!- Judofyr has joined. 01:20:16 Pastebin. 9000. 01:20:16 Well, I have no idea. 01:20:16 Wouldn't highlighting the +- and all result in a terrible eyesore? 01:20:16 Oh, grouping. 01:20:16 Why ., then? 01:20:21 It's a legitimate pice of code! 01:21:00 ... 01:21:03 Highlight +- 01:21:06 as the same 01:21:08 Same with <> 01:21:09 etc 01:21:19 I.e. groups of instructions that are inverses or whatever, should highlight the same 01:21:23 ais523's emacs mode does that 01:21:35 Then I reiterate my remark : wouldn't that be a terrible eyesore? 01:22:16 Like a gay alphabet soup 01:22:40 No. 01:22:43 It's quite nice in ais523's mode 01:22:59 Pixplz? 01:23:04 Noes, lazy. 01:24:14 Any other highlighter project in mind? 01:25:00 -!- ihope__ has joined. 01:25:03 -!- ihope__ has changed nick to ihope. 01:26:01 * slereah__ tries to make esolangs stats 01:26:10 number of symbols/commands 01:26:28 The "command" thing is a little fuzzy for some though. 01:28:55 ... 01:28:58 Holy shit. 01:29:03 I have no attention span 01:32:22 It is kind of a shame that we don't have attention spans. 01:32:37 I have a wonderful idea for a program but don't have the attention span to write it. 01:33:43 I usually wait for some period of activity where I can actually hold on to a project for a few weeks! 01:34:26 That's pretty much how the Love Machine 9000 and Lazy Bird got written. And why everything since is in limbo. 01:34:31 Some period of activity? 01:34:43 You know, motivation and focus! 01:34:59 Are you currently schooling? 01:35:14 Yes. Although it has little to do with it. 01:35:30 It's mostly motivation. 01:40:47 * ihope nods 01:41:00 I blame all my lack of motivation to write programs and such on school. :-P 01:41:45 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 01:43:17 -!- slereah_ has joined. 01:43:18 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 01:50:51 I want to give 10,000 creatures each a 10-kilobyte brain and see what emerges. 01:51:18 Mudkips. 01:57:18 Interesting. 01:57:47 Quite. 01:58:36 Well, I'll be gone, sir, and anon sir, and quoting Shakespeare again when I return. 01:58:40 Adieu. 01:58:56 Bai 02:00:02 -!- ihope__ has joined. 02:04:17 Is there a definition for a command? 02:07:21 -!- pikhq_ has changed nick to pikhq. 02:17:32 -!- ihope has quit (Read error: 110 (Connection timed out)). 02:20:30 -!- slereah__ has joined. 02:20:30 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 02:20:56 -!- calamari has joined. 02:28:33 -!- Corun has quit ("Leaving"). 03:29:19 ihope__: so i herd u liek mudkips 03:38:04 GregorR, pikhq ihope__ slereah__: Should I remove directory manipulation, i.e. only allow removal of individual files at a time? 03:38:10 And copying moving etc.? 03:39:11 Are you going to use it? 03:39:14 ehird? 03:39:34 slereah__, hm? 03:40:27 Because boy will you be disappointed if you toil at it only to never use it: 03:42:58 -!- ihope__ has quit (Read error: 110 (Connection timed out)). 03:49:20 " I blame all my lack of motivation to write programs and such on school. :-P" <<< i did too, until i got half a year basically off school, and my productivity crashed totally 03:49:26 also, he's not here 03:49:38 Oh you. 03:50:11 yeah, me :) 03:51:00 i only implemented ints and lists to oklotalk, but while having to take a break from writing it i've realized it already lets you do pretty complicated abstractions 03:51:22 But... 03:51:26 -!- ehird has quit ("This computer has gone to sleep"). 03:51:26 What is Oklotalk! 03:51:36 you can extend numbers with new operations and you can make new types with the old ones, and new ones... currently you cannot do both though :P 03:51:41 It's been six months and I still don't know! : 03:51:59 that will require explicit second-order coding 03:52:06 which is kind of a lame term 03:52:21 slereah__: my grandest language atm 03:52:28 also my oldest language 03:52:39 Yes, that much I know. 03:52:43 But what is inside! 03:52:48 What is the underlying concept! 03:53:01 it's very... ugly. 03:53:17 it's kinda like python, but even less restricted 03:53:38 syntax is 100% robust in that everything parses 03:54:28 it's functional, although given it has both dynamic and static typing you can just make a while function and write iterative code without knowing it's done with recursion 03:54:35 *scoping 03:54:54 'kay 03:54:57 dynamic *typing* simply sounds more natural, i always confuse the terms :) 03:55:48 like I = 5; while ´{ I < 10 } ´{ I <- I + 1 } 03:56:12 "´"'s are ncessary, because functions are assumed to be funcokens otherwise 03:56:29 Funcokens? 03:56:32 a funcoken is a token parsed as an operation, kinda 03:56:49 Phew. I had gay porn on my mind. 03:56:53 so you can do 4 {_ * __ - 2} 5 to get 4*5-2 03:57:46 Why the double underscore in the middle? 03:57:49 "__" as an implicit binary operand marked isn't done yet, so you'd have to do 4 {A B->A*B-2} 5, but anyway 03:57:55 it means ropd 03:57:58 right operand 03:58:01 _ is left operand 03:58:09 ...in case both are used, that is 03:58:20 if you don't use __ in the body, both will be in _ :D 03:58:39 so... parsing needs infinite lookahead 03:58:53 i consider this a positive thing 03:59:17 well... you don't have to do that at parsing 03:59:42 i haven't done it yet, so i don't even know the exact semantics with more complicated functions 03:59:51 Heh. 03:59:58 Is it inspired by anything in particular? 04:00:05 hmm... wonder if i should make functions objokens by default... 04:00:15 oklotalk? i guess by K 04:00:31 although i don't exactly know much about K 04:00:58 the name looks like smalltalk, but when i decided on the name, i had no idea what smalltalk was 04:01:11 Holy hell, K is ugly. 04:01:17 Looks like an esolang! 04:01:25 it's fairly curious smalltalk may be the language oklotalk has most in common with. 04:01:33 * faxathisia wonders why everyone learns K instead of J :S 04:01:48 faxathisia: It's superior. 04:01:51 One letter above. 04:01:52 faxathisia: it's one more? 04:01:55 yeah 04:02:01 I like J a lot more 04:02:35 nothing says a joke is trivial more than two guys saying it simultaneously 04:03:07 :D 04:04:09 god i'm an idiot, went to see this guy to pick up my religion assignments he'd done for me... forgot my power cord and half of the assignments at his place, and he's not coming home for ages :) 04:04:22 whhell, as they say, cheating is self-beating! 04:04:40 oh, right, they don't. 04:05:01 i had a dream i was running in the hallway of my house and ircing via the buttons of the elevator 04:05:16 What, you were senging it in binary? 04:05:49 no, the wall had the whole alphabet 04:06:01 not qwerty, pretty random 04:06:10 there was no screen, i saw the text in my head 04:06:34 this dream involved me drinking 3 liters of chocolate milk 04:06:38 DVORAK? 04:06:40 no 04:06:45 well 04:06:48 i don't know dvorak 04:06:54 so, maybe dvorak. 04:07:02 Well, you know 6 letters of it already! 04:07:10 ',.ppyfgfgcrgrcl 04:07:12 aoeuueididhtdhtn 04:07:13 ;qjkjkxbkxbmmxbw 04:07:22 faxathisia: gesundheit 04:07:47 this is roughly the layout :P 04:07:52 the problem with oklotalk parsing is, even though everything parses, most things are pretty uninteresting 04:08:15 faxathisia: baning at it at random? 04:08:18 *banging 04:08:45 ',.pyfgcrl aoeuidhtn qjkxbmwv <-- without duplicates 04:09:56 hmm 04:10:05 i like the idea of left-had only okoing 04:10:14 scscscscscscscscscscscscs 04:10:23 well 04:10:28 i guess there's efefefefefefe 04:10:37 but i never got into that really 04:12:01 perhaps i should continue my cise interp instead of watching friends 04:17:39 orange juice, i want that 04:22:04 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 05:26:08 -!- calamari has quit ("Leaving"). 05:58:20 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 05:58:33 -!- Sgeo has quit (Remote closed the connection). 05:58:45 -!- lifthras1ir has joined. 06:18:02 my keyboard feels sticky and disgusting :( 06:18:09 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)). 06:18:46 but it's really. really pretty. 06:26:56 -!- cmeme has quit (Read error: 104 (Connection reset by peer)). 06:29:47 -!- cmeme has joined. 06:41:06 -!- Judofyr has joined. 06:45:41 lament: pix 06:46:04 http://z3.ca/~lament/keyboard.html 06:46:31 8| 06:46:37 du bist schnell 06:47:26 wow nice 06:47:38 hmph, i'm still loading 06:48:52 asdf i want a keyboard where keys aren't in that stupid formation 06:49:46 it seems i'm the only one in this world who wants their character part of the keyboard to be symmetric 06:49:56 what do you mean? 06:49:58 this is fairly weird, since not many have asymmetric hands 06:50:15 the character part of the keyboard == the left part 06:50:20 where the characters are 06:50:25 it's mostly symmetric 06:50:39 the uppermost line 06:50:48 is wrong 06:50:58 it should be a bit to the right or a bit to the left 06:51:12 i think the keyboard should just be split into two halves 06:51:14 every time i press a button on it, i die a bit inside, it's simply wrong. 06:51:22 since each button is only assigned one hand 06:51:30 it makes no sense to keep the two parts together 06:51:53 (well, you need to have two space buttons... big deal) 06:51:54 true, but that's something i can live with 06:52:02 such keyboards do exist 06:52:10 you mean, your kind? 06:52:14 that i now 06:52:15 konw 06:52:17 know 06:52:43 but are there any keyboards out there where the lines of the keys aren't... retarded? 06:52:59 i have a hard time finding a term for that 06:53:00 oh, nice, it's not even very expensive: 06:53:01 misaligned 06:53:01 http://www.kinesis-ergo.com/freestyle.htm 06:53:28 you see those in shops all the time 06:54:36 hmm... perhaps i could buy that projective keyboard and wribble it into giving me a sensible keyboard setting 06:54:49 that would be double cool 06:59:42 hmph, if only oses would provide a basic set of objects for programs to use, for instance playlists would readily be unionizable without any effort 07:00:08 well, i guess vlc supports that anyway, but i have no idea how 07:00:20 prolly just by opening the playlist 07:21:39 -!- Judofyr has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:42 -!- Corun has joined. 08:17:02 -!- oerjan has joined. 08:18:33 -!- olsner has joined. 08:18:59 -!- Corun has quit ("This computer has gone to sleep"). 08:56:12 -!- olsner has quit ("Leaving"). 09:16:40 -!- faxathisia has quit ("-"). 10:27:30 -!- oerjan has quit ("Bus-y"). 10:43:39 ehird: Direct-threaded code is Fail for portability. You cannot portably compile DTC at run-time: each Forth word will be a list of function calls. But with my indirect-threaded code, each Forth word is a list of word addresses; more portably compilable. 10:52:32 lament: nise kb 10:52:34 *nice 11:37:15 -!- tejeez has quit (Read error: 145 (Connection timed out)). 11:42:42 ooh, cool stuff: http://www.lambdacs.com/debugger/debugger.html 11:43:16 the more you play with it, the more amazing it gets 12:05:07 -!- Tritonio_ has joined. 12:26:02 AnMaster: fix yur bzrweb ??? 12:46:09 -!- tejeez has joined. 13:20:57 -!- ihope__ has joined. 13:20:59 -!- ihope__ has changed nick to ihope. 13:23:28 -!- jix has joined. 13:42:34 -!- ihope__ has joined. 13:46:42 -!- Tritonio_ has quit (Remote closed the connection). 13:59:35 -!- ihope has quit (Read error: 110 (Connection timed out)). 14:06:15 -!- RedDak has joined. 14:38:48 -!- BMeph has joined. 14:41:36 -!- RodgerTheGreat has quit. 15:08:04 -!- Corun has joined. 15:29:24 -!- ais523 has joined. 15:33:49 -!- ihope__ has quit (Read error: 104 (Connection reset by peer)). 16:13:44 -!- Sgeo has joined. 16:14:30 LAST STORY IN FINE STRUCTURE RELEASED WOOHOO! http://qntm.org/?structure 16:15:40 Sgeo: ? 16:16:51 what's ? about it? 16:19:44 the sentence doesn't make a whole lot of sense, and I don't like clicking on random hyperlinks 16:19:49 hm optimizing befunge is near impossible 16:20:01 AnMaster: that was deliberate in the design of befunge 16:20:11 which was designed to keep out compilers, and optimisers by extension 16:20:17 in brainfuck an interpreter/compiler could just merge several + for example, in befunge that isn't possible 16:20:42 the k instruction of funge98 *can* be optimized sometimes, but that is about all 16:20:48 -!- oerjan has joined. 16:20:54 ais523, indeed 16:21:41 possibly you could do some JIT optimization, like say, pre-compile paths or something 16:22:13 Fine Structure is basically a connected collection of fiction stories by Sam Hughes 16:23:07 damn, here i thought there were news about the variability of the fine structure constant 16:23:22 oerjan, same 16:24:19 it's fascinating - a subatomic, dimensionless constant that apparently may have _changed_ over the lifetime of the universe 16:24:21 ais523, actually, several things in funge98 can be optimized, but almost none in befunge93 16:24:39 oerjan: also, which happens to be ridiculously close to an integer 16:24:50 (in fact 1/an integer, but it's dimensionless so it could just as easily be the other way up) 16:25:41 hm... it seems to have drifted away from the 137.00 value that was announced previously 16:25:48 probably due to more accurate measurements 16:25:58 ais523, for example, on the ; instruction, store the position of the matching ; for next time you hit it, or k, for example you can optimize 2kv to just change direction once 16:27:21 -!- ehird has joined. 16:27:31 oerjan, I know that, but what exactly is it, I just know it is some constant that you can measure in a way that won't be affected by instruments (ie, you can't check if an atom got larger, because the atoms in the instrument you use to check would also have grown) 16:27:48 * Sgeo was wrong, it wasn't the last installment 16:27:53 ehird, hi 16:28:05 AnMaster: fix yur bzrweb <--- what is wrong with it? 16:28:08 it works fine here? 16:28:10 http://en.wikipedia.org/wiki/Fine-structure_constant 16:28:20 oerjan, thanks 16:28:51 WIYF (& G T) 16:28:51 "WIFY"? 16:29:07 Wikipedia Is Your Friend 16:29:38 oerjan, except, when the articles goes over my head *looks for Swedish interwiki or simple English*, like it often does in cases of physics 16:30:09 ehird: http://pastebin.ca/932238 16:30:19 * AnMaster sighs at the usual "stub" status of the Swedish pages 16:30:22 (you asked me how Underlambda was getting on, that's the most recent draft spec) 16:30:26 (but it isn't finished yet) 16:30:54 ais523, hm? why not use latex for writing the draft? 16:31:06 AnMaster: because those are just the notes I made 16:31:14 * AnMaster uses the gui "frontend" lyx for anything such 16:31:21 the actual specification is likely to be in something more suitable 16:31:33 but flat text files are good for jotting things down in 16:31:42 I find lyx is very useful, and lets me avoid headache from pure latex 16:31:57 (I'm developing a reference interp which pretty much just implements the rewrite rules literally) 16:32:14 However, the language is designed so that it can be compiled, or implemented much more efficiently. 16:32:37 It's just that the rewrite rules turned out to be a good way to write the spec in an unambiguous way 16:32:58 the definition of C, for instance, is very complicated when written out in words referring to stacks 16:33:03 ais523, on jotting down I agree, but my draft for a befunge08 (basically 2D funge98 with some details to make it possible to implement in, say, bash, in a sane way, though my long term goal is extending to full 2D funge98) now at 10 pages, I use lyx for it 16:33:40 the definition of C, for instance, is very complicated when written out in words referring to stacks <-- hah indeed *has read large parts of C99 standard* 16:34:17 ais523, on your specs, "#! /usr/bin/underlambda" must it be that exact line? 16:34:21 I was referring to C the Underlambda command, not the language, but I've read much of the C89 and 99 draft standards too 16:34:23 AnMaster: yes 16:34:24 what if the binary is somewhere else? 16:34:28 like in /usr/local/bin 16:34:31 symlink 16:34:43 but the string is more for identification of the language 16:34:51 ais523, I suggest it should be allowed to be: #!/usr/bin/env underlambda 16:35:03 there are also various subtle things, such as # can be used as a quote symbol for an m4 interpreter 16:35:16 hmm... maybe #!/dev/env/underlambda 16:35:30 ais523, that is the way I do for bash, because on for example, freebsd, all non-basesystem binaries are installed to /usr/local/* 16:35:55 but I don't like forcing symbols into people's environments 16:36:00 and really, underlambda, or any esoteric language interpreter/compiler, does hardly belong in a base system of any OS 16:36:06 there should be a /dev/which, really 16:36:16 ais523, heh? no system got that 16:36:25 that does what the which command does 16:36:30 /usr/bin/env is standard, I think POSIX 16:36:31 so /dev/which/sh = /bin/sh 16:36:38 so that means, /usr/bin/env bash 16:36:44 will find bash if it is in the path 16:37:06 looking at env's man page, that looks like a bit of a hack 16:37:10 ais523, it is the generic portable way for when your interpreter may be in a different place 16:37:45 * ais523 checks my BusyBox/ash root 16:37:48 and it seems to work there too 16:38:05 for example 16:38:07 $ ls /usr/bin/python* /usr/local/bin/python 16:38:08 ls: /usr/bin/python*: No such file or directory 16:38:08 /usr/local/bin/python 16:38:13 so maybe /usr/bin/env would work 16:38:14 on freebsd 16:38:23 (I'm still open to suggestions) 16:38:33 the important part is the #! / at the start, anywway 16:38:36 s/ww/w/ 16:38:39 on gentoo linux: 16:38:40 $ ls /usr/bin/python /usr/local/bin/python* 16:38:40 ls: cannot access /usr/local/bin/python*: No such file or directory 16:38:40 /usr/bin/python 16:38:52 ais523, you mean that space? hm ok 16:39:30 (it's needed for portability, because there's some OS (forgotten which one) which looks for magic 32-bit words at the start of files to determine their file type) 16:39:42 (and it uses #! / as the magic word for executable text files) 16:39:52 hm 16:40:01 ais523, never heard of such a OS 16:40:08 I suspect it's an old one 16:40:13 tell me if you remember the name of it 16:41:11 The /usr/bin/underlambda was anyway just my guess at what should go there; I'm not very good with #! strings 16:42:12 -!- jix has quit ("CommandQ"). 16:48:47 ehird, well what is wrong with my bzrweb? it works here 16:49:14 ais523, for portability, using env is likely the best way :/ 16:49:20 agreed 16:49:28 on modern systems, it should be available 16:49:31 is it in POSIX? 16:49:52 ais523, not sure about that, but I think it may be 16:50:09 STANDARDS 16:50:10 The env utility conforms to IEEE Std 1003.1-2001 (``POSIX.1''). The -P, 16:50:10 -S and -v options are non-standard FreeBSD extensions which may not be 16:50:10 available on other operating systems. 16:50:22 * AnMaster checks on his gentoo system as well 16:50:46 hm just the usual "see info page", sigh 16:51:00 (*bsd got way better man pages than linux) 16:52:30 what do you think of the rest of the spec? 16:52:41 (it isn't nearly finished yet, there should be a lot more, containing more advanced commands) 16:53:24 ais523, was away eating so haven't had time to look 16:53:30 OK 16:54:24 ais523, tell me a summary what is special with this language please 16:54:36 it's designed as an update to Underload 16:54:46 Tier 1 is sufficient to be TC 16:54:51 underload was one you never finished? or? 16:54:52 and tier 2 for Brainfuck-completeness 16:54:56 Underload was finished 16:55:04 but wasn't very usable for practical programming 16:55:10 seeing as it was an output-only tarpit 16:55:34 ok, what was special for underload then? 16:55:34 Underlambda is 'purer' in some sense; it's a concatenative programming language where all data are functions 16:55:42 Underload is basically a concatenative tarpit 16:55:50 the same way that Brainfuck is an imperative tarpit 16:55:59 and Unlambda is a functional tarpit 16:56:19 ok (you know, most of us in this channel, including myself, got very odd minds, or we wouldn't do this kind of stuff!) 16:56:37 * ais523 thinks that concatenative languages are very neat 16:56:42 Unlambda isn't really a tarpit. it has bells and whistles. odd ones, but... 16:56:44 I can't say, I'm familiar with the concatenative languages thing 16:56:55 what is their speciality? 16:57:01 basically, all commands are functions which take a stack as an argument and output another stack 16:57:15 and concatenating two commands leads to another command which is the composition of their functions 16:57:25 manipulating code as data is normal, and the usual way to write loops 16:57:38 (in fact the only flow control command in Underload is 'eval', written as ^) 16:57:56 ah, multi-stack based language? and self modifying? 16:58:18 one stack in Underload 16:58:23 and not exactly self-modifying 16:58:30 it's more like Muriel; you construct new program on the fly 16:58:33 ah, you said functions take stacks and return stacks? 16:58:38 yes 16:58:39 but with just one stack? 16:58:45 you apply the entire program to an empty stack 16:58:50 because the entire program is just a function 16:58:53 sounds like unefunge98, with a single stack, stripped of most commands? 16:58:53 and it returns a stack 16:59:04 you can use it like that 16:59:11 except the flow control is completely different 16:59:21 and you can put all sorts of data on the stack 16:59:35 ok, flow control is one of the major things that make funges to what they are 16:59:36 (such as bits of your program) 17:00:37 as an example, an infinite loop in Underload is (:^):^ 17:00:49 (:^) pushes the code :^ on the stack 17:00:59 : copies that, so there are two copies of :^ on the stack 17:01:16 and ^ executes the top stack element, leaving :^ as the program and :^ on the stack 17:01:22 (and everything repeats from there) 17:01:33 ais523, anyway, making the #! /usr/bin/env underlambda to the fixed string would be as bad, because what if someone else made another interpreter for the language, he/she couldn't use same name, and if you want to use a specific interpreter, you would have to run it like: nameofotherinterpreter sourcefile.whatever 17:01:51 you would do it like that anyway 17:01:57 hmm... maybe I should simply just insist on the #! 17:01:59 ais523, hm? 17:02:14 you would normally run a program under an interpreter by writing the interpreter's filename 17:02:14 ais523, actually "#! /" should be ok 17:02:20 yes 17:02:30 and you can write #! /bin/false if you don't want the program to be executable 17:02:48 (one of my favourite Perl cheat quines: #!/bin/cat) 17:03:18 Hello people folks. 17:03:19 ais523, you would? you know, likely quite a few shell scripts exists in your /usr/bin, you are not likely to run them with the interpreter's name in front 17:03:23 hello slereah__ 17:03:31 -!- slereah__ has changed nick to Slereah. 17:03:36 yes, but I generally prefix gcc to C programs 17:03:43 and likewise the name of a BF interp to BF programs 17:03:58 Underlambda is expressly designed to be compilable 17:04:19 ais523, for example, do you do bash /bin/gunzip? or just gunzip? 17:04:25 (Underlambda tier 1 -> GolfScript is possible by simple text substitution, for instance) 17:04:32 on my system it is a short shell script, calling gzip with some parameters 17:04:57 same here, actually 17:05:25 but what I'm saying is that although shell scripts and other scripts are normally run through the #! line, programs in non-scripting languages normally aren't 17:05:33 especially on Windows... 17:05:38 windows, bah 17:05:47 yes, but I want the language to be portable 17:06:09 ais523, I think python on windows installs some registry entry to make sure if you double click a *.py, it will run under python 17:06:14 yes 17:06:15 it is possible I know 17:06:18 based on the file extension 17:06:23 it's actually quite easy 17:06:35 * ais523 used Windows for several years (and DOS before that), but uses Linux nowadays 17:06:53 ais523, anyway, by forcing a specific #!* line, you restrict portability in fact 17:07:21 to me a portable program is one that works without problems on multiple systems without changing the source code 17:07:35 a specific #! line is more portable, because at least it can be picked up by commands like file(1) 17:07:37 ais523, ah, I went from Mac OS 7 -> redhat linux 5.0 (or 6.0? not sure) 17:08:09 then slackware due to rpm hell, then suse, debian and quite a few other distros 17:08:17 Idea : A negative reinforcment language. 17:08:22 but say if I write #! /home/ais523/blah/blah/blah/underlambda at the top of my script 17:08:27 and finally settled on gentoo and freebsd 17:08:30 If there's a syntax error, it deletes your hard drive :o 17:08:39 to me a portable program is one that works without problems on multiple systems without changing the source code 17:08:39 indeed 17:08:56 then it might run on my system if I change the directory structure, but probably not yours 17:09:07 a specific #! line is more portable, because at least it can be picked up by commands like file(1) <--- file tells me a file starting with #!/bin/env bash is a bash script here 17:09:13 rerr 17:09:14 err* 17:09:17 */usr/bin 17:09:22 yay for *not copy pasting* 17:09:24 :/ 17:09:46 If there's a syntax error, it deletes your hard drive :o <-- you mean deathstation 9000? 17:10:01 Sure, why not 17:10:05 Slereah, (if you don't know it, a joke about all the "the result is undefined" in C standard) 17:10:35 t.t: a underlambda script text executable 17:10:48 (actual output of file(1) when run on #! /usr/bin/env underlambda) 17:10:58 A hostile language 17:11:22 ais523, indeed, file is quite smart. 17:11:36 btw, what is the correct file ending for a befunge93 program? and what about befunge98? 17:11:38 except it sometimes identifies C files as Pascal 17:11:50 AnMaster: .bf and .b93 according to the specs 17:12:08 which is why I'm annoyed when people use .bf for Brainfuck 17:12:08 ais523, hm, .bf sounds like brainfuck to me 17:12:15 it should be .b 17:12:23 hm 17:12:33 ais523, what about befunge98 then? 17:12:42 .b98 17:16:21 Ah, found the Gödel proof with modern notation. 17:16:31 The original has the horrible PM notation. 17:17:37 pm? 17:17:47 Principia Mathematica. 17:17:56 ah 17:18:10 Fact : Bertrand Russel hated parenthesis 17:18:19 He didn't even like Polish notation! 17:18:32 He used some sort of horrible dot based notation. 17:20:59 Although the Godel paper spare me the dots. 17:21:00 :D 17:21:03 sounds awesome 17:21:15 i don't exactly like the standard math notation 17:21:25 oklofok: http://membres.lycos.fr/bewulf/Russell/2.56.jpg 17:21:33 (Yes, that's why that folder is named Russell) 17:21:52 Proof written in both Russell and modern notation. 17:22:07 i'd like something like polish notation, but so that you could optionally have function arguments on top of each other 17:22:11 At least the first line. 17:22:16 kinda like you do with standard division notation 17:22:21 i cannot open that 17:22:30 something wrong with my internets 17:22:37 Oh. 17:23:31 Well, if you want an example; 17:23:35 ⊢ :: p ⊃ ~( ~q ) . ⊃ . p ⊃ q : ⊃ :. ~q ⊃ ~p . ⊃ . p ⊃ ~( ~q ) .: ⊃ : ~q ⊃ ~p . ⊃ . p ⊃ q 17:23:41 If the unicode displays. 17:23:46 it does 17:23:49 go that's sexy 17:23:56 *god 17:24:21 If you want to know the principle, it's in the PM. Maybe you'll understand it, unlike me! 17:24:38 I can sort of read it, but I don't think I can actually write big things in it. 17:25:44 i don't feel like guessing syntax without having no idea about semantics :P 17:25:55 i'm assuming the u's are what they are in math ? 17:26:08 "is super-/subset of" 17:26:13 No. 17:26:15 oh 17:26:17 just superset 17:26:20 It's the old notation for "imply" 17:26:21 and okay 17:26:24 yeah 17:26:29 that was my second guess 17:26:32 seen that somewhere 17:26:39 Translation is ⊢ ( ( p → ~( ~q ) ) → ( p → q ) ) → ( ( ( ~q → ~p ) → ( p → ~( ~q ) ) ) → ( ( ~q → ~p ) → ( p → q ) ) ) 17:26:47 actually guessed that after realizing there were no C's 17:27:11 The dots serve to separate statements. 17:27:24 could someone link me the funge-98 spec? 17:27:53 i cannot access pages, so i need the link so i can ask a guy to send it to me via dcc :P 17:28:00 http://quadium.net/funge/spec98.html 17:28:10 thnks 17:28:25 I actually think that's a mirror, but it seems to have the right data on 17:28:30 *thanks 17:28:56 that's the massive spec even ehird was scared of? 17:30:49 * ais523 isn't scared of it 17:30:53 but ehird was for some reason 17:31:23 vacj 17:31:25 back 17:31:31 whoa 17:31:34 i missed a LOT 17:32:44 if ehird doesn't consider something trivial, it must have some complexity. 17:32:49 -!- RedDak has quit (Remote closed the connection). 17:33:14 ais523: /usr/bin/env is highly common 17:33:25 I'll use that, then 17:33:45 AnMaster: bzrweb -- yours wont;' show the file contentes 17:33:56 I was more interested in forcing a particular magic string, than what that string actually was 17:34:08 i.e. I want all progams to use the same string but don't care what it is 17:35:31 [17:06] * ais523 used Windows for several years (and DOS before that), but uses Linux nowadays 17:35:34 you used windows like yesterday 17:35:36 :-) 17:35:46 i remember saying that GNU/Windows was the most awful idea i've heard 17:36:04 I still use Windows for some things, such as checking emails with my real work on my laptop 17:36:30 generally use SunOS when I don't have my laptop (accessed via Exceed on Windows) 17:36:41 GNU/Windows was what I used at home before I got this laptop 17:36:53 SunOS, hee :) 17:37:16 CDE/SunOS, to be precise 17:37:23 i'm a mac luser but i suck because my first mac was intel 17:37:25 it was this one 17:37:27 but at least it gives me a POSIX shell I can type commands into... 17:37:32 and stupidly I didn't upgrade the ram from the base 1gig 17:37:34 :| 17:37:42 i can upgrade that on the cheap anyway, at least 17:38:05 works much better than my old, crusty computer though ... that thing was ready to die like 5 years ago 17:38:51 you could try to save it by putting some lightweight version of Linux on it 17:39:05 * ais523 has been working on a Linux system with 64MB memory and 16MB disk space recently 17:39:18 ais523: the hardware is mostly mutually compatible 17:39:19 Busybox/Linux, not GNU/Linux 17:39:33 the base system came from when i was a young'un.. 17:39:41 i didn't really know how to not break a computer then 17:41:10 ais523: anyway, the eso-std.org pastebin coding is underway 17:41:14 hmm... it seems that consistent-speed multithreading was implemented in both Funge-98 and FukYorBrane before it was added to INTERCAL 17:41:23 ehird: are you using an Emacs-based syntax highlighter? 17:41:30 ais523: nope, something better ... 17:41:37 it's written in python for about two reasons - the first, and most important, is the syntax highlighter -- Pygments 17:41:43 it supports, like, 200 languages out of the box 17:41:46 even Brainfuck, by default 17:41:55 and its lexer-thingy framework is very flexible 17:41:59 http://pygments.org 17:42:12 how does it handle Perl? 17:42:21 that's really hard to syntax-highlight 17:42:30 ais523: what's that 'unparsable perl' snippet again? 17:42:32 the regexp + # thing 17:42:36 i'll try it on pygments 17:42:51 probably it fails somehow, but generally you shouldn't complain ;) 17:43:14 ais523: look at the language dropdown 17:43:14 it's huge 17:43:17 from memory, maybeunarymaybebinary /1*0; #/; 17:43:37 actually, that should be 'maybenullarymaybeunary' 17:43:52 ah it's this 17:43:52 whatever / 25 ; # / ; die "this dies!"; 17:44:07 same principle 17:44:23 ais523: http://pygments.org/demo/636/ 17:44:36 so, it fails, but fails in the same way that the eye would scan it 17:44:55 which.. isn't too bad, I'd say 17:46:32 http://pygments.org/demo/637/ 17:46:32 kate beats it on that 17:46:34 AnMaster: bzrweb -- yours wont;' show the file contentes *looks* 17:46:54 ehird, ah indeed 17:46:57 will fix later 17:47:35 now I got a funge98 question, the standard doesn't mention the issue, and mycology doesn't test it. what should happen on this code (entering from left, going right): 17:47:47 04-k# 17:48:02 I think thats undefined 17:48:22 ehird, ok, (at least C standard says things are undefined, sigh) 17:48:31 2008?02?02 17:48:32 The behaviour of 1k # is now considered UNDEF. 17:48:37 AnMaster: from mycology web page 17:48:42 I think that's isomorphic?? 17:48:46 ehird, err no 17:48:49 okay 17:48:52 then contact Deewiant 17:48:57 my question is for negative iterations 17:48:59 memoserv might help. 17:49:05 AnMaster: hmm 17:49:07 jump bcakwards? 17:49:30 ehird, what should happen when the iteration count is negative for k, in general, for #, jump backwards may be a good idea 17:49:35 but what about other ones? 17:49:42 like +? or a number 17:49:43 AnMaster: I am sorry, I have no idea. 17:49:46 Ask Deewiant. :-) 17:49:49 hm ok 17:50:02 when is he/she on irc normally? and in this channel? 17:50:18 Used to be quite often. 17:50:25 [17:50] -NickServ- Nickname: Deewiant << ONLINE >> 17:50:25 [17:50] -NickServ- Registered: 1 year 9 weeks 4 days (5h 30m 22s) ago 17:50:31 Well whaddya know -- he's online now. 17:50:42 In #haskell, no less. 17:50:45 I am tempted to /invite him :-) 17:50:50 To put the real answer on the record. 17:50:55 Aww. 17:50:57 Who's Deewiant? 17:50:58 You can only invite if you're an op?! 17:50:59 Lame. 17:51:03 Sgeo: Mycology & CCBI author. 17:51:14 And, therefore, Befunge-98 guru. 17:51:33 Am I a PSOX guru? 17:51:43 * [Deewiant] is away (Sauna.) 17:51:56 I'll /msg him for when he gets back, I guess. 17:53:02 ehird, I sent a /msg to him 18:01:13 * oerjan smells a finn 18:01:51 KILL WITH FIRE 18:01:53 KILL KILL 18:02:10 no, another one 18:02:13 (i actually mean POWER, but no one knows the reference anyway) 18:02:56 POWER WITH FIRE? interesting. 18:03:11 umm no, silly 18:03:15 KILL POWER FIRE 18:03:21 ah 18:03:26 and then POWER KILL 18:03:28 that makes sense 18:03:28 not 18:04:02 hmm... that makes even less sense than the average HOMESPRING program 18:04:09 but apart from the caps is visually similar 18:04:15 :D 18:04:25 KILL POWER FIRE 18:04:42 FIRE POWER KILL 18:05:01 KIRE FOWER PILL 18:05:47 PILL ROW FREE PK 18:07:08 this channel must be the second weirdest i ever encountered 18:07:09 FLOWER KIPPER POLE 18:07:16 o_O 18:07:20 CLOWER FLIPPER MOLE 18:07:23 oklofok: Not even close! 18:07:27 *CLOVER 18:07:34 *CLOWNER 18:07:43 Slereah: well, unless you count temporary chanels 18:07:45 NOONE OWNS CL 18:07:47 *chanelzorz 18:08:01 chanel 5? 18:08:10 yeah, and 9. 18:08:29 oklofok: which one was weirder? 18:08:44 not in this network 18:08:45 (just out of interest, #esoteric seems relatively sane about half the time it's active) 18:09:24 sure, that's why it was #2 18:09:34 Esoteric is pretty sane if I compare it to some other chans. 18:09:44 Plus, it is even serious most of the time! 18:09:54 in the other channel, you often see hours of okoing without no one talking anything else. 18:09:57 *on 18:10:21 okoing? 18:10:23 assssssdf, cise is hell to implement 18:10:30 oh noes, we are not the mad enough 18:10:34 ais523: okokokokokokokokoko 18:10:43 why would anyone do that? 18:10:53 oklofok: er, are you the only person in it? :D 18:10:55 well, why not. 18:11:17 oerjan: no, we're actually a registered association :) 18:11:41 What, the ESO association? 18:11:43 association internacional de okoficacion 18:11:50 :D 18:12:01 ehird, how goes tuberculosis? 18:12:06 I wonder, are there any girls on esolang? 18:12:12 I don't think I ever saw one. 18:12:18 there was this sukoshi chick 18:12:22 there were one or two 18:12:34 *CACK* *COUGH* *ACKFOO* *GWAPF* 18:12:35 they were about as fucked up as you would expect esolang girls to be 18:12:51 *two*? 18:12:54 hmm 18:13:03 actually, i think i remember another one 18:13:08 the one i scared away 18:13:16 with the naked pics? 18:13:30 i don't remember 18:14:11 hmm 18:14:16 something about being a sexbot 18:14:19 :D 18:14:33 i should dig up the logs 18:14:57 her nick was something like gamegirl, unless she turned out to be a guy in the end, don't remember 18:15:22 actually, i vaguely recall you, lament, saying it couldn't be a girl, because no girl would put "girl" on their nick 18:15:23 anyone with "girl" in the nick is a guy, isn't that well-known? 18:15:30 probably, all of this was just a dream. 18:15:32 oerjan: vise-versa? 18:16:05 no, i definitely don't think everyone with "guy" in the nick is a girl. but i might be wrong. 18:16:13 -!- oklofok has changed nick to okloMAN. 18:16:24 believable so far 18:16:28 now change it to oklogirl 18:16:33 omg 18:16:35 no way! 18:16:39 rofl 18:16:43 okay, okay 18:16:47 -!- okloMAN has changed nick to okloHOTGIRL. 18:16:52 HEY BABY 18:16:54 see? not believable at all :) 18:16:55 i'm so gonna get banned from all the chans i'm on. 18:16:59 yes 18:17:03 -!- Deewiant has joined. 18:17:03 :D 18:17:08 lez hope not. 18:17:09 heh, most girls that I know are girls on irc use gender neutral nicks 18:17:10 -!- okloHOTGIRL has changed nick to oklopol. 18:17:14 oklopol: starting with this one :P 18:17:21 lament: nooooo :D 18:17:23 Deewiant, hi, did you see the questions I asked in /msg 18:17:25 AnMaster: that's true of men too 18:17:31 AnMaster: negative k is undefined by the spec 18:18:00 AnMaster: in my interpreter it reflects, in some it crashes or causes infinite loops :-) 18:18:00 never let your k become negative 18:18:18 talking about the k-means algo? 18:18:20 Deewiant, also in general, the instruction k execute, executes on the k, right? 18:18:21 AnMaster: if you're interested in what exactly happens across interpreters have a look at http://iki.fi/matti.niemenmaa/befunge/mycology-comparison.html 18:18:24 Deewiant: It's funny that it's taken him a few days to get close to what you did in over a year. :-) 18:18:32 Though, admittedly, he DID have Mycology &co. to test it on :p 18:18:43 so what would 2k'c do? 18:18:46 ehird: most of the time was spent in writing Mycology, not the interpreter :-) 18:18:53 everything gets finished in a day, or in about a year 18:19:07 make that over a year 18:19:11 Deewiant, I have used mycology on my befunge interpreter (not complete yet, but the 93 part is complete) 18:19:19 Deewiant: Hehe. Still, in *Bash*.. 18:19:25 ehird, indeed 18:19:29 ... Next up: Besed-98? :-) 18:19:39 AnMaster: it's not 100% specified whether k executes on or off the k, personally I think it's on the k 18:20:06 AnMaster: 2k'c is something that could do pretty much anything depending on how you want to think about it 18:20:17 it's similar to the issue with nested k 18:20:32 Deewiant, what would you recommend a interpreter to do in those cases? 18:20:44 AnMaster: Print out messages implying that it is a toaster. 18:20:52 i.e. if you need to execute something that moves whilst within a k, do they all execute from the k or only the first or none of them or what 18:20:58 a *hot* toaster 18:21:01 sort of like the ask-the-user on division by 0? 18:21:07 It should output to the bell. 18:21:13 Your computer has a bell output, no? 18:21:19 ais523: hah 18:21:26 Deewiant, I find the 98 specs are quite unclear over k really hm 18:21:36 Slereah: for(;;){printf("\7");fflush(stdout);} 18:21:40 AnMaster: there was some correspondence between Jerome Quelin (author of Language::Befunge), Mark Glines (author of Befunge98 [the interpreter]) and myself about nested k which somewhat relates to these questions of yours 18:21:42 (note that division by zero produces a result of zero in Funge-98, but Befunge-93 instead is supposed to ask the user what they want the result of the division to be) 18:21:46 Slereah: for(;;){printf("\7***TOASTING***\n");fflush(stdout);} 18:21:47 Heh 18:21:59 AnMaster: and yes, they are. as they are on many other things. 18:22:33 Deewiant: You should write a Trefunge test-suite. 18:22:35 wait, did I say Mark Glines? err. I meant Lee Houghton. 18:22:43 Or -- a program that algorithmically generates an N-dimensional test suite! 18:22:45 Deewiant, hm maybe someone should make those issues clearer? (at least C standard says things are undefined ;) 18:22:53 ehird: sh'ya right :-D 18:23:09 AnMaster: I suppose you could ask Chris Pressey about that if you're interested 18:23:11 Deewiant: even an autotester 18:23:16 AnMaster: I'm not sure if he is, though ;-) 18:23:32 Deewiant, errm who? 18:23:35 % ./Ncology -s 1 -e 100 -p Nfunge 18:23:49 AnMaster: guy who invented Befunge 18:23:57 ..........................FAILS on 64d: Quaridor fails to jeuros through-outen the vinn. 18:24:29 AnMaster: he comes by here every few months 18:24:31 hm 18:24:52 When was the last time! 18:25:03 I probably would have implemented correct nested k -handling in my interpreter but it would have turned out to be too tricky so I got lazy :-) 18:25:16 probably along the same time as he last edited the wiki... lessee 18:25:19 Deewiant, so what does your interpreter do on nested k? I can't get the the gcc d compiler to compile on 64-bit so... 18:25:35 can I paste five lines on Befunge here? 18:25:38 s/on/of/ 18:25:58 and if not, is there a pastebin you guys use or something 18:26:03 Deewiant, and also what does it do on for 2k'c 18:26:17 AnMaster: I'm not sure, but I think it'd first push ' and then c 18:26:18 Deewiant: Yes! pb.eso-std.org 18:26:19 that would be Nov 13 18:26:21 (Note: May not be up yet) 18:26:25 For now, pastebin.ca :-) 18:26:30 Deewiant, interesting, and what about 3k'c then? heh 18:26:33 ehird: :-) 18:26:48 ehird, Firefox can't find the server at pb.eso-std.org. 18:26:49 AnMaster: 3k'ca would push ', c, and then a. (I think.) 18:26:53 AnMaster: GOSH REALLY 18:27:10 ehird, ah right, didn't read the "may not be up" line 18:27:23 AnMaster: I'm not 100% sure to be honest, since 2k# jumps twice from k I guess that's how ' would work 18:27:31 Deewiant, and if the line ends after the c? 18:29:04 Deewiant: Hey, you should write the Befunge-98 lexer for eso-std's pastebin. Pygments' is horribly b0rken. :P 18:29:21 Deewiant, so, summary, these instructions are not allowed in k: ", ; and space (and don't reflect) these are allowed but behaviour is unclear: k ' and s. 18:29:23 I think Befunge-98 would be extremely hard to parse properly within pygments though 18:29:25 is that correct? 18:29:36 AnMaster: it'd push a space as is standard for acccessing outside bounds 18:30:13 AnMaster: space and ; are somewhat unspecified/unclear as well, the spec says they're not to be executed but whether that means they're ignored or reflected on is up to you 18:30:25 AnMaster: http://pastebin.ca/932396 18:31:17 hmh, that code is misaligned for some reason 18:35:27 hm, I'd give a warning and not reflect on nested k. As for nested ', I'd push the char after the ' the given number of times for k to iterate, then continue after the k'c (or whatever char) 18:35:48 err not " nested ' " 18:35:51 so what about 2k# then 18:35:54 remove nested in that place 18:36:06 does it make sense to you that it jumps only once? 18:36:07 Deewiant, for that mycology got a test, I would follow that test 18:36:14 AnMaster: I wrote that test. :-P 18:36:23 Deewiant, indeed I know that 18:37:00 I'm just saying that you're going to have some special casing to do if you want them all to "feel logical" 18:37:08 negative iterations on k, on *nix: reflect on windows: format c: 18:37:13 *runs* 18:37:37 i.e. 5k# jumps 5 times, but 5k'c pushes c 5 times <- one of those has to be a special case 18:37:40 Deewiant, I already special case k, as I do the "ip forward" bit at the end of the main loop. 18:38:05 AnMaster: Windows will prompt the user for the volume label of the hard drive if you do that 18:38:07 I mean that you're going to need separate cases depending on what instruction k is executing 18:38:12 as a check against accidentally formatting it 18:38:18 ais523, aww 18:38:32 ais523: and further, if windows is installed on C, it'll say that the volume is in use even if you say yes to the "are you sure" 18:38:48 * ais523 didn't realise that Windows did a volume-in-use check in such cases 18:39:10 AnMaster: and you can't really write a separate case for every instruction especially if you plan on implementing (m)any fingerprints :-) 18:39:12 I mean that you're going to need separate cases depending on what instruction k is executing <-- yep 18:39:41 Deewiant, I plan a minimal befunge98 implementation as I do it in bash(!) 18:39:47 * ais523 thinks k should always reflect with a negative argument 18:39:51 AnMaster: the way it's specified, I don't think there should be any special cases 18:39:56 ais523, yeah 18:40:09 because there is no way to run a command a negative number of times 18:40:09 AnMaster: apart from the invalid instructions like "; 18:40:23 which is why Underlambda only supports nonnegative integers in its stdlib 18:40:47 ais523, hm, I'm sure it would be possible in TURKY BOMB ;) 18:41:00 (what with all their "half a bit wide" and such) 18:41:03 (or to be precise tier 4, which acts like an arithmetic stdlib, and has a low tier number because most implementations will want to optimise it for performance) 18:41:24 AnMaster: there's no syntax to express it in TURKEY BOMB but it fits well into the spirit of the language ;) 18:41:35 ais523, exactly 18:41:36 AnMaster: implement the TRDS fingerprint, it's a nice one 18:42:18 Deewiant, I'm not even sure how to do fingerprints, currently my plan for the negative funge space thing is four arrays around the origin, one for each quadrant 18:42:36 TRDS is the time travel fingerprint 18:42:56 really annoyed me, probably spent a month on that one alone 18:43:02 Deewiant, that reminds me, the funge registry thing link at http://catseye.tc/projects/funge98/doc/funge98.html is broken 18:43:19 and then the first test I run against RC/Funge leads to it crashing 18:43:19 so where do I find out about such things 18:43:19 AnMaster: yeah, it doesn't exist 18:43:20 like what handprint I should use and such 18:43:33 although I think there's an archive of it somewhere, sec 18:43:44 currently I use the sum of the values of the ASCII chars in Bashfunge 18:43:47 http://catseye.tc/projects/funge98/doc/old_index.html 18:44:24 AnMaster: my Mycology page links to all Befunge-98 interpreters I know of and has downloads for any that've fallen of the 'Net, too 18:44:26 Deewiant, and what about the finger print registry? 18:44:52 and Mycology tests almost every fingerprint that has been implemented on any of said interpreters :-) 18:45:06 and the Mycology readme refers to the two or three that it doesn't test 18:45:07 the registry doesn't appear to be on catseye.tc, at the moment 18:45:17 ais523: I linked to it above 18:45:17 Deewiant, hm, and where do I find docs on the different fingerprints? 18:45:37 AnMaster: in the readmes of the interpreters that first implemented them, mostly 18:45:46 sigh 18:46:15 AnMaster: RC/Funge-98, the jvh version of same, and then http://catseye.tc/projects/funge98/ 18:47:04 Deewiant, also, for y instruction, byte size, what should your return in, say, an interpreted languages that treat everything as strings (like bash do)? 18:47:19 or if you use bignums 18:47:28 eh 18:47:31 I dunno :-P 18:47:52 maybe the amount of memory installed? :-) 18:48:11 hmh, the specs are clear as usual 18:48:12 " Typically 4, could also be 2, 8, really really large, infinity, etc." 18:48:19 I wonder how one would push infinity as an integer 18:48:50 AnMaster: I'd just push a really big number. 18:48:56 I'd give special meanings to negative values returned from that y request, like -1 = BIGNUM/infinity -2 = Not applicable -3 = Implementation defined 18:49:19 -3? of course it's implementation defined, you're asking the implementation what it defines it as :-) 18:49:31 something like that would be nice but it's not in the spec. 18:49:35 Deewiant, ok "-3 = none of these" 18:49:44 (say, quantum befunge)? 18:49:54 Deewiant: certain floating-point bitpatterns are defined to mean infinity 18:49:58 I thought about writing an "unofficial spec" which would clarify everything but decided against it, there are already two standards 18:50:05 but that's not very helpful for an interp which only uses integers 18:50:11 ais523: yes, but this is an integer we're talking about. 18:50:19 Deewiant, so I'd do befunge08 18:50:20 "In Funge-98, stack and Funge-Space cells alike should be treated as signed integers of the same size. " 18:50:23 * AnMaster fires up lyx 18:50:27 ais523: it's defined as above 18:50:42 maybe we need a Funge-08 18:50:56 AnMaster: we already have 3 standards only 1 of which is properly defined and only 1 of the latter 2 was ever really implemented properly :-) 18:51:11 Deewiant, bashfunge does a workaround for that, it can't store \0 in a variable, so results with \0 are stored as the *string* NUL heh 18:51:32 personally I think Funge-98 is interesting enough in itself, a new standard wouldn't be of much use to anyone 18:51:45 * ais523 is a big Funge-98 fan too 18:51:45 AnMaster: gotta love bash :-) 18:51:46 Deewiant, well, 98 is so unclear 18:51:58 only in corner cases, though 18:51:59 -!- Judofyr has joined. 18:52:17 I'm speccing up Underlambda as a set of rewrite rules, with side effects specified in English 18:52:23 I doubt that that would help for Befunge, though 18:52:32 -!- timotiis has joined. 18:52:38 ais523, I think it should at least say "on blah the result is undefined" like the C standards do 18:52:49 AnMaster: the trouble is that there are so many cases to consider 18:52:56 especially with the fingerprint mechanism 18:52:57 AnMaster: are you referring to Befunge or Underlambda? 18:52:59 not knowing if it is undefined, or somewhere else in the standard is a problem 18:53:07 I decided early on not to test separate fingerprints together 18:53:15 Deewiant, well yes, I'd implement 0 fingerprints 18:53:20 the universe would end trying to put them together 18:53:38 Deewiant, also a working registry is needed IMO 18:53:50 AnMaster: aye, but as originally specified you can have fingerprints, so when you think from the viewpoint of the spec-writer it's tricky to go through everything 18:54:30 AnMaster: the days of standardizing funge-98 are over, in the meanwhile we make do with what we have :-) 18:54:33 Deewiant, what is the license of the 98 standard document itself? 18:54:44 -!- RedDak has joined. 18:54:50 AnMaster: beats me 18:54:58 AnMaster: has a copyright at the bottom apparently 18:55:25 Deewiant, doesn't say if you are allowed to make changes to it or not 18:55:42 AnMaster: I doubt mr. pressey is that much of a jerk :-P 18:55:47 by default things like that are copyrighted all-rights-reserved, unless the author states otherwise 18:55:48 * AnMaster would be much happier with something like GFDL or even CC-by-sa 18:56:07 AnMaster: at the time, such things weren't as much an issue as today 18:56:08 I suspect that you'd get permission if you asked for it, but I think you do have to ask to avoid breaking the law 18:56:17 ais523, indeed 18:56:22 anyone know his email? 18:56:30 it's on the web page 18:56:54 maybe on the site, but not on the page 18:56:56 * ais523 is amused that cats-eye.com has been domain parked, and the domain parkers have put a picture of a dog at the top 18:57:55 Deewiant, can't find the email? 18:58:34 AnMaster: http://catseye.tc/about/catseye.html 18:58:45 ah 18:59:53 ais523: hurray for the {{catseye}} template! 18:59:57 the snarkiest template on all wiki. 19:01:17 * ais523 has to go, anyway 19:01:19 -!- ais523 has quit ("bye!"). 19:08:42 oh no, he went. we are not observed any more. does that mean we cease to exist? 19:08:43 Deewiant, I sent a mail about it 19:09:22 AnMaster: I hope he's not interested, I'd hate to have to rewrite more bits of Mycology ;-) 19:09:42 Deewiant, then I'd write a Funge08 standard from scratch 19:09:56 AnMaster: and I'd be happy to not implement it ;-) 19:11:00 Deewiant, I aim at making it compatible. The only thing I'd is clean up corner cases, and add a new instruction to be able to modify some rules at runtime (say, should we use befunge93 or funge98 style spaces?) 19:11:22 -!- otesanek has joined. 19:11:28 in bash at least, the latter is quite easy 19:11:44 I would just redefine the function that handles the " instructions on the fly 19:11:46 :) 19:12:05 or just add a check in the handler 19:12:23 Deewiant, yeah, but that is slower to execute ;) 19:12:33 yeah, I suppose 19:12:52 Deewiant, also I can't get your interpreter to compile, because I can't get gcc d compiler to compile 19:13:07 complain to the GDC folks :-) 19:13:14 hm 19:13:33 join #d and ask about it 19:13:43 -!- RedDak has quit (Read error: 113 (No route to host)). 19:14:29 I've been thinking of making a linux binary but never got around to it 19:14:58 Deewiant, for what arch? 19:15:05 x86, it's all I've got 19:15:09 I got x86_64 19:15:18 but I could run it in 32-bit mode then 19:17:03 -!- RedDak has joined. 19:17:16 Deewiant, btw does j wrap? also what about say a program consisting of this only: ff*j 19:17:23 everything wraps 19:17:39 would that wrap a lot of times? 19:17:39 hm 19:17:46 Deewiant, so when mycology tests s at -1,-1, where should result end up? 19:18:31 hmm? it does 501-01-p or something, right, and expects to get 5 back when it does 01-01-g 19:18:51 err not s indeed 19:18:54 g I meant 19:18:59 (late here) 19:19:23 Deewiant, ok, so it shouldn't put a value in negative fungespace? 19:19:35 of course it should, that's what p is defined as doing :-) 19:19:50 but it doesn't actually test that by jumping to -1,-1 though 19:19:58 although it prolly should 19:21:13 Deewiant, hm, I think we should have several possibilities for implementations here, allowing them to implement only some quadrants ;) just to make test suite writing as hard as writing implementations 19:21:32 no no, the spec is quite unambiguous on this one ;-) 19:21:51 and trust me, writing the test suite was much harder than writing CCBI :-D 19:22:00 but adding stuff to y would break things "abusing" y to get a value from the existing stack 19:22:19 ah, that doesn't work on most impls anyway 19:22:54 Deewiant, it doesn't on mine either, I push -27315 and print out "the coder is a jerk" 19:22:58 AnMaster: hint: easy way of implementing Funge-Space is to use a hash table or equivalent, if your lang provides such 19:23:26 Deewiant, bash doesn't, I use an array that wraps every nth entry, so [n * y +x] 19:23:37 and when it needs to grow, it reallocates the entire thing 19:23:41 time consuming I know 19:23:50 (at least it is a sparse array) 19:24:04 bash only provides single dimension arrays 19:25:47 Deewiant, btw, writing a test suite would be easier with less compact code, I wrote some tests for my interpreter, fewer tests than mycology but more lines in file 19:25:55 not a lot on each line though 19:26:05 that's not the hard part 19:26:12 the problem is that you can't assume instructions work 19:26:16 or that's how I tried to do it 19:26:28 so that you get maximal info even if some instruction prior doesn't work at all 19:27:17 Deewiant, oh and mycouser.b98 doesn't check y if unbuffered input is used 19:27:29 so it wants an extra enter after asking for a char 19:27:43 just hold down the button then :-) 19:27:44 my interpreter uses unbuffered input 19:28:06 mycouser can't really assume y works either, since it's befunge-93 as well 19:28:07 Deewiant, well, shouldn't it check 1y for that flag ? 19:28:12 Deewiant, ah ok 19:28:13 right 19:28:35 you could check if it is 93 or 98, like you do in the main test suite 19:28:36 ;P 19:28:46 I couldn't be bothered 19:28:55 I do do something though since it checks a few fingerprints 19:29:09 yeah 19:29:45 also "cell size in bytes", what about a trinary funge? 19:29:57 or in future, one using qbytes? 19:30:09 doesn't matter, it still stores a set amount of data in each cell? 19:30:19 (or infinity) 19:30:37 Deewiant, yep but funge98 says: "1 cell containing the number of bytes per cell (global env)." 19:30:41 that wants it in bytes 19:30:54 but it may not be bytes, or not whole bytes, and so on 19:30:56 hey, even bytes is poorly defined 19:31:02 8-bit bytes? 24-bit bytes? 19:31:07 Deewiant, aren't they always 8 bits? 19:31:08 Deewiant: byte = 8-bit 19:31:11 no 19:31:12 that's the definition of 'byte' 19:31:16 http://en.wikipedia.org/wiki/Byte 19:31:19 ehird, I thought so too 19:31:21 (It is not the definition of 'char' in C, however.) 19:31:31 (But mostly 'char' is 8-bits in C.) 19:31:35 (sizeof(char) == 1 in C, always, though.) 19:31:40 "historically, bytes have ranged from five to twelve bits." 19:31:49 ok 19:31:50 that's fskced 19:31:51 :) 19:31:51 "Bytes of six, seven, or nine bits were used on some computers, for example within the 36-bit word of the PDP-10." 19:32:00 "The UNIVAC 1100/2200 series computers (now Unisys) addressed in both 6-bit (Fieldata) and 9-bit (ASCII) modes within its 36-bit word." 19:32:04 etc. :-) 19:32:12 ehird, so if char is 16 bits, then what would sizeof a type of less bits be? 19:32:23 there is no such type 19:32:32 ah, char must be smallest? 19:32:36 yep 19:32:57 right, then that part of the standard needs to be cleaned up 19:33:11 are you making notes? :-) 19:33:26 Deewiant, I am 19:34:33 -!- otesanek has left (?). 19:34:45 Deewiant, I would add some special negative values, one being "something else" or such, then a y request of, say, 21 would return if it is binary/trinary/and so on and if 21 returns -1 it would be "qbits", a value of 0 = none of these 19:34:49 something like that 19:35:07 the thing is they have to be of use to the program 19:35:08 22 would then define the size of the cells in the unit of 21 19:35:09 :) 19:35:11 read funge-98 19:35:16 was quite simple 19:35:19 oklopol, I have 19:35:34 point is, it doesn't work for a trinary funge or such 19:36:04 if it uses qubits it still has to return some kind of meaningful value instead of just "some qubits" 19:36:13 or where there is no byte size, say, language interpreter is coded in is treating everything as strings 19:36:19 AnMaster: i read it, i meant 19:36:21 Deewiant, indeed 19:36:37 so... funge-98 doesn't have n-funge? 19:36:43 sure it does 19:36:45 oklopol, it does 19:36:53 it introduced them :-P 19:36:53 however, that is n dimensions 19:36:54 hmm, i missed that then :) 19:37:09 but it assumes binary 19:37:20 ...binary? 19:37:29 oklopol, as in "not trinary" 19:37:31 or such 19:37:35 (fournary?) 19:37:39 oh, right 19:37:39 quaternary 19:37:42 ah 19:37:49 anyway, where's n-dimensionality defined? 19:37:52 in the spec 19:37:57 probably in a footnote at the bottom or something 19:37:58 aside from trefunge 19:38:23 Funge-98 is a class of three real and officially sanctioned programming languages (Unefunge, Befunge, and Trefunge) and provides a paradigm for describing any number of imaginary ones with different topologies and any number of dimensions." 19:38:32 this was said in the beginning 19:38:37 there you go 19:38:40 oklopol, yes, "any number" indeed 19:38:43 but i didn't actually see any standardization on that 19:38:50 there's not much to standardize 19:39:03 Deewiant, however, what about 2+3i-funge (no idea how to implement) 19:39:12 or 1.84-funge? 19:39:24 AnMaster: how would you define a nonintegral space :-) 19:39:34 I mean, go ahead by all means 19:39:35 Deewiant, indeed, no idea 19:39:42 hmm, i guess x can, in theory, set any vector to be delta. 19:39:46 like it says under "Other Topologies" 19:39:57 where does it get the length of the vector? 19:40:01 oklopol: "vector" is defined as "n numbers where n is the number of dimensions" 19:40:08 Deewiant, however, please see http://catseye.tc/projects/turkeyb/doc/turkeyb.html 19:40:11 oklopol: so in befunge, it's always 2 numbers, in trefunge it's 3, etc. 19:40:23 Deewiant, "Two thirds of a bit plus half a trit." 19:40:23 fractional spaces are fractals. may be hard to do with a minimum cell distance though 19:40:36 AnMaster: :-) 19:40:37 An RPC client library based on JSON (so loads of good language support) in 119 lines of Python, even including an HTTP proxy for it. Woot. 19:41:00 The x "Absolute Vector" instruction pops a vector off the stack, and sets the IP delta to that vector. 19:41:00 A vector on the stack is stored bottom-to-top, so that in Befunge, x (and all other vector-popping instructions) pops a value it calls dy, then pops a value it calls dx, then sets the delta to (dx, dy). 19:41:03 oerjan, I never understood how "fractional spaces are fractals" work 19:41:07 this is all that's said about x. 19:41:24 oh, so it's just a preset amount of dimensions? 19:41:27 oklopol: "http://catseye.tc/projects/turkeyb/doc/turkeyb.html 19:41:30 darn 19:41:30 lol. 19:41:32 oklopol: "a vector (set of co-ordinates)" 19:41:40 Deewiant: TURKEY BOMB is odd yet. 19:41:41 *yes 19:41:41 oklopol: " The origin is (0, 0) in Befunge, (0) in Unefunge, and (0, 0, 0) in Trefunge. " 19:41:49 Deewiant, ehird is trying to make a turkey bomb interpreter btw 19:41:56 ehird: good for you :-) 19:42:04 i've always assumed funge-98 supported infinite dimensions 19:42:34 oklopol, the size of a vector grows with one cell for each dimension 19:42:54 AnMaster: and that has what to do with what? 19:43:06 oklopol, that the standard does define it 19:43:27 the standard doesn't say anything about infinite dimensions 19:43:28 vector on stack (top -> bottom) zxy in 3-funge 19:43:35 there's a preset amount of dimensions 19:43:39 there English fails 19:43:52 you can add 3 more dimensions using Swedish 19:44:02 yeah, or finnish 19:44:03 öäåzyx 19:44:04 oklopol: no, it has to be finite if it's to be Cartesian 19:44:07 oklopol, indeed 19:44:13 anyway I meant zyx above 19:44:16 not zxy 19:44:17 Deewiant: no 19:44:22 it can be *extendable* 19:44:35 Deewiant, yes but you could always add one :P 19:44:39 in a lazy funge, it could actually be done with the current x instruction 19:44:47 but laziness isn't defined either 19:44:49 oklopol, just store all as bignums 19:45:00 AnMaster: that doesn't help. 19:45:02 oklopol, tell me more what you mean with that? 19:45:12 adding dimensions on demand? 19:45:32 just that i could start moving into any dimension 19:45:45 how would that work 19:45:48 using x 19:45:53 oklopol, indeed, but how would x know how big the vector should be? 19:46:04 so that you' use 0"gnirts", for instance 19:46:06 but you don't 19:46:13 oklopol, ah sounds good 19:46:22 however, a problem 19:46:28 that's how i've done it, made a befunge extension a few years ago 19:46:35 0 is a valid delta in a dimension 19:46:37 before i knew much about befunge 19:46:48 mind you, it's a lot more complicated and extensive than funge-98. 19:46:50 say, you mode 0 in the first dimension and 1 in the second 19:46:55 that would be equal to > 19:47:04 oklopol, got a link? 19:47:04 because even rail is more complicated than that :) 19:47:12 i don't have much online. 19:47:16 aww 19:47:22 i have exactly one language online. 19:47:26 oklopol, what is rail? ruby on rails? 19:47:35 and one graphica example on my page 19:47:38 err no 19:47:44 rail @ esolang 19:47:47 * AnMaster looks 19:48:08 rail has function entry points at a semantical level, funge doesn't seem to 19:48:13 nope 19:48:17 it's all 'goto' 19:48:23 yeah. 19:48:33 not even 'gosub' :-) 19:48:38 heh :) 19:50:03 anyway clearly funge98 needs to be extended 19:50:08 * oerjan suddenly wonders if you could combine gosub and COME FROM 19:50:23 indeed. the turtles need to be cleverer 19:50:28 oerjan, hm what about come to? 19:51:03 no, I got no idea what come to would do? 19:51:08 oerjan: rewrite the come from line to have the line of the return line? 19:51:24 come from is one hot concept 19:51:45 COME TO PAPA 19:51:58 -!- Judofyr has changed nick to JudoBot. 19:52:24 oh, right, and rail isn't mine, in case i wasn't clear about that and the page is neither 19:52:26 ah, the truth is revealed 19:52:30 COME TO: maybe a probability for the program to jump to that point at any time? Like gravity this probability would decrease when you get further from the statement? 19:52:32 what about that? 19:52:33 once again, i cannot open pages 19:52:34 he was not human at all 19:53:03 -!- JudoBot has changed nick to Judofyr. 19:53:17 * AnMaster looks at Judofyr 19:53:43 what's that one language on esolang where every operation only *probably* works? 19:53:46 or are there multiple? 19:53:52 I'm using wi-wi-wi-windows 386! 19:54:01 All my applications are running at once! 19:54:05 i'd like to see that, but once again, i need a straight link so i can dl via a friend 19:54:18 Java2K 19:54:26 ah 19:54:32 remembered it had a j 19:54:52 damn 19:55:01 what? 19:55:01 my downloader has disconnected :P 19:55:07 anyone wanna send me the spec on dcc? 19:55:09 oklopol, why not just browse the web? 19:55:12 i'm feeling eso tonight 19:55:23 well, i cannot open webpages right now 19:55:30 oklopol, dcc? should I dcc them to you? 19:55:31 don't ask me why, i don't know and i don't care :) 19:55:40 AnMaster: if it's not too much trouble. 19:56:03 oklopol, well how can you recieve it then? 19:56:23 dunno why, but dcc works. 19:56:27 just sounds like chicken or egg first problem to me 19:56:41 irc and messenger work fine 19:56:56 oklopol, so you want me to send over DCC, the specs for DCC? 19:57:01 may I ask why 19:57:16 Judofyr: I have data here, I have data there 19:57:16 what about ftp? 19:57:18 i'd like to read 'em 19:57:19 I have data that has never been together 19:57:24 Wi-wi-wi-windows 386! 19:57:29 yes! 19:57:29 oklopol, is it so you know how to implement DCC so you can receive the specs on DCC so you can... 19:57:31 ;P 19:57:50 oklopol, what about gopher? would be easier for me 19:57:55 * AnMaster runs a gopher server 19:58:00 gopher! 19:58:00 AnMaster: umm... java2k specs that is 19:58:02 :) 19:58:05 Deewiant, :D 19:58:08 i don't need dcc specs 19:58:13 what's gopher? 19:58:14 anyone wanna send me the spec on dcc? 19:58:26 * oklopol is even stupider than usual without google 19:58:27 oklopol, that sounded like you wanted the specs on dcc 19:58:33 http://weblog.jamisbuck.org/2008/3/6/when-duplication-is-not-duplication This is so wrong. Two or more, use a for! 19:58:36 yeah, i didn't realize that, sorry 19:58:55 stop linking stuff! :D 19:58:57 AnMaster: do you actually /use/ gopher? 19:59:20 Deewiant: He runs a server so he can tell everyone he runs a gopher server. 19:59:25 Same reason he uses Bash.. 19:59:32 ah, I see 19:59:38 Deewiant, yes to make ppl on irc ask about it 19:59:39 :P 19:59:43 but bash I use more in fact 19:59:58 Deewiant, http://envbot.org <-- modular irc bot in bash, and project is serious 20:00:31 sure, "serious" in the sense that it's not a joke, but /why/? :-P 20:00:33 Deewiant, anyway gopher://inspircd.dyndns.org (yes it is a bit empty) 20:00:36 it's serious so far as AnMaster runs it to make people ask why. 20:00:40 (Do you see a pattern here?) 20:00:45 ehird, no in fact not 20:00:49 Deewiant, because it is fun 20:00:53 * oklopol is starting to think no one will send the spec to him 20:00:54 AnMaster: inspircd is a real program you know 20:00:55 and a challenge 20:01:00 ehird, yes I know 20:01:19 I used to be on the QA team of inspircd, quit though, had too little time for it last yea 20:01:20 year* 20:01:24 I've never found shell scripts fun, but to each his own I guess :-) 20:01:28 got more time now, so I may rejoin 20:01:39 ehird, so yes I know about inspircd :) 20:01:39 * oerjan is reminded of once dilbert lost his net access 20:01:58 oklopol, I'll do when I find out how to do dcc from erc 20:02:06 what client? 20:02:09 please don't flame about that I use ERC 20:02:14 oklopol, I said ERC didn't I? 20:02:15 ah. 20:02:21 irc client for emacs 20:02:22 AnMaster: inspircd is far too unmodern.. 20:02:22 i'm not aware of that 20:02:23 :) 20:02:36 ehird, it is? nah, I would say it is cutting edge 20:02:40 I oughta code IRCd That's Actually Modern, You Know, Like, No Code From 1992, I Mean Sheesh 20:02:41 i'm guessing /dcc 20:02:47 ehird, what one would you call modern then? 20:02:47 itamyklncf1ims 20:02:56 oklopol, "unknown command" 20:03:04 erc can't do dcc 20:03:09 ehird, ah 20:03:10 heh 20:03:15 maybe I could write a module to do it 20:03:20 just I suck at elisp 20:03:22 AnMaster: already done 20:03:23 erc-dcc 20:03:26 but erc is just a toy. 20:03:27 seriously. 20:03:27 ehird, ah right 20:03:33 ehird: btw. cise has turned out to be quite a task 20:03:53 oklopol: I want the spec! 20:03:53 :( 20:04:01 didn't finish the spec, because i had a sudden inspiration to just implement it :D 20:04:03 Deewiant, btw when I do funge08, it will be in LaTeX 20:04:08 oklopol: let me tryyy 20:04:09 :D 20:04:11 Deewiant, using the GUI frontend lyx :) 20:04:12 AnMaster: good luck with that :-) 20:04:26 Deewiant, well lyx is easy, and I love lyx 20:04:29 ehird: nooooo, you'll just ruin my fun :) 20:04:35 pure latex would be hard 20:04:50 Deewiant, http://www.lyx.org/ 20:04:54 ummm 20:04:56 latex isn't hard 20:05:01 But I think TeX is the nicest. 20:05:04 Pure, unadulterated TeX. 20:05:18 ehird, ok right, don't say my interest for bash is insane then :P 20:05:29 TeX is simple. 20:05:30 And nice. 20:05:33 oklopol: naww 20:05:35 I suck at parsers 20:05:38 let me try horribly 20:05:59 ehird, so do I, so I prefer languages where each char is an instruction 20:06:05 like brainfuck or funge 20:06:07 ehird: this is no ordinary parsing ;) 20:06:30 oklopol: lemme try :D 20:06:36 AnMaster: I certainly don't prefer those. 20:06:38 you have to constantly type check as you parse, and choose the first parse tree without type mismatches 20:06:42 They're unimaginative, for the most part. 20:06:46 oklopol: wow, that sounds awesome 20:06:48 ehird, for parsing them that is 20:06:51 let me try, i'll make it terrible 20:07:00 not for writing parsers in 20:07:01 :P 20:07:06 ehird: it is very awesome, indeed :) 20:07:27 oklopol, fun! 20:08:02 it's basically prefix, but type checked and with currying 20:08:03 can you in java2k actually write a program that does the same thing every time it is run? 20:08:26 AnMaster: yes, iirc 20:08:32 AnMaster: i think you can make a metaprogram that gets you any desired *probability* of it working. 20:08:42 oklopol, 100%? 20:08:43 the exact answer would be no, though, iirc. 20:08:54 AnMaster: no 20:08:57 i mean 20:08:59 limit of 100 20:09:06 oklopol, is it turing complete then? 20:09:21 http://www.p-nand-q.com/humor/programming_languages/java2k/13.txt 20:09:23 hello world2k 20:09:25 i guess technically no, but do realize ehird recalled differently. 20:09:31 http://www.p-nand-q.com/humor/programming_languages/java2k/26.txt 20:09:32 ah 20:09:33 this prints out F 20:09:45 is it long? paste it to me if not :< 20:09:52 oklopol, it certainly is 20:09:56 * oklopol is retarded 20:09:58 I could pastebin it though 20:10:02 ... 20:10:04 ;P 20:10:08 :D 20:10:14 'Java2K uses a 11-based number system, which is a very good approximation of the 10-based decimal system for many purposes, including counting up to and including 9.' 20:10:14 :D 20:10:14 oklopol, tried restarting your router? 20:10:32 ehird: i lolled too :D 20:10:33 heh indeed 20:10:41 AnMaster: no. i don't want to disconnect irc... 20:10:44 :< 20:10:45 -!- ehird has set topic: Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/. 20:10:49 lulz, not yet :D 20:10:55 ehird, I'm thinking of not doing safety in PSOX 1.0 and just having the filesystem domain manipulate indivitual files 20:10:58 oklopol: get a decent client, sheesh ;) 20:11:02 Sgeo: lulz 20:11:05 That is, there will be an rm, but no rm -r 20:11:16 ehird: a decent client will not disconnect if i restart my router? :o 20:11:19 pikhq: Sgeo, PSOX, tank, skateboard, tanks are filled with water. 20:11:25 oklopol: no 20:11:28 but it will remember everything 20:11:29 oklopol, depends 20:11:34 so you'll be out for about 3 mins 20:11:34 max 20:11:37 ehird: i have konversation 20:11:45 can it be made remember? 20:11:47 :) 20:11:56 oklopol: yes 20:11:57 oklopol, with static ip it *may* be possible for client and server not to note that you disconnected 20:11:58 go into networks 20:12:00 i'm assuming you know everything about it becauseeeee you were using it iirc 20:12:00 edit Freenode 20:12:05 assuming you reconnects fast enough 20:12:08 add to channel list 20:12:19 voila, channels auto-joined on startup/connect 20:12:48 oklopol, you may also want your client to auto identify to services on connect 20:13:06 -!- jix has joined. 20:13:11 yes 20:13:15 add to auto commands: 20:13:18 /msg nickserv identify FOO 20:13:20 and voila 20:13:24 tbh i can't find "networks". 20:13:26 you can also tick 'connct at startup' 20:13:28 oklopol: its in the first menu 20:13:30 on the menu bar 20:14:48 Heh. 20:14:57 define "in the first menu", it's not in any of the basic menus or "settings" :) 20:15:24 *because 20:15:58 * Sgeo wonders if YouOS is Still Alive 20:16:29 ehird: found it 20:16:33 thanks 20:16:57 it was "server list", so naturally my robot brain saw no relation to "networks" 20:17:35 ah 20:17:36 :) 20:17:51 Sgeo: Hmm. 20:17:56 Another "Web OS" 20:18:02 How interesting, exciting, and useful. 20:18:16 I made some apps for i 20:18:17 it 20:18:28 hmm... i guess it's not that bad that i'm actually searching through the whole tokenization space + parse tree space... 20:18:38 oklopol: plz spec 20:18:53 O(k^n) parsing, where k depends on similarity of tokens 20:19:25 Although I agree taht it's mostly pointless 20:19:37 http://squatt.er/ would be a great name to be domainsquatted 20:19:46 oklopol: 'similarity'? 20:20:16 what country is er? 20:21:13 ehird: hard to define 20:21:23 hm cannot find it 20:21:25 the point is, you get an exponential amount of tokenizations 20:21:40 and for each tokenization, and exponential amount of parse trees 20:21:55 so, perhaps "second order" exponential number of possibilities 20:22:11 the expression separator is finally starting to make sense 20:22:13 :) 20:23:30 ehird: i conclude that .er would be a great name to be domainsquatted 20:24:33 oh, Eritrea 20:25:33 Personally I can't wait for the Somali government to ... come back into existence. 20:25:43 And hopefully sell domains to anyone. 20:25:46 http://en.wikipedia.org/wiki/.er 20:26:08 rochest.er (lame delegation - delegated servers have no such zone) 20:26:09 heh 20:26:17 .er is great for obscenities 20:26:19 http://fuck.er/ 20:29:58 ehird: What happened to your IRC-bot/parser? 20:30:38 -!- Corun has quit (Read error: 110 (Connection timed out)). 20:31:26 ehird: Direct-threaded code is Fail for portability. You cannot portably compile DTC at run-time: each Forth word will be a list of function calls. But with my indirect-threaded code, each Forth word is a list of word addresses; more portably compilable. 20:33:02 * oerjan gets the deja-vu feeling 20:34:18 yeah, but ehird weasn't there the first time 20:45:57 back 20:46:03 Judofyr: What about it? 20:46:15 SimonRC: Blah blah blah blah blah THIS IS FORTH DAMNIT 20:46:17 is it usable? 20:46:28 Judofyr: No. Not yet. :( 20:53:23 how do you compile at run-time? 20:53:39 I assume you have to comma together a load of opcodes? 20:54:06 Sgeo: that isn't the last episode of fine structure. 20:54:20 SimonRC, I realized 20:54:24 ok 20:54:28 I thought that the next one would be the last, but I was wrong 20:54:33 Are you an FS fan? 20:54:38 a bit, yes 20:54:48 I liked the ed stories too 20:55:38 SimonRC: its very simple to compile at runtime 20:55:51 see: jonesforth :) 20:55:55 Any hypotheses on the unlisted story? 20:55:56 and ooh, Sam Hughes++ 20:56:14 ehird: no, joensforth uses indirect-threaded code, like I do 20:56:15 I tried looking for fiction edited in Feb. 2008, but didn't find anything 20:56:20 you use direct-threaded code 20:56:26 SimonRC: oh, yes 20:56:28 well, mine is simple 20:56:37 you see a word name 20:56:45 look it up in the dictionary, find its funcptr 20:56:49 append that to the word 20:56:56 but to compile, you must comma together a load of function calls 20:57:02 yes 20:57:03 and? 20:57:03 ehird: no 20:57:14 a string of function pointers is not executable directly 20:57:23 ehird, compiling forth? quite possible iirc 20:57:31 AnMaster: gosh, really. 20:57:35 SimonRC: yes it is 20:57:37 ip++() 20:57:37 ip++() 20:57:37 ip++() 20:57:38 ip++() 20:57:38 ip++() 20:57:38 ip++() 20:57:46 ip--() 20:57:51 ip%2() 20:57:58 err, what is the problem? 20:58:06 ok... 20:58:08 * AnMaster reads up but can't find where discussion start 20:58:14 starts* 20:58:20 but the ip points to a pointer to a function... 20:58:32 SimonRC: funcptr() works in c. 20:58:35 yes 20:58:36 it's (*funcptr)() 20:58:47 SimonRC: anyway 20:58:55 if we have '+ +' 20:58:59 ehird, prototypes prefered ;P *runs* 20:59:01 we search the dictionary for '+' 20:59:10 and a function can't be built by caoncatenating together a load of pointers 20:59:16 then, the next memory address is its length 20:59:23 then, is all the functions 20:59:25 we just take that address 20:59:28 and append it to our list. 20:59:36 ok 20:59:38 and the last thing in every function is the postlude 20:59:41 which pops the stack and goes back 20:59:46 SimonRC, ehird: may I ask what you are doing or trying to do? 20:59:48 so how do you compile ina reference to a function written in forth? 20:59:53 SimonRC: ... 20:59:54 i just told you 20:59:55 AnMaster: write a forth 21:00:05 um 21:00:08 no 21:00:09 SimonRC, there are plenty of interpreters and compilers for forth iirc? 21:00:10 SimonRC: my forth words are valid functions 21:00:21 ehird: yes 21:00:21 AnMaster: There is also a working Befunge-98 implementation. Stop writing yours. 21:00:32 Actually, stop writing any software. It's probably been done before. 21:00:34 ehird: I'll have to see this to get what you are talking about 21:00:35 ehird, ok, point taken 21:00:38 ;P 21:00:54 but forth isn't really esoteric is it? 21:01:39 no 21:01:39 it isn't 21:01:39 * AnMaster makes a difference between "writing yet another compiler/interpreter for an esoteric language" and for "normal languages" 21:02:24 for a "mainstream/normal" language, I would try to improve existing tools, or have a extremely good reason to create a new one 21:02:30 AnMaster: IT'S FUN. 21:02:31 stfu. 21:02:42 ehird, so when do you plan to write your own C compiler? 21:02:45 *runs* 21:02:48 I have. 21:02:49 :| 21:02:54 ehird, oh!? 21:02:55 link? 21:02:56 Forths are a lot easier, though. 21:03:07 AnMaster: Bitrotten. And none of them really worked fully, as a whole they were probably pretty good. 21:03:17 ah 21:03:19 I see 21:03:35 considering GCC is still not fully C99... 21:04:00 uhm 21:04:02 k&r c ofc 21:04:08 ok :/ 21:04:15 C is simple, honestly 21:04:33 * AnMaster thinks C should be classed as esoteric when it lacks prototypes ;P 21:05:01 SimonRC: woot, i have a simple dictionary 21:05:01 char d[] = { 3, 104, 108, 116, 0, F_hlt, 0 }; 21:05:05 err, wait 21:05:08 a funcptr won't fit into a char. 21:05:09 oops. 21:05:19 hm, that's interesting.. i don't wanna use whole ints for each name char 21:05:25 ehird, indeed, you need something that is intptr_t wide 21:05:36 AnMaster: no, just int. portability is not important for forths :) 21:05:36 ehird, that could be 64-bit even 21:05:40 AnMaster: anywayu 21:05:41 ... 21:05:44 i can't just use an integer type 21:05:45 * AnMaster runs x86_64 21:05:54 AnMaster: who gives a damn, this is a small toy interp 21:06:03 I run x86_64 too, damnit. 21:06:09 but I don't want to use an int 21:06:12 ehird, so you plan to compile it in -m32? 21:06:16 maybe some kind of union of char[4] and int? 21:06:21 SimonRC: maybe 21:06:25 SimonRC, 8 char! 21:06:43 can you initialize unions in literals? 21:06:52 I have a set of asserts that all the components of my union are the size of the union 21:06:54 ehird, in C99 you can afaikk 21:07:01 {.foo = bar} 21:07:06 no, no c99 kthx 21:07:08 no idea about older C 21:07:38 anyway please don't assume pointers are 32-bits. Such C code is horrible 21:07:38 hmm 21:07:49 AnMaster: this is meant to look like the J prototype interp ffs 21:07:58 why are you so uptight about people coding fun toy interpreters?! 21:08:08 anyway, I wonder if I can cast directly to a union 21:08:09 if so... 21:08:09 D d[] = { 3, "hlt\0\0\0\0\0", 0, F_hlt, 0 }; 21:08:17 a dictionary record is this: 21:08:32 ehird, I'm not, as long as it compiles with -ansi -pedantic -Wall -Wextra -Werror 21:08:33 ;P 21:08:41 name length, name, number of instructions, funcptr 21:08:42 or -std=c99 instead of -ansi if you want 21:08:44 0 terminates 21:08:46 ehird: that would put a string pointer in there 21:09:03 SimonRC: hmm, as an int? yes, probably 21:09:06 hmm 21:09:07 damnit. 21:09:16 what is the def of F_hlt? 21:09:19 ehird, SimonRC indeed about the string pointer: you can put an actual string in a struct too, in C99 21:09:20 *runs* 21:09:22 SimonRC: something like this: 21:09:28 void F_hlt() {exit(0);} 21:09:29 C99 got variable size structures 21:09:35 AnMaster: yup 21:09:57 ehird: ok, what is the structure notation for this: 21:10:00 SimonRC: for forth words, the funcptr will be F_magic 21:10:08 SimonRC: which will step through the funcptrs after it, calling it 21:10:14 thus, a program really is just a list of functions. 21:10:21 hmm 21:10:22 ah, I think I see 21:10:25 it will be F_magic, hackified 21:10:29 to hardcode the addr 21:10:32 but how does F_magic know which word to step through? 21:10:38 SimonRC: just like that. 21:10:39 ouch 21:10:41 the perverse way of doing closures 21:10:42 :-) 21:10:57 ehird: right, that was the admission I was looking for 21:11:00 ehird, and this will only work on little endian 32-bit I assume? :P 21:11:04 or you could hack with ip? 21:11:14 SimonRC: actually, wait, that's right!! 21:11:18 hmm 21:11:19 but then.. 21:11:24 words aren't a list of funcptrs any more 21:11:30 :( 21:11:31 AnMaster: stfu 21:12:09 (In fact I had mentally discounted your perverse closures) 21:12:22 haha 21:12:28 ooh, wait... 21:12:32 hmm, no.. 21:12:40 SimonRC: since ip will be F_magic.. there's no way to utilize ip 21:12:41 unless.. 21:12:43 ip2! 21:13:06 ehird, you know, software that isn't portable bitrots much faster 21:13:33 AnMaster: I don't. give. a. shit. 21:13:41 I will write this once, use it for 10 minutes, laugh, admire it. 21:13:47 Then ignore it 21:13:53 btw, someone made a forth interpreter in bash 21:13:54 I repeat -- 21:14:02 THIS IS NOT INTENDED TO BE A SERIOUS INTERPRETER FOR REAL USE!!! 21:14:05 ehird, ok what is so special about your forth interpreter? 21:14:13 NOTHING, except I wrote it! 21:14:16 ah 21:14:17 Goddamnit, shut. up! 21:14:28 well, mine is written in a really dense style 21:14:33 and to give me some C practice 21:14:34 SimonRC: ditto 21:14:57 most of the source is macro calls, and much fo the rest is macro defs 21:15:51 SimonRC: I concede you're right with the funcptr thing. 21:15:52 SimonRC, you know, C99 got the inline keyword :P 21:15:53 How do you resolve it? 21:16:04 AnMaster: are you being intentionally dense? :| 21:16:10 ehird, aye 21:16:14 AnMaster: but how do you write this with it? : 21:16:25 SimonRC, I agree macros are useful sometimes 21:16:28 #define V(x,b) void x(){b} 21:16:31 Or this: 21:16:33 but it is easy to overdo it 21:16:39 #define OD(c) C*p=dic;while(p){{c}p=p[1].p;} // loop p over dictionary 21:16:51 SimonRC, why do you want a macro like #define V(x,b) void x(){b} 21:16:52 or this: #define W(n,pr,N,c) V(f_##n,c;ip++;) C n[]={{.s=N},{.p=pr},{.f=f_##n}}; // native word 21:16:59 AnMaster: BECAUSE IT'S A JOKE 21:17:02 IT'S LIKE THAT FOR FUN 21:17:04 IT'S AMUSING 21:17:07 GOD. FDSFKSDF DAMNIT 21:17:08 AnMaster: 'cause I have a lot og functions with that signature 21:17:19 SimonRC, those macros would require some variables to be in that function, or global variables 21:17:26 hm 21:17:32 AnMaster: Would they?? Wow, I thought they involved puppies. 21:17:36 (I think AnMaster is being not very serious and not showing it clearly, hence ehird is taking him to seriously) 21:17:41 SimonRC: so how do you handle the thingy 21:17:41 and oh 21:17:43 okay then 21:17:43 :p 21:17:54 SimonRC, indeed you got it 21:18:00 * SimonRC bangs ehird and AnMaster's heads together 21:18:03 ow 21:18:04 ouch! 21:18:22 the traditional Clarkstone approach for bickering boys 21:18:24 :-) 21:18:34 but seriously, I'm much happier with clean code. you know about doxygen? there is such I thing for bash, called bashdoc 21:18:35 I use it 21:18:45 for any script larger than about 200 lines 21:18:51 does that tell you something ;P 21:19:00 that might be where you're goping wrong 21:19:06 you're writing 200 lines of bash 21:19:09 *grin* 21:19:11 SimonRC, haha 21:19:31 SimonRC, I got programs in bash with over 1000 lines of code (comments excluded) 21:19:38 I think envbot is such 21:20:50 SimonRC: pleez tel muy? :p 21:20:57 oh, i know what i could do! 21:21:16 oh, I forgot your question 21:21:18 entry = name length, name, number of instructions, funcptr, instructions -- as usual 21:21:19 BUT 21:21:26 * AnMaster suggests ehird write a GCC frontend for forth 21:21:28 -!- ais523 has joined. 21:21:29 instruction = address of 'name length', ... 21:21:29 * AnMaster runs 21:21:35 then, NEXT is: 21:21:57 ehird: that is exactly what mine does, I think... 21:22:06 and JonesForth 21:22:15 it's indirect-threaded code 21:22:20 the topic lies! 21:22:27 ip += (*ip)+2; ip(ip+1); 21:22:29 ais523, it does 21:22:30 ais523: yes 21:22:30 :) 21:22:45 ah, waitamo, maybe not 21:22:55 #define NEXT ip+=(*ip)+2,ip(ip+1) 21:22:56 :D 21:23:01 SimonRC: and that isn't what yours does 21:23:07 yours doesn't take the instructions as arguments 21:23:35 well, I pass round w, tha address of the most-recently-started word, as a global variable 21:23:50 the dataflow is actually just that of an argument 21:24:14 SimonRC: I still don't get how you resolve this 21:24:39 ok 21:25:13 -!- ais523 has changed nick to ais523|slightly_. 21:25:13 I have a structure I will call a word 21:25:23 -!- ais523|slightly_ has changed nick to ais523|sl. 21:25:29 it is 3+n cells 21:25:49 -!- ais523|sl has changed nick to ais523|sl_busy. 21:26:04 name pointer, previous word pointer, code pointer, data* 21:26:26 my forth code is a list of pointers to words 21:26:36 oh no, he went. we are not observed any more. does that mean we cease to exist? 21:26:43 luckily, we have logs, so you're still alright 21:27:10 to execute forth code: 21:27:26 the ip points to the current position in the list 21:27:47 you deref the ip into the w register 21:28:05 ah that's good 21:28:28 then you call the function pointed to by the code field of the word pointed to by the w register 21:29:11 that function will often look at the w register to see which word is being executed 21:29:32 for forth words, the code is the co function 21:30:06 -!- jix has quit ("CommandQ"). 21:30:21 that pushes the ip on the return stack, sets the ip to point to the data of the word (fields 3+), which is also a list of word addresses 21:30:36 the last one of those will be the address of ret 21:30:47 the code of ret is a function to pop the ip off the stack 21:31:05 EOF 21:37:55 yay 21:38:01 cise mergesort parses correctly 21:38:26 not that that's all that hard to do 21:38:34 just 4 different parse trees 21:38:49 for the second expression, two for the first 21:39:06 mergesort, once again, '/,}#< 21:39:40 it manages to parse that as (' (/ *)) ((}# <) *) 21:39:47 * is the "stream parameter" 21:40:35 the stream is something that holds the current result of computations, the function params are on it, then passed on to each expression one by one, always putting the result back on the stream 21:40:53 ' / }# < are the operations 21:41:07 as you see, nothing tells it what to curry and what way 21:41:47 it simply knows }# wants a function, so it gives it "<", and appliesthe curried (}# <) to the stream parameter 21:42:01 where, on the other hand, "'" wants a list of lists (it) 21:42:07 (it's the recursion function) 21:42:30 so it will use / to split the stream parameter, and use the result of "/" as its lists 21:42:37 "/" is the function to split lists 21:43:01 i'm fairly sure i score one in my quest to invent something original here 21:43:10 hmm 21:43:12 which would be a total of 2 points! 21:43:14 mwahaha 21:43:42 have you read about ursala? 21:43:49 no :| 21:43:57 is it... that? :) 21:44:09 http://www.basis.uklinux.net/ursala/ 21:44:19 it is an insanely dense programming language 21:44:25 something like this is prolly done with perl too. i just make it a bit more explicit 21:44:34 i can't open that :) 21:44:44 it has a sublanguage called pointer expressions where each command is 1 char, and you can do a fair amount in it 21:44:53 oklopol: huh? 21:45:03 umm, and it does type checking for tokenization and parsing? 21:45:09 no, 21:45:13 SimonRC: i cannot open webpages. 21:45:16 I was thinking m,ost ly the insane density 21:45:20 oklopol: why? 21:45:31 oh, no, that was not my "new" idea... 21:45:41 there's a lot of languages for that already 21:46:06 the new thing is just the way i'm making it terse 21:46:19 ok 21:46:29 i still have no idea whether it works for bigger programs, but i think it's pretty cool it could even parse that :) 21:46:43 doesn't that mean that changing the type of one function can break oterh functions by changing their parse treee? 21:46:56 sure. 21:47:00 ouch 21:47:11 this is incredibly inefficient to parse 21:47:22 which is exactly why it might be fruitful for terseness 21:47:24 doesn't matter that much on modern machines 21:47:33 can humans parse it? 21:48:01 they can, but they won't necessarily find the right parse tree... 21:48:07 a computer will take the first possible 21:48:12 a human will take what suits them. 21:48:17 oh dear 21:48:22 well, it is esoteric 21:48:30 i'm going to add commands for actually choosing the parse tree ;) 21:48:38 how about ( and ) 21:48:46 like, "choose fifth parse tree" 21:48:54 ouch 21:49:05 those are parsed as you'd except 21:49:07 expect 21:49:19 also, "," and ";" are used to separate expressions 21:49:23 give me more detail about how that mergesort works 21:49:30 by separating them, you can escape the hell of exponential parsing. 21:49:33 okay 21:50:08 (' (/ arg)) split arg in two, then recurse to both branches 21:50:18 then, the result is given to the second part 21:50:22 }#< 21:50:34 ((}# <) arg) 21:50:36 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 21:51:03 }# is fairly mergesort-spesific, although it's very generic, it takes a list of lists, and a function to choose an element from a list 21:51:17 it then gives the function the head of each list 21:51:32 and puts on a "return list" the head that was returned 21:51:37 now, < has two definitions 21:51:47 it can either take a list, and return minumum 21:51:50 *minimum 21:52:06 or it can take two values and return a boolean indicating which was smaller 21:52:18 now, the first one is type inferred, of course 21:52:47 ok 21:52:49 so }#< gets two sorted lists (they were recursed into), and always picks the smaller of their heads 21:52:55 until they're empty 21:53:09 also, you don't need to check the special cases [] and [1-element] 21:53:40 because recursing with param N just returns N if the function has already been called with it iiiin the same recursion stack 21:53:42 *in 21:53:51 that was some confusing terminology 21:53:56 in the same recursion anyway 21:54:01 what is the recursion pattern of ' ? 21:54:10 pattern? 21:54:15 what do you mean? 21:54:21 what exactly does ' do? 21:54:25 ah 21:54:37 it takes a list of values, and maps current function to it 21:54:48 what is "current function"? 21:54:49 current being the one it is called from 21:54:54 in this case the whole program 21:54:58 ok 21:55:01 well, the mergesort 21:55:17 what does comma do? 21:55:26 separates two expressions 21:55:33 when a function is called 21:55:39 the params are put on the "stream" 21:55:47 the stream is then run through each expression 21:56:07 and after running them all, its contents are the return value of the function 21:56:25 you can use it to escape the exponential parsing hell, i imagine 21:56:29 "run through"? 21:56:39 and in what order? 21:56:48 lessay you have expressions e1 e2 e3 ... en 21:56:53 separated by commas 21:57:25 you'd basically do (en ... (e3 (e2 (e1 args)))) 21:57:32 and that would be the result of the function 21:57:40 the expressions are functions 21:57:57 running through means applying the function to the contents of the stream, and putting the result on the stream 21:57:59 why is the stream called a stream? 21:58:07 hmm 21:58:08 because i decided it is :) 21:58:18 information kinda flows through the expressions 21:58:22 that's the idea 21:58:33 you can have other kinds of expressions too, you see 21:58:39 pattern matching, for instance. 21:58:45 you can just do that on the fly 21:58:48 wait 21:59:01 if I have a stream continging [1,2,3] and I pass it through icrement, what do I get out? 21:59:05 this is done by prepending the expression with ; instead of a comma 21:59:10 depends 21:59:13 what's increment? 21:59:21 \x -> x + 1 21:59:32 that would not have a parse tree. 21:59:44 indeed, no 21:59:52 well 22:00:01 I mean, increment is the function that returns one more than its argument 22:00:30 lists may for instance map functions like that through them if nothing else works 22:00:41 "if nothing else works"?! 22:00:52 on paper, at least, i have the possibility of putting a value for operations' types 22:01:06 so that there are less wanted types of operations 22:01:18 that are taken if a parse tree could not otherwise have been formed. 22:01:33 ok 22:01:44 this is nuts 22:02:01 i probably will not implement that any time soon, because even doing what i have now efficiently is hell' 22:02:21 and "less wanted operations" are by definition only used after the whole parse tree space has been searched 22:02:28 and... that's an exponential job. 22:02:47 how does / split the list? 22:02:48 i'll take those nuts as a compliment, i'm fairly satisfied with cise myself <3 22:02:50 ah 22:02:54 it has two definitions 22:03:04 int -> list -> list of lists 22:03:25 which splits into (whatever the int was) lists 22:03:36 *splits the given list into 22:03:45 equally distributing the elements 22:03:49 then 22:03:52 cool 22:03:56 there's just / :: list -> list of lists 22:03:59 which splits in hald 22:04:01 *half 22:04:07 night 22:04:26 i'll try actually adding / :: int -> list -> list of lists now, lessee what happens 22:04:27 AnMaster: 'night 22:04:45 oklopol: is the implementation available anywhere? 22:04:49 hmph, you're both green, stupid konversation 22:05:05 umm, i just scribbled it up, so no, not yet at least 22:05:10 also, it does not yet evaluate it. 22:05:15 although that isn't too hard 22:05:37 the parsing is the gist of cise really 22:06:39 how does ' know when to stop? 22:07:23 as i said, there's a runtime check that recursion is not done twice with the same params 22:07:35 if it is, params are just returned. 22:07:38 ok 22:07:47 waitamo... 22:07:54 the input the mergesort isn't a list of lists 22:08:07 my original way was to return [] when given [], but that was less parametrizable 22:08:12 how does }#> get given one? 22:08:16 ' takes a *list* of values 22:08:35 and returns a list of the values that went through recursion 22:08:36 now 22:08:45 mergesort gets (list int) 22:08:55 / makes it (list (list int)) 22:09:13 ' makes it (list (list int)), just recurses through them 22:09:22 then 22:09:37 (}# <) gets the (list (list int)) ' returned 22:09:46 hmm... 22:10:01 wonder what happens if i do }#<'/... :D 22:10:12 that's semantically equivalent, you see 22:10:30 do we end up merging pairs of lists of lots at a time? 22:10:45 we may end up merging lists of lists 22:11:09 it's not something you often need, prolly, true, but there are a *lot* of list operations in cise. 22:11:17 it's basically a list language 22:11:45 St sorts a list, for instance, currently 22:12:14 there's also a separate "permutation type", you can kinda "almost" sort a list with it: 22:12:19 you call Sp on a list 22:12:25 and it returns a permutation 22:12:39 which is how the list should be permutated to be sorted 22:12:46 you can just do Sp list list to get it sorted 22:13:05 hmm 22:13:16 just today i had a situation where i needed that... 22:13:22 that's cool 22:13:43 it allows you to keep keys and values in seperate lists, and sort both by sorting one 22:14:02 yeah, for instance. 22:14:14 the super-dooper operators sound rather J/K-ish 22:14:18 but there was something that was pretty hard to do otherwise, involving a "group" operation as well 22:14:27 yeah. 22:14:57 they do, i'm not saying i'm the first one to make a terse *array-processing language* either, just the parsing is completely "new" :P 22:15:12 also, i'm calling mine list-processing, but same thing i guess. 22:15:28 well, lists imply trees more than arrays, imo 22:15:36 also the magical figuring out what variation of an operator to apply is J/K-like 22:15:40 kinda 22:15:42 and the overloading 22:15:49 and cise should, at least in the future, also have a nice support for tttttrees 22:15:55 hmm 22:16:04 yes, sure, but i doubt it's done to this extent 22:16:05 ho do they differ from ordinary trees? 22:16:13 oklopol: indeed 22:16:16 most likely the parse tree is clear without context. 22:16:44 there's compile-time *overloading* done based on types, but on the existing parse tree. 22:16:54 yup 22:17:12 at least i think so, because no one in their right mind would do something like what i've done :D 22:17:32 what do you means how do they differ from ordinary trees? 22:17:38 could you maintain a serious program written in it 22:17:51 surely any tiny change would introduce a fountain of problems 22:17:55 ? 22:18:17 well, if you keep expressions short, it may just work. 22:18:47 parsing nested functions has to be done at runtime, though, it is done when the function is first encountered, based on what functions existed at that time 22:18:57 after that, the functions is uses will not change 22:19:09 this means you can, if you want, introduce new operators to the language 22:19:15 mmmm, jit 22:19:25 "jit"? 22:19:33 oops, JIT 22:19:39 just-in-time compiling 22:19:43 ah. 22:19:44 right 22:19:46 ofc 22:20:13 that is necessary, because when you're parsing the beginning of the program, you cannot have parsed the rest to see what operators will emerge 22:20:21 because you'd have to have parsed the beginning. 22:20:33 nothing good would arise from this sick fixed-point equation, methinks. 22:20:56 couldn't you just enforce top-down semaintics? 22:21:07 everything has to be deduceable from the program up to that point? 22:21:19 well, that's what i have, basically. 22:21:28 hmm 22:21:30 ah 22:21:42 you mean 22:21:57 i could use the functions that have been defined in the source up to the point of parsing 22:21:57 ? 22:22:06 yes-ish 22:22:11 that's not good, because you may want to have circular dependency 22:22:20 that is rare 22:22:27 i guess. 22:22:30 introduce a specific operator for it 22:22:36 oklopol: just do it like C and allow a way to predeclare a function 22:22:47 yup 22:22:49 i already have an operator for setting a variable. 22:22:56 hmm 22:23:00 or Forth has deferred words 22:23:14 which are also general-purpose function hooks, ISTR 22:23:20 predeclaration doesn't really fit in 22:23:26 oh 22:23:30 or then does 22:23:35 i mean 22:23:39 or how about a y-combinator kind of thing? 22:23:46 you just have to have introduced the *token*, to use it in parsing 22:23:48 a specific mechnism for mutual reference 22:24:18 so you can do 0;foo to set foo, and then function-involving-foo;bar and then function-involving-bar;foo 22:24:22 ; sets a variable 22:24:41 that's actually what C does, more or less 22:24:48 yeah 22:24:50 Oh dear, NFS is playing up again 22:25:18 i guess you could actually compile cise if it's done like that 22:25:23 I thought ; was for function sequencinging kind of things? 22:25:43 which would be quite awesome actually, weeks of compiling just to get a few chars of program to compile :P 22:25:52 (assuming using my unoptimized strict parser) 22:26:11 SimonRC: "," is the sequencer 22:26:20 ";" is a pattern matcher 22:26:43 ok 22:26:43 so you can put parts of the stream or all of it in variables midway in the function 22:26:56 wibble 22:27:12 BTW, does the left or the right part of a function go "first"? 22:27:31 xD 22:27:44 okay, this was a classic failure from my part... 22:27:52 i did ghc cise.hs -o cise 22:28:03 guess what my cise SPEC was called ;) 22:28:09 ouch 22:28:42 "file has changed do you want to reload from disk?" I HAVE NO IDEA WHY THAT'S HAPPENED, BUT SHUUURE :DDD 22:28:51 i'm a fucking idiot 22:28:59 lost much? 22:29:00 oklopol, is there a cise~ ? 22:29:00 hmm 22:29:12 or whatever? 22:29:17 can you "undo" the re-load~? 22:29:20 SimonRC: it's basically prefix + currying 22:29:25 look for a backup 22:29:25 Sgeo: i may just love you 22:29:28 let's see 22:29:38 or see if you pasted or copied it anywhere 22:29:48 or something in a pastebin? 22:29:50 yeah! :) 22:30:04 i probably wouldn't even have looked xD 22:30:11 but it was there 22:30:13 or be like Paul Graham and say "screw the docs the program is the spec" 22:30:26 :P 22:30:35 in future, keep you manual is a different dir 22:30:43 oklopol, so I was right? 22:30:43 guess i should 22:30:45 or maybe call it "cise.txt" 22:30:52 Sgeo: yes, i do love you 22:32:28 I can never remember the log for this channel 22:33:03 * ais523|sl_busy generally goes to it via the community portal on Esolang 22:33:25 it's http://tunes.org/~nef/logs/esoteric/ according to my browser history 22:33:36 -!- RedDak has quit (Remote closed the connection). 22:34:06 * oerjan just writes t u in the address bar and the browser shows the rest 22:34:35 since I accidentally deleted the Underlambda specs (by typing rm * by mistake), I've set emacs to back up everything in a different directory 22:34:52 and it took out my old reference interp at the same time 22:35:04 but I'm working on a new version now (when I'm not doing University work) 22:36:11 ais523|sl_busy: doesn't your uni keep backups? 22:36:22 I was doing it on my laptop 22:36:32 not on the University servers 22:36:50 and although I keep backups, I didn't take them often enough to save the spec 22:37:00 (which I'd only been working on for about 2 days then) 22:37:34 wow 22:37:43 [['}#', '<'], ["'", ['/', '*']]] from }#<'/ 22:37:47 oh right 22:37:51 i didn't check if that was right 22:37:53 lol :P 22:37:55 let's check 22:38:02 it is 22:38:10 one of my friends stores their home directory, minus large media files, in Subversion, so they can access it from anywhere, and so it's automatically backed up with a simple svn ci 22:38:26 that pretty awesome, there is, after all, about 6 parse trees from those 4 tokens 22:38:38 (okay, it's not) 22:38:45 (but it's promising!) 22:39:21 5 character mergesort, and not even *complete* cheat 22:39:35 is cise concatenative 22:39:42 I can't quite tell from your description 22:39:47 not fully, i don't think so 22:39:49 are they unicode characters 22:39:51 well 22:39:54 cise is "gluing" 22:40:05 it stick stuff together in whatever way works 22:40:11 :P 22:40:15 composition, argument-passing, curring, etc 22:40:23 *currying 22:40:24 yeah, you can pretty much just slash your characters there and it works! 22:40:33 lament: i don't think so 22:40:52 except when the computer finds a nex and exciting interpreetation of your ambiguous parse tree... 22:40:56 *new 22:41:02 curly bracket close, that number character, less-than, single quote, slash 22:41:07 And I thought C++ was bad 22:41:14 heh 22:41:19 (In C++, parsing depends on the kinds of various identifiers) 22:41:34 (and in cise, it depends on what parses don't cause type errors?) 22:41:45 (foo(bar); could meant many different things) 22:41:46 ais523|sl_busy: (exactly) 22:42:07 what do you do when there are two non-erroneous ways to parse the program? 22:42:09 what is your typesystem? 22:42:14 SimonRC: but at least in c++, foo is always s single identifier ;) 22:42:21 ais523|sl_busy: it takes the first one. 22:42:29 SimonRC: i currently have ints, booleans and lists. 22:42:39 implemented simply as python tuples :) 22:43:00 so you can just add types by introducing another type name :) 22:43:20 what order do parses come in? i.e. which is "first"? 22:43:40 that i shall define in the spec, currently it's what my implementation has. 22:44:01 it has to be well-defined ofc, because this is all about terseness. 22:44:58 well, for many programs, you can simply use a clear prefix notation. 22:45:07 brackets? 22:45:09 so it should try to parse your thing as such 22:45:18 there are not brackets. 22:45:31 they would help human readers 22:45:33 well, () are used to define a function 22:45:37 ok 22:45:55 i guess i might make it possible to use that in a sort of bracket-like fashion 22:45:57 somehow... 22:46:05 or something liek it 22:46:13 how about intercal-style "" 22:46:25 which also parse ambiguously 22:46:27 you can set variables, so you can definately be as clear as you wish. 22:46:31 hehe 22:46:33 but less ambiguously than without 22:46:40 ok 22:47:14 ;I,;mc,[]("[]"),=}!!b->"+"+mC1"-"-mC1">"+C1"<"-C1(;X)Wh=mC0=}X??b i wonder if this parses :P 22:47:22 that's not at all ambiguous, even 22:47:28 ...or then it is, not sure 22:47:43 that should be a fully working binary brainfuck 22:47:45 what should it do? 22:47:49 cool 22:48:00 * ais523|sl_busy is amused by IRC messages crossing from time to time 22:48:01 how the fuck does it work? 22:48:14 ais523|sl_busy: yeah, brain-lag 22:48:19 it uses goto's and whiles, and i'm not sure i even remember how it works :) 22:48:25 *boggle* 22:48:31 but, it's like, 1 line! 22:48:36 goto is, of course, not impossible even in a concatenative language 22:48:41 I wonder if J/K can beat that 22:48:53 first of all, a lot of that is not up to date anymore. 22:49:00 i think. 22:49:24 let's look at something simpler, preferably :) 22:49:35 Al/_:¨ this should check if a number is prime 8| 22:49:48 umlaut is a character in cise? 22:49:50 that isn't in ASCII 22:49:56 true. 22:50:18 it's in my keyboard, so i use it. :) 22:50:28 i prolly change everything to ascii later 22:50:37 because cheating otherwise, ofc 22:50:39 how does the ascii-checker work? 22:50:41 the shortest BF interpreter entered on codegolf.com was 106 bytes long 22:50:44 in Perl 22:51:15 however, that website doesn't let you see what the program was, unless it was you who submitted it 22:51:40 SimonRC: ascii-checker? 22:52:23 oops 22:52:28 I meant prime-checker 22:52:45 hmm, first of all, Al/_¨ should work now, second, this seems to rely on type *conversion* 22:52:45 :) 22:53:14 haskell.org 22:53:31 that does (all (div val [1..val-1])) 22:53:42 wong time no see 22:53:51 and assumes an integer can also be divided by a list to get a list of them resultzorz 22:53:56 oerjan: I don't understand your last two comments 22:54:01 :) 22:54:06 * oklopol does 22:54:15 oklopol: or, in Bill Gates's case, long time no C 22:54:19 the second explains the first one. perfectly. 22:54:20 oerjan is an irc advertiser bot 22:54:43 really? I thought they were a Norwegian mathematician 22:55:05 but it's easy to jump to conclusions over the internet 22:55:08 Ah, I see 22:55:17 ais523|sl_busy: observe oerjan closely, what you just saw was oerjan's *thing* 22:55:37 everyone has a thing! 22:55:42 hmm, no I don't 22:56:05 you only have one thing in my head 22:56:36 because you're not *that* active, not that weird, and you've clearly stated to me a personal detail 22:56:57 wonder if you know what that is 22:57:53 hmm, one a clock 22:58:02 What's my thing? 22:58:11 Sgeo: do you really have to ask? 22:58:30 Sgeo: it most probably starts with P 22:59:12 ais523|sl_busy's thing is also pretty clear, you're branded for life. 22:59:29 well 22:59:29 * oerjan thinks ais523|sl_busy has at least two things 22:59:41 oerjan: what's the other? 22:59:43 I'm pretty sure I have several 23:00:01 he's also the INTERCAL guy in my mind 23:00:04 getting into arguments with ehird over programming style and choice of language is one of the non-obvious ones 23:00:06 Oh, I misunderstood what you meant by "thing", I thought you meant style of talking 23:00:08 ais523|sl_busy: my branding comment meant exactly that while you have done a lot of stuff, you just have that one thing. 23:00:30 repeatedly adding daemons to EgoBot was another, but it isn't here at the moment 23:00:36 yeah, i also know he's an intercal guru, but the global fame overrides that. 23:01:05 as for style of talking, I'm ridiculously addicted to singular they 23:01:10 even though I forget to use it from time to time 23:01:20 true 23:01:30 Didn't we have this conversation a few months back? 23:01:45 I am the neophile. 23:01:52 heh 23:02:03 * oklopol is many philes... 23:02:11 i need to eat something -> 23:02:15 neophile? Addicted to matrix, or something else? Obsessed with new stuff? 23:02:28 addicted to sniffing neon 23:02:45 oerjan: that would have no effect, surely? 23:02:56 I go "ooh stack programming bounce bounce bounce bored ooh array programming bounce bounce bounce bored ooh hight-order functions bounce bounce bounce bored" 23:02:59 etc 23:03:07 *higher-order 23:03:16 you'll have to sniff a _lot_ 23:03:21 ais523|sl_busy, would have an effect if oxygen didn't get to your lungs 23:03:28 hmm 23:03:37 hmm, actually a lot of guys here don't have a thing 23:03:38 write a few Underload programs, then you'll get the hang of concatenative programming 23:03:45 because i've never seen them talk 23:04:02 well, if you have any elemental flourine in you it will react with xenon... 23:04:03 or look at my draft Underlambda spec and write some pure functional concatenative programs (in the Unlambda sense of pure functional, not the Haskell sense) 23:04:08 but not neon afaik 23:04:25 SimonRC: surely no body could survive large amounts of elemental flourine 23:04:40 ais523|sl_busy: unless you are a flourine elemental 23:04:55 * SimonRC recalls a GITP episode 23:04:55 flourine, or fluorine? 23:05:01 whatever 23:05:02 I think we've been mispelling it consistently 23:05:16 "uo" is rare in English 23:05:27 Noun 23:05:27 flourine 23:05:27 1. Common misspelling of fluorine. 23:05:34 (from Wiktionary) 23:05:55 that's a LIE 23:06:06 but the way that's written, it seems like "Common misspelling of fluorine" is the /definition/ of 'fluorine' 23:06:18 s/'fluorine'/'flourine'/ 23:06:26 flourine is a dangerous chemical arising in flour that has been stored too long 23:06:34 :-P 23:06:37 so therefore 'flourine' is a noun that can only possibly refer to the word 'flourine' 23:06:43 in a nice bit of self-reference 23:06:53 heh 23:07:15 oklopol: how about a compiler with common sense 23:07:18 ? 23:07:23 recursive [adj.]: see recursive 23:07:37 SimonRC: No, I will NOT compile this virus! 23:07:44 "obviously I don't want to throw away all the results you stupid machine, I meant to save them in that otherwise-empty list!" 23:07:44 SimonRC: like, that it'd take the parse tree resulting in a nice algo? ;) 23:08:08 and it would automatically change the program to DWYM 23:09:05 DWYM? 23:09:18 Do What You Mean 23:09:22 (cannot google...) 23:09:23 ah 23:09:25 SimonRC: main(){printf("%i",pi);} 23:09:29 as in WYSIWYM 23:09:29 prints out all of pi 23:09:30 but 23:09:41 comparisons etc involving pi 23:09:41 (posited as an improvement on WYSIWYG) 23:09:44 use an approx. value 23:09:46 oklopol: why you not have interwebz? 23:09:53 i have no idea 23:10:06 perhaps i should restart my router like ppl keep telling me :o 23:10:07 oklopol: Router. Restart it. 23:10:07 oerjan: that doesn't terminate 23:10:12 oklopol: You just set up Konversation, so! 23:10:21 can you start a web browser? 23:10:26 well, i just set just freenode 23:10:32 a better example would be 'recursive [adj.]: see the definition of recursive in the previous edition of this dictionary' 23:10:37 SimonRC: yes, but it won't open anything 23:10:46 with a genuine definition in the first edition 23:11:12 oklopol: can you ping anywhere outside your network? 23:11:12 that would most likely be tail recursion 23:11:13 ais523|sl_busy: lazily evaluated recursion 23:11:19 depending on the laziness of the reader 23:11:24 ais523|sl_busy: lessee 23:11:36 ehird: eso-std.org doesn't respond to pings 23:11:45 oklopol: well, you can get on IRC... 23:11:47 recursive [adj.]: when a function (see recursive-inner). 23:11:49 looks like I'll have to go back to bouncing them off Google 23:11:52 i can ping google. 23:11:56 recursive_inner: calls a function that (see recursive_inner) 23:12:05 ais523|sl_busy: does it not? oh wells. 23:12:09 ais523|sl_busy: it will, sometime. 23:12:12 no wait, Google isn't responding to pings from here either 23:12:22 the University firewall must block pings... 23:12:25 ehird: did you read my cise rant? 23:12:39 it seems my idea actually works, to some extent 23:12:53 ais523|sl_busy: i *can* ping google 23:12:55 have you tried a different web browser? 23:13:03 hmm no 23:13:06 or telnet www.google.com 80 23:13:09 oklopol: gimme spec 23:13:13 what about typing HTML commands in by hand? 23:13:26 (heh, that's what SimonRC suggested, but I meant to say HTTP and got the wrong acronym) 23:13:57 okay. 23:14:03 i can get google on telnet :P 23:14:06 ah. 23:14:08 LOL 23:14:18 i have a proxy set, must be down :) 23:14:21 * oklopol owns 23:15:14 I have noticed I sometimes try to apply debugging techniques to religion-like things 23:15:26 SimonRC: that's unlikely to work 23:15:31 otehr peoples' 23:15:41 :twisted: 23:15:41 unless they're porting gdb to humans nowadays 23:16:01 i had a jehova's witness on the door today 23:16:10 apparently there's a big jesus party coming 23:16:13 I mean, I see some nonsense, and try to divide up the reasoning 23:16:18 oklopol: again 23:16:23 ? 23:16:28 * Sgeo starts looking at Magnatune again 23:16:30 yep, and same guy actually :) 23:17:00 surely everyone gets a chance to repent during those seven nasty years? 23:17:01 it would be so awesome to join a group like that 23:17:06 hmm 23:17:08 BTW, I made an ogg version of the Fugue Hello World I wrote 23:17:14 (for people who can't read MIDI) 23:17:16 i've just seen so many cult movies i'm afraid they'd kill me :) 23:17:25 start your own 23:17:25 but Esolang doesn't accept ogg-format uploads for some reason 23:17:30 then you'd be boss 23:17:36 ais523|sl_busy, url? 23:17:37 heh 23:17:50 Sgeo: nowhere, as I've just explained 23:17:53 oh 23:17:59 I can paste it to a filebin temporarily, though, for you 23:18:01 I thought maybe you put it up elsewhere 23:18:17 Actually, I think I did get the midi to work 23:18:20 It's just painful 23:18:26 oklopol: interwebs work now? 23:18:30 yeah 23:18:36 yay! 23:18:42 yayeeee 23:18:45 Sgeo: http://filebin.ca/ddtfxb/hworld.ogg 23:18:57 do i have to upload my interp now?;) 23:19:02 (unfortunately that link will stop working after an unspecified length of time) 23:19:11 would be no use, you simply could not read it. 23:19:20 * SimonRC invites oklopol to a party with lemons, a girl in a tub, goats, and E 23:19:25 mwahaha 23:19:45 omg i love tub parties 23:19:52 uh 23:19:56 will there also be another girl and a cup? 23:19:56 Anyone up to making a PSOX program in Fugue? 23:20:03 oklopol: of course 23:20:28 Sgeo: I have a very complicated indirect chain of programs which amount to a BF->Fugue compiler 23:20:32 good, is this the #esoteric orgy me and bsmntbombdood have been planning for ages? 23:20:47 however, they're sufficiently non-portable that I don't think they're capable of running on more than one computer 23:20:53 and unfortunately that computer isn't this one 23:20:54 chain of programs? Please elaborate? 23:21:12 oklopol: dunno 23:21:18 BF->Prelude compiler. Prelude->Fugue compiler, but with music in a weird intermediate format I invented. 23:21:50 Then I use that weird intermediate + another program I wrote to send a series of keystrokes to a proprietary MIDI editor, typing in the entire piece of music 23:22:03 (hmm... maybe I could alter it so it works with Rosegarden?) 23:22:11 is there any Choon involved? 23:22:24 According to the wiki and my understanding, Prelude is equiv. to Fugue.. is this wrong? 23:22:27 Then, I export to MIDI, and use TiMidity to synthesize that into ogg if needed 23:22:33 Sgeo: almost but not quite 23:22:44 "not quite"? howso? 23:22:46 Fugue's a superset because it can handle literal constants greater than 9 23:22:52 but that's a very minor difference 23:22:58 SimonRC: no Choon anywhere 23:23:42 :') 23:23:44 oops 23:23:47 :'( 23:23:59 So why not translate Prelude to Fugue directly? 23:24:01 SimonRC: because it's a different language 23:24:05 Sgeo: because I don't know MIDI 23:24:11 or at least, I know MIDI pretty well 23:24:13 but not its file format 23:24:25 (I'm more used to it as a protocol) 23:24:26 btw i made a music description language the other day, it totally owns standard score notation 23:24:37 unquote :: 'R ('R -> 'S) -> 'S 23:24:38 * Sgeo types pylib into Fx 23:24:45 i'll turn it tc next week, methinks 23:25:06 Nothing on there, /me googles Python MIDI 23:25:07 ehird: I'm having problems figuring out the kind of 'R in that 23:25:21 you mean you calculate scores? 23:25:24 ais523|sl_busy: R is an abbrev. for "Rest" 23:25:30 for a while now i've been thinking about something like hamming distance for melodies, would be nice to have a database of songs 23:25:36 ais523|sl_busy: It means "the rest of the stack." 23:25:47 for instance you could check whether a melody is your invention, or already exists 23:25:49 http://www.mxm.dk/products/public/pythonmidi 23:25:51 And, of course, EVERYTHING types as ('R -> 'S) -- you give it a stack in and you get a stack out 23:26:00 oklopol: this has been studied before of course 23:26:03 oklopol: I seem to remember that someone once did that simply by writing down the up-down sequence of notes 23:26:10 which discriminates between tunes pretty quickly 23:26:15 althoug of course it isn't a perfect hash 23:26:16 but only roughly 23:26:34 and will split very similar tunes apart 23:27:10 everything done on the subject suck ass as far as i know. 23:27:12 and what if you can't remember the intor? 23:27:13 *sucks 23:27:14 *intro 23:28:01 it may be best to have it both for the intro and for the first few notes of the chorus/main theme, for tunes that have one 23:28:25 umm, or just the whole piece 23:28:48 * Sgeo goes to write a prelude2fugue.py 23:29:07 my bf2pre.c is in the Esolang filestore IIRC 23:29:19 oh great, now I have both the SG-1 and Atlantis themes in my head at once now 23:29:40 SimonRC: damn, my headmusicplayer isn't multithreaded 23:29:45 it has a gui like xmms too 23:29:55 mine task-switches... 23:30:19 I do actually task-switch quite explicitly in some situations 23:30:46 atlantis theme? 23:30:51 SimonRC: you read the daily wtf, don't you? that place is becoming a wtf in itself 23:30:59 ehird: really? 23:31:00 * ais523|sl_busy reads it 23:31:05 I mean, at least the *parody* MFDs in the comments are funny.. 23:31:14 oklopol: yeah, Stargate Atlantis 23:31:25 did you see the thread with 700+ comments on one of the main stories? 23:31:30 which? 23:31:31 presumably it was linked from one of the big sites 23:31:48 SimonRC: the one where a company had used JavaScript for authentication 23:31:54 ais523|sl_busy: reddit linked it 23:31:59 it got on the front page 23:32:00 where the password was checked against plain text client-side 23:32:04 ehird: that would explain it 23:32:05 hehehe 23:32:12 that could describe several ones 23:32:22 Error: Target org.macports.fetch returned: fetch failed 23:32:23 Error: Status 1 encountered during processing. 23:32:23 sfhkjsdfh 23:32:25 the amusing thing was that it appeared to be a scam company's website in the first place 23:32:40 i need to sleep for a while, cya -> 23:33:02 did anyone sign up as "little Bobby Tables"? :-) 23:33:17 SimonRC: you can't inject SQL into client-side JavaScript validation 23:33:28 that's one thing to be said for it, at least 23:33:34 ais523|sl_busy: no, but it might make it through to the server side 23:33:54 there was no server side 23:34:01 wibble 23:34:05 the page simply had a script that checked the username/password 23:34:15 and if it was right, redirected the user to another web page 23:34:20 ah, ok 23:34:24 which they could just access directly if they knew the URL 23:34:47 still more amusingly, the people in charge of the website found out, and changed the username/password 23:34:55 lol 23:34:59 (but of course they were still visible in view source...) 23:35:02 What the fuck?! 23:35:11 that is the WTF moment 23:35:13 really 23:35:30 it was one of the better frontpage stories there 23:35:48 I wonders if MFD is supposed to be any good or whether someone knows they are crap but people will like discussing it. 23:35:50 Amusingly, the daily wtf's first few submissions sucked. terribly 23:36:07 ehird: it was not originally on thedailyWTF 23:36:08 SimonRC: I dunno, I basically skim over the actual comic and read the hilarious modified versions in the comments instead 23:36:10 * Sgeo decides to give up on prelude2fugue 23:36:11 and IMO they weren't oo bad 23:36:15 *too 23:36:20 SimonRC: on Wikipedia, MFD is where non-article content is deleted 23:36:27 ais523|sl_busy: Mandatory Fun Day 23:36:29 as in, pointless webcomics that people run on project pages 23:36:36 hahahaha 23:36:36 ah 23:36:37 I found the acronym coincidence amusing 23:36:40 that's great 23:36:44 maybe deliberate 23:36:49 what does "MFD" stand for? 23:36:55 SimonRC: Misc. for deltition 23:36:56 Miscellany for Deletion 23:36:57 *deletion 23:36:59 ok 23:37:05 as in, all pages not covered by other deletion processes 23:37:12 mainly, it's used for project pages and user pages 23:37:12 hm.... 23:37:12 Mandatory Fun Day: Man, Fuck 'Dis 23:37:30 no 23:37:39 although I hold the record for successful MfDs of system interface messages 23:37:45 Man, Fucked by Dis (the language) 23:37:58 heh 23:37:58 (I have 2, nobody else has any) 23:38:03 ais523|sl_busy: system interface messages? 23:38:04 ais523|sl_busy: wow 23:38:06 how did you do that 23:38:12 SimonRC: things like the global site header 23:38:16 yes, they're actually transcluded pages 23:38:19 wow 23:38:21 MediaWiki is awful, awful software 23:38:23 not quite transcluded, but much the same 23:38:26 I think everyone can agree on that 23:38:31 and MediaWiki makes a lot of sense for WMF 23:38:38 the forum software is TRWTF 23:38:41 but most of its features are designed just to be convenient for them 23:38:43 SimonRC: I know 23:38:45 the wiki software is TRWTF 23:38:46 the preview that isn't 23:38:57 I mentioned the CAPTCHA in one of my posts 23:39:00 Twiki softwareITRWTF <-- shorthand! 23:39:04 ais523|sl_busy: everyone does that 23:39:05 :( 23:39:11 when you preview the post, it changes the captcha image, but keeps the same word 23:39:22 hehehe 23:39:25 giving you a second chance to OCR it with different data 23:39:37 (and ehird: no, I didn't say what the CAPTCHA word was, like so many people do) 23:39:50 http://thedailywtf.com/Articles/18-The-Bullet-That-Slayed-The-Beast.aspx What is the expected *reaction* to this? 'Ha ha ha'? 23:39:55 (but from what they have said, it seems to me that it's just taking random words from lorum ipsum) 23:40:05 It basically amonuts to 'LOL, Microsoft r awsum. Open src ppl SUXORR' 23:40:22 ehird: the reverse of the usual? 23:41:34 ehird: I actually rather like MediaWiki in some ways 23:41:42 (see Wiki Cyclic Tag on Esolang, for instance) 23:41:49 it's not TC because infinite loops are impossible 23:42:03 ais523|sl_busy: Even toy wikis disable template recursion. :-) 23:42:03 but it is TC when the user restarts the loop by hand (by piping output to input) 23:42:20 everything 23:42:24 's tc when the user does it 23:42:24 :) 23:42:36 yes, but not much user intervention is needed 23:42:42 I call the situation 'Muriel-complete' 23:43:06 ais523|sl_busy: Would a brainfuck interp in MWT be possible? 23:43:24 {{brainfuck|,[.,]|hello}} 23:43:25 ehird: I've already written a cyclic tag system in it 23:43:31 Obviously, you'd need to restart it at points 23:43:35 But could you actually do that parsing? 23:43:44 but there's no way to do parsing for chars that don't have special wikimarkup meanings 23:43:54 ah 23:44:00 which is why the cyclic tag system needs to use = as a list separator 23:44:31 ehird: it may be possible if Extension:StringFunctions were installed, though 23:44:51 (note that I avoided extensions for Wiki Cyclic Tag, including the well-known ParserFunctions that make MediaWiki a bit like a programming language) 23:45:30 ais523|sl_busy: Hmm. It occurs to me that a template system can trivially simulate the lambda calculus.. 23:45:32 Like this: 23:45:42 -!- oerjan has quit ("Good night"). 23:45:44 K is 23:45:50 Err 23:45:54 Let's try the mocking bird combinator 23:45:54 easier 23:45:55 :P 23:46:01 {{ {{{1}}} | {{{1}}} }} 23:46:33 ehird: no 23:46:45 ais523|sl_busy: Yes, I know MW's probably doesn't allow that, but that's because it sucks 23:46:48 actually, maybe that would work 23:46:53 and MW does allow that syntax 23:47:06 but I was trying to track what happened to the parameters 23:47:06 only one way to find out.. 23:47:10 but it seems it's fine 23:47:21 User:Elliott/mwc/m here I come! 23:47:23 and ehird: you'll just get a template loop error if you aim it at itself 23:47:26 (mwc == mediawikicode) 23:47:39 ais523|sl_busy: 'Y' could come in handy here 23:47:45 Hmm, you can't create anonymous templates though 23:47:53 So you can't do Y, or much anything really 23:47:56 Hmm. 23:48:00 I'll try S, K, I 23:48:03 you may be able to do something with extra parameters 23:48:07 Hmm, wait.. 23:48:11 by defining K1, S1, S2 23:48:15 ais523|sl_busy: Is it possible to curry it? 23:48:15 Yes 23:48:19 (the partially-curried forms of S and K) 23:48:20 But how do we get the param to K1 23:48:25 that was given to K 23:48:35 you would need to be passing more than one param around 23:48:42 ais523|sl_busy: example? 23:48:44 show me K 23:48:54 however, bug 5678 has now been fixed, so I don't think it's possible nowadays 23:49:12 I mean, you can do: 23:49:13 previously, you could do something like K = K1 {{!}} {{{1}}} 23:49:16 Hmm 23:49:19 What is {{!}} 23:49:27 a template containing just | 23:49:30 OK. 23:49:33 I'll give it a try. 23:49:38 but that only worked by exploiting a parser bug 23:49:42 ais523|sl_busy: K1, or {{{K1 ...}}} ? 23:49:49 related to ParserFunctions, which aren't on Esolang 23:50:05 you dereferenced the {{!}} using {{#if:1|{{{thingtodereference}}}}} 23:50:21 but that doesn't work nowadays, and never ought to have worked in the first place 23:50:25 ais523|sl_busy: {{User:Elliott/!}} 23:50:28 is that OK? 23:50:41 also 23:50:47 #if:1 could be simulated by If1 23:50:51 yes, that's pretty much identical to the corresponding Wikipedia template 23:50:51 which would be {{{1}}} 23:50:55 and ehird, no, it was a bug in #if 23:51:02 Welp, I'll try it anyway 23:51:19 ais523|sl_busy: K1 would just be {{{1}}}, correct? 23:51:25 yes 23:51:29 Hmm 23:51:31 Then it could be 23:51:35 I {{!} {{{1}}} 23:51:35 :-) 23:51:37 allowing for dereferences in appropriate places 23:51:54 and I can't figure out where they ought to go right now 23:51:59 ah 23:52:12 but they won't work anyway, so you can't test 23:52:16 okay :( 23:52:21 ais523|sl_busy: so there's no way to curry a template properly 23:52:36 there may still be a way 23:52:38 alas, that si so often the case 23:52:40 but it's kind of hard to explain 23:52:48 I am working at work on a system that would be TC if you could curry 23:52:50 suppose /every/ template carries around two params 23:53:06 ais523|sl_busy: I think I might see where you're going 23:53:13 then, you make sets of 3 templates, to generate the resulting template base name, first param, second param 23:53:18 (Permission to pollute esolang's main namespace? I, K, etc. aren't going to be really common names.) 23:53:22 and somehow cart blocks of those around 23:53:33 ehird: I can't give you that permission, you'd have to ask Graue 23:53:47 who is Graue? 23:53:50 I'll take Graue's permission as implied. iirc, you can delete pages, ais523|sl_busy, so if I regret it I'll just bash yiou ;) 23:53:52 SimonRC: esolangs owner 23:53:57 ais523|sl_busy: hmmm 23:54:03 K = K1 {{{1}}} 23:54:06 not on IRC? 23:54:09 incidentally, see User:Ais523/k1 on Esolang; I had this sort of idea earlier 23:54:17 {{ {{ K | foo }} | bar }} 23:54:19 -> foo 23:54:29 SimonRC: not registered, apparently, but he does come here occasionally 23:54:34 + 23:54:38 I've gottt it! 23:54:41 Time to do shizz 23:55:03 ehird: I can also block users :) 23:55:21 ais523|sl_busy: don't be cruel :'( 23:55:36 hey hoo, K can just be 'I {{{1}}}' 23:55:38 I only intend to do that, though, if you cause a big mess and then blame it on me 23:55:38 that's cool 23:56:07 hmm... Esolang is still on Parser_OldPP, I think, so there is at least some chance that you'll be able to get delayed parsing of | 23:56:23 I don't think I need it, ais523|sl_busy. 23:56:24 Well, not sure. 23:56:26 (on the new preprocessor, it decides which |s are literal and which ones are commands right at the start of parsing, so that wouldn't work) 23:57:21 ais523|sl_busy: I think I can trick MW into accepting the Y combinator 23:57:26 Since I think I can avoid *direct* recursion. 23:57:40 ehird: I think it checks to see if the same template name is used three times in a chain 23:57:48 no matter what the params 23:57:49 Hmph. Oh well 23:58:21 MW? 23:58:25 MediaWiki 23:58:31 Oh MediaWi..riright 23:58:44 ais523|sl_busy: is whitespace ignored? 23:58:50 {{ {{{1}}} | abc }} and stuff 23:58:58 ehird: sometimes 23:59:07 if it's either side of a metadata character, it's normally ignored 23:59:19 and it's definitely ignored between {{ and |, which in this case is the only relvant case 23:59:36 (except if you have a multiword template name, of course) 23:59:41 {{ {{ {{{1}}} | {{{3}}} }} | {{ {{{2}}} | {{{3}}} }} }} 23:59:42 S2 23:59:44 ais523|sl_busy: is that OK?