00:18:48 -!- sebbu has quit ("@+"). 00:22:53 -!- puzzlet_ has joined. 00:28:36 -!- olsner has quit ("Leaving"). 00:29:50 ehird: I think I managed to make functions in JumpFuck. http://pastie.org/317387 00:30:14 congrats! 00:30:34 wow, that looks really neat 00:30:35 :) 00:31:04 i think it'd actuallly be very easy to convert that to normal BF; you're doing most of the continuationy stuff yourself 00:32:24 -!- puzzlet_ has quit (Read error: 60 (Operation timed out)). 00:32:40 oi! 00:32:45 someone who speaks swedish! 00:32:48 how do you say "lyrics" 00:34:03 -!- puzzlet_ has joined. 00:34:32 either lyrics, or "sångtext(er)"... 00:34:57 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 00:40:12 That looks like it sounds like "song text" 00:42:27 close enough 00:44:18 I have a very nice picture of a lighthouse. 00:44:19 Who wants it? 00:47:57 -!- metazilla has quit ("- nbs-irc 2.37 - www.nbs-irc.net -"). 00:48:12 ehird: Your MOM. 00:48:26 No. My mother would not enjoy a picture of a lighthouse. 00:49:29 GregorR: Would you? 00:51:17 zzzzzzzzzz 01:36:18 -!- Sgeo has joined. 01:48:25 -!- GreaseMonkey has joined. 02:29:20 -!- psygnisfive has quit ("Leaving..."). 04:00:42 -!- CakeProphet has quit (Read error: 110 (Connection timed out)). 04:04:32 -!- Slereah has joined. 04:17:54 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 05:27:18 http://home.codu.org/5ctj/ 05:28:28 hm Catholic bishop - shouldn't be too hard 05:28:40 Pfff 05:28:44 Lucky random :P 05:29:18 2 clicks 05:29:26 Pfff 05:29:27 Lucky random :P 05:29:29 actually i forgot to check if there was a 1 click 05:31:51 "St. Ignatius Mission"? 05:31:57 it's not even trying :D 05:32:45 2 clicks there too 05:33:29 oops this one looks harder 05:35:58 Oops, broke it :P 05:35:59 Just a sec 05:36:26 Fixed :P 05:36:34 must i restart? 05:37:23 No, but I just broke it again X-P 05:37:35 Sorry, I'm trying to add logic so it won't allow you to fake links. 05:38:06 Fixed again :P 05:38:26 * GregorR starts modifying it in a new file :P 05:39:23 -!- psygnisfive has joined. 05:40:48 OK, now I'm going to replace it and you will have to restart if you're in the middle of a game. 05:41:04 * GregorR waits for complaints 05:41:48 *doink* 05:41:57 psygnisfive: http://home.codu.org/5ctj/ 05:42:08 whatsit 05:42:23 what the? 05:42:29 oops 05:42:41 psygnisfive: Five clicks to Jesus. Find Jesus ... in five clicks or less :P 05:42:53 and i had just found "Christianity" :( 05:42:54 i dont get it 05:43:04 oerjan: Sowwy :( 05:43:16 psygnisfive: It gives you a random Wikipedia page, and you try to get to Jesus in five clicks or less. 05:43:36 oh i see 05:45:14 oh it fixed when i went back in history 05:45:28 just made it in 5 05:45:50 So far I haven't found a single page that I can't make it in five, so it may be worthwhile to reduce the limit to four, maybe even three. 05:46:03 (Five is just the way I'd heard the game formalized) 05:50:47 3 05:51:14 eek a porn star 05:51:17 lol 05:51:19 That'll be tough :P 05:51:55 Now I need to make a database so it can compare your result to others. 05:51:55 not necessarily, let me jump straight USA 05:51:56 *to 05:53:44 and from there to Roman Catholicism which i've used before 05:54:03 And then: JESUS! 05:54:04 oops a trap 05:54:10 ? 05:54:22 it was not the global one, but Roman Catholicism in the United States 05:54:30 Wah wah waaaaah 05:54:35 Make sure to hover over the links ;) 05:55:54 well still just 4 05:56:13 -!- GreaseMonkey has quit ("So, how much do you love noodles?"). 05:56:19 -!- Sgeo has quit ("Ex-Chat"). 05:56:48 a swedish lake 05:57:39 Anything that lets you get to a country is a free three-clicker. 05:57:54 oh? 05:57:57 Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 508361 bytes) in /home/gregor/5ctj/index.php on line 98 05:58:05 Country -> Christianity -> Jesus 05:58:09 Whaaa? D-8 05:58:30 Well that's weird 05:58:40 Does it happen consistently? 05:59:01 let me go back in history 05:59:10 oops it restarted 05:59:11 Refreshing is safe. 05:59:17 Don't go that far back X-P 05:59:24 It keeps your session on the server to dissuade cheating :P 05:59:40 but it's worked before, but then i may have gone to the bottom link 05:59:59 Hrm, shouldn't work at all >_> 06:00:27 E_DOESNTWORKFORME :P 06:00:37 ok let me try that country method again 06:01:46 liar! Croatia doesn't contain Christianity 06:02:03 although surely it's roman catholic, hm 06:02:34 OK, MOST countries work that way X-P 06:03:49 the article has no religion section :D 06:03:54 You'd think the page "Church of England" would mention Jesus somewhere. 06:05:49 oh well i'll go on to hungary 06:06:19 OK, sleepitime for me. 06:06:24 Enjoy my stupid game X-P 06:07:21 a nice country with a link to Christianity 06:07:54 made it in 4 06:15:48 Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 516520 bytes) in /home/gregor/5ctj/index.php on line 103 06:16:44 fixed on reload 06:18:45 apparently London works as a country :) 07:23:00 -!- GreaseMonkey has joined. 07:24:44 "Congratulations! You found Jesus in 3 clicks!" 07:24:47 Just to be contrary, I went France -> Judaism -> Jesus instead of Christianity in the middle. 07:30:34 Going through Main Page feels a bit cheatery. 07:31:57 As does using http://www.netsoc.tcd.ie/~mu/wiki/, obviously, even though it gives interesting routes. "Kyle & Jackie O -> Musical ensemble -> The Beatles -> Jesus" instead of going through a country. 07:34:11 o 07:36:12 -!- olsner has joined. 07:39:55 Congratulations! You found Jesus in 3 clicks! 07:41:27 oh joy! 07:41:51 :---------) 07:42:05 why the long face? 07:42:36 that's my happy! :o 07:43:42 then, why all the happy!? 07:44:37 fizzie: the real problem with utu is not the course descriptions, but the fact exams simply never get graded; i had an exam 13.10., sent an e-mail to the lecturer too, no answer 07:44:47 olsner: well all the jesus! 07:46:15 that's the worst i've had sofar, but that's probably only because that was the first exam i took :P 07:46:39 oklopol: Officially we have a rule that all our exams get graded within a month of submitting; usually that means it always takes almost exactly a month to get results. Sometimes it's longer, though. 07:46:46 oh 07:46:52 our official rule is two weeks. 07:47:10 well guess it's not that bad then. 07:47:14 it's fucking annoying though. 07:47:31 Sometimes I've gotten results the same day the exam was; there's a large variance. 07:47:39 :P 07:47:41 "Congratulations! You found Jesus in 2 clicks!" That was fast! 07:47:50 route? 07:48:01 323 BC -> Alexander the Great -> Jesus. 07:48:10 I got a good starting point that time. 07:48:29 i suck at that game 07:48:34 did you know, if you read to the end of the book of mormon, you will see god? 07:49:30 olsner: now if only the religious people told stuff we could actually check 07:49:37 would be easier to tell who's right 07:49:51 but noooo, you'd have to read something 07:51:05 "95% of the test subjects reported experiencing auditory and visual hallucinations after completion of the text" 07:51:58 Uh 07:52:06 Are you trying to get to jesus from random wiki articles? 07:53:14 yeah GregorR's game 07:53:34 well rather well-known game he implemented i think 07:53:43 implemented? 07:54:20 yes, but i can't link it 07:54:26 because my backlog is only a page long. 07:54:33 Handy. 07:54:45 Oh don't you just LOVE terminals? 07:54:48 http://home.codu.org/5ctj/ 07:54:58 Heh, ta 07:56:43 it's not a terminal, it's mirc. 07:57:14 it just decided, one day, that the backlog needs to be short because i wasn't using the handy "logviewer" functionality enough. 07:57:30 Sigh, I'm failin' at this 07:57:36 god that's retarded, wish it was physical so i could punch it. 07:57:53 Just ePunch it 07:59:11 Thai_Braille -> Thai_Language (THE ONLY LINK ON THE BRAILLE PAGE :/) -> English Language -> Republic of Ireland -> Roman Catholic -> Jesus 07:59:32 I expected/hoped for a jesus link on both the eng lang page AND the rep ire page, oh wells. 07:59:43 jesus hates thai 07:59:49 Clearly. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:46 OH YEAH, 3 links. 08:01:05 List of Child Prodigies -> Akiane_Kramarik -> Christian_God -> Jesus 08:01:49 Thai Language->Buddhism->Christianity->Jesus 08:01:59 Yeah, I considered that 08:02:18 dude, of course buddhism is more likely than english language 08:02:30 why would you expect jesus on the english language page 08:02:46 lament: Because Jesus invented the English language! 08:02:56 oh right as per KJV 08:03:48 Yes; it's clearly in English, and clearly also exactly what he said. 08:04:13 I was expecting: History of English Language, something about, I dunno, how it relates to christianity in some way. I guess it's not likely to have Jesus in it :-P 08:04:23 I know it doesn't relate :-P 08:04:31 But wikipedia pages have _a lot_ of shiz on them 08:05:06 I figured English Language was bound to have a link to christianity some where, if it didn't have jesus 08:05:22 But anyway 08:05:40 Doesn't help that I'm not used to playing lowest number of links 08:06:44 Back in March 2008, you could've gone "English Language -> Beowulf -> Jesus", but that link doesn't seem to be there anymore. 08:06:46 We used to play the wikipedia game at school (find a random destination article (not allowed to be a stub) and both start from the same article and first to get to the other article without using catagories wins) 08:08:02 Doing it by time makes it more frantic :-D 09:05:21 -!- MizardX has quit (Read error: 54 (Connection reset by peer)). 09:09:24 -!- GreaseMonkey has quit ("So, how much do you love noodles?"). 09:11:05 -!- MizardX has joined. 09:20:03 -!- Corun has quit ("This computer has gone to sleep"). 09:36:03 -!- Corun has joined. 09:46:58 -!- Corun has quit ("This computer has gone to sleep"). 09:50:08 -!- Slereah_ has joined. 09:54:22 -!- oerjan has quit ("leaving"). 09:54:28 -!- Slereah has quit (Read error: 60 (Operation timed out)). 10:49:04 -!- puzzlet_ has quit (Remote closed the connection). 10:49:12 -!- puzzlet has joined. 10:59:17 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 10:59:57 -!- jix has joined. 11:00:22 -!- puzzlet has joined. 11:42:00 +ul (test)S (test)S 11:42:00 test 11:42:14 +ul (test)Sx(test)S 11:42:14 test 11:42:24 -!- Slereah has joined. 11:42:28 heh, breaks on invalid input 11:44:39 -!- Slereah_ has quit (Read error: 60 (Operation timed out)). 11:47:04 ^ul (test)Sx(test)S 11:47:05 test ...bad insn! 11:48:22 Usually thutubot's error messages are better than fungot's, though; it even says which instruction stack-underflowed. (Though I could add that one too.) 11:48:23 fizzie: appendix a character to the debugger needs to have the same identifiers as the two characters have the extension `.i', `:1601' ( note that it can be set up for your operating system you're using it, it had some obvious deficiences ( such as the above example shows, the first line of code might never be executed with e633, so the next character. there isn't a thread; attempting to `go back' as input ( if an expression as 11:48:31 ^style wp 11:48:31 Selected style: wp (1/256th of all Wikipedia "Talk:" namespace pages) 11:48:41 That intercal manual style is so verbose. 11:50:32 -!- Slereah_ has joined. 11:55:21 http://esoteric.voxelperfect.net/wiki/Redivider/Underload_Interpreter :) 11:57:20 oh, got to run 12:04:21 -!- Slereah has quit (Read error: 110 (Connection timed out)). 12:13:06 -!- Slereah_ has quit (Read error: 113 (No route to host)). 12:30:51 -!- Slereah_ has joined. 12:37:13 I just realized there are probably people for whom the primary meaning of the word "string" is "a piece of cord" instead of "a sequence of characters". That's strange. 12:38:17 -!- Hiato has joined. 12:41:47 Isn't that the original meanin 12:42:08 ? 12:42:53 Sure, but, you know, strings. Strings are made out of characters. 12:43:06 -!- ais523_ has joined. 12:43:12 hi AnMaster 12:43:18 hi 12:43:21 see new /msg 12:43:34 can't this time, I'm on Mibbit, although I'll see it when I'm back on my laptop 12:43:47 -!- Slereah has joined. 12:49:06 a sec 12:51:53 -!- Slereah_ has quit (Read error: 145 (Connection timed out)). 13:10:14 -!- Hiato has quit (Read error: 110 (Connection timed out)). 13:21:12 hi ais523_ 13:21:46 hi ehird 13:21:50 hmm... that must have been manual 13:22:00 unless you've improved your script somewhat 13:24:39 ais523_: nah 13:24:41 the bouncer, remember? 13:24:43 it played back the hi 13:24:44 err 13:24:46 played back the join 13:24:54 so my script responded t o it... 13:25:07 haha 13:25:29 would it respond multiple times if I cyclespammed from mibbit while you weren't online? 13:25:41 yes. 13:33:15 ais523_: do you want a nice picture of a lighthouse that I scaled and cropped? 13:33:21 GregorR didn't. 13:33:24 Nor did SimonRC. 13:33:32 I'm beginning to think that cropped-resized lighthouses are just a thing of the past. 13:33:58 Does this happen to be a gummy lighthouse? :P 13:34:38 No. The lighthouse in question is neither phallic nor gelatin-based. 13:35:10 If it's not phallic then it's not a lighthouse. 13:35:22 -!- ais523_ has quit ("http://www.mibbit.com ajax IRC Client"). 13:35:36 It's an unphallic lighthouse. 13:35:38 Can you imagine? 13:35:47 I cannot. 13:36:05 Would you like to see this non-phallic lighthouse? 13:38:05 GregorR: Welp, here you go. http://xs133.xs.to/xs133/08472/lighthouse157.png 13:38:18 Hi ais523 . 13:38:24 I posted the lighthouse two messages up. 13:38:35 It is scaled and cropped from http://commons.wikimedia.org/wiki/Image:Crown_Point_Light_House.jpg. 13:38:41 Or rather, from http://upload.wikimedia.org/wikipedia/commons/8/85/Crown_Point_Light_House.jpg. 13:38:41 hi ehird 13:38:58 ehird: why are you posting pictures of lighthouses? 13:39:12 Only various versions of one lighthouse. 13:39:24 http://xs133.xs.to/xs133/08472/lighthouse157.png is the main one up for grabs, post-processing. 13:44:23 I hope you have enjoyed it. 13:44:34 ehird: I'm using w3m as my primary browser atm 13:44:41 w3m can display images here. 13:44:44 atm meaning over a very short period of time 13:44:54 I've been messing around with powertop, you see 13:45:03 Perhaps you should use it from the console, like real men. 13:56:51 ais523, hm hi 13:58:00 ais523, 11 patches 13:59:10 ais523, http://kuonet.org/~anmaster/c-intercal/ 14:05:30 * ehird installs fish 14:14:10 60-70% CPU usage process of tcl installign texlive. Wonderful. 14:28:08 -!- Asztal has joined. 14:34:48 http://github.com/rails/rails/commit/22af62cf486721ee2e45bb720c42ac2f4121faf4 wat 14:37:12 Well, common lisp also has the functions "first", "second", "third", "fourth", ..., "tenth" for getting elements of a list. 14:37:36 :) 14:39:41 Scheme doesn't, although car, cadr, caddr and cadddr work as first .. fourth. 15:24:38 -!- sebbu has joined. 15:25:50 ehird: That lighthouse is undeniably phallic. 15:26:08 You see phalluses in too many things, GregorR. 15:26:45 The rule is that if it's at least double as long as it is wide, and is either round or has more than five sides, it's phallic. 15:27:03 Ha. 15:28:27 Furthermore, some friends of mine have determined that all things are one of phallic, mammary or concave. 15:28:43 It's only a matter of determining which :P 15:32:11 * ehird tries to figure out how to keep a website and its apache config file in a single git repo nicely while still not exposing the config file via the site 15:39:54 -!- pinkillo has joined. 15:40:47 -!- pinkillo has quit (Client Quit). 15:46:31 -!- warrie has quit (Read error: 110 (Connection timed out)). 16:20:34 Suggestions welcome :-P 16:21:37 hi ais523 16:23:11 wb me 16:23:56 fish(1) is nice. 16:24:58 Guys. 16:25:23 Could you simulate logic gates with missiles/anti-missiles missiles/ and so on? 16:26:46 * ehird writes ANSI->HTML 16:44:16 -!- Mony has joined. 16:46:44 plop 16:47:42 hi 16:48:18 yay, the first part of gcc-bf's new build system seems to be working 16:58:34 ais523, added even more patches 16:58:54 see /msg too ais523 17:26:17 get used to seeing even more of me from now on. i'm never going out again 17:26:35 Whyzzat? 17:26:54 the wind 17:26:57 it hurts my brain 17:27:05 Oh yes; it is quite windy here too. 17:27:29 walked the way from band training backwards, i just couldn't ride my bike or walk normally. 17:27:35 hurt so goddamn much 17:27:50 my head is a bit sensitive 17:27:57 -!- pinkillo has joined. 17:28:04 -!- pinkillo has left (?). 17:28:25 Oh, again a real storm (>21 m/s) on the sea nearby, and 19 m/s right around here. Not bad. 17:32:05 ouch. 17:35:53 -!- Asztal has quit ("ChatZilla 0.9.84 [Firefox 3.0.4/2008102920]"). 17:42:38 fizzie: I didn't know you lived near the sea 17:43:38 ais523, see /msg again 17:44:59 Helsinki (and Espoo too) is on the coast of the Gulf of Finland. Although my actual apartment is some 5 km from the sea, I guess. 17:45:07 btw, my department now has a second Door I think 17:45:23 the original one still exists, and even has been working recently 17:45:26 but the new one is fun 17:45:29 (Or 2 km if you could that one bay, but...) 17:45:30 it got into an infinite loop the other day 17:45:32 i'm less than 5 km away from the sea 17:45:35 but i never see it 17:45:38 and ended up opening and closing alternately for several hours 17:45:42 s/could/count/ 17:45:44 until security came and forcibly locked it 17:46:17 Do you think the door is TC? 17:46:42 hmm 17:46:44 Maybe you could get a brainfuck interp running by opening and closing it in the right pattern. 17:46:50 well, it has one bit of storage 17:48:43 fizzie: I don't believe my department's Doors are TC yet, but suspect it's only a matter of time 17:50:25 oh 17:50:34 perhaps i should take MizardX off ignore 17:50:39 hmm. 17:50:49 how is that done i wonder :P 17:51:23 oklopol: why did you ignore him? 17:51:29 ehird: felt like it 17:51:39 he made recursive functions in jumpfuck 17:51:39 which is neato 17:51:49 yes, but i didn't tell python that, just the nicks. 17:52:14 how do you usually unignore in clients? 17:53:05 and he got them recursive huh? last i heard that was something they *didn't* support yet 17:54:37 oklopol: /unignore is the usual command 17:54:38 Just need to keep track of the recursion level, and set the continuation-id accordingly. Each function gets the continuation-id as argument, so just use that plus one. 17:55:21 seems you have to give it the "-r" flag 17:55:34 from "remove", presumably 17:56:24 /unignore i naturally tried, but it doesn't exist 17:56:34 ^bool 17:56:35 No. 17:56:40 another episode? 17:56:40 ^bool 17:56:41 No. 17:56:42 k 17:56:48 oklopol: 17:56:49 should i read a bit? 17:56:50 it changed its mind 17:56:51 ^bool 17:56:51 No. 17:56:52 ^bool 17:56:52 Yes. 17:56:58 see, my ^bool 17:56:58 was for the episode 17:56:58 ^bool 17:56:58 No. 17:57:01 ah 17:57:02 fungot: 17:57:02 ehird: to be neutral so i accept differing view points. i want to defend measurements. there is no 17:57:04 make up your mind 17:57:05 ^bool 17:57:05 No. 17:57:09 can it have changed its mind about the reading? 17:57:15 fungot: are you sure? 17:57:15 ^bool 17:57:16 ehird: b. greed and fnord produce the bonds i.e fnord between the karma and our fnord causeway. the scene uses hare coursing as a metaphor and may be fnord to other military units ( normal infantry, rangers, ect.) during the current writers guild strike, but the link kept being removed. small—preceding wikipedia:signaturesunsigned comment added by fnord ( user fnord) 17:57:16 Yes. 17:57:18 i mean, that's what i wanna do. 17:57:18 oh 17:57:20 neato 17:57:27 oklopol: so read 17:58:07 should i ignore someone else now? 17:58:08 ^bool 17:58:08 No. 17:58:14 okay 17:58:15 -> 17:59:59 oh wowzers 18:00:00 ais523: 18:00:02 warrie: 18:00:05 http://esolangs.org/wiki/Redivider/Underload_Interpreter 18:00:10 I noticed that 18:00:15 pretty impressive 18:00:19 also warrie isn't here atm 18:00:22 redivider looks lovely 18:00:36 I'ma write a compiler 18:00:38 ^_^ 18:00:52 wait, that looks buggy 18:01:00 AFAICT ~ isn't fully implemented 18:01:09 MizardX: ^ 18:01:14 ah 18:01:20 ais523: e wasn't told about ^ 18:01:25 yesterday he listed the commands he thought 18:01:27 and omitt 18:01:28 no wait 18:01:31 | { /[\^]/; 18:01:31 fst: head[stack]; 18:01:31 rest: tail[stack]; 18:01:32 run(rest)[fst + /.*/] } 18:01:39 ehird: I was referring to ~ not working 18:01:44 oh 18:01:45 and used ^ to nickping the previous line 18:01:46 anmaster-pings 18:01:46 ewwwwwwww 18:02:18 doh 18:02:24 fixing it now 18:02:48 wow derivider is pretty 18:02:53 yeah 18:02:57 -!- Corun has joined. 18:02:58 oklopol: i helped make its syntax! 18:02:58 clever, too 18:03:05 originally it had a lot of pointless empty ()s and []s 18:03:06 and stuff 18:03:15 I told ihope to remove them and voila, redivider is pretty. 18:03:19 ehird: yeah i was there. 18:03:31 lol 18:03:31 :D 18:03:38 just gotsa brag 18:03:53 :) 18:04:36 hmm, redivider is a palindrome. i wonder how many times i've realized that... 18:05:14 it has regexes? 18:09:34 Regexes as a sub-language. It is the only way match input/substrings. 18:10:31 hmm. 18:11:27 okay *this* is pretty http://esolangs.org/wiki/Redivider/Brainfuck_Interpreter 18:13:12 The underload interpreter was much easier to write. It doesn't require implementing any new arithmetic operation. 18:21:21 [[\X, where X is an ASCII character mnemonic (NUL through US and DEL)]] 18:21:22 fuck you redivider 18:21:25 >:| 18:21:39 hah, that's clever 18:23:37 -!- Sgeo has joined. 18:34:03 Geh, bug in my interpreter then. It uses \n \r etc. 18:36:04 should I still allow the short, well-established form? (\n and \NL) 18:37:04 * ehird got his parser parsing strings 18:37:04 woop 18:37:12 it will compile to python 18:37:12 :D 18:37:27 MizardX: 18:37:27 consists of ASCII characters other than " and \ as well as escape codes. Escape codes must include \\, representing \; \", representing "; \n, representing the newline character; \0nnn where n is an octal digit, representing the character with code nnn; \0xnn where n is a hexadecimal digit, representing the character with code nn; and \X, where X is an ASCII character mnemonic (NUL through US and DEL). The set of escape codes must be prefix-free a 18:37:28 quite complex. 18:38:15 WTf... 18:38:19 This is a valid redivider program: 18:38:22 ) ; + 18:38:27 why? 18:38:27 A program consists of s separated by whitespace 18:38:29 ::= | "(" | "," | ")" | ":" | "|" | "+" | "{" | ";" | "}" | "." 18:38:29 | | | "#" anything newline 18:38:34 oh 18:38:36 does it mean anything? 18:38:41 BUG BUG BUG BUG ALL ONBOARD THE BUG TRAIN 18:38:46 SPEC GOT A BUGGY BUG WOOOOOOOOOOO! 18:38:58 well 18:39:02 it makes sense if you interpret it like an idiot 18:39:03 :3 18:39:06 ok, \n is given. How about \r, \f, \t etc? 18:39:27 MizardX: sure 18:39:30 it's undefined so you can 18:40:22 -!- kt3k has joined. 18:40:56 Hmm. 18:41:01 Nothing actually _uses_ 18:41:18 -!- kt3k has quit (Client Quit). 18:43:09 UGH! 18:43:16 It's almost impossible to parse the regexes 18:43:22 as you have to parse all regex escapes too 18:43:37 ehird: reminds me of Perl 18:43:57 MizardX: how do you do it? 18:44:04 regex :) 18:44:12 you can't parse regexes with regex. 18:44:17 MizardX: 18:44:23 /[abc/def]/ 18:44:46 /(?:\\.|[^\\])*/ 18:44:54 /(?:\\.|[^\\/])*/ 18:44:57 does not match /[abc/def/] properly. 18:45:38 No, you need to escape the / 18:46:13 iirc, perl disagrees with me. 18:46:36 ehird: you need to escape / in [] in Perl m// I think 18:46:47 because it finds the end of the regex first 18:46:50 then parses its insides 18:48:05 i should probably do like MizardX's interp and lex it all first. 18:49:02 -!- KingOfKarlsruhe has joined. 18:52:10 -!- Corun has quit ("HAMMER POWER"). 19:01:49 (?:(/(?:(?:\\.|[^/])*)/|#[^\n]+|{|\)|}|;|([a-zA-Z]+)|\||,|\+|\(|:|\.|"(?:(?:\\.|[^"])*)")\s*) 19:01:54 MizardX: think that'll parse redivider? :D 19:02:03 well 19:02:04 needs ordering ofc 19:02:06 but whatever 19:02:19 making redevider in redevider? 19:02:24 nah 19:02:27 just making lexing easy 19:02:56 o 19:03:08 better one: 19:03:10 (?:(([a-zA-Z]+)|[(,):|+{;}.]|"(?:(?:\\.|[^"])*)"|/(?:(?:\\.|[^/])*)/|#[^\n]+)\s*) 19:04:25 ::= {letter or digit} 19:04:35 {...} = many 19:05:02 ([a-zA-Z]+|[(,):|+{;}.]|"(?:(?:\\.|[^"])*)"|/(?:(?:\\.|[^/])*)/|#[^\n]+) 19:05:05 final version, probably 19:05:07 as long as it works 19:06:04 [a-zA-Z0-9]+ 19:06:09 oh 19:06:11 right 19:06:11 duh 19:06:34 -!- nooga has joined. 19:06:43 hello :> 19:06:49 yo 19:06:53 :) 19:07:31 [^\W_]+ :) 19:07:43 MizardX: I see no _ 19:07:49 also, that's \w 19:08:25 \w = [^\W] = [A-Za-z0-9_]; [^\W_] = [A-Za-z0-9] 19:08:31 ah, right 19:08:38 very clever & evil 19:09:48 well 19:14:16 [[:alnum:]] is also very obvious, though a couple of letters longer. 19:14:45 i wonder if it's possible to generate a tiny bit of x86 machine code, place it in the char array and then call it as a C function, all in runtime ofc 19:14:54 stupid queston, it is possible 19:15:02 Sure. 19:15:02 though i never tried ;| 19:15:05 I do that in jitfunge. 19:15:16 (Although it's a mmap()'d block with PROT_EXEC privileges.) 19:15:25 a 19:15:29 (A general malloc()d block might not be suitable for executing code.) 19:15:41 why? 19:15:51 nooga: it might be placed somewhere marked nonexecutable 19:16:00 as an anti-buffer-overflow message 19:16:55 can i read some sources with such neat trickz? :> 19:17:21 I have a very preliminary tarball of jitfunge in the web, but that's really not a pleasant thing to read. 19:17:22 fizzie: doesn't jitfunge do something like that? 19:17:26 ais523: Yes. 19:18:16 giev 19:18:26 giev sauce! xD 19:18:50 nooga: perhaps a quicker response could be gained by using english 19:18:54 * ehird just sayin' 19:19:03 http://zem.fi/~fis/jitfunge-export.tar.gz if I recall the URL correctly. 19:19:18 That version is somewhat buggy, though. 19:19:38 (That is not to imply that I'd actually *have* a bug-free version; I don't.) 19:20:13 ehird: yea, currently i'm fascinated by speech used by 4chan retards 19:20:23 i gathered 19:21:24 fizzie: i just need the runtime execution schema 19:21:46 nooga: so you want fizzie to do all the work for you 19:21:48 cmon :D 19:21:54 Well, that's easy. 19:22:22 mmap(..., PROT_READ|PROT_WRITE|PROT_EXEC, ...); -- then just write there, cast it to a function pointer and call it. 19:22:30 ah 19:23:14 It's there in the "AsmFunction" class if you want to look at how jitfunge does it. 19:23:28 Not too tricky, anyway. 19:24:23 + i must generate all that stuff that gcc does in functions to seamlessly imitate a 'real' function 19:25:01 Well, sure, you need to know your platform's and compiler's calling conventions. 19:25:12 rrright 19:25:31 what is that SConstruct file? 19:25:49 It's a scons build file. 19:26:07 (And SCons is a make-replacement.) 19:26:33 Can you declare a function-pointer as __stdcall, __cdecl or __fastcall ? 19:27:21 I assume you could; at least it sounds useful. 19:27:56 wow 19:28:07 Assembler class looks nice :>~~~ 19:28:34 It's just a x86 code generation tool. Very idiosyncratic, too; probably not too friendly to use. 19:29:56 The put_call methods do only calls to the specific types of function pointers I use, and sp_load/sp_store are about moving the Befunge stack pointer I keep in the ESI register... it's not really very generic. And it only contains those x86 opcodes I've happened to use. 19:30:57 yea 19:31:01 i can see that 19:31:22 but i will need to write something more or less similar 19:31:47 you know what's cute? 19:31:49 LLVM might be worth thinking about for code generation, too. 19:32:23 I did all that stuff from scratch just for fun. 19:32:24 watching python try out all self-avoiding paths. 19:32:51 oklopol, eh? 19:33:17 all paths on NWSE where the path doesn't intersect itself. 19:33:18 oh, didn't knew that LLVM exists 19:33:20 thx 19:37:43 it's a bit unfortunate the little guy will never grow up to be much more than 15 :< 19:37:59 wat 19:38:19 my self-avoiding path wormy, it'll never grow up to be even 15 cells long 19:38:20 he? 19:38:28 lol 19:38:29 because that'd take ages :| 19:38:34 speed it up 19:38:38 by 1000x 19:38:46 i made it skip every 200th iteration 19:38:59 but that didn't look nearly as cute 19:39:08 also it starts to get stuck then. 19:39:20 because there are, occasionally, big gaps between two self-avoiding paths 19:43:49 http://www.hacker.org/hvm/ seen this? 19:44:02 a bit lame i'd say 19:44:28 i have developed a compiler targeting that 19:44:40 though loops are a bit tricky 19:45:15 yeah looks like it 19:47:56 jump instructions must jump over corelated jump instruction + literals of variable length = tricky part 19:48:33 yeah but isn't it enough to push the amount of jumps just before the jump instructions 19:49:00 doesn't sound too hard if you're making a compiler, might be annoying manually, if you were programming directly in the lang 19:49:41 "amount of jumps" 19:49:42 lol 19:49:47 i meant the length of the jump 19:49:58 Since it's obviously not trying to be an especially hard-to-program language, it really could have a "push literal" instruction instead of just 0-9. 19:50:27 it's probably designed to be a trivial to implement langauge. 19:50:30 *ölanguage 19:50:33 ... 19:50:35 *language 19:50:56 hyyy 19:52:42 compiling while is like: 19:52:46 and now 19:53:32 adress of end must include length of adress of beggining and vice versa 19:54:02 yes, but that's not too hard, you can just pad the computation to be the same length everywhere. 19:54:05 sh... 19:54:09 It's still trivial if you're not a perfectionist and can stand a couple of nops here and there when your literals happen to be unexpectedly short. 19:54:14 that's what i've done 19:54:14 yeah 19:54:17 using nops 19:54:21 spaces 19:56:41 Do you use something clever to find the shortest way of pushing a particular literal, or just something boring like base-9 numbers with x+9*y+9*z+...? 19:56:56 hmmm 19:57:05 you can call it clever 19:57:20 let me refresh my memory and explain 19:57:47 (I'm partially away, so I may not respond with the appropriate "um"s and "oh"s. Hopefully someone else is willing to do that part.) 19:59:48 >>> parse(lex('abc(a,b)')) 19:59:48 [('decl', 'abc', ['a', 'b'])] 19:59:49 gettin' there 20:00:18 -!- KingOfKarlsruhe has quit (Remote closed the connection). 20:00:34 well 20:00:47 it's an uuuuuuuuuuugly ruby function :D 20:00:52 http://rafb.net/p/GlTDVw34.html 20:01:28 ruby multiplies strings 20:03:55 but works 20:03:57 irb(main):025:0> literal(43629) 20:03:58 => "99996*5+*7+*5+*6+" 20:05:09 That looks like a base-9 number to me, really. 20:05:40 nope 20:06:15 -!- Asztal has joined. 20:06:18 6*9^4+5*9^3+7*9^2+5*9+6 20:06:24 What else is it than a base-9 number? 20:06:56 that cannot beeee.... noooooooo :C 20:07:20 but seems to be shorter than normal base 9 notation 20:07:55 "992+*1+" 20:08:10 (9+2)*9+1 20:08:47 this is 100 20:09:09 You could still write it as "69*5+9*7+9*5+9*6+", which is the base-9 notation (in a stack-based language) that I first thought of. 20:09:19 1*9^2+2*9+1 20:10:09 Obviously no-one would write it as 69999****5999***+799**+59*+6+. 20:11:06 99*29*1++ vs 992+*1+ 20:12:25 so it's just base 9 in written in a bit more intelligent form 20:12:37 -!- Mony has quit ("Join the Damnation now !"). 20:16:00 Anyway, I was just hoping for something that'd give "88*0^*" instead of "9995*5+*5+*1+" to push 4096. Not that I'd probably have bothered either. 20:17:13 hm 20:18:13 -!- Deewiant has quit (Read error: 60 (Operation timed out)). 20:18:33 it shouldn't be so hard 20:21:14 factorize, build a tree, find identical nodes or try to optimize and generate the code 20:21:16 Sure it should. It's pretty close to the Kolmogorov complexity. 20:21:33 Well, I guess it shouldn't be hard to get *something* that might work. 20:21:43 But that sort of thing won't use loops at all. 20:22:22 cig break, need to think about my lameness 20:24:14 Let's say you want to push A(4,4) or something; it's quite likely that the shortest way (or at least a good way) to do that is the recursive definition of A, but I wouldn't want to have to write some code that'd grok things like that. 20:24:25 Well, given the size of A(4,4) maybe you don't need to push it often. 20:25:23 yeah it's basically kolmogorov complexity. 20:26:11 That c/$ pair is a bit silly; why does it push the program counter and not the program counter +1? 20:26:32 -!- Deewiant has joined. 20:27:29 Well, maybe it's because $ increments afterwards. Okay, then it makes sense. 20:28:21 hehe 20:28:42 it's sooo hackerish 20:29:13 Personally I think it's a bit boring; it's like unefunge with SUBR. 20:29:24 And no going backwards, either. 20:29:40 Of course I guess it's not trying to be especially interesting, but still. 20:29:42 implementation of && || and < > >= <= == was somewhat entertaining 20:30:27 ah, the whole hvm thingy is just a platform for problems like floodfill etc 20:30:37 My implementation of Funge-98's ` (which is basically >) uses no conditional jumps. (Just a conditional set.) 20:37:15 uh 20:38:24 -!- ehird has left (?). 20:38:28 -!- ehird has joined. 20:39:04 -!- kar8nga has joined. 20:40:12 i need to code something at least a bit hacky 20:40:25 my skills are getting worse and worse 20:40:37 nooga: write an INTERCAL to Malbolge compiler 20:40:45 nope 20:47:43 -!- Asztal has quit (Read error: 110 (Connection timed out)). 20:55:57 -!- oerjan has joined. 20:57:47 i'd build a processor from transsistors or sth 21:00:02 __main__.RedividerSyntaxError: Around line 1, column 11: Expected rparen, got string 21:00:03 odd. 21:07:52 Could you simulate logic gates with missiles/anti-missiles missiles/ and so on? 21:08:12 i have this feeling this would be a once-only simulation 21:11:34 and ended up opening and closing alternately for several hours 21:11:49 oerjan: seriously 21:11:56 it's an automatic Door 21:12:10 and when it closed it triggered the someone's trapped behind the door sensor 21:12:17 so it opened again for health and safery reasons 21:12:18 your department sounds like it has a door curse, or a ghost. try an exorcist :D 21:26:19 The set of escape codes must be prefix-free and all other escape codes are undefined. <-- ahem, i see both \SO and \SOH in the python code 21:26:38 oerjan: 21:26:46 nd \X, where X is an ASCII character mnemonic (NUL through US and DEL). 21:26:49 ITT: We read the specs 21:26:56 now, who wants to debug my parser 21:27:17 ehird: the spec is contradicting itself 21:27:26 how 21:27:52 because the mnemonics are _not_ prefix free. both SO and SOH are mnemonics (assuming MizardX has them right) 21:29:11 yep, Shift Out and Start of Header 21:30:45 ah 21:30:49 well, lol :D 21:30:56 MizardX: also you forgot DEL one way in http://paste.eso-std.org/v 21:31:03 in mine, SOH wouldn't work 21:31:05 it'd be SO, then H 21:31:15 and you know what 21:31:17 i don't care 21:31:17 :P 21:31:56 which was the point of trying to require prefix freeness in the first place, i assume 21:32:41 MizardX: (in escapes_re) 21:33:37 clearly \SOH should have the same effect as . . in HOMESPRING 21:34:42 which is? 21:34:53 oerjan: it causes a temporal paradox 21:35:03 the reason is that dot space is an escape for space 21:35:08 space dot is an escape for dot 21:35:15 *kaboom* 21:35:50 and dot space dot is ambiguous, and instead of addressing this problem the person who specced out HOMESPRING said that conforming implementations had to cause a temporal paradox if this happened, and as a result there are no conforming implementations 21:36:13 -!- KingOfKarlsruhe has joined. 21:36:15 write it in twoducks 21:37:08 very fishy 21:37:28 Added DEL, and switched SO/SOH. It'll get uploaded on next version 21:38:28 MizardX: wanna debug my parser? :} 21:39:37 I could look at it... but not right now. 21:40:16 i guess the prefix free part of the spec will just have to be removed 21:41:52 or 21:41:55 remove the stupid mnemonic thing 21:42:36 * oerjan makes it parse greedily 21:49:37 i wonder if it's possible to generate a tiny bit of x86 machine code, place it in the char array and then call it as a C function, all in runtime ofc 21:50:56 i recall reading that the ghc haskell compiler uses that for it's ffi interface, and that this gave trouble when trying to use it with a secure linux implementation 21:51:59 because the security includes disallowing self-modifying code 21:52:38 (SELinux) 21:53:38 Making stack and heap non-executable is quite common, but I would think at least some systems still allow executing code from memory area that's been explicitly requested for that purpose. 21:54:28 yeah, this was about security-enhanced linux 21:55:01 THISMAKESNOSENSE 21:55:04 (About that in SELinux:) "If the program really needs this behavior there is no really easy way out. One possibility is to create an anonymous file (just unlink it after creation), size the file using ftrunctate, and then map the file in two places. In one place map it with MAP_SHARED and write permission but without execution. For the second mapping use execution permissions but no write permissions. This might be a bit confusing at first but can be handled." 21:55:38 someone fix my parser 21:57:31 Parsing is a solved problem, as someone famous said. 21:57:45 so is your mom 21:57:46 ooh burn 21:59:05 solving problems is a solved problem. 21:59:28 -!- kar8nga has left (?). 22:07:28 my parser works 22:07:29 ^.^ 22:14:06 ehird: Give me a link. I'll look at it now. 22:14:16 hehe, sure 22:14:20 I'll paste the relevant part 22:14:41 MizardX: http://paste.eso-std.org/w 22:14:47 with some inspiration from yours :) 22:15:18 it's a compiler 22:15:20 obviously 22:15:21 :p 22:15:23 well, it will be 22:15:24 that's just the parser 22:16:14 token.match(code[index:]) == token.match(code,index) 22:16:23 oho 22:16:28 i was not aware that existed. 22:18:08 MizardX: um, isn't del 127? 22:18:09 not 177 22:18:09 in yours 22:18:17 177 octal = 127 decimal 22:18:27 MizardX: python \n is decimal 22:18:28 iirc 22:18:36 huh 22:18:36 its not 22:18:37 weird. 22:18:38 -!- KingOfKarlsruhe has quit (Remote closed the connection). 22:19:23 ok, parser all done 22:19:26 now for the compiler!! 22:19:28 :D 22:19:33 you don't allow whitespace before the first token :P 22:19:56 MizardX: that's why you .strip() the input string. 22:20:04 What were you compiling it to? 22:20:08 i could put that in parse :P 22:20:13 fizzie: python first, then c if that goes well 22:20:21 i'll c if it does 22:20:22 :-p 22:20:37 oerjan: pun alert! 22:25:38 YOU KNOW I HATE PUNS ----### 22:25:53 lulz 22:26:38 ehird: "A name without the list of parameters denotes the variable if it is in scope, the parser otherwise.". You threat all names without parens as variables. 22:26:39 CRUSH THEM LIKE FLIES, I SAY 22:26:50 * oerjan turns down the volume 22:27:00 MizardX: that's handled by the runtime. 22:27:06 (the variable will override the parser) 22:27:16 and calling will be done in a way specialcasing that 22:27:16 sooooooo 22:27:35 i hope i dont have to do scope analysis at compile time 22:27:36 :( 22:28:16 variable names are static, so they will always only refer to the previous declaration. 22:28:21 yeah 22:28:26 still means i have to do analysis 22:28:26 :P 22:32:27 Well... I didn't spot any other bugs. Good job so far. 22:33:33 * ehird makes all regex's precompiled in the output 22:36:36 Precompiled regex'es in python? 22:37:10 o 22:37:29 MizardX: yaeh 22:37:30 *yeah 22:37:55 I assume that means "will be compiled when the Python script starts", not "precompiled" in the most strictestest sense. 22:37:59 Yes. 22:38:12 That makes more sense 22:40:55 hmm 22:40:57 a + b is just 22:41:07 hmmm 22:41:10 it returns the result of b, right? 22:41:19 i.e. when giving it stuff, it throws the result of that fed through a away 22:41:36 -!- jix has quit ("..."). 22:41:59 Or... what? 22:42:41 I think it's them concatenated, based on the Underload interp MizardX pasted 22:42:43 but I'm not sure 22:42:55 Can't parsers return things other than strings? 22:43:57 The plus sign denotes concatenation. First, the input string is fed into the left parser. If it succeeds, then the new input string is fed into the right parser. If it succeeds, the concatenation also succeeds, returning the string concatenation of the two result strings as the result and the input string of the right parser as the new input string. 22:44:27 I guess so. Huh. 22:44:29 They can only return strings. Though they can also both soft and hard fail. 22:44:35 Soft/hard fail is confusing, yeah. 22:44:43 I'm representing it as two seperate python exceptions, is that right? 22:44:55 Soft fail is like a null result. Hard fail is like an exception. 22:45:15 So a parser returning "" soft fails? 22:45:33 "" sounds like succeeding to me. 22:45:40 It's just an empty string. 22:45:54 [[soft fail is like a null result]] 22:46:01 But "" is not like a null result. 22:46:08 A soft fail in the middle of a block, argument list or concatenation results in a hard fail. 22:46:22 MizardX: does this parser soft fail: 22:46:23 foo: "". 22:46:28 no 22:46:33 ok 22:46:39 succeeds with an empty string result. 22:46:42 im just finding it hard to distinguish between hard/soft failing 22:47:25 Soft fails becomes important for alternations. A soft fail for the left child results in that the right child gets parsed instead. 22:47:40 why not just a regular fail? 22:47:44 fail for left child -> right child 22:47:49 and no hard/soft 22:48:20 Strings always succeeds. Regexes can either succeed or soft fail. 22:48:27 right, but... 22:48:29 why not just have one type of fail 22:48:53 No hard fail? 22:49:09 What's the problem with no hard fail? 22:49:31 My guess is that you might want to have a "this failed completely, don't even try to continue messing around" type of failure. 22:49:45 I guess it so it could potentionally be run on input with no back-tracking capabilities. 22:50:10 Alright. 22:51:26 Hmm. 22:51:42 + and | are... whatever the word is for not mattering about left/rightness, right? 22:51:48 (a + b) + c == a + (b + c) 22:51:53 and (a | b) | c == a | (b | c) 22:51:57 yes 22:52:00 associative 22:52:26 MizardX: except... if the first hard/soft fails 22:52:28 it fails the same way 22:52:30 but if the second does 22:52:33 in any way 22:52:35 it hard fails 22:52:40 so, it matters what exactly the escond is 22:52:51 so they aren't, are they? 22:53:03 it's a + (b + c) in the spec, anyway 22:53:28 if b or c soft fails in either case, the whole expression hard fails. 22:53:48 yeah 22:53:53 you're right 22:55:28 Soft fail no the last branch on the alternation on the other hand, only causes the whole expression to soft fail. 22:55:54 * ehird has to structure, oops. 22:55:56 *restructure 22:56:04 can't do a + b without each subparser being a seperate function 22:56:09 so i need to do that for a | b too 23:00:37 so 23:00:45 i think i should have some breakfast. 23:00:52 since it's tomorrow already 23:00:53 weird idea 23:01:40 is it? what's weird about eating 23:09:11 I'll go to sleep now. Need to get up in a few hours. :S 23:10:43 ehird: One problem for you; How to check if two strings are equal in Redivider, without hard-failing. 23:10:54 Hrrrrrrrrm. 23:11:04 MizardX: is that even possible 23:11:16 wait 23:11:18 that's easy 23:11:28 i think 23:11:38 MizardX: got it, i think: 23:12:21 wait, no. 23:12:22 hmm. 23:13:06 ais523: ping 23:13:49 pong 23:13:55 yay, gcc-bf's build system works 23:14:04 at least for an initial compile 23:14:08 next step: make it work as a Makefile 23:23:16 Hum, if you've got a string in variable 'a' and another in variable 'b', and you want to test for their equality, and you happen to know X's not in the string, can't you just do /([^X]*)X\1/ a + "X" + b ? 23:23:24 Not quite generic, of course. 23:25:56 Uh, meaning /([^X]*)X\1/ [ a + "X" + b ] there, of course. For some reason read the "parser_1 [ parser_2 ]" without the brackets. 23:26:13 I've never done anything with that language. 23:26:31 if the regular expression fails, then re[...] will hard fail 23:26:39 wb MizardX? :P 23:26:45 heheheh... Nice work, ais523. 23:26:57 MizardX: btw, i think i have an idea for the comparer 23:27:26 I have an idea: Call it the "comparator" :P 23:28:30 MizardX: 23:28:30 equal(a, b): { /$/[a]; /$/[b]; "equal" } | { /$/[a]; "not equal" } | { /$/[b]; "not equal" } | { ha: head[a]; hb: head[b]; equal(ha, hb); equal(tail[a], tail[b]) }. 23:28:31 head: /(.)/. 23:28:31 tail: /.(.*)/. 23:28:35 needs the one-character case, but still 23:29:14 /regex/[input] will hard fail if the regex soft-fails 23:29:37 Causing the whole | to hard-fail. That's one tricky language. 23:29:48 mmph. 23:30:37 one way would be {/regex/; body}[input] 23:31:22 as long as body doesn't fail 23:31:53 or ({/regex/;body}|alt)[input] 23:32:04 How would that work? Won't the block instantly hard-fail if the regex fails? 23:32:21 not for the first line 23:32:33 "If the first parser soft fails, the block soft fails. If any other parser fails, or the first parser hard fails, then the block hard fails." 23:32:39 Why not? 23:32:51 Oh, right. 23:32:57 The regex will only soft-fail there. 23:35:42 hmmmmmmmmmmmmmmmm 23:35:47 anyone who knows about prolog: 23:35:55 is it possible for a predicate to cause a new statement (axiom, whatever?) 23:35:56 like 23:35:57 you can do 23:36:00 pred(X) :- condition 23:36:00 but 23:36:02 can another predicate 23:36:02 state 23:36:03 pred(X) 23:36:12 so that even if the condition it was stated on becomes false, the axiom remains? 23:36:33 ehird: assert(...) 23:36:50 oerjan: so I can do 23:36:57 makeFoo(X) :- assert(foo(X)) 23:36:57 then 23:37:00 makeFoo('hi') 23:37:06 and => foo('hi')? 23:37:15 yep iirc 23:37:22 | ?- assert(foo('hi')). 23:37:22 uncaught exception: error(existence_error(procedure,assert/1),top_level/0) 23:37:37 ah 23:37:39 works with swi 23:37:46 yay it works 23:37:46 :) 23:37:54 oh right there are some technicals 23:37:55 You can also retract/1 things. 23:37:59 awesome 23:38:07 my game of prolog in nomic shall pwnz0r!!11 23:38:11 you may need to declare foo first in some implementations 23:38:15 eee 23:38:19 oerjan: hmm 23:38:20 like just 23:38:21 foo.? 23:38:26 or...what 23:38:30 if i want no defaulted predicates... 23:38:32 did someone ever implemented something like esoteric prolog? 23:38:34 eh 23:38:42 nooga: no, btu ais523 designed Proud or was it Pound 23:38:44 which is uncomputable 23:38:45 i don't quite recall how 23:39:50 btw: 23:40:02 foo(X) :- not(bar(X)), assert(...) 23:40:03 I've done a Scheme interpreter in Prolog; it felt a tiny bit esoteric-y, even if both involved languages are so mainstream. It's not "esoteric prolog" in the sense you meant, though. 23:40:07 youre not meant to use not in prolog are you? 23:40:16 you're meant to use cut aren't you 23:40:17 and i forget how 23:41:40 Maybe you could just foo(X) :- bar(X), !, fail. foo(X) :- assert(...). or something, but I'm not sure if that's any nicer. Not a Prologer, though. 23:41:57 ehird: ah you declare it with dynamic 23:42:08 ah 23:42:21 http://gollem.science.uva.nl/SWI-Prolog/Manual/dynamic.html 23:42:26 thanks 23:42:52 dynamic(player). 23:42:52 register(email, name) :- not(player(email, N)), assert(player(email, name)). 23:42:54 discuss! 23:43:20 No permission to modify static_procedure `(dynamic)/1' 23:43:20 D: 23:43:24 ehird: dynamic player/2, actually 23:43:30 ah 23:43:40 still: 23:43:41 ERROR: (/Users/ehird/Documents/Code/nomic.pl:1): 23:43:41 No permission to modify static_procedure `(dynamic)/1' 23:44:17 also 23:44:20 needs to be Email, Name 23:44:21 obviously 23:44:46 but yeah 23:44:49 dynamic no worky :( 23:45:00 i saw prolog implementation in ruby that permitted using prolog inline 23:45:17 bcs it was coded using ruby's syntax awesomness 23:45:20 pwnage 23:46:01 nooga: yeah, seen it 23:46:43 yay it works 23:47:18 hmm 23:47:25 * ehird wonders if you can dump the state of the prolog world to a file 23:48:56 ehird: you need :- dynamic player/2. see the link above 23:49:01 yeah 23:49:02 :) 23:49:30 * ehird tries to remember the if/else syntax in prolog 23:49:31 ah yes 23:49:34 X -> Y; Z 23:51:49 hmm 23:51:55 i wonder how you give a reason for failing? 23:51:58 there's just fail/0 23:56:44 i'm not sure that makes sense 23:57:02 well, true 23:57:07 i'll just build it into the infrastructure 23:57:13 as in, commands can be replied to 23:57:16 so i'll just make it part of the reply 23:58:37 hmm 23:58:54 there are exceptions though 23:58:54 how come the format predicate always outputs, isn't there a way to get it to put the output in an atom? 23:59:37 aha: 23:59:42 format(atom(Foo), ...)