2008-01-01: 00:01:25 oh, happy 2008 00:02:12 -!- Traveler2 has joined. 00:02:27 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 00:03:06 -!- Traveler2 has quit (Client Quit). 00:16:32 ΧΧΠΙΙΙ 00:16:47 not for another 7 hours 00:16:59 no 00:17:01 it's 00:17 00:17:01 :P 00:17:05 in gmtland 00:17:06 no 00:17:09 it's 17:17 00:17:20 (getchar()+1 || 1) - 1 /* clever trick for a BF-getchar */ 00:22:47 二千八 00:23:57 hello calamari 00:24:05 hi ehird` 00:25:44 -!- pikhq has joined. 00:26:23 hello pikhq 00:27:08 ‫תשס״ח 00:27:22 damnit haskell 00:28:13 What does this mean? Happy jew year? 00:28:40 hahaha 00:30:06 ፳፻፰ 00:30:30 hope you guys have all these fonts, otherwise sorry for the line noise :) 00:30:50 Don't have the last one. 00:30:59 all but last 00:31:28 random esoteric idea 00:31:36 there's probably irc-alikes with s-expressions 00:31:39 Ge'ez or Ethiopic has been assigned Unicode 3.0 codepoints between U+1200 and U+137F 00:31:51 but what about irc alikes with stack-based text 00:31:51 like forth 00:31:51 or postscript 00:32:12 Random esoteric idea. Transmit pieces of code to a million monkey with a million typewriter. 00:32:18 Then, magic happens. 00:32:30 unicode is evil 00:32:56 bsmntbombdood: no, unicode is wonderful 00:32:59 i luff unicode 00:34:19 Why is yunicode evil? 00:35:01 Unicode is full of chars you will never use. 00:35:22 3 terabites of it are just asian characters. 00:35:24 -!- slereah_ has changed nick to Slereah. 00:35:42 English is evil! 00:35:57 English is full of words you will never use. 00:36:11 Slereah: I think asian people may disagree. 00:36:31 The phone book is evil! 00:36:43 The phone book is full of people you will never speak with. 00:36:56 bsmntbombdood 00:37:01 what 00:37:07 And let me not even _start_ on wikipedia. 00:37:07 you keep saying this but I don't understand why 00:37:10 My sister was once bitten by a mse 00:37:39 R6RS is evil, it's full of stuff you'd never want to use. 00:37:41 is that like a moose, except with an Inspector Closeau accent? 00:37:42 oh wait, that's true 00:38:01 Heh. 00:38:01 who the hell wrote R6RS 00:38:07 lol r5rs 00:38:09 *6 00:38:25 faxathisia: various people's arses 00:38:26 Everytime I read this acronym, I can't help but think of a little robot 00:38:37 yeah 00:38:39 R2D2's cousin or something 00:39:29 R2RS was pretty sucky 00:39:29 :P 00:40:06 hebrew don't celebrate new year anyway 00:40:14 not today at least 00:40:42 I'm a jew, and I don't care for the jew calender! 00:40:50 Slereah: are you jewish or are you a jew 00:40:57 hey what a coincedence, i'm not a jew either! 00:40:58 big difference :-) 00:41:09 bsmntbombdood: Slereah *is* a jew 00:41:11 or jewish 00:41:17 Define both terms. 00:41:53 oh i misread 00:42:32 Slereah: Jewish means you adhere to the Abrahamic, one-mega-psychotic God religion 00:42:45 Jew means your heritage is Jewish 00:42:57 I'm an atheist. 00:43:47 http://en.wikipedia.org/wiki/Quinary 00:43:53 someone figure out 2008 in that 00:43:58 :) 00:44:20 I get lost between 100 and 125 00:44:44 according to the calculator I need to encode 401 + 3 00:44:55 31013 00:45:05 err 5 * 401 + 3 00:45:43 1013? 00:46:34 hmph 00:46:37 Hm. Maybe not 00:46:57 Fuck that, I'll just use Mathematica 00:46:58 'hello world' * 'main' channel say 00:47:01 dambumiriw dambumirri rulu vs dambumirri dambumirri rulu 00:47:06 * 'main' channel join 00:47:13 hm. 00:47:31 showIntAtBase 5 intToDigit 2008 "" 00:47:32 31013 00:47:45 Forgot the 3. 00:47:51 pslbnf { primary = /2+2/ => "4" print null }; 00:47:55 (say (channel 'main') 'hello world') -> 'Hello, world!' 'main' channel say 00:52:00 i'm going to write a self-applicable scheme->forth compiler 00:52:02 that is all 00:52:30 what does self-applicable mean\a 00:57:15 faxathisia: it can compile itself 00:57:20 and the result can compile itself again 00:57:20 etc 00:59:28 * oerjan has seen the term self-hosting for this 00:59:36 oerjan: yes 00:59:47 but self-applicable is a better term 01:00:01 self-hosting implies that if you repeat the process multiple times, it'll 'stack up' on self-hosts 01:00:45 -!- bsmntbombdood has quit (Connection reset by peer). 01:01:22 -!- bsmntbombdood has joined. 01:03:56 ehird: Why don't you finish ISWYM first :P 01:05:35 faxathisia: 'cause it'll be a pain in the neck :P 01:12:11 -!- bsmntbombdood_ has joined. 01:17:15 -!- oerjan has quit ("Good night"). 01:17:35 someone should write a brainfuck->unlambda translator 01:17:47 then, reduced-unlambda->ski 01:17:50 then ski->iota 01:17:55 voila, bf->iota 01:18:13 -!- bsmntbombdood has quit (Connection timed out). 01:18:18 I don't feel very motivated right now. 01:18:20 brainfuck->unlambda translator souynds hardest 01:19:01 ok, bf->something-with-a-path-to-ski 01:19:08 How do you even make some sort of memory in Unlambda? Keep pairing elements? 01:19:55 Presumably, consing, yeah 01:20:00 bf->lambda-calculus might be easier 01:20:12 input should be specified in the prog!input form pre-compilation 01:20:22 and output should be extractable, somehow 01:20:36 so with a wrapper script, we could really have the slowest BF interp ever 01:20:47 Even slower than mine? 01:21:09 Don't be so sure, I'm working on a 1 tape version as we speak! 01:21:12 Probably 01:26:13 C question 01:26:24 does a signal handler call unwind the s tack? 01:33:45 brainfuck->unlambda isn't that hard 01:34:01 first just write a brainfuck->scheme 01:34:22 Then a scheme->unlambda. :p 01:34:24 reduced scheme 01:36:43 brainfuck->scheme should be simple, yeah 01:36:55 if you ensure no imperatives, you can ->unlambda 01:36:58 well, you could do imperative IO 01:37:02 but that won't survive the translation 01:37:09 thus output is not in R-unlambda 01:37:28 R-unlambda? 01:41:35 ehird`: No, the signal is called in the current context - the program continues executing where it was when the signal handler ends. So, no unwinding is done. 01:41:53 excellent 01:42:07 so, assuming i can get myself an invalid page in the right place, my signal handler just needs to realloc 01:42:13 the invalid page bit is the hard part 01:42:23 since even mmap makes no guarantees, unless you pass it the right flag, which can then make it fail 01:55:43 GregorR: any bright ideas? 02:24:14 GregorR: pingify 03:15:46 BF on a one tape Turing machine is quite annoying to do. 03:16:03 I don't have a simple way to load a file on it. 04:50:38 -!- GreaseMonkey has joined. 06:14:14 The program and the input both have to be in the tape to start with. Both are finite, and then you put the infinite brainfuck array after them. How are you setting tape state in the first place? 06:14:56 You'll need a marker to distinguish the program from its input. I suggest '!' of course :) 06:17:09 And then to separate the input from the array, hm. Maybe an EOF stored on tape. Then there are 257 tape symbols in total, which makes sense. 06:19:31 Well, of *course* you suggest !. 06:25:14 dbc : No need for input in the program 06:25:23 It's not just any Turing machine! 06:25:27 It's a choice machine! 06:26:17 I think my version work right now. 06:28:20 The tape looks something like this : http://farm3.static.flickr.com/2143/2153953116_145ff9967d_o.jpg 06:28:50 @ indicates the beginning of the code, $ the current position, LF the end of it. 06:29:12 for the beginning of the memory, or for the current position. 06:29:31 -!- faxathisia has left (?). 06:29:48 -!- faxathisia has joined. 06:30:29 Since the machine has to travel most of the memory and code for each instruction, it will probably be a whole lot slower than the 3 tapes version. 06:47:21 So it only handles brainfuck programs that don't take any input? 06:47:33 So, it handles P'' programs? 06:48:01 The Turing machine has an input function. 06:48:07 Ahhh. 06:48:33 choice machine being this : 06:48:35 "For some purposes we might use machines (choice machines or c-machines) whose motion is only partially determined by the configuration (hence the use of the word possible in 1). When such a machine reaches one of these ambiguous configurations, it cannot go on until some arbitrary choice has been made by an external operator. " 06:50:08 That's right, I think you said the 3 tapes version was slow. Why was that? 06:50:24 Well, because it is. 06:50:44 I tried some programs, some never finished 06:51:09 The mandelbrot.b ran for 10 hours, outputing two lines before I turned it off. 06:51:22 Does it average more than ten Turing instructions per brainfuck instruction? 06:51:50 Or did it take a long time to do each Turing machine instruction... 06:52:05 See for yourself! 06:52:07 http://paste-it.net/5500/ 06:52:10 Okay. 06:52:43 The number of instructions isn't fix. But there's less than 5 states per instructions read. 06:53:00 I think it's mostly the fault of the Love Machine 9000. 06:53:47 Well, actually, there's exactly 5 states for the brackets. 06:53:57 But other than that, it's usually 2. 06:54:30 One state to do the instruction, one to go back on the code and increment it. 06:57:08 Ah. Increment it, meaning move the code head right? 06:57:18 Yes. 06:57:32 That's the state g in the code. 07:05:39 I should put the unicode-like version online, too. 07:05:46 Errr, ASCII. 07:26:02 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:59:18 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide."). 10:12:38 http://www.codu.org/wiki/?title=Hydra // card game we invented at the New Years party 10:45:09 -!- slereah_ has joined. 10:57:53 -!- Slereah has quit (Read error: 110 (Connection timed out)). 12:09:24 -!- oerjan has joined. 13:24:13 -!- Hiato has joined. 13:24:25 Wassabi all :) 13:24:28 -!- RedDak has joined. 13:29:41 just chili'ng out... 13:29:58 cool, same here, after last night ;) 13:31:09 oh yeah, happy new year 13:31:17 yip, you too :) 13:31:46 PS: 8tt.org is back so Full 0 now sits back at http://www.full0.8tt.org 13:34:55 -!- Hiato has quit ("Leaving."). 13:50:29 -!- jix has joined. 14:21:05 "the new years party" 14:21:13 GregorR likes to pretend he's sociable 14:21:44 GregorR: it's ok, we understand you here 14:48:06 hey, he didn't say it was an offline party... 14:49:00 hm actually GregorR has to be sociable. he has to show off his hats after all... 14:50:39 Well, he could send photos on the interwebs! 15:11:11 -!- jix has quit (Read error: 145 (Connection timed out)). 15:12:05 -!- jix has joined. 15:25:34 -!- biribau has joined. 15:26:18 hi, prolog basics questions have site here? 15:33:39 -!- oerjan has quit ("Dinner"). 15:39:07 -!- biribau has left (?). 15:47:35 -!- Sgeo has joined. 15:48:59 Hi all 15:52:15 Anyone awake? 15:52:33 * Sgeo threatens to not work on PSOX if no one talks 16:00:47 Hi. 16:01:06 -!- slereah_ has changed nick to Slereah. 16:02:05 hi 16:28:12 wow, er, that's impressive.. i didn't know you could patternmatch lambdas 16:28:12 oklopol: you'd like that! 16:28:16 what? 16:28:29 why :\ 16:36:22 ((?:[^\x00]|\x00{2}(?:.|\Z))*)(\x00.*)? is the most important regex in PSOX? 16:37:38 Can that regex be made more efficient? 17:07:02 -!- Hiato has joined. 17:07:46 Hi Hiato 17:07:58 Wassup Sgeo :) 17:08:09 ((?:[^\x00]|\x00{2}(?:.|\Z))*)(\x00.*)? 17:08:25 say what? 17:08:46 That's the most important regex in PSOX 17:09:12 lol, regexp's are not my strong point :P (especially in Ruby) 17:09:18 Why, what does it do? 17:09:47 breaks a line apart into the outputted text with 0x00 0x00 etc. and the command part with 0x00 17:09:55 aha 17:10:03 oh yeah huh, ^\xoo 17:10:04 :) 17:10:26 so, anything news, perhaps a version I can start meesing with? 17:10:30 *messing 17:11:21 *new 17:11:38 meh, I hat tyops :P 17:12:23 x:xs can be used as a pattern matcher because a list can be represented as just one cons. a+b cannot pattern match because there's an infinite amount of conses for addition, 6=6+0=5+1=... now, if one were to introduce the concept of virtual cons cells into a language, and make a cons be a set of rules of dependence, so that an addition cell knows it's (result - b, result - a). 17:12:25 * Sgeo is working on the psox.types module 17:12:45 this way you could pattern match like the haskell n-1 pattern, but in a more sophisticated fashion. 17:13:11 well, haskell prolly has a much more sophisticated reason for that to work, but i don't know it, and i prefer my own ideas. 17:14:01 ?? 17:14:22 :), I generally prefer my own ideas too, over others that is. Some call it stubbornness ;) Oh, and I agree with Sgeo: ?? 17:15:26 these would be virtual cells of course, so when doing a pattern match for 5 on (n+3), 5 would be converted to an addition cell as (result-b, 3), where b=3 = (2,3), so n=2 17:15:50 IF the conversion into an addition cons cell should fail, the pattern match simply would fail. 17:16:11 this would be correct at least in this case, since only numbers can be subtracted from 17:16:19 I'm still not quite with you... but I guess it's not aimed at me :) (Otherwise ti would be allot longer) 17:16:25 Is this anything to do with PSOX? If so, please be warned that I don't have a drop of understanding of what you're talking about 17:16:51 but, you could also have the possibility to specify domains for which the conversion always works 17:17:13 is this part of the Graphica spec? 17:17:35 oh, right, in case in the final pattern, there were still cells that are defined in terms of other cells, the pattern itself would be incorrect, for example if you tried to pattern matchon (a+b) 17:17:37 *match on 17:17:53 ... 17:18:08 although, that could just take a random cons cell that represents 5 as an addition. 17:18:41 sometimes, all that matters might be that you separate the object into *some* other objects that, when consed, result into the original object. 17:18:56 not in the case of numbers and addition, prolly, but with lists, for example. 17:19:08 Sgeo: is he talking to us? 17:19:20 :) 17:19:30 this is very esolang-related, and not that high-level 17:19:33 so... yes? 17:19:37 anyway, i'll continue 17:19:40 :P 17:19:50 sure, don't let me stop you 17:19:58 If it's PSOX related, you are hereby REQUIRED to translate it into something that makes sense.. 17:20:01 just /ignore me for a while in case not interested, this is just may way to clear my thoughts, if okay. 17:20:22 Sure, proceed 17:20:38 so, for instance quicksort's pivoting, pmatch the list into lpart++[pivot]++rpart 17:20:41 I will interject when (rather if) I have something to say 17:20:47 because all we want is *some* pivot 17:21:15 (++ lpart (++ [pivot] rpart)) 17:21:36 if i didn't have this headache, i'd manually pattern match that 17:21:46 might be an interesting concept 17:22:04 but once again it's so clever yet simple it must already be in use. 17:22:08 er.. yes .. amm.. no .. whichever is more appropraite :) 17:22:18 well, not clever, but... fun? 17:23:07 sorry, was lost in my thoughts, so didn't read what you said between my messages 17:23:22 you didn't *get* that? in that case i'll happily explain 17:23:26 sure, no problem, and believe me, it wasn't important 17:23:28 i just assumed you don't care :-) 17:23:49 lol, I care, but don't *concentrate* 17:23:53 hehe 17:23:53 :) 17:24:01 do you know what pattern matching is? 17:24:14 amm, well yes (I think) 17:24:40 as in "The cat ate the mouse" pattern would be "at' twice? 17:24:47 or not 17:24:48 .... 17:24:51 nevermind 17:24:55 amm.. No 17:24:59 I don't 17:26:11 hehe 17:26:13 sooooo 17:26:20 like, if you have the list [1,2,3] 17:26:26 yip 17:26:33 that's basically (cons 1 (cons 2 (cons 3 nil))) 17:26:38 in lispy fashion 17:26:40 do you get that? 17:26:41 cons? 17:26:49 well, other than the cons, yes 17:26:51 construct, i guess 17:26:55 oh, ok 17:26:56 sure 17:27:08 it means (cons head-of-list tail-of-list) 17:27:14 where tail-of-list is usually the rest of the list 17:27:15 aha 17:27:19 cool 17:27:22 proceed 17:27:32 (with caution ;) ) 17:27:45 now, let's define a function that takes the second element of a list and returns that *2 17:28:03 ok sure 17:28:17 you could do it with L -> (tail tail List) * 2 17:28:26 where tail does (cons a b) -> b 17:28:29 got it? 17:28:33 1 sec 17:28:39 sdfapojoaifjg 17:28:42 sorry. 17:28:47 lol, wait, thinking 17:28:50 L -> (tail head List) * 2 17:28:59 think about the correct one, though :) the latter 17:29:00 ? which one 17:29:02 --- 17:29:04 FUCK. 17:29:06 ok, wait some more 17:29:08 :) 17:29:12 OKAY, that's incorrect too, sorry 17:29:14 headache. 17:29:17 meh 17:29:20 L -> (head tail List) * 2 17:29:36 means, take L as param 17:29:42 ooh 17:29:42 then return what's after -> 17:29:43 ok 17:29:52 wait 17:29:59 tail list of head is 2,3 17:30:02 not just 2 17:30:02 could explain my code if i invent the notation on the fly... 17:30:18 L = 1,2,3 17:30:21 yip 17:30:24 so tail L = 2,3 17:30:28 yes 17:30:30 so head tail L = 2 17:30:35 oh, I see 17:30:39 for a more imperative version 17:30:40 not tail of head 17:30:44 but head of tail 17:30:45 roger 17:30:47 :) 17:30:50 gotcha 17:30:53 im with you 17:31:27 L -> ListTail = tail List; SecondHead = tail ListTail; return SecondHead*2 17:31:33 although you already got it. 17:31:39 i just wanted to write that for some reason 17:31:45 sure 17:31:46 :) 17:32:22 okay, no the idea of pattern matching is, instead of explicitly taking the *head* of a list, we just take the list in as if it were already spliced into a head and a tail. 17:32:24 so 17:33:11 (: 1 (: 2 (: 3 Nil))), ":" is cons here, it's just a shorter word so i don't have to type cons, although this explanation is longer than all the conses i've ever written, so it is pretty useless. 17:33:34 ok 17:33:37 go on 17:33:40 so, we define the function as (: A (: B L)) -> 2*B 17:33:51 so, instead of just putting the param into a variable 17:33:59 we have a pattern we match for the parameter 17:34:10 aha 17:34:14 and inside the pattern, there are variables, that hold the parts of the parameter. 17:34:20 L being significant of the rest of the list? 17:34:32 this works because most data can be, and is often represented by a tree., 17:34:43 which you prolly know? 17:34:49 trees 17:34:51 yip 17:35:00 and somewhat Alpha Bet Pruning 17:35:08 *Alphabeta 17:35:11 and minimaxing 17:35:18 BFStmt=+|-|>|<|[BFStmt]|,|. 17:35:26 no, sorry 17:35:27 hmmm 17:35:31 alphabeta? 17:35:31 what the hell is that 17:35:38 what is what? 17:35:38 never seen it like that 17:35:45 BFStmt=+|-|>|<|[BFStmt]|,|. 17:35:47 oh 17:35:51 you claim it to be alphabeta 17:35:52 just a random notation. 17:35:57 oh, ok 17:36:05 | was jsut my way to separate possibilites for a branch 17:36:18 actually a pretty standard way 17:36:23 i don't know alphabeta... 17:36:25 oh, ok 17:36:36 well, its pruning, like minimaxing 17:36:37 anyway, L was the rest of the rest of the list. 17:36:40 except different 17:36:42 :) 17:36:49 cool 17:37:29 (: A (: B L)) -> 2*B can be written A:B:L->2*B if we notate : as infix and right grouping, right 17:37:31 ? 17:37:41 1:2:3:Nil is the list. 17:37:56 yip 17:37:59 get it 17:38:02 so... we pattern match as 1->A, 2->B, 3:Nil->L 17:38:30 actually, the cons representation is much clearer when you pattern match, just felt it'd look bad if i wrote it on irc. 17:38:34 so, actually L = 1->A, 2->B, 3:Nil 17:38:37 in other words 17:38:44 nope! 17:39:02 L would just be (: 3 Nil) 17:39:09 wa? 17:39:13 because A and B take the first two elements 17:39:18 L only gets the last. 17:39:25 oh, I see 17:39:37 just that the 3:NIL->L got me 17:39:39 yip 17:39:41 3:Nil 17:39:45 is the last one 17:39:48 roger 17:39:51 back with you 17:40:20 in (: A (: B L)) -> 2*B, (: 1[place of A] (: 2[Place of B] (: 3 Nil)[place of C])) 17:40:32 uhh that was ugly. 17:40:44 but 17:40:46 yueah 17:40:48 I get it 17:41:04 (: 3 Nil)[place of C] surely place of L 17:41:12 not C 17:41:13 anyhow, do you see what the function (4+A) -> A*2 would do given 2 as a parameter? 17:41:18 sorry, you are correct 17:41:35 i'm very bad at keeping the details right 17:41:40 sure, no prob 17:41:42 lets see 17:41:55 (4+A) -> A*2 17:41:58 given 2 17:42:17 it cannot actually be executed as straightforwardly as the list one, because a list IS (cons Head Tail), while a number is NOT (+ A B), but just a number. 17:42:18 surely 4 17:42:29 -4. 17:42:33 oh 17:42:39 A-4 * 2 17:42:49 indeed. 17:42:51 was my third guess 17:42:55 :) 17:43:05 (4+A) find such A that (4+A) = param, basically. 17:43:15 yeah, ok 17:43:33 just as the pattern match (: A (: B L)) meant "find A, B and L so that (: A (: B L)) equals the parameter" 17:44:03 ooh, ok, im starting to see the light now 17:44:08 good. 17:44:25 this is a trivial concept, but *very* interesting if you ask me 17:44:41 I'm glad I learnt it :) 17:44:42 not trivial as in "lol you should know it already", i meant like simple 17:44:49 cool 17:45:01 * Sgeo fails to understand Lispy stuff 17:45:19 no worries Sgeop, it took me this long to get it :) 17:45:24 *Sgeo 17:45:26 Sgeo: (Function Argument1 Argument2 ... ArgumentN) 17:45:42 where arguments can be sexps too. 17:46:00 (sexp is (A B C ... N) that is.) 17:46:43 basically, in lisp you take the program, which is a list (A B C .. N), you evaluate B, C.. N first, then evaluate the function A with the evaluated arguments. 17:46:58 B.. N are evaluated just like in A, in a recursive fashion 17:47:06 also, i suck at explaining right now, sorry. 17:47:38 :) No worries, teaching fools is a great gift (with reference to me, for the fools part) 17:47:47 anyway, Hiato: do you see why pattern matching for *any* pattern would be impossible? 17:47:57 i mean, for operators you can define yourself. 17:48:21 yes, infinte possibilties 17:48:25 *infinite 17:48:31 i did not mean that. 17:48:41 in the list case, you can do A:B unambiguously 17:48:42 then, no 17:48:47 yes 17:49:02 and with most operators, you can pattern match on some elements 17:49:08 like 5 -> (A+3) 17:49:17 a=2 17:49:20 sure 17:49:26 and [1,2,3,4,5] -> [1,2,3]++A 17:49:38 -!- RedDak has quit (Remote closed the connection). 17:49:49 a=5 17:49:51 roger 17:50:02 in there, A++B could do any split for a list, BUT if you do [1,2,3]++A you only get one list. 17:50:21 aha, yes, I see 17:50:27 ambiguity in pattern search 17:50:38 results in multiple possibilites 17:50:47 often, that is true for binary operators, : just happens to be an example of an operator where you can do it with two vars 17:50:49 or vagueness 17:50:53 yes, indeed 17:51:00 but, that was not my point 17:51:08 ok 17:51:14 a pattern should never have these ambiguities. 17:51:26 alright 17:51:41 it's the programmer's job to make them correct, and such that there is only one way to cut the object pmatched. 17:51:43 BUT 17:52:56 there is another problem 17:53:11 which is what? 17:53:16 we can make a function, whose converse makes us solve the halting problem or something. 17:53:47 amm.. ok 17:53:56 and, often functions are only easy to do one way, even though they actually have just one converse. 17:54:01 i'll show an example 17:54:13 sure 17:54:16 please do 17:54:18 @ is a function that takes a list of primes, and multiplies them. 17:54:25 ok 17:54:25 easy to implement 17:54:27 understand 17:54:34 no need to go urther 17:54:37 *further 17:54:38 L -> reduce * L 17:54:42 like modulus 17:54:54 modulus? 17:54:57 it doesn't mod :) 17:55:02 it multiplies the elements 17:55:04 no, no 17:55:10 I meant an easy one way thingy 17:55:13 remainder 17:55:17 @ [2,3,3,7] -> 16 17:55:19 5 mod 2 = 3 17:55:19 ... 17:55:26 lol, actually not 16 xD 17:55:27 but 3 * X =5 ? 17:55:34 blah 17:55:40 the other way areound 17:55:46 modulus doesn't have an unambiguous converse :) 17:55:47 but you get what I'm saying 17:55:53 that's the point 17:55:55 :) 17:55:56 no! 17:56:05 with the halting problem 17:56:14 and stuff 17:56:16 the primes 17:56:20 all the same 17:56:22 it's the programmer's job to ensure there always is an unambiguous converse for the function we are cutting. 17:56:27 err 17:56:31 pattern matching 17:56:33 ... 17:56:36 never mind 17:56:40 function we are pattern matching with 17:56:41 ok, anyway proceed 17:56:44 yeah 17:56:55 @ [2,3,3,7] -> 16 17:57:00 we where there 17:57:02 so, no if you have *any number*, you can always do the pattern match @L 17:57:14 and it's always unambiguous. 17:57:14 yes 17:57:17 yes 17:57:22 limited selection of primes 17:57:32 who's product is Number 17:57:34 get it 17:57:41 now, @ does multiplication, it's inverse does factorization. 17:57:48 roger 17:58:14 my idea was just to inject into an operator knowledge about it's reversibility 17:58:42 so, given @, you idea would be to say @(fatcorise) 17:58:43 ? 17:58:54 or !(ambigous) 17:58:56 ? 17:59:01 ? 17:59:19 ! being, say the modulus function 17:59:24 i'll show how it's used, not sure you got me fully here 17:59:26 or did you... 17:59:27 rather !(irreducibnle) 17:59:28 hmm 17:59:36 well, go ahead 17:59:41 provide an example 17:59:50 then I''l be able to say whether I understood or not 18:00:56 well, basically, you could do a factorizing function as follows: first the multiplication of primes: L :: [Prime] -> Int = L -> Product L 18:01:12 let's say our language defines a number type Prime 18:01:16 which represents any prime number. 18:01:26 go on 18:01:33 now, the factorizing function would be "@ L -> L" 18:01:37 whoooops 18:01:43 ... 18:01:45 lost me 18:01:51 @ :: [Prime] -> Int = L -> Product L 18:01:56 you see 18:02:02 aha 18:02:04 yes 18:02:11 @ L means multiply the primes in L to get the number they represent. 18:02:30 so, @ L as a *pattern match* means find such L that @ L is the parameter. 18:02:40 yes 18:02:41 I see 18:02:46 now, since the parameter is an integer, and @ multiplies a list of primes, it would factorize the number. 18:02:52 so kind of linear equationns 18:03:05 yeas 18:03:13 OOOHH OOOH 18:03:13 wait 18:03:21 were we to make @ also check that the list it's used on is sorted, @ L would automatically return a sorted list of prime divisors. 18:03:21 I think I get thwe whole plot 18:03:26 good :) 18:03:48 so, we can't make a universal patten mathcer 18:03:49 now, this is all my own thinking, i don't know if others think about patterns that much. 18:03:50 because 18:03:58 it has no way of knowing what the inverse is?? 18:04:12 rather 18:04:12 that is the basic problem, yes 18:04:16 the inverse procedure 18:04:21 hooray for me :) 18:04:28 and congratulations to you :D 18:04:39 there is a way to find a problem whose inverse is the halting problem 18:04:54 go ahead 18:05:06 it's just half the stuff i *taught* you i made up on the fly, i don't yet have that good an intuition on the general pattern matching. 18:05:12 i have no idea how to construct it. 18:05:16 (PS: THis is actually interesting now that I understand it :) ) 18:05:24 heh, i think so too 18:05:30 hrmm 18:05:31 well 18:05:32 perhaps i should add it into graphica........ 18:05:36 Yeah 18:05:39 that would be nice 18:05:48 not sure how it would come into play 18:05:52 actually, i was thinking, i'd make an esolang that provides automatical converses. 18:05:55 unlence referencing node trees 18:06:07 hrmm 18:06:10 and put it in the "super-turing" category 18:06:13 that would be aweosme 18:06:16 if possible 18:06:19 Oh yeah 18:06:28 then simply give it a function garunteed to terminate 18:06:33 and you solve the halting problem 18:06:38 (Hopefully) 18:07:10 yeah, it could be made a *best-effort* compiler. 18:07:20 Yeah, true 18:07:29 you can actually do stuff like A+3=7 in prolog too. 18:07:30 would be insanely hard though 18:07:36 really? 18:07:37 that just hangs, but it's there. 18:07:43 :) 18:07:44 well yeah, it's just it doesn't find it :) 18:07:58 but, the language allows you to ask it questions it cannot answer. 18:08:03 but I doubt you could go x^2 - 4 = 0 18:08:07 wicked 18:08:08 so, mine isn't more superturing than prolog. 18:08:15 it would be 18:08:25 you can't, and you can't really go A+5=0 either, since it just hangs... 18:08:33 if it could reduce things down to simpler elements 18:08:40 which are by default reducabel 18:08:48 and then solves for, or pmatches 18:08:53 hmm 18:09:09 indeed, i didn't even realize it'd automatically solve equations 18:09:10 so take x^2 - 4 =0 18:09:15 yip 18:09:17 :) 18:09:18 was thinking more list'y. 18:09:27 true 18:09:30 but even so 18:09:33 since i'm more interested in trees and graphs than numbers, usually 18:09:37 it would still be hellkish powerful 18:09:42 oh, I see 18:09:49 but no worries 18:09:56 you get it working in lists 18:10:00 and I gruntee 18:10:04 well, given that the language would *guarantee* that it find the inverse, yes, it would be powerful :) 18:10:09 that it will be able to do anything 18:10:20 :D 18:10:28 what you waiting for, get cracking :) 18:10:38 hehe 18:10:40 oh, hey 18:10:43 every function 18:10:50 is Pattern match -> Variable 18:10:52 xD 18:10:57 but anyway, I still say find things that are unambiguously reducable, and redice them, then pmatch, then build back up 18:10:58 you cannot do *any* computation! 18:11:07 true 18:11:09 very true 18:11:23 well, any computation in the result part. 18:11:37 simply proven by uncertainty principle ;) 18:11:46 actually, you could just have the pattern match, and have the result be a variable with # prepending it or something :) 18:11:50 hmm? 18:11:57 yeah, I like 18:12:05 the yopu can do mathematics in it :) 18:12:19 hrmm 18:12:31 but that would be more difficult to execute 18:12:31 that would actually be *really* esoteric, and actually i'm starting to feel this is quite brilliant! AND then i realize i'm making prolog ;) 18:12:41 ::::::::) 18:12:47 Well, not entirely ;) 18:12:50 lol 18:12:53 as you said 18:13:02 prolog dies when it sees a + 5 =1 18:13:03 well, prolog, but with a very different idea. 18:13:07 or whatever 18:13:09 precisely 18:13:17 I see real purpose for this creation of yours 18:13:20 * Sgeo keeps working on psox.types 18:13:22 beyond esotericality 18:13:29 ( :) ) 18:13:47 imagine that 18:14:06 a language which could solve functions, or pmatch, as the case may be 18:14:15 and then, naturally calculate inverses 18:14:24 that would be soo powerful 18:14:31 hmmmm, actually, it would lessen it's prologity, if you could help the language with the inverse, like specify that A+B=C --> A=C-B, B=C-A 18:14:42 yeah 18:14:48 call them, helper functions 18:14:49 :) 18:14:52 aha 18:14:56 then we get towards AI 18:14:56 yeah! 18:15:07 every function = helper annotations + pattern match 18:15:14 (wonders if the labgauge could solve for : itself) 18:15:18 wooho 18:15:21 I like that 18:15:35 very cool 18:15:40 *language 18:15:56 i'll start right after i've looked at the other channels, i was highlighted at about the time i wrote the initial idea on the chan ;) 18:16:09 lol, sure, go for 18:16:09 which was like an hour ago xD 18:16:10 it 18:16:12 lol 18:16:22 please please please, keep me updated on this one 18:16:48 (Oh, and this will also provide the freedom of sytax choice, removing all the funcky prolog) 18:16:52 *funky 18:16:56 *syntax 18:18:06 indeed. 18:18:09 oh, fuck. 18:18:09 *** A language is born **** 18:18:12 > 18:18:15 *? 18:18:16 a problem. 18:18:19 so : ? 18:18:22 ? 18:18:37 a chick told me to go fuck her, bluntly put :-) 18:18:44 damn 18:18:56 you missed it :P 18:18:58 ... 18:19:15 i'd actually prefer doing the language, to be honest, but i'm too polite to say no 18:19:16 run run 18:19:22 oh, lol, ok 18:19:25 and that was not a joke :\ 18:19:28 asdf 18:19:30 fdsafdsadf 18:19:32 aksdjl 18:19:37 ditto 18:19:43 so 18:19:44 say yes 18:19:49 and just take some paper with 18:19:51 ;) 18:20:01 okay, see ya, i'll keep ya updated -> 18:20:02 hehe 18:20:07 lol, cool 18:20:09 :) 18:20:16 cheers 18:20:18 oklopol, waiait, on IRC? 18:20:24 Sgeo: ? 18:20:26 lol 18:20:28 classic 18:28:56 Well, just grabbed Menuet OS 0.74b so gonna look around, be back late 18:28:57 cheers 18:29:03 -!- Hiato has left (?). 18:30:42 Sgeo: she asked that on irc, yes; the sex will prolly be the offline-type, though. 18:31:25 also, cya, 'll keep ya up to date on the lang -> 18:32:18 * pikhq laughs his ass off 18:34:11 -!- lby has joined. 18:34:25 -!- lby has quit (Client Quit). 18:39:52 "This is a python program that can convert bianry number( binary is a language that computers use to comunicate with other) to a normal digital number and the other way around." 18:39:55 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496778 18:40:01 Excuse me while I hurt someone 18:45:40 Hey Sgeo, 010010101000101010111 19:04:24 -!- ehird` has quit (Success). 19:28:21 -!- faxathisia has quit ("Leaving"). 19:29:06 Sgeo, that program is just awful. 19:34:59 -!- Hiato has joined. 19:35:07 Back 19:35:09 :) 19:39:36 wb Hiato 19:43:02 any notable progress Sgeo? 19:43:11 Working on types.py 19:43:17 cool 19:43:28 would you say Python is a good language to learn? 19:43:34 better than Perl or C, for example 19:43:38 or Ruby 19:48:03 Yes 19:48:08 Though I might be biased 19:48:33 Well, that's impossible as I asked for your opinion ;) 19:50:14 Any funky esolangs that you specifically enjoy? 19:50:26 Just trying to get some ideas, I want to design another lang 19:50:47 because the unnamed one is way to hard to programme in 19:50:55 and Full 0 is way to easy :) 19:54:49 *too 19:55:06 a man of few words :P 19:55:08 -!- calamari has joined. 20:07:05 -!- oerjan has joined. 20:13:31 -!- RedDak has joined. 20:37:33 Hi calamari and oerjan and RedDak 20:37:44 hi Sgeo 20:37:47 hi 20:38:06 and Happy New Year to anyone i haven't said it to yet 20:58:34 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 21:18:16 -!- RedDak has joined. 21:18:44 FNUMs are giving me a headache 21:19:19 and so will LNUMs 21:19:21 ARGH 21:28:50 Here we are: 21:28:50 "Hello, World!" in my (as of yet) unnamed esolang: 21:28:50 {{>>~~~~{-<}~~~~~~~~~{-<-<}<<}:{>>{~~~~~~~~ 21:28:50 {<}~{>}}<<}\~>{{~{v}}>>>v{~}^<<<}/(<<<){[<<]}:>:{>>{~~~~~ 21:28:50 ~~~{<<}~{>>}}<<}\~{>>{vvvvvvvv~~~~~~~~~~~~~~~}<<}~{>>{vvv 21:28:50 v~~~~~~~~~~~~~}<<}~{>>{^^^^^^^^^^~}<<}~{>>{v~~~~~~~{{<<}~} 21:28:52 v{~}vvvvvvv{~{>>}}^^^^^^~~~{{<<}~}vvvv{~{>>}}v~~~}<<}~<{{^ 21:28:54 ^^}}~{>>{vvvvvv~{{<<}~{>>}}^^^^^^^~~~~~~~~~~~{{<<}~{v>}}^^ 21:28:56 ^^^^}}/{{()}}{[<<<<]}:>:{{~v}}\} 21:34:12 -!- RedDak has quit ("I'm quitting... Bye all"). 21:35:02 -!- RedDak has joined. 21:48:40 re RedDak 21:50:35 alrighty, well cheers all 21:50:58 -!- Hiato has left (?). 22:05:16 pikhq, Overand oklopol anyone else who cares, is it ok if PSOX.py is 2.5? 22:05:25 relies on Python 2.5 I mean? 22:06:12 I think I have Python 2.4 ATM. . . 22:09:48 -!- Dagide has joined. 22:12:51 Actually, n/m maybe 22:14:50 -!- RedDak has quit (Read error: 113 (No route to host)). 22:35:33 -!- Sgeo has quit (Connection timed out). 22:36:14 -!- Sgeo has joined. 22:36:38 Would anyone miss the extended function names "feature"? 22:42:33 Anyone? 22:48:04 -!- GreaseMonkey has joined. 22:48:40 Hi GreaseMonkey 22:48:52 oh hai 22:49:36 {{print($1);}("Hello ".concat($1,"!"));}("Sgeo"); 22:50:08 -!- Dagide has quit (Remote closed the connection). 22:57:00 "Removing extended functions to make my life easier.. yes, I'm being mean …" 22:58:32 Also, all the implementations of the domains are going to go right in the same directory with everything else 23:02:40 pikhq, you awake? 23:02:43 Anyone else awake? 23:03:07 NO. 23:04:50 ?? 23:05:01 No, I'm not awake. ;) 23:22:55 http://trac2.assembla.com/psox/browser/trunk/impl/psox/domain.py 2008-01-02: 00:17:21 pikhq, Slereah Overand oklopol others 00:17:22 http://trac2.assembla.com/psox/browser/trunk/ex/example_domain.py 00:34:29 -!- jix has quit (Read error: 131 (Connection reset by peer)). 00:37:54 -!- jix has joined. 00:58:06 Bye all 00:59:17 -!- Sgeo has quit (Remote closed the connection). 01:31:48 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 01:33:58 -!- pikhq has joined. 01:38:56 -!- oklofok has joined. 01:39:05 mörning y'all 01:39:13 Well, it's 2 AM here. 01:39:19 here too 01:39:22 oh 01:39:24 4, 01:39:26 lol 01:39:32 good mourning 01:40:04 But mrning. 01:40:04 i think it's coding time now. 01:40:23 lucky i found this computer 01:40:34 In your dreams? 01:40:46 ...my dreams? 01:40:55 Well, it is 4 AM! 01:41:00 :o 01:41:03 oh my god... 01:41:09 non ascii ...mileys 01:41:14 *smileys... 01:41:16 : 01:41:43 i instaneously hate any client that has the option for that. 01:41:54 who wants to see a yellow idiot. 01:42:18 8--D 01:42:32 Even if it's this little fellow? 01:42:36 http://www.encyclopediadramatica.com/%E0%B2%A0_%E0%B2%A0 01:45:35 07:12:01 i wish i were as cool as you all <<< i love reading random #esoteric logs <3 01:46:47 it's a bit scary i usually remember every conversation 01:47:55 11:31:22 i guess if your head explodes from laughing that would a lollipop. 01:47:57 xD 01:48:16 waking people up here lolling. 01:48:31 guess i'm tired or something 01:48:34 OK, i'll stop now 01:55:56 heh, can't find a text editor in vista :) 01:55:57 ) 01:56:23 What, no Notepad? 01:56:38 no, just idiot user. 01:56:48 does someone have vista experience? 01:56:56 hey 01:57:00 windows\! 01:57:06 I didn't hear many good things from Vista. 01:57:10 windows, yes. 01:57:16 So I'm not buying it. 01:57:35 i saw this great link, think it was in the IWC forum... 01:57:59 found notepad 01:59:36 this was it: http://dotnet.org.za/codingsanity/archive/2007/12/14/review-windows-xp.aspx 02:01:05 (+ a 0) {a} 02:01:07 (+ a (S b)) {+ (S a) b} 02:01:08 [@-#2 @-#1] 02:01:33 the syntax is mostly from graphica, which none of you know... but it's pretty intuitive ;-) 02:01:45 the [...] is the part of interest 02:02:00 it describes the mechanism to *reverse* addition 02:02:31 The unholy process of substraction? 02:02:45 with an equation that finds the original params given the result and part of the params. 02:03:11 Slereah: yes, but reversing subtraction is a bit more complex 02:03:19 and real functions are *very* 02:04:24 Very what? 02:05:10 (- a 0) {a} 02:05:12 (- (S a) (S b)) {- a b} 02:05:14 [@+#2 #1-@] 02:05:27 lol, was soooo hard to solve a-b=c for b xD 02:05:39 @ is the result. 02:05:50 Is this Oklotalk or something? 02:05:54 no 02:06:04 this is something we discussed earlier with hiato 02:06:04 Reminds me of recursive functions. 02:06:13 well, sure 02:06:21 With the silly f(a,b) notation for operatos 02:06:23 the interesting part is the pattern matching thingie. 02:06:50 i'm not reinventing the whole way we think about computation when i make a language... 02:07:58 numbers can be described with anything that can be inc'd, dec'd and checked for null, tuples offer a trivial way 02:08:08 oh, right, multiplication and division 02:08:20 or at least multiplication :-) 02:08:31 go forth and multiply! 02:08:44 Even adders? 02:08:52 I heard they need logs to multiply. 02:08:54 use a log table, silly! 02:09:23 oerjan: much easier with peano arithmetic! thanks, why didn't i think of that... 02:09:46 hmm... even divisors might be interesting when it comes to pattern matching... 02:10:02 Wlel, it is quite easy with Peano! 02:10:04 http://membres.lycos.fr/bewulf/Russell/Calc9.txt 02:10:21 the pattern n@(_%3) would only pmatch numbers divisible by 3 02:10:24 I should finish that Peano calculator someday. 02:10:31 @ is what it is in haskell 02:10:54 if division is only defined when numbers actually are divisible, that is. 02:11:49 it'd be nice if that actually arose naturally from what i'm currently doing here... but i don't think it's possible to get even trivial stuff like that to work... 02:11:52 we'll see i guess 02:12:45 (- 0 b) :( 02:12:50 nice syntax for failing? :P 02:21:26 (/ a 0) (/ a@(a 02:21:27 (/ 0 b) {0} (/ (a+b) b@(S bt)) {S a*bt} 02:21:29 {- a/b=c <=> a=bc <=> b=a/c -} 02:21:31 [@*b @/a] 02:21:39 shall i explain? 02:21:51 i shall. 02:22:25 a function consists basically of patterns 02:22:33 (...) is a pattern 02:22:56 if a pattern matches the argument, the vars are set and the next {...} after that is evaluated 02:23:16 unless before that, a <> is found 02:23:23 in which case the whole function fails. 02:23:37 so, if it was used in a pattern match or something, that would fail. 02:23:52 now, division fails when a number is divided by another number bigger than it 02:24:00 and, if you divide by zero 02:24:14 also, it's wrong... whoops 02:25:14 second line should be (/ 0 b) {0} (/ a (S 0)) {a} (/ (a+b) b@(S bt)) {S a/bt} 02:26:00 so, zero divided by something is 0, something divided by one is something, and the last is the general case 02:26:11 notice the (a+b) pattern there 02:27:03 it would first find b, which gets the value of the second arg, while bt get's that-1, after that, the a pattern (a+b) gets the value of b 02:27:14 now, we defined the inverse of addition earlier 02:27:22 -!- jix has quit ("This computer has gone to sleep"). 02:27:23 that will be used to find the value of a for a given b 02:27:29 anyone at all interested? 02:28:04 (a Hm. 02:29:23 Maybe I should try some interpreter for recursive functions. 02:29:27 For the lulz. 02:31:37 haha, cons works without any code, actually xD 02:32:00 Cons? 02:32:24 (Cons a b) will produce the tuple (Atom(cons) ... ...); if there is no pattern starting with that atom, there will be no substitution and that will just stay as it is! 02:32:29 i love tree rewriting <3 02:32:31 Cons? 02:32:44 the cons lisp uses to represent lists 02:32:51 among other langas 02:32:55 *langies 02:32:57 I don't speak Lisp. 02:33:25 [1, 2, 3] -> (Cons 1 (Cons 2 (Cons 3 Nil))) 02:33:43 basically just a way to use tuples for lists. 02:34:08 although in list cons is lowercase, but i guess not important 02:36:44 *lisp 02:49:41 (Qsort list@(Scramble (++ (lpart@(PivotBy <=! list pivot) 02:49:43 pivot:rpart@@(PivotBy >! list pivot)))) {(Qsort lpart)++pivot:(Qsort rpart)} 02:49:44 (PivotBy Test (Scramble list)@(Reduce (Test pivot) list) pivot) {list} 02:49:57 xD 02:50:11 i have to rethink a bit ;) 02:50:35 but, i think it's entirely possible to do quicksort by pattern matching, guess i should see how prolog does it 02:51:11 the part to notice there is lpart++pivot:rpart, letting the interps choose how to cut it :D 02:51:29 could be random by default, when ambiguous match. 02:51:49 also, @@->@ 02:52:49 the function that scrambles a list in random order, Scramble, can be used to signify there is no information about the list's structure, and it can be bruteforced to fit the rest of the pattern 02:54:31 where the actual quicksort algo comes in, is that the brute force will instantly find the solution for a single step, since it knows the whole list needs to be cut in to rpart, pivot and lpart (defined in ++...) and the rules do not overlap 02:55:54 but, requires a lot of increase in sophistication of course. 02:57:48 oh, right, i could call Scramble Perm like prolog... would sound a bit less hacky :) 02:57:53 hacky as in hack'y 03:06:51 okay, some operations are used for their failure detection, like < and == sometimes 03:06:57 and others just for their result. 03:07:06 some operators, however, need both 03:07:26 i was thinking General failure eating hard disk 03:07:38 but then again, what do ya think? this is just convention, so feel free to answer without much thinking. 03:10:07 hmm... actually, booleans could be failure/identity 03:10:14 so you could match on (> n 3) 03:10:30 to get anything bigger than 3 in, and failing otherwise 03:17:04 -!- oerjan has quit ("Good night"). 03:18:11 (Tobin 0) {0} (Tobin 1) {1} 03:18:13 (ToBin n*!2) {0:(ToBin n)} 03:18:15 (ToBin n*2) {1:(ToBin n)} 03:19:01 actually... 03:19:21 i have no idea what it means for multiplication to be strict... :) 03:20:44 oh, right... 03:21:07 non strict multiplication can produce either 4 or 5 when 2 is multiplied by 2 :) 03:31:32 What's the difference between [a,b] and (a,b) on the snake? 03:31:48 I suddenly get parenthesis when I was expecting some list brackets. 03:32:01 list, tuple 03:32:07 in that order 03:32:43 Why do I suddenly get tuples? 03:33:09 i have no idea. 03:33:27 you obviously have () where you should have [] somewhere? 03:34:54 Well, I don't use use [] or (). 03:35:03 Just sequence functions. 03:35:10 oh 03:35:16 But well, let's just cheat. 03:35:37 yeah 03:35:40 let's 03:37:12 Poifect. 03:41:43 [[['plus', ['n1', '0']], ['p', ['1', '1'], 'n1']], [['plus', ['n1', ['s', 'n2']]], ['s', [['p', ['3', '3'], ['n1', 'n2', ['plus', ['n1', 'n2']]]]]]]] 03:41:46 Thar. 03:41:51 That should do it. 03:42:00 Now, to make stuff with that. 03:42:23 p [1 1] n1? 03:42:36 It's from this : 03:42:37 plus(n1,0()) = p(1,1)(n1) 03:42:37 plus(n1,s(n2)) = s(p(3,3)(n1,n2,plus(n1,n2))) 03:43:13 oh, right, aren't those trivial recursive functinos? 03:43:16 functions 03:44:09 Primitive, even. 03:44:15 errr, right 03:44:25 sounded a bit weird 03:44:45 but all i could think was partial or trivial 03:52:29 okay, my second idea for the night 03:52:43 this is for Cise, my conciseness oriented lang 03:52:47 Afl*2+ 03:52:49 1,0,0,1,1 -> 19 03:52:50 (((((1*2 + 1)*2 + 0)*2 + 0)*2 + 0)*2 + 1) 03:53:01 Afl takes two functions, and a list 03:54:04 it then makes the list's head "result", then continuously applies the first function to the list and combines it with the next element of the list with the second function 03:54:10 now, the beauty lies in parsing. 03:55:33 so... 03:56:10 Afl needs two functions as params. if it should parse what follows it as (Afl * 2), it would only get one function 03:56:17 so it gathers 2 muct belong to * 03:56:31 so, this becomes (Afl (* 2) +) 03:56:34 which is correct. 03:56:51 currying + prefix - spaces == rox 03:57:01 rox as in cool, i guess 03:57:21 also type inference to determine parsing :) 03:57:44 blah 03:58:21 you're not getting at al excited :-) 03:58:25 *all 03:58:33 gonna do another invention -> 03:58:41 this time something totally awesome. 04:10:14 hmm, think i got it 04:38:56 10:33:34 people put in in the url in programming-related channels because of flooding 04:38:57 10:33:38 i don't think we ever had that problem 04:52:38 Man. That primitive function idea is harder than originally thougt! 04:54:36 hehe 04:54:41 i think i need to sleep a while. 04:54:44 cya -> 04:55:06 Bye. 04:55:15 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide."). 05:03:01 -!- calamari has quit ("Leaving"). 06:39:26 -!- Slereah has quit (Read error: 110 (Connection timed out)). 06:52:02 -!- slereah_ has joined. 06:52:13 -!- slereah_ has changed nick to Slereah. 06:52:15 -!- Slereah has changed nick to slereah_. 06:52:36 -!- slereah_ has changed nick to Slereah. 07:10:26 -!- slereah_ has joined. 07:19:57 "It is not immediate that the predecessor function can be reduced to an iteration, and hence is representable in the ?-Calculus. It was Kleene [1935] who saw how to do this, apparently during a visit to the dentist." 07:19:59 Heh. 07:28:12 -!- Slereah has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:44:37 -!- faxathisia has joined. 09:43:20 -!- Hiato has joined. 09:50:11 Wassabi 09:56:24 Oklopol, did you get time yesterday to start on the spec? Or were you too busy ;) (heh) 10:15:16 -!- Hiato has quit ("Leaving."). 12:11:45 -!- Sgeo has joined. 12:12:08 I think I dreamed about PSOX last night :/ 12:13:37 hehe 12:15:59 -!- jix has joined. 12:17:22 Hi [PSOX] jix [MUST.. WORK.. ON.. PSOX!!!] 12:21:42 I considered taking a hiatus from PSOX, but can't help thinking that I shouldn't do that until PSOX 1.0 12:21:55 hi 12:21:57 brb 12:21:58 -!- jix has quit ("CommandQ"). 12:22:26 -!- jix has joined. 12:23:41 wb 12:24:17 -!- helios_24c3 has joined. 12:24:28 -!- helios_24c3 has quit (Connection reset by peer). 12:54:23 -!- Sgeo has quit (Remote closed the connection). 13:16:35 -!- Sgeo has joined. 13:16:52 * Sgeo wonders if he can finish the core of PSOX.py today 13:17:02 Then all that would be left is speccing and implementing the builtin domains 13:21:01 -!- oerjan has joined. 13:28:12 -!- pikhq_ has joined. 13:28:59 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 13:29:52 slereah_: kleene's dentist had this weird habit of removing all his teeth and then reinserting those that were healthy. 14:15:55 -!- jix has quit ("CommandQ"). 14:20:03 -!- RedDak has joined. 14:25:48 Hi RedDak 14:25:56 * Sgeo makes healthy progress on PSOX 14:26:08 Although I'm starting to think that PSOX may be bad for my health 14:27:28 -!- mwizard has joined. 14:27:54 -!- mwizard has left (?). 15:51:05 PSOX.py is for Python 2.5 now 15:56:01 -!- puzzlet has quit (Remote closed the connection). 15:56:08 -!- puzzlet has joined. 16:06:05 -!- puzzlet has quit ("Lost terminal"). 16:06:25 -!- puzzlet has joined. 16:21:32 -!- RedDak has quit (Remote closed the connection). 16:25:28 -!- pikhq_ has changed nick to pikhq. 16:26:36 -!- puzzlet has quit (Remote closed the connection). 16:26:43 -!- puzzlet has joined. 16:41:00 * slereah_ just received this book : http://www.amazon.com/Undecidable-Propositions-Unsolvable-Computable-Functions/dp/0486432289/ref=pd_bbs_sr_1/002-0209491-2396801?ie=UTF8&s=books&qid=1191580925&sr=8-1 16:42:02 oh that looks well good 16:42:05 I want that 16:43:19 -!- faxathisia has quit ("Leaving"). 16:44:50 The cover seems to be made of those m-functions of Turing 16:45:49 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 16:50:04 -!- tesseracter has quit (Remote closed the connection). 16:50:24 -!- pikhq has joined. 16:55:46 -!- oerjan has quit ("Fnord, er Food"). 16:56:25 -!- slereah_ has changed nick to Slereah. 16:58:49 Hi pikhq 16:59:00 Is it ok if PSOX.py requires Python 2.5? 17:00:18 "No, start over!" 17:01:59 -!- pikhq_ has joined. 17:02:10 -!- pikhq has quit (Nick collision from services.). 17:02:15 -!- pikhq_ has changed nick to pikhq. 17:06:15 -!- puzzlet has quit (Remote closed the connection). 17:06:19 -!- puzzlet has joined. 17:06:48 -!- wooby has joined. 17:10:52 -!- wooby has quit (Client Quit). 17:11:30 -!- tesseracter has joined. 17:23:02 -!- RedDak has joined. 17:28:30 -!- puzzlet has quit (Remote closed the connection). 17:28:37 -!- puzzlet has joined. 17:55:53 -!- puzzlet has quit (Remote closed the connection). 17:56:01 -!- puzzlet has joined. 18:07:53 http://trac2.assembla.com/psox/browser/trunk/impl/psox/psoxtypes.py 18:09:07 Anyone awake? 18:09:44 I'm typing in my sleep. 18:40:20 hi 18:40:57 * SimonRC wonders if LL actually have enough cash to handle everyone withdrawing their L$ at once... 18:42:25 -!- puzzlet_ has joined. 18:42:30 -!- puzzlet has quit (Remote closed the connection). 19:09:40 -!- jix has joined. 19:25:04 -!- ihope has joined. 19:25:15 Ello. 19:25:25 -!- ihope has quit (Client Quit). 19:26:51 -!- ihope has joined. 19:26:57 Well, that was interesting. 19:27:22 I guess freenode and ircatwork don't like each other right now. 19:27:42 Anyway, is there any hope of me being able to make an esolang based on knot theory? 19:31:07 I'm considering tossing out the knots and making it links of unknots. 19:36:04 Or have a tape of "strings" forming an infinite braid. 19:36:08 re ihope 19:36:17 * Sgeo is working on PSOX 19:36:29 I got psoxtypes.py down 19:36:39 First part of the implementation that's FINISHED 19:36:50 http://trac2.assembla.com/psox/browser/trunk/impl/psox/psoxtypes.py 19:36:51 Yay :-) 19:37:10 Also, is http://trac2.assembla.com/psox/browser/trunk/impl/psox/fd.py sane? 19:47:56 Oh, if you orient each unknot and span them with surfaces, you can count the number of times each unknot goes through each other unknot's surface and in which direction, and say that opposite directions cancel each other out... 19:49:38 There is a definate lack of ihope in Sine 19:50:38 Indeed. 19:51:43 What was that CGI:IRC one? 19:57:37 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)). 19:57:42 -!- puzzlet has joined. 20:04:26 -!- pikhq_ has joined. 20:04:39 -!- puzzlet has quit (Remote closed the connection). 20:04:42 -!- puzzlet has joined. 20:05:48 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 20:07:16 -!- pikhq_ has changed nick to pikhq. 20:12:40 -!- puzzlet has quit (Remote closed the connection). 20:12:44 -!- puzzlet has joined. 20:17:06 -!- Jontte has joined. 20:58:28 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 21:01:55 -!- pikhq has joined. 21:05:31 -!- jix has quit (Nick collision from services.). 21:05:41 -!- jix has joined. 21:11:19 -!- puzzlet_ has joined. 21:11:24 -!- puzzlet has quit (Remote closed the connection). 21:27:59 -!- jix has quit (Nick collision from services.). 21:28:09 -!- jix has joined. 21:44:47 -!- calamari has joined. 21:46:37 -!- oerjan has joined. 21:55:07 -!- jix has quit (Nick collision from services.). 21:55:17 -!- jix has joined. 22:24:20 -!- GreaseMonkey has joined. 22:28:53 -!- oklofok has left (?). 22:33:32 -!- Jontte has quit ("Konversation terminated!"). 22:36:18 -!- Jontte has joined. 22:47:18 -!- Jontte has quit (Remote closed the connection). 22:49:53 -!- Jontte has joined. 23:55:12 -!- jix has quit ("CommandQ"). 23:58:31 -!- RedDak has quit (Remote closed the connection). 2008-01-03: 00:09:55 -!- pikhq has quit (Read error: 110 (Connection timed out)). 00:16:28 -!- pikhq has joined. 00:26:21 pikhq, how would you react if I said that I was scrapping PSOX? 00:26:56 That depends: why are you scrapping PSOX? 00:27:03 Something better, or just fed up? 00:27:20 pikhq, I'm not. I just want to know how you'd react >.> 00:27:25 Ah. 00:27:39 I'd appreciate it if you're moving on to something better. 00:27:43 -!- jix has joined. 00:27:51 Be a bit annoyed if it was just you being fed up. 00:28:00 And pissed off if you were selling it to Microsoft. :p 00:28:04 lol 00:28:18 * Sgeo is getting fed up with PSOX File Descriptors, tbh 00:29:20 Also, I don't know what license to put it under, but that's not too relevent right now 00:29:48 Maybe MIT? 00:29:49 GPL. 00:30:13 All this license stuff just goes over my head 00:30:36 I'm a programmer, not a lawyer, dangit! 00:30:43 >.> 00:31:37 Just GPL it. 00:32:07 pikhq, also, can you help make the file descriptor stuff sane? 00:33:03 http://trac2.assembla.com/psox/browser/trunk/spec/psox.txt 00:40:22 grr I don't know how to implement the input pseudodomain 00:40:37 hm, n/m maybe 00:42:54 I think I can do this 00:45:00 "EOF status is 0x01 if there was no EOF encountered, 0x00 if there was an EOF" 00:45:04 Should I reverse that? 00:45:09 n/m 00:54:25 Ok, I finished db_input.py 00:54:41 Almost 00:56:34 pikhq, look at this horribleness 00:56:34 http://trac2.assembla.com/psox/browser/trunk/impl/psox/db_input.py 01:08:47 pikhq, you awake? Or at least capable of typing in your sleep? >.> lol 01:09:35 Heh. 01:10:36 Hrm. 01:14:07 -!- UnrelatedToQaz has joined. 01:14:11 hey all 01:15:07 Hi UnrelatedToQaz 01:18:50 -!- calamari has quit ("Leaving"). 01:27:45 * oerjan wonders who Qaz is 01:31:16 Well, not that guy. 01:32:13 I don't know who he is 01:32:22 I just know that I'm unrelated to him. 01:32:30 Or her or it. 01:32:39 ic 01:33:03 What if he's your long lost twin? 01:33:35 He can't be, as that would mean s/he was related to me. And s/he isn't. 01:33:47 Well, that's why I said "lost". 01:34:36 But it's the definition of Qazness that I am unrelated to Qaz. If a claimant to the title of Qaz was related to me, they couldn't be Qaz. 01:34:39 Uc? 01:36:24 I see 01:37:24 * oerjan found a Qaz computer virus or something when googling 01:37:47 good you're not related :) 01:39:41 I think I've figured out my knot programming language, slightly. 01:39:59 Oh? 01:40:03 "Knot" meaning "link of unknots", which really isn't a knot at all. 01:40:20 Elucidate, if you would. 01:40:47 Though I guess they wouldn't have to be unknots... anyway, I guess ponderings are required. 01:41:39 Ponder away thn! 01:43:19 First, the unknots-only version, I guess. 01:44:10 Memory consists of a single link. The only operation I can really think of right now is destroying one knot. 01:45:34 Every knot in the link is oriented. 01:46:25 "Reading" a knot consists of grabbing a list of all knots which must "go through" the knot and which direction they go through. 01:47:00 Going through a knot is defined as crossing a Seifert surface of the knot. I guess that means that "must go through" would be crossing all Seifert surfaces of the knot. 01:47:57 i hope i'm not the only one who doesn't know what seifert surface is and will not google. 01:48:03 because you'll have to explain. 01:48:16 and i need coke 01:48:19 What, doesn't everybody automatically know what a Seifert surface is? :-P 01:48:25 oklopol: he's not :D 01:48:32 A Seifert surface is just any surface whose boundary is the knot. 01:49:28 Stick a knot in bubble solution and hopefully you'll end up with one of its Seifert surfaces. :-) 01:49:43 are we talking about the same kind of knots? 01:49:47 So "crossing a Seifert surface" basically means "going through the knot". 01:50:09 Yes. 01:50:20 Me or oklopol> 01:50:33 As in yes to Unrelated, possibly not to oklopol. 01:50:45 well - anything must probably cross _some_ seifert surface 01:50:56 are knots the stuff that you do with rope :) 01:51:01 Is this "knot" as in "thing tied in string, rope, flax or hemp"? 01:51:08 Indeed, but it's harder to cross all Seifert surfaces. 01:51:23 This is a knot: http://en.wikipedia.org/wiki/Image:ThreeFoldKnot.jpg 01:52:05 a knot is an embedding of a topological circle in R3, iirc 01:52:10 Ah, that sort of knot. As in knot theory knots. 01:52:17 Yes yes. 01:52:26 graphica with the possibility to specify how the nodes are connected! 01:52:28 knottica 01:52:33 ...or, a better name. 01:52:47 Why would I be speaking of Seifert surfaces of actual knots? :-P 01:54:02 "Knot another knot language" 01:54:56 So, once you've read your knot...? 01:55:17 Profits! 01:55:21 Yeah, that. 01:55:37 ohh... the seifert surface is the 2d surface of the knot there? 01:56:16 i assumed you'd think of knots are a logical structure rather than a presentation of the rope's surface... 01:56:23 unless i'm wrong and that's true. 01:56:32 in which case i'd also be right. 01:57:02 A Seifert surface isn't the surface of a torus that's tied in a knot. 01:57:25 This is a Seifert surface, though it's a Seifert surface of an entire link: http://en.wikipedia.org/wiki/Image:Moebiusband_wikipedia.png 01:58:16 WIKIPEDIAAAAA 01:58:22 This is just silly. 02:00:25 A trefoil knot's Seifert surface: http://www.josleys.com/show_gallery.php?galid=303 02:01:48 And that Seifert surface has a hole in it, so I guess you can pass another knot through that hole and it wouldn't really be going through the trefoil knot, kind of. 02:03:12 asdf, why can't i even get anything without inventing it myself :-) 02:03:49 *ever 02:05:04 seifert surface is a *surface* though? it's a 2d (or other) plane? 02:05:24 surface = 2d but may be curved 02:05:34 e.g. a sphere 02:05:52 right 02:22:40 Hmm, I just got another idea. 02:22:58 a surface is like a manifold, right? 02:23:08 Yes. 02:23:10 Instead of just a link, you have a bunch of oriented "strands" which can be open or closed. If they're closed, they 02:23:21 Although there's surfaces which aren't manifolds. 02:23:45 If they're closed, they're just knots, but if they're open, they begin and end at surgery points. 02:23:53 -!- jix has quit ("CommandQ"). 02:24:08 Surgery...that sounds familiar. 02:24:30 It's a topology thing, right? Cutting and stitching. 02:24:50 A surgery point has two "in" slots and two "out" slots, and each may or may not be filled. If all of them are filled, the surgery point can be replaced by a crossover in either direction or... um, lemme get a picture. 02:25:03 Removing a section of something and replacing it with something that... fits. 02:25:54 -!- Jontte has quit ("Konversation terminated!"). 02:25:58 Think of surgery points as the yellow things under this section: http://en.wikipedia.org/wiki/Knot_theory#Knot_polynomials 02:29:57 So I guess you can create surgery points in random places, and you can create strands going between them, and you can delete the surgery points to connect the strands. 02:30:29 I guess more pondering will definitely be required before I can turn this into a language, eh? 02:31:27 Well, at least I don't have any clue of how to do it! 02:32:19 i wonder if you could make a borromean ring with any number of rings... 02:32:31 i smell awesome kinetic experiment 02:32:56 I'm pretty sure you can. 02:33:10 not sure whether you can make a chain reaction out of that 02:33:23 Wikipedia is nice, isn't it? http://en.wikipedia.org/wiki/Brunnian_link 02:34:00 hehe 02:34:11 i suppose the chain reaction thing depends on how tight they are 02:34:14 whoa, deja vu 02:34:49 i'm currently playing with continuations trying to make subtle cough tc, or at least more powerful, by creating new kinds of continuations 02:35:19 i'm gonna call it supercough if i find something interesting, i'm just that lame :-) 02:35:59 http://www.google.com/search?q=supercough... >:-) 02:36:58 Oh yips, continuations. Fancy basing a language on the only Unlambda primitive I don't understand... 02:37:45 UnrelatedToQaz: it's easy 02:38:00 it's just never made that explicit... 02:39:39 my way to get it was to make a new notation for it and play with unlambda a bit 02:39:45 Finally, my FTP works again. 02:39:46 as you do 02:40:05 http://membres.lycos.fr/bewulf/Russell/BRAINFUCK%20INTERPRETER%20ON%20A%20ONE.htm 02:40:08 although, like always, i had to guess how it might work before i understood it 02:40:37 luckily, everything that is in any way meaningful seems to be inventable in a few hours of thinking 02:40:52 i mean, the simple kind of stuff :) 02:41:59 Hmm...let's see... 02:42:14 So a continuation is a way of storing the current state of a program? 02:42:18 yes 02:43:14 i used a notation for a continuation, where i actually took the whole program and put it in braces with * where the value would be returned 02:43:43 need to see the whole state at once, or it feels too magical to be understandable 02:44:12 like ``cc`cc, the first `cc is evaluated first to make ``c{`*`cc}`cc 02:44:42 the current continuation is the place where c was called, with the knowledge about where to return if the continuation is called. 02:45:08 It's like going back in time, then? 02:45:53 kinda. but using my notation (or some other that turns it into simple combinatorics..) you can just think of it as string transformations 02:46:30 * oerjan thought it was his notation... 02:46:34 i didn't understand the notation used on the unlambda page, it's prolly much better. 02:46:36 hehe :P 02:46:46 well, it's kinda trivial 02:47:00 i added it to the Unlambda page after all 02:47:01 and * was from the unlambda page notation, which i did not understand. 02:47:06 oh. 02:47:44 in that case i read your notation's description, didn't understand it, and then invented it myself :P 02:48:20 perhaps i subconsciously got it or something, although i myself don't believe in that kinda magic. 02:48:54 incidentally, I'm writing an interpreter for a language of my own 02:49:01 (a parser, more like) 02:49:07 well the * was the important part, at least as i used it in the Subtle Cough page 02:49:10 oerjan: the notation actually shows the whole continuation as a lambda inside the partially evaluated program? 02:49:38 in Perl. Could anyone advise me on how I'd later add - well, modules - to it? 02:50:02 There'd have to be some modification of the actual interpreter, as I see it. 02:50:11 oklopol: um, yes? 02:50:18 well not in lambda notation 02:50:49 can you show me how ``cc`cc evolves? 02:51:08 in your notation... or is that an example on the page :P 02:51:34 i can't find the notation on the page anymore... i kinda suck ;) 02:52:10 yep, on the subtle cough page: 02:52:12 ``cc`cc = `(`*`cc)`cc = `(`*`cc)(`(`*`cc)*) = `(`(`*`cc)*)`cc = `(`*`cc)`cc (circular, because (`(`*`cc)*) = (`*`cc)). 02:52:46 that is using some shortcuts from the others i think 02:52:53 `cc = (*) 02:53:31 hehe 02:53:34 i don't get that :) 02:53:36 ``cc`cc -> ``c{`*`cc}`cc -> `{`*`cc}{`*`cc}`cc -> `{`*`cc}`cc -> ``cc`cc 02:53:38 my version 02:53:51 i'll look more closely, it may be 100% identical 02:54:14 hmm 02:54:16 your 4th step is my second 02:54:27 oh. 02:54:53 "circular, because..." why don't you just evaluate until it becomes the original prog :\ 02:54:58 i mean, ihope 02:55:10 um it never quite does i think... 02:55:21 is my evaluation wrong there? 02:55:50 {...} is a function, that when called, forgets the current context and puts the arg where the * is 02:56:00 i used that to represent a continuation 02:56:02 you are missing the evaluation of the `cc at the end 02:56:27 oh 02:56:35 didn't think it's necessary to do that ;-) 02:56:45 it has to be evaluated before applying the continuation 02:56:55 righties. 02:57:01 i'll try again -> 02:57:29 bye folks 02:57:33 3am :) 02:57:59 -!- UnrelatedToQaz has left (?). 03:01:25 hehe, the only difference was the fact i used {} and you used () then :P 03:02:03 that's what i thought 03:03:25 hm i wonder if it _does_ return properly ever, or if i recall correctly that it somehow grows while staying equivalent 03:03:51 i'll make an interp, and see 03:03:57 that's hell to do by hand. 03:04:16 although, i think it grows infinitely... 03:04:22 had a *feeling* 03:04:46 i'm sure someone here could just *see* it. 03:04:52 * oklopol highlights everyone 03:05:18 we were at `(`(`*`cc)*)`cc before i "cheated" 03:05:39 hey, wait! 03:05:48 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:05:52 = `(`(`*`cc)*)(`(`(`*`cc)*)*) 03:06:22 =`(`*`cc)(`(`(`*`cc)*)*) 03:06:38 = `(`(`(`*`cc)*)*)`cc 03:06:47 right 03:06:58 it seems to grow one extra level per iteration 03:07:02 indeed 03:07:34 but given ø-reduction, it stays the same. 03:07:40 heh :D 03:07:56 ø-reduction? 03:08:13 Slereah: oerjan 03:08:15 "oe" 03:08:39 Heh. 03:08:52 i'm assuming oerjan did the ``cc`cc proof here, even though subtle cough is ihope's, am i correct? 03:09:16 "before i cheated" 03:09:20 i'm such a detective. 03:09:36 http://www.technologyreview.com/printer_friendly_article.aspx?id=19845 03:09:53 (yes, i read the unlambda page; if it was there, lol :)) 03:10:34 yep 03:11:27 actually i think i started with the subtle cough proof and after i finished it i wrote the notation in the unlambda page so others might have a hope of understanding it 03:11:43 ah. 03:12:07 so, ihope comes up with a language, and you ruin it by telling him it only has 3 progs? :) 03:12:08 plus some ideas of how to make the notation more powerful 03:12:15 yeah :D 03:12:23 :P 03:12:56 although, ihope was probably happier with that, than if it would just have been left without any research. 03:13:02 otoh i cannot prove noone else has made such a notation before in the context of lambda calculus with continuations or something 03:13:50 well 03:14:03 considering my notation, i'd say it's not *that* improbable 03:14:34 i first used x 03:14:56 then realized there will always be just one thing arg, since further conts would be nested anyway 03:16:22 * is one of the chars i consider objokenish enough to be used as a value, not an operator. 03:16:46 the other non-ascii chars that have this property are @, and ¤ 03:16:55 i'd seen * on the page, so i used it. 03:17:10 just trying to prove to myself i didn't steal your notation 03:17:18 what's the point? no idea. 03:17:22 i'll continue my prog -> 03:19:24 perhaps the point is i represented it as *my* notation, which is kinda rude :P 03:21:08 "Bad artists copy. Great artists steal." -- Pablo Picasso 03:21:52 "I stand on the shoulders of giants." -- Isaac Newton (paraphrased) 03:22:11 "Sometimes you need to ruin it with something completely random" -- oklopol 03:22:34 "Argle bargle, glop glyf" -- Douglas Adams 03:22:58 Adams' insight never ceases to astound. 03:24:21 "Dragons logically follow evolution, so they would be able to wield metal" -- Kenneth Eng 03:28:06 hm, Zzo38 is also using continuations in his latest. 03:31:51 in the forum or what? 03:33:31 on the wiki 03:36:39 hmm, looks fun 03:42:34 OK, i need to start reading the wiki, that language was actually a mindblowing experience :) 03:44:40 G'night all 03:45:00 Bai. 03:45:15 oerjan: did you mean continuousequation? 03:45:24 or what was "latest" 03:45:34 not that one 03:45:38 thought so 03:45:56 since it doesn't use continuations, just the word continuation 03:45:58 Ctonia 03:46:00 oh 03:46:02 i'll look 03:46:24 but Zzo38 is incredibly prolific... 03:46:28 Why is channel awake NOW, when I need to leave? 03:47:11 It's a secret conspiracy against you. 03:47:25 Don't eat the muffin on your table. 03:47:53 ooh, muffin 03:47:59 right, time for food 03:48:02 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 03:48:23 xD 03:48:29 searching for zzo: View (previous 500) (next 500) (20 | 50 | 100 | 250 | 500). 03:48:38 okay, quite prolific 03:48:58 i guess... i didn't actually look what are listed there. 03:49:15 for a second i thought they were just the wiki pages he had authored :P 03:49:26 and actually 03:49:29 seems they are. 03:49:46 hehe 03:50:02 just 30, i just fail to understand the ui on the search page. 03:50:13 Ooooh, he did the Twoducks. 03:50:22 I liek it. 03:51:27 * Slereah tries to make some sort of unlambdaish interpreter on the Love Machine 9000 03:54:16 i've thought about something twoduck'ish... i'm fairly sure all my ideas exist on the esolang wiki already 03:54:22 someday i'll read it. 03:54:24 all of it 03:54:35 Heh. 03:56:27 * Slereah passes his finger over some unlambda expression, thinking "What would Turing do?" 03:57:50 i wonder if twodux has an interp 03:58:10 turing would own us all at esolangs :) 03:58:11 Depends. Do you have a flux capacitator? 03:58:45 he did a lot of code on paper, even a program that played a board game or something, or do i remember totally wrong here? 03:58:59 i wonder if all that code actually works 03:59:27 Well, back then, he couldn't just fire up his computer to try it! 03:59:45 indeed. this is why i wonder 04:00:24 I don't envy Turing and the like. Doing a Turing machine by hand is bothersome. 04:00:31 i mean, i rarely get a program right the first time 04:01:31 doing or running? 04:01:40 can you do them automatically? :-) 04:01:44 Running. 04:02:19 I wonder if he had some tape at home, and wrote symbols on it, while going "beep boop". 04:02:31 hmm... actually, i rarely get a program 100% correct in a normal language, but for some reason esolang programs usually work on the first attempt 04:02:38 most likely because i give it more thought 04:02:51 with python, i just write a few lines of random code every now and then 04:02:55 Lucky you. 04:03:01 I don't have that luck! 04:03:14 and my program is almost ready now even though i've been chatting this whole time :P 04:03:25 What program? 04:03:56 making a subtle cough interp to test my idea 04:04:23 and also perhaps to be able to visualize continuations a bit better in general. 04:15:49 Is an Unlambda combinator always made up of x primitive combinators and x-1 `? 04:16:04 yep 04:21:00 Hm. If I get `iC, can I just erase `i from the tape? 04:21:52 i think so 04:24:09 hmm, d never makes it matter? 04:24:17 i don't know how d works really... 04:24:23 I won't include d. 04:24:28 d matters 04:24:45 d matters, or d makes i matter? 04:24:52 It will probably be pretty much Lazy k with the .x combinator 04:25:21 yay, the interp worked on the first attempt 04:25:32 oh you mean that 04:26:00 no i don't think d affects removing `i 04:26:22 i'm not doing a deepcopy everywhere where i copy the whole program into a continuation... guess i should add that, or i may get something too interesting. 04:26:57 can you sum up d in a sentence so i don't need to open the page again? :P 04:26:58 unlambda has no mutable structures 04:27:04 nope, but python has. 04:27:08 so deep copying is unnecessary 04:27:18 hmm 04:27:51 you see, when i swap '*' inside the continuation 04:28:00 i destroy the whole program, why not? 04:28:05 for an expression `EF if after evaluating E it happens to be d, then F is not evaluated 04:28:06 i actually don't 04:28:46 i see, it will *never* be evaluated, or when it is further applied, like ``d.xi 04:28:59 or what would that do 04:29:18 oh if you implement continuations like that, yes it sounds dangerous 04:29:35 indeed. 04:30:15 i'm implementing them that way because i'm going to extend that a bit 04:30:25 so i actually want the program to be inside the continuation. 04:30:27 ``dFG : first evaluate G e.g. to g. then evaluate `Fg 04:30:33 explicitly 04:31:10 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide."). 04:31:27 oh, right, it will evaluate the d'd expression once the d expression is further applied, then, like i suggested? 04:31:34 right 04:31:46 okay, then i invented the d combinator. 04:31:48 :) 04:32:02 well, learning is inventing for everyone, i guess 04:32:17 I discovered salt, and invented FM radio. 04:38:42 hehe, quite ironic the first time i actually have a need to use a continuation is when implementing subtle cough :) 04:39:20 well that certainly gives a minimal implementation 04:40:06 The *D* combinator? 04:40:15 oh, i'd never use call/cc for the c combinator 04:40:16 Care to give me a lambda expression of it? 04:40:19 that'd be cheating 04:41:09 IIRC, d isn't really a combinator 04:41:29 that's not what i'd've used it for, just so i could replace the whole program with the contents of the {...} without having to unwind the call stack, if i'm inside another expression when evaluating it 04:41:30 Combinatorial sugar or something! 04:41:39 well, basically the same thing, but less obvious. 04:41:46 "obvious" 04:41:50 asd, whatever 04:42:42 -!- calamari has joined. 04:42:48 * oerjan was going to paste d from unl2caml but it was a bit complicated 04:43:37 what's the lambda expression of c? 04:44:07 well c isn't in lambda calculus either 04:44:48 s,k,i, and v are combinators though 04:45:56 yeah, my point was c and d are called combinators just because it's more convenient than calling them "those things unlambda has that aren't exactly combinators, but you know what i mean" 04:46:15 Heh. 04:46:23 "functions" 04:46:36 ...your mother :) 04:46:40 Aren't combinators functions? 04:46:48 sure 04:47:01 but not all functions are combinators, especially impure ones 04:47:23 What defines impurity? 04:48:08 side effects, non-local control... 04:48:24 non-referential transparency 04:48:28 * Slereah lacks concepts. 04:49:22 pure functions: evaluates a result given arguments, no other effect 04:49:39 giving the same arguments always gives the same result 04:54:08 i'm gonna call them fumbinators from now on. 04:54:51 Schmombinator 04:57:07 how the heck do i check whether two objects are in the same memory location in python... 05:07:13 -!- oerjan has quit ("Good night"). 05:09:23 http://www.vjn.fi/pb/p346643411.txt 05:11:23 i guess i should implement ø-reduction :D 05:12:31 Oh hell. Already a problem. 05:16:59 Ah yes, a marker deleted a piece of code, that's why. 05:22:42 whatcha cooking? 05:25:09 Unlambda-ish interpreter. 05:25:23 A minimal one. s, k, i, .x 05:25:33 Maybe some other combinators for kicks. 05:26:08 So far I have some piece of code to at least check if the program has the right number of combinators and ` 05:26:35 cise (bit of speccing), graphica (version 0.5), supercough (currently just an idea i haven't tested) and ...that one language (example code + lots of ideas), and 82 problems in project euler 05:26:40 this has been a good holiday. 05:27:17 what language are you using? 05:28:01 The Love Machine 9000. 05:28:16 ohh, then it may not be that trivial :) 05:28:52 The idea will be to use 4 tapes. 05:30:02 If I encounter some other combinator than i, the tapes 3 and 4 counts the ` and primitive combinators until I'm sure to have a whole combinator, and then the evaluation is copied on tape 2. 05:31:01 i see (no i don't) 05:31:24 Well, I'm not exactly sure of a simple way to use the counter either. 05:31:28 But I'll figure it out. 05:31:41 i'm sure you will 05:31:51 now... what should *i* be cooking 05:32:02 feel kinda lazy. 05:32:13 But well, for instance, if I have ``k(C1)(C2), C1 will be copied on the second tape. 05:32:25 i'll go outside, perhaps i come up with something 05:32:27 oh, right 05:32:39 Because it would be complicated to rewrite the expression on one tape 05:32:44 i guess i do understand 05:32:59 Writes it on the second tape, erase the first, and copy the second tape onto the first. 05:33:53 yeah, or you can duplicate your code and move back and forth and do a step each time. 05:34:43 also, if you're doing .x, you have side-effects, so remember to change the copying head into the identity head once you've made one rewrite. 05:35:02 identity head just copies without evaluating, that is :) 05:35:13 No need. The `i is just removing `i 05:35:32 Or, for .x, printing x and removing `.x 05:36:00 i mean 05:36:40 -!- weilawei has quit (Nick collision from services.). 05:37:18 if you have ``a`bc`de, you can't evaluate both `bc and `de in one step 05:38:00 because a might apply after evaluation of `bc 05:38:49 Probably. But I'll try the simple way first. 05:38:56 because there's no referential transparency guaranteed, you have to be sure to just do one thing per step; this is why after evaluating one subexpression inside the whole thing, you need to copy it all to the next tape 05:39:02 Wait, what am I saying. 05:39:05 I misread 05:39:07 well, that's not necessarily more complicated 05:39:23 Every step will only evaluate one combinator, oklopol 05:40:14 It looks at the first combinator, checks if there's enough combinators in front to evaluate it, and if there are, returns the evaluation on the second tape. 05:40:23 Or if not, just continues. 05:41:30 okay, xchat started lagging too much now 05:41:34 i think i'll restart it 05:43:34 should i do a time traveling language, or a program that wraps up a given ca based on sending messages between the nodes of a graph and visualizing it by showing the messages move between the nodes? 05:43:46 both useless to the max 05:44:21 Well, if you want, there's useful equations for it in here : http://membres.lycos.fr/bewulf/Russell/incomplete_equation.jpg 05:44:40 First one is useful for timetravel 05:45:26 jailbatylicious 05:45:38 hmm 05:45:54 i'm not sure i can use use that media. 05:46:04 too powerful encryption 05:46:43 the eyes cannot make out the text 05:46:56 What text? 05:47:09 there is some scribble in their backs 05:47:17 Equations. 05:47:23 First one is general relativity 05:47:30 Second one is electromagnetism. 05:47:36 Third one is mechanic. 05:47:44 Last one is quantum mechanic. 05:47:48 yes, but my eyes are too distracted 05:53:32 Hm. I think I can probably make the interpreter with just one counter. 05:53:58 Starts at 1, adds 1 for every `, substract 1 for every primitive combinator 05:55:13 Although I probably should make the code every two cells to have some markers in here. 06:16:55 http://www.veling.nl/anne/lang/lambda/ i wonder how lambda calculus inspired this :D 06:17:33 oh, invented by a girl 06:25:48 Oh hell. Once again, the problem of a state that deals with characters! 06:38:27 okay, i'll stop using python for a while now, just too trivial 06:38:34 it feels like cheating :\ 06:39:45 Heh. 06:39:51 It does write itself! 06:40:13 i'll make an interp for a small concurrent language in scheme 06:40:33 should finally try *using* it for something 06:41:08 @ ` # r # ` # ` # ` # ` # ` # ` # ` # ` # ` # ` # ` # . H # . e # . l # . l # . o # . b # . w # . o # . r # . l # . d # i # # 06:41:12 Poifect. 06:41:31 works already? 06:41:51 No. 06:41:59 ah, okay 06:42:00 But it writes that code every two cells! 06:42:03 how many stacks are you using? 06:42:13 Stacks? 06:42:18 tapes, sorry 06:42:24 Three. 06:42:33 if you use 1, there should be a trivial mapping to brainfuck 06:43:22 I'm not so sure. Since it's based on states, not instructions, I can't think of a trivial isomorphism. 06:44:35 hmm... three tape code -> one tape code: take the three tapes, and make an empty cell between every two cells, then zip the cells getting [1,2,3...],[5,3,7...],[67,3,6...] -> [1,0,5,0,67,0,2,0,3,0... etc] 06:44:48 now, put a 1 into 2nd, 4th and 6th cell 06:45:02 [1,1,5,1,67,1...] 06:45:57 then, when you change tape from ath tape to bth tape, move (b-a)*2 cells backwards 06:46:10 then find the 1 on that tape 06:46:43 when moving, move the one, when checking / using the value, use the number that is in the cell just left of the current cell, which should hold the 1 06:47:08 basically simulate multiple tapes using a separate token for show where the head is 06:47:33 hmm... i guess you need to have 2's in every cell *before* the head. 06:47:38 so you know which way to look 06:48:09 this can be done after you are ready of course, and if you don't wanna do it, perhaps let me, since ski->brainfuck would be great 06:48:40 Well, right now, I'm still on making the code pretty for the Love Machine 9000. 06:49:07 no hurry, it's just i've been thinking about ski->brainfuck, but i haven't gotten much done 06:49:12 I have one combinator/`operator every two cells on the second tape so far 06:50:04 Well, not exactly, but there's an empty cell between 'em all. 06:58:22 -!- calamari has quit ("Leaving"). 07:04:52 hehe, tried making a page on esowiki, and failed badly :P 07:05:43 http://www.esolangs.org/wiki/YABC 07:06:17 i think that's tc via a not-too-trivial isomorphism to bf 07:07:01 but, anyone with any skill, please fix that, i can't figure out how to get the instructions on separate lines or to look nice otherwise :-) 07:13:05 http://www.esolangs.org/wiki/YABC lol getting closer :) 07:13:18 oh, right, the link isn't a fixed one 07:13:23 i mean... immutable 07:14:37 basically, you have a language with do while loops instead of while loops 07:14:56 and you have to make the value to jump with on the tape yourself 07:15:09 i think this has been discussed sometime 07:15:40 i mean, the do...while thing 07:16:52 perhaps later today i'll put something real there 07:16:53 now food -> 07:22:34 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 07:25:31 -!- oklopol has joined. 07:27:46 Everything nice on the first tape. Now, to evaluate! 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:15:37 H 08:15:37 l 08:15:37 o 08:15:37 w 08:15:37 r 08:15:37 d 08:15:52 Well, I've seen better, but it's a start. 08:16:40 :D 08:22:17 "H" 08:22:22 Aw hell/ 08:22:29 I'll just put the tape display on. 09:13:44 Ah, finally. 09:13:52 i, r and .x works 09:14:01 Now, to tackle the big un's. 09:17:21 What's a nice short Unlambda program with s's and k's? 09:20:50 Hm. 09:21:06 Idea : Replace all s by ```kiss 09:29:16 :D 09:29:26 that'd be just ``sik 09:29:30 oh 09:29:33 ```sick 09:30:28 ``ik`ck -> `k`k(`k*) 09:30:41 Hm. Kisses would be ((se)s) 09:30:50 ? 09:30:59 So applying a kiss to something would be (eC)(sC) 09:31:12 Terminating the program? 09:32:02 what's e 09:32:02 "When applied, e exits the program, possibly providing its argument as the program's result." 09:32:09 oh 09:32:13 what's that 09:32:21 So kisses on some operator outputs the operator! 09:32:45 Errr, combinator 09:33:21 heh 09:34:14 ``````kisses X -> ```sesX -> ``ex`sx, indeed 09:34:21 i'm a bit schlow. 09:35:27 "Kiss your program goodbye!" 09:36:35 >>> i o 09:38:21 -!- Jontte has joined. 09:39:03 I'm going to have to rewrite it entirely after I'm done with this version. 09:39:09 It's full of redundant states. 10:35:32 -!- weilawei has joined. 12:43:36 -!- jix has joined. 13:10:21 -!- Jontte has quit (Remote closed the connection). 13:10:53 -!- Jontte has joined. 13:15:34 -!- oerjan has joined. 13:49:13 -!- SimonRC has quit (Connection timed out). 13:57:03 -!- RedDak has joined. 15:01:50 -!- SimonRC has joined. 15:29:04 -!- jix has quit (Nick collision from services.). 15:29:14 -!- jix has joined. 15:32:34 -!- RedDak has quit (Remote closed the connection). 15:32:59 -!- oerjan has quit ("Dinner"). 16:44:54 -!- mtve has joined. 17:13:34 -!- Jontte has quit (Remote closed the connection). 17:14:02 -!- Jontte has joined. 17:39:28 -!- Jontte has quit (Remote closed the connection). 17:39:56 -!- Jontte has joined. 18:42:05 -!- calamari has joined. 20:18:22 -!- calamari has left (?). 21:07:32 -!- oerjan has joined. 21:11:23 -!- RedDak has joined. 21:27:10 oklopol: Anne Veling is male 21:33:43 in that case i cannot resort to the "women can't code" stereotype, and ask how lambda is related to lambda calculus 21:33:50 *hva to ask 21:33:57 *have 21:34:02 anne is a male name? where? 21:34:16 in holland, according to his homepage 21:34:47 oh holland, you crack me up! 21:34:57 he probably gets to point it out a lot :D 21:35:28 hehe, prolly, it's a female name in english, finnish and pretty much all over europa... i think 21:36:24 well france is worse. you know that joke about Jean Marie... they found out everything about the person except the gender 21:37:00 * pikhq wonders how a programming language can claim to be 'inspired by lambda calculus' without lambda expressions 21:37:07 * oerjan wouldn't advise telling that joke to le Pen, he thinks 21:37:11 what language is that? 21:37:29 http://www.veling.nl/anne/lang/lambda/ 21:38:17 It's a fairly basic assembly kinda thing, apparently. 21:39:15 indeed. 21:39:34 it does seem to be done not that seriously, i just don't get the joke... 21:42:12 Mistah sir oerjan! 21:42:36 Can I assume that a k is evaluated only if preceded by ``? 21:43:49 yeah 21:44:02 Same with s and ```? 21:44:06 of course 21:44:11 Thanks. 21:47:43 Let's see how those k states fares. 21:52:43 btw maybe you could use the idea from my unlambda meta-notation of having a different symbol (e.g. ') for expressions that have already been fully evaluated 21:53:21 I'm not sure how that works out. 21:53:23 Got an example? 21:53:39 hm... 21:54:26 "Not enough tapes. Program interrupted. 21:54:29 Oh hell. 21:55:10 Wrong state on the end of k. 21:58:12 wait a moment, are you using lazy or strict evaluation? 21:58:23 What would be the difference. 21:58:50 do you evaluate the arguments of s and k before applying them? 21:59:00 No. 21:59:15 ok then my ' suggestion is probably useless 21:59:31 If there's a s or k and enough arguments, it rewrites the string in the proper form on the second tape. 21:59:52 and you probably take the first s or k you find too :) 22:00:05 The first of everything. 22:00:16 Unless there's not enough argument. 22:00:34 that's lazy, or perhaps rather call-by-name, since i assume you have no sharing among copied terms 22:00:53 this being string-based 22:02:06 Here's an example : 22:02:07 # ` # ` # k # ` # i # . x ` # i # . i # # # # # # # # # # # # # # # # # # # 22:02:07 # # # # # # # # # # # # @ ` # i # . x # # # # # # # # # # # # # # # # # # # # # 22:07:17 -!- wooby has joined. 22:07:52 GregorR: has c2bf seen any recent development? 22:07:56 Well, ``k`i.x`i.i prints x. 22:07:59 So far so good! 22:08:18 Slereah: um, that's a bit different from unlambda 22:08:34 Slereah: prints or evaluates to? 22:08:42 in unlambda .x prints when _applied_, not when evaluated 22:08:45 oh, x. 22:08:46 Prints. 22:09:00 what oerjan said. 22:09:09 Good enough for me. 22:09:13 of course in a lazy language your way may be just as fine 22:09:22 The laziest! 22:09:31 You should see the code, it's full of redundant states. 22:10:10 http://membres.lycos.fr/bewulf/Russell/Unlambda%202.txt 22:10:30 Still need to deal with s and not enough argument for k. 22:12:02 (It might actually be shorter if the printing of characters was just the character and the combinator preceded by ., but well) 22:14:11 ``k````.p.e.n.i.s```.b.u.t.t -> penis 22:14:14 * Slereah thumbs up 22:15:33 Let's see what will happen for only one argument! 22:31:13 Ah yes. i->erase `i only works for when i is applied. 22:31:52 If I have something of the form `k.x, is it reasonable to evaluate .x and change it to `ki? 22:33:22 it would be unusual, but your language already is... 22:33:26 it's reasonable if it'd be tons harder to do it like unlambda does it 22:33:50 ...i tried to wait for you to answer, and when i do, you answer on the same second :) 22:33:53 Well, I suppose it wouldn't be too hard. 22:34:14 I could just check if there's ` before to change it. 22:34:30 or just print when a .x is applied 22:34:46 unless you meant just that 22:35:27 Sort of. Although I think that with the current code, it will still print it if only .x remains. 22:35:50 Or maybe not if I add the ` condition. 22:36:01 well, if the ski part works, count me happy. 22:36:08 I should also add a halting condition if only i remains. 22:36:21 now in weak head-normal evaluation, you can just stop if your k doesn't have enough arguments 22:36:24 Otherwise, it will be bothersome. 22:37:27 So far, the halting condition is that the evaluation reach the end of the program, meaning that nothing must remain at the end. 22:37:30 because any program can be written such that the first primitive always is the next to be applied 22:37:49 oerjan: your unlambda in unlambda, does it just convert the string to an unlambda expression and then evaluate that, or do you simulate the whole thing or something? 22:37:51 "just" 22:38:11 it's almost the first 22:38:27 it does an eta-expansion, essentially 22:39:02 expand `FG -> ``s expand F expand G 22:39:20 expand primitive = `k primitive 22:40:12 and when the result is applied to anything, it works equivalently to evaluating the original unlambda expression 22:41:06 although i made one exception: the e function is implemented as i, meaning that the argument passed to the expression must be e or some continuation to quit the program 22:41:08 * Slereah will continue later. 22:41:23 Self-rewriting code puts a strain on my smile. 22:41:27 *implemented = expanded 22:43:46 this exception means that you could theoretically embed the interpreter in a larger program and have it return in the larger program when the interpreted program calls e 22:44:45 Or ``````kisses 22:48:08 oh and expand F = abstraction elimination of \e -> F, essentially 22:53:36 -!- RedDak has quit (Remote closed the connection). 23:04:27 -!- tesseracter_ has joined. 23:11:03 -!- tesseracter__ has joined. 23:14:37 -!- weilawei has quit (Read error: 110 (Connection timed out)). 23:17:56 -!- tesseracter has quit (Read error: 110 (Connection timed out)). 23:22:20 -!- tesseracter_ has quit (Connection timed out). 2008-01-04: 00:05:04 -!- tesseracter__ has changed nick to tesseracter. 00:45:16 Heh. Explaining lambda calculus is a hard task. 00:48:13 It's remarkably easier when one can assume an understanding of functions. 00:49:26 "Alright, you have functions, right?" "Right." "You just pass those around. That's your entire semantic setup." "Whoa. . ." 01:03:09 . 01:06:37 Slereah: i was most confused by the FoG syntax. F(G(x)) is sooooo much simpler 01:07:15 math dudes have so many symbols. 01:07:49 errr yeagh. 01:07:54 i learned 4 notations for boolean logic, thats just insane. 01:08:12 FoG, of course, doesn't mean the same as F(G(x)). 01:08:36 * oerjan had a secret idea of trying to sneak in a couple :-) :-( smileys as dual operators in a math paper 01:08:36 lament, GoF or FoG....its been a while. 01:08:42 it means the same as lambda x -> F(G(x)), which is rather painful to write out. 01:08:53 and it introduces an unnecessary symbol. 01:09:44 oerjan: i think i did those in C at one point... 01:10:45 hm, :-> and :-< would work in haskell 01:11:15 or maybe it was :- as a post operation and a function, so :-(x, y:-) 01:13:20 (-: "only" )-: "joking" 01:13:42 i've got to try that in lambdabot 01:13:51 heh. 01:14:25 if i can find a way to make it well-typed 01:16:31 hm needs polymorphism at least 01:20:57 oerjan, if you get that in a math paper, I will worship you. 01:20:59 (more) 01:21:01 :p 01:30:52 Well, lambda calculus doesn't have FoG as far as I know: 01:31:12 It's just fg or `fg, unlambda style. 01:34:45 But the hard part is explaining the lambda itself, it seems. 01:38:25 * Slereah tried to do some Unlambda loop 01:38:32 ```sii``s`k`.xi``sii 01:38:37 I get stack overflow. 01:42:17 What be the problem? 01:42:23 hm 01:43:31 Well, after printing one x, the C stack overflow, that is. 01:43:46 -> ``i``s`k`.xi``sii`i``s`k`.xi``sii 01:44:46 Why can't the doubling be just a SII? 01:46:17 -> ```s`k`.xi``sii`i``s`k`.xi``sii -> ```k`.xi`i``s`k`.xi``sii```sii`i``s`k`.xi``sii 01:46:26 argh 01:46:43 I do it on paper with parenthesis. Less strain on the brain. 01:46:55 The thing was : 01:47:08 (SII)(S(K(.xi))(SII)) 01:47:17 (S(K(.xi))(SII))(S(K(.xi))(SII)) 01:47:44 [(K(.xi))(S(K(.xi))(SII))][(SII)(S(K(.xi))(SII))] 01:47:56 (.xi)[(SII)(S(K(.xi))(SII))] 01:48:06 And then back to (SII)(S(K(.xi))(SII)) 01:48:24 But with a bonus x on the screen. 01:48:59 But it seems to overflow my stack or something. 01:49:20 um how fast are you removing the I's? 01:49:52 Wut? 01:50:08 you ignored the I's 01:50:26 I((S(K(.xi))(SII))I(S(K(.xi))(SII)) 01:50:27 Let me redo that. 01:50:43 er no 01:50:56 Oh, that. 01:51:09 Well, I apply SII as ^x.xx 01:51:12 Faster to do. 01:51:33 how does a turing machine stack overflow anyway? 01:51:40 or is this something else? 01:51:43 That's on your interpreter. 01:52:08 The Turing (or Love) machine (9000) is right now resting. 01:52:16 mine? which one? 01:52:21 Haskell one. 01:52:25 oh 01:52:27 On them winhugs. 01:52:41 oh dear 01:53:46 The Love Machine cannot stack overflow. Maybe tape-overflow, but well. 01:56:17 argh! why oh why can't winhugs paste into a running program :( 01:57:49 Well, it's only 20 chars. 01:58:16 ` is horrible to type on a norwegian keyboard :( 01:59:00 It is particularly annoying to type on Winhugs, because you have to type ` + space, or it crashes. 01:59:48 hm where is it on an english keyboard? 01:59:58 I don't have an english keyboard. 01:59:59 oerjan, seeing the Norwegian keyboard layout, that is not my idea of a keyboard that's good for coding. . . 02:00:16 On the US QWERTY keyboard, ` is to the right of 1. 02:00:19 s/right/left/ 02:00:34 ah 02:00:40 * Slereah has : http://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Azerty_fr.svg/800px-Azerty_fr.svg.png 02:00:50 ` is alt + 7 02:01:50 Single keystroke here. w00ts. 02:02:13 shift-\ space here 02:02:16 Granted, the US keyboard layout is kinda handy for most coding, since the most you'll have to do is hit shift. 02:02:26 I wonder why keyboards still have keys that have no longer any purpose. 02:02:33 At least not that often. 02:02:39 (unless you decide to use US international, which has deadkeys) 02:02:54 Like pause, inser or num lock 02:03:16 Num lock changes the behavior of the number bad. 02:03:16 oh now wait 02:03:29 Yes it does. But does anyone use it? 02:03:31 we were doing lazy evaluation 02:03:35 Some people do. 02:03:51 I don't even touch the number pad, so. . . ;) 02:03:58 Last time I used it, I think it was for Civilisation 2. 02:04:09 Because the diagonal arrows were somehow useful. 02:04:57 the numpad makes no sense, who in their right mind would want to write numbers with right hand only 02:05:06 unless left-handed of course 02:05:21 i should get a leftie keyboard 02:05:57 ah, the C interpreter doesn't print more than one either :) 02:06:05 oerjan : Does the interpreter change (SII)(S(K(.xi))(SII)) in (SII)(S(KI)(SII)) directly. 02:06:19 unlambda is a strict language 02:06:21 Or something similar, that is. 02:06:28 it evaluates arguments first 02:06:51 the `.xi is only evaluated once 02:07:11 although i am still disappointed haskell stack overflows, a bit :( 02:07:21 That's why I copied it via some fixpoint combinator. 02:07:33 But apparently, not good enough! 02:09:03 -!- Jontte has quit ("Konversation terminated!"). 02:10:05 try adding `d before `k 02:11:20 hmph, it eventually stack overflows then too 02:11:33 but at least it prints x'es galore 02:13:38 Ah yes! 02:14:01 Was it because the interpreter evaluated the (.xi) inside the expression first? 02:14:06 right 02:14:43 Is the non-lazy evaluation done for optimisation purpose? 02:15:09 only madore knows :) 02:15:39 Damn him! 02:15:42 but strict is usually more efficient than lazy 02:16:11 when naively implemented at least 02:16:20 oh one more thing 02:16:47 continuations depend on strictness 02:19:13 I wonder if I could make some sort of lazy unlambda. 02:19:41 Well, on something else than the Love Machine 9000. 02:19:51 you know about Lazy K, right? 02:19:54 It puts a strain on my good mood, with all those chars. 02:20:02 Yes, but Lazy K has horrible I/O 02:20:16 so does unlambda, I at least 02:21:09 What would be a good input for a purely functional language? 02:21:39 heh 02:22:04 lazy K's basic idea (stream -> stream function) is pretty neat 02:22:53 The only output I ever got from Lazy K was more combinators. I don't know if it's because that's supposed to be or because I don't know how to use it. 02:22:59 (neat enough that haskell as an interact function which uses it) 02:23:19 you wrote your own interpreter? 02:23:44 No. 02:24:01 weird maybe it has different modes of running 02:24:12 Or I just don't know how to use it. 02:24:31 i mean, you actually got it to print combinators? 02:25:11 If it surprises you, I doubt it. 02:26:41 I think what I got was the Scheme - Lazy K translator and the program never was interpreted. 02:27:05 aha 02:29:40 Is the interpreter only available as the C++ one and the .exe one? 02:30:09 i don't recall 02:30:56 If so, that would explain it. I never got them working. 02:56:35 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)). 02:56:40 -!- puzzlet has joined. 03:07:15 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 03:14:02 * Slereah made some sort of minimalist lazy Unlambda on Python. 03:14:48 I get my gallore of x's, but apparently the expression keeps increasing in size. 03:14:58 `i's all over the place. 03:16:29 Something like this : http://membres.lycos.fr/bewulf/Russell/Loop.txt 03:17:55 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 03:18:00 -!- puzzlet has joined. 03:37:19 When it is said that SKK is equivalent to I, isn't it actually SK[any combinator]? 03:37:29 yeah 03:37:45 Good. Makes abstraction elimination easier. 03:38:34 -!- bsmntbombdood_ has changed nick to bsmntbombdood. 03:38:51 no tail for bsmnt 03:39:31 Or does it? 03:39:33 Damn. 03:39:52 in actual unlambda there is a bit restriction, SKxy = Ky(xy) so x must be something which has no effect when evaluated or applied 03:40:19 Well, since I'm doing it lazy style, no problem 03:40:37 Although I'm not sure it works perfectly. 03:40:52 When I try actual Unlambda programs, I get errors. 03:41:24 actual unlambda programs usually depend on strictness 03:41:44 Well, I would expect screwed up text display. 03:41:48 But not errors. 03:42:07 hm errors? 03:42:33 * pikhq wonders why Unlambda assumes strictness 03:42:53 Index out of range, mostly. 03:43:19 http://membres.lycos.fr/bewulf/Russell/Lazylambda.py 03:43:28 I think it's linked to the argument checker. 03:45:33 you might write a test that the program remains well-formed at eah step... 03:45:41 *each 03:46:53 Well, right now I'm mostly trying some simple programs with the lambda expressions displayd at each step. 03:47:18 -!- puzzlet has quit (Remote closed the connection). 03:47:27 -!- puzzlet has joined. 03:47:29 i can see that you would get index out of range if the first primitve is applied to too few parameters 03:48:17 Probably. I tried to avoid that, but I guess I'll just have to check manually. 03:49:08 ah yes you have a check for single remaining primitve 03:49:21 *primitive 03:49:29 Well, that's only to stop the program. 03:49:48 I was referring to the if k == len(lambexp) : and such 03:50:23 Well, so far s and k with few arguments work 03:50:32 um, i am referring to index out of bounds < 0 03:51:12 Wut? 03:51:51 `ki e.g. will crash at lambexp[i-2]=="`": 03:52:32 `ki doesn't crash. 03:52:45 Heh. ```sii``sii has the expected effect! 03:53:13 I should make a combinator for SII that doesn't leave `i's everywhere. 03:53:13 oh wait you continue at ` 03:53:50 Lazy evaluation make that sort of loop hard on the memory 03:55:01 hm wait 03:55:11 how is it possible that `ki does not crash? 03:55:27 * oerjan doesn't have python 03:56:10 `ki doesn't have the required ``, so it doesn't transform into anything. 03:56:20 It just remains `ki forever. 03:56:26 er i mean the test for `` crashes it 03:56:49 that's my point 03:57:00 sleeps -> 03:57:08 What's the problem in that? 03:57:41 when i=1 and it reaches the k, it gets to the line: 03:57:51 if lambexp[i]=="k" and lambexp[i-1]=="`" and lambexp[i-2]=="`": 03:58:24 the lambexp[i-2] then gives an index out of bounds error afaics 03:58:39 I would expect it to, but for some reason, it doesn't. 03:58:58 The problem boys are usually if lambexp[l]=="`": 04:01:09 oh wait 04:01:28 negative indices in python restart from the end of the string don't they. 04:01:41 that explains it. 04:01:43 Yes. 04:01:51 This might cause problems now that you mention it. 04:02:12 although no expression should ever end in ` 04:02:23 I should make if lambexp[i-2]=="`": inside the other conditional 04:02:31 Yes, but well, you never know! 04:02:54 if you test for well-formed-ness at the start... 04:04:04 oh wait 04:04:11 in theory it could end in .` 04:04:19 That too. 04:05:38 * Slereah added if i>1 04:05:55 It's not a lazy program for nothing! 04:14:35 What's a compact way to do Chuch numerals in SKI? 04:14:49 ``s`k``s``s`k``s`ksks`kk``s`k`sik isn't very compact. 04:15:42 i cannot quite decipher that this late... 04:16:00 Don't bother, I'm not even sure they're proper Church numerals. 04:16:19 but i've usually started with 2 and 3 and used arithmetic 04:17:23 powers are just application, multiplication is composition 04:18:01 addition is composition after application 04:35:00 ``s``s`ks``s`kki``s``s`ks``s`kki`ki 04:35:13 Well, I was hoping for something somehow shorter. 04:35:27 But applied to .x and i, it gives the expected result. 04:35:55 hm... 04:36:03 -!- puzzlet has quit (Remote closed the connection). 04:36:08 -!- puzzlet has joined. 04:36:34 ``s`kki = k 04:37:06 eta-reduction 04:37:55 That man is a combinator machine! 04:38:55 I should make a small file of combinators. 04:39:15 18 and 256 are in my unlambda self-interpreter, btw 04:39:28 Why 18? 04:39:44 length of a table 04:40:09 Well, I have 0 and 2. Let's try 1: 04:40:57 ``s``s`kski = 2 can be extracted from those 04:41:44 and yours above after that reduction 04:42:39 So ``s`kki``s``s`ksk`ki = `ki? 04:42:48 1 = i 04:42:59 Or maybe not. 04:43:05 Aaaargh 04:43:11 ` notation is hard to read 04:45:05 -!- puzzlet has quit (Remote closed the connection). 04:45:10 -!- puzzlet has joined. 04:47:32 How can 1 be i? 04:47:39 Or... 04:47:42 * Slereah thinks 04:48:02 Eta reduction? 04:48:08 Dang. 04:48:21 1 f x = f x 04:48:58 0 f x = x = i x = k i f x, so 0 = k i 04:49:14 It was the (^fx.fx)C = ^x.Cx that worried me 04:49:20 But then I thought of Eta reduction. 04:50:15 haskell puts foralls on automatically, but outermost 04:50:58 * oerjan throws a holy hand grenade after Mr. Wong. after counting to 3. 05:15:07 ````s`k``s``s`kski``s``s`kski.1i 05:15:07 Yay 05:19:53 Argh. It's not even a valid expression apparently 05:31:19 Or not. 05:31:31 Why can't http://www.angelfire.com/tx4/cus/combinator/birds.html give me correct answer? 05:53:24 -!- oerjan has quit ("Good night"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:23:27 Turing fixpoint combinator >> Curry fixpoint combinator 10:18:37 -!- faxathisia has joined. 13:17:12 -!- RedDak has joined. 14:20:05 -!- tejeez_ has joined. 14:25:52 -!- tejeez has quit (Read error: 145 (Connection timed out)). 14:35:14 -!- AnMaster has joined. 14:36:47 -!- oerjan has joined. 15:01:59 -!- Jontte has joined. 15:02:37 -!- Jontte has quit (Remote closed the connection). 15:03:43 -!- Jontte has joined. 15:12:25 -!- Jontte has quit (Remote closed the connection). 15:12:53 -!- Jontte has joined. 15:13:09 -!- Jontte has quit (Remote closed the connection). 15:17:10 -!- Jontte has joined. 15:17:53 -!- Jontte has quit (Remote closed the connection). 15:18:21 -!- Jontte has joined. 15:29:16 -!- jix has quit (Nick collision from services.). 15:29:26 -!- jix has joined. 15:51:36 -!- AnMaster_ has joined. 15:58:48 -!- AnMaster has quit (Connection timed out). 16:10:32 -!- AnMaster_ has quit (Connection timed out). 16:12:58 -!- AnMaster_ has joined. 16:20:04 -!- RedDak has quit (Remote closed the connection). 16:20:56 -!- AnMaster_ has changed nick to AnMaster. 16:26:27 -!- oklopol has quit (Read error: 110 (Connection timed out)). 16:58:09 -!- AnMaster_ has joined. 16:58:20 -!- AnMaster has quit (Connection timed out). 16:59:15 -!- AnMaster_ has changed nick to AnMaster. 17:59:08 -!- Jontte has quit (Remote closed the connection). 17:59:34 -!- Jontte has joined. 17:59:54 -!- Jontte has quit (Remote closed the connection). 18:07:45 -!- Jontte has joined. 18:22:06 * Slereah added the m combinator on the interpreter for SII 18:22:15 m? 18:22:39 http://www.angelfire.com/tx4/cus/combinator/birds.html 18:23:06 SII leaves a lot of `i in the interpreter when using lazy evaluation. 18:23:13 ah yes 18:23:33 i had a similar thought that Lazy K needed it 18:24:04 ideally you would memoize its results somehow. then you would get genuinely cached cyclic structures 18:24:53 Ah, index string out of range. 18:25:08 What to do what to do. 18:25:12 still haven't solved that problem? 18:25:25 Still haven't found the problem. 18:25:40 It's the first time some code I made have the problem. 18:25:44 `m``s`k`.xim 18:25:56 does this show up on the first iteration? 18:26:31 otherwise i repeat my suggestion to make a test that the expression remains well-formed at each stage 18:26:32 Yes. and unsurprisingly, it's in the m combinator section. 18:29:01 Ah yes, I just forgot to add the case where there's another m combinator. 18:30:15 -!- oerjan has quit ("Going, going, gone"). 18:30:30 -!- calamari has joined. 18:34:10 Allow me to give you hell's weather report. . . 18:34:23 -!- Sgeo has joined. 18:34:28 "Cold, with a blizzard expected for the next week. Visibility, 0." 18:35:20 * Sgeo didn't work on PSOX or go on IRC yesterday.. 18:36:07 There are, as of today, no major labels not offering or soon going to be offering DRM-free music for download. 18:49:22 pikhq: well, motley fools just told investors not to invest in record labels. 18:49:42 let us pray to the almighty buck. 18:50:20 I still wouldn't invest in them. 18:50:28 I don't see them lasting out the decade at this rate. 18:50:42 and indies topping billboard charts? bye bye big record companies. 18:51:50 And fairly major artists leaving the record companies? That's *got* to hurt. 18:54:11 everything points to it. only thing left is the pa-ra-dig-em shift. 18:54:24 Which is in progress. 19:09:17 -!- ais523 has joined. 19:17:20 Hello sir. 19:17:51 hello 19:18:17 * ais523 is busy handling the fallout from the recent release of C-INTERCAL 0.27 19:20:23 I actually had a crazy idea for functional INTERCAL 19:20:37 where you could create virtual threads with frozen values for variables 19:20:45 that could still steal control of the program from the main thread 19:20:53 as a complicated way of implementing lambda 19:40:58 Maybe I should write an abstraction eliminator with lambda calculus written unlambda style. 19:40:58 You are insane. 19:41:06 Parenthesis are bothersome to deal with. 19:46:32 * ais523 has one of those, in elisp 19:46:41 not on this computer, though, so I can't post it right now 19:46:45 and it was buggy anyway 19:47:19 besides, if it was fully parenthesised before, all you need to do is get rid of all the closing parens 19:47:24 I have one, but it's in my pen. 19:49:18 I used it to write a P'' interpreter in Unlambda 19:49:47 it was pretty poor-quality Unlambda code, though. Just abstraction-eliminated s, k, and i, apart from a single c 19:50:01 the c was to handle Unlambda's silly I/O model 19:50:57 I'm doing this for some sort of lazy unlambda. 19:51:23 'cause I don't do very well with strict evaluation. 19:57:16 -!- oklopol has joined. 20:02:20 you could always use `d before everything 20:02:57 BTW, I like the way that d can be dynamically moved around the program in Unlambda, so you can decide whether evaluation is lazy or not at runtime 20:05:23 Well, that would increase drastically the size of programs 20:05:42 Which aren't that small to begin with. 20:10:28 clearly the way to go is full Unlambda virtualisation 20:10:44 did something happen while i was gone? 20:12:37 We solved the halting problem. 20:13:45 We also made an infinite tape. 20:14:44 And we made a Malbolge interpreter in Malbolge. 20:15:00 correction: Malbolge-T, there isn't enough memory otherwise 20:15:00 but nothing interesting? 20:15:13 Same old, same old. 20:16:25 ais523: halting problem + infinite tape, but a malbolge self-interpreter is impossible? :) 20:16:47 Well, we're not that good! 20:16:58 Solving the halting problem is easy next to Malbolge! 20:18:16 I'm not too impressed. 20:18:28 infinite tape should be possible; you synthesize it out of materials in the environment 20:18:47 Frankly, a Brainfuck interpreter in Malbolge would be much more significant than an infinite tape or a function H. 20:18:57 Well, even if there's infinite materials, it will take an infinite time. 20:19:15 you can solve the halting problem if you have infinite time 20:19:23 I'm not even going into the energy problem. 20:19:24 I suppose you've seen how it's possible in TwoDucks? 20:19:28 Yes. 20:19:37 I've also read the papers on hypercomputation. 20:19:50 A hypothetical Infinity Machine would actually make the halting problem trivial. 20:19:54 http://www.chiark.greenend.org.uk/~sgtatham/infinity.html 20:19:56 Although it can only solve the halting problems of Turing machine. 20:20:01 Not its own. 20:20:28 http://www.hypercomputation.net/ 20:22:45 -!- tejeez_ has changed nick to tejeez. 21:35:54 -!- oerjan has joined. 21:39:04 -!- ais523 has quit ("""""). 21:40:18 -!- RedDak has joined. 21:54:17 Does this look okay as an abstraction eliminator? http://membres.lycos.fr/bewulf/Russell/AE4.py 21:54:31 For instance, `^a`^ba 21:54:37 gives ``s`kki 21:55:24 the string index handling makes me shiver these days :( 21:55:55 -!- faxathisia has left (?). 21:56:00 -!- faxathisia has joined. 21:56:28 wait a minute, why ` ? 21:56:31 And `^a`^b`^c``ac`bc gives ``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk``s`kki``s`kk`ki``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk`ki``s`kk`ki 21:56:52 you really need some optimizations 21:56:56 I use unlambda notation, because string handling gets that much worse with parenthesis. 21:57:34 :S 21:57:36 really? 21:57:45 Well, for me at least. 21:57:45 um, the notation from the unlambdaifier is ^a^b$a 21:58:06 Well, not the exact lambda notation of unlambda. 21:58:18 you need eta reduction. ``s`kfi = f 21:58:27 I use `^xC for lambda x.C 21:58:39 the ` is deceptive 21:59:13 you're not really applying anything 21:59:21 I guess so. 21:59:37 I though I would run in some ``^x situation, but you're right. 22:00:01 also, the $x notation prevents trouble if you have a variable called s k or i ... 22:01:34 anyway the pain of doing this with indices into strings rather than an actual data structure... >_< 22:02:06 I don't know the difference, so there's that. 22:02:27 of course avoiding pain may not be a big goal here :D 22:02:50 well, an AST 22:02:59 Wait. 22:03:07 I think `^x is still useful. 22:03:32 For the C1 function, which looks for the end of the combinator applied. 22:04:46 So that ^x(^y.y) is counted as one combinator. 22:05:18 `^x`^yy - 2 apply operator, 3 "variables" 22:05:55 nah, all you need to do is treat ^ as you treat ` 22:06:09 Oh. 22:06:28 Well, let's try that. 22:14:34 String index isn't hard to make 22:14:38 It's hard to modify. 22:24:42 Well, seems to work so far 22:24:49 Let's try eta reduction now. 22:33:03 Works for k. 22:33:39 s doesn't seem to eta reduce that easily though 22:37:24 Maybe replace ``skf by i. 22:38:31 with lazy evaluation that is fine 22:38:56 although, i don't think ``skf is produced by abstraction elimination 22:39:14 hm or could it? 22:39:54 ^x`kx`fx 22:40:12 after eta reduction, that would become ``skf 22:40:16 I can't see it in the AE of s at least. 22:40:40 er, missing a ` 22:42:38 oh you mean reducing ^x^y^z``xz`yz to s somehow? 22:42:57 Yes. 22:43:12 So far, with eta reduction, it's ``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kkk``s`kk`ki``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk`ki``s`kk`ki 22:43:23 Which works fine on the lazy interpreter, but well. 22:43:38 -> ^x^y``sxy 22:44:08 the trick is to do abstraction elimination and eta reduction fully on the innermost lambda first 22:44:30 Ah. Right now, the eta reduction is only on the end of the process. 23:16:22 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 23:34:37 The abstraction elimination seems to work okay. 23:35:55 Or maybe not. 23:36:08 Index out of range for half the Turing combinator. 23:37:01 Oh. I just wrote it wrong. 23:48:10 -!- timotiis has joined. 23:48:49 Slereah: Out of immense curiosity, why are you so intent on inventing new combinators/making a lazy Unlambda? :p 23:50:53 I'm not inventing them. 23:51:00 All those combinators already exist! 23:51:21 The lazy is because I'm just not that eager to use strict evaluation. 23:51:33 * oerjan groans 23:51:52 * oerjan wonders if Slereah knows he just made a pun 23:52:17 What, lazy? 23:52:32 strict and eager are synonyms :D 23:52:39 Oh. Then no. 23:52:48 woah 23:53:16 That was such an incredibly bad pun 23:53:34 amazing coincidence 23:55:22 everyone can make a pun others don't understand. but to make one you don't understand yourself... :D 23:56:51 Boy, now that I know, I'm thinking of an even worst pun! 23:57:30 * pikhq groans 23:59:14 -!- timotiis has quit ("leaving"). 2008-01-05: 00:02:43 http://membres.lycos.fr/bewulf/Russell/AE6.py 00:05:04 There's nothing to distinguish variables from combinators, so I would avoid s-k-i. 00:05:22 Although I'm not even sure what it might do. 00:07:15 Well, it screw it up apparently. 00:50:50 -!- faxathisia has quit ("Leaving"). 01:15:31 -!- Sgeo has quit ("Ex-Chat"). 01:55:43 -!- SimonRC has quit (Read error: 110 (Connection timed out)). 02:05:34 -!- tesseracter has changed nick to weilawei. 02:08:32 -!- weilawei has changed nick to tesseracter. 02:21:05 Damn. The predecessor function won't pass through the ABSTRACTOR 02:48:46 -!- Jontte has quit (Remote closed the connection). 04:00:03 -!- calamari has quit ("Leaving"). 04:49:33 -!- slereah_ has joined. 05:08:48 -!- Slereah has quit (Read error: 110 (Connection timed out)). 05:09:05 -!- oerjan has quit ("Good night"). 05:48:25 -!- slereah_ has changed nick to Slereah. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 10:52:53 -!- SimonRC has joined. 10:59:00 -!- Jontte has joined. 11:48:39 -!- sebbu has joined. 11:50:47 -!- AnMaster_ has joined. 12:01:50 -!- AnMaster has quit (Connection timed out). 12:19:22 [amsg] carte mère, cpu, ram, carte graphique, alim changés, windows marche encore 12:25:20 -!- faxathisia has joined. 12:25:24 -!- Hiato has joined. 12:25:34 Wassabi all :) 12:26:16 -!- AnMaster_ has changed nick to AnMaster. 12:34:52 alright fine, Hi all 12:35:19 Hello 12:36:11 Anything new happening in the eso community? (Wasn't here since Wednesday...) 12:37:26 hmm I'm not sure 12:37:39 ok cool 12:37:44 I'm trying to decide if this language is esoteric or not 12:37:56 which? 12:38:06 It's called Janus 12:38:15 Here is bubblesort http://rafb.net/p/woIN0k75.txt 12:38:31 hrmm 12:38:39 looks Lua-esque to me 12:38:43 it does look so odd (it's almost exactly like the While language), but you can any valid program in it forwards and backwards 12:38:51 which is certainly not usual :) 12:38:59 woow 12:39:03 that's cool 12:39:04 so I'm not sure how to classif y it 12:39:13 did you make it? 12:39:27 well I read a paper on it, then I emailed the authors asking for their interpreter.. 12:39:35 I see 12:39:36 they didn't reply though.. so I have written one 12:39:42 lol, awesome 12:40:06 hrmm 12:40:07 well 12:40:08 * faxathisia (is doing a compiler now so I can hopefully run the self interpreter) 12:40:18 that would be wicked 12:40:30 I must say, that it is not what I would expect from an eso lang 12:40:44 yeah, it might not count 12:40:49 * faxathisia isn't sure 12:40:52 I generally expcet either obfuscation or minimisation 12:41:07 seems to be a very structured language to 12:41:11 very keywordy 12:41:13 ;) 12:42:18 the only things are += -= ^=, if_then_else_fi_, from_do_loop_until, call_, uncall_ and skip, and the only data is numbers 12:42:34 oh... hrmm... 12:42:41 (32 bit integers) 12:42:44 I see 12:42:47 ^=? 12:42:50 XOR 12:42:54 cool 12:43:05 += -= are inverse, ^= is it's own inverse 12:43:13 yeah 12:43:16 and procedure 12:43:20 is that also a keyword? 12:43:23 Yes 12:43:33 hrmm 12:43:36 maybe it's eso 12:43:40 so hard to tell 12:43:42 ;) 12:43:45 It's kind of on-the-edge :D 12:43:49 yip 12:43:57 * faxathisia should try to come up with an esolang... 12:44:07 Yeah, that's a nice idea 12:44:16 I'd like to see what your mind can create :P 12:44:50 -!- timotiis has joined. 12:45:24 * faxathisia would really like to see more interesting sub-turing languages though 12:45:41 well, Im working on one as we speak 12:45:51 oo 12:45:57 actually though 12:46:03 it might be Turing complte 12:46:07 but who knows :) 12:46:23 someone will soon have proof by implementing brainfuck in it 12:46:24 :D 12:46:31 lol, yip 12:46:36 What is it? 12:46:43 I'll link now 12:46:46 one sec 12:48:53 http://rafb.net/p/TFMAVK60.txt 12:49:08 if stuff is mis-aligned, it's cause it cam out of word 12:49:11 ;) 12:49:22 sorry about the quantity 12:53:15 It's got loops and conditional branching.. probably universal 12:53:24 true 12:53:25 mad though :p 12:53:29 thanks :) 12:55:52 hmm 12:55:58 ? 13:01:38 be back soon(ish) 13:10:38 esolang propsal 1: Nothing -- Only valid program is the empty program, this language can compute everything in the NONE complexity class 13:14:20 back 13:14:22 hrmm 13:14:26 faxasthisia 13:14:34 I'm not so keen on that one 13:14:42 for some odd reason ;) 13:14:54 that would be leaning towards joke language 13:15:35 even though scientifically accurate, it can compute anything of zero complexity 13:15:48 http://qwiki.stanford.edu/wiki/Complexity_Zoo#none 13:16:29 lol 13:16:31 well 13:16:36 yes, you have a point 13:16:53 but then the interpreter would be int main() {return0}; 13:16:55 * faxathisia provides an implementation, in Nothing: 13:16:56 fascinating 13:16:59 :P 13:17:01 lol 13:17:26 ok, I wrote up the hello world prog : "" 13:17:31 and fib 13:17:33 That's impossible 13:17:35 ;) 13:17:37 true 13:17:44 what about a self interpreter 13:17:47 """" 13:18:05 I already pasted a self interpreter :P 13:18:14 :) 13:18:23 ok ok *tries harder* 13:18:29 lol 13:18:36 * faxathisia is reading the complexity zoo for inspiration 13:18:54 preferably come up with something with >=1 dimension of complexity 13:18:56 :) 13:18:59 enjoy ;) 13:19:01 hehe 13:32:04 ok, going somewhere, be back later 13:32:08 -!- Hiato has left (?). 15:28:51 -!- jix has quit (Read error: 60 (Operation timed out)). 15:29:18 -!- jix has joined. 15:57:05 -!- sebbu2 has joined. 16:01:10 -!- iEhird has joined. 16:01:26 esilang idea. 16:01:54 haskellesque type definitions only 16:02:08 they are much more powerful though 16:02:40 function bodies ate inaccessivle and determined by something like lambdabots djinn 16:03:24 Turing complete. hopefully. 16:03:56 thr ultimate dwcparative Lang 16:05:39 iEhird I love it!! 16:06:07 this is what I want to code in 16:06:14 though it is not very eso.. 16:06:39 Do you know this sort of exists already? 16:07:01 (just that the djinn bit is mostly done by the programmer) 16:08:18 -!- iEhird has quit (Remote closed the connection). 16:08:21 -!- oerjan has joined. 16:14:39 -!- sebbu has quit (Read error: 110 (Connection timed out)). 16:14:59 -!- iEhird has joined. 16:18:51 faxathisia: i say there are at least two kinds of esolangs, those that are syntactically esoteric and those that are semantically esoteric. Janus should not be disqualified just for not being in the first group. 16:19:48 especially since a bit of the second makes a language much more interesting... 16:20:37 it's just that making a weird syntax is so much easier that those tend to be a huge majority 16:22:09 in that case, Do you think it is one or not? 16:23:13 I mean I know of only.. 5 I think reversible languages 16:23:20 i think reversible languages are pretty esoteric :) 16:23:30 cool :D 16:23:48 there's a category on the wiki for them 16:24:20 however, we have a tradition that the intention of the language author counts too 16:24:37 oh right.. 16:24:56 I really have no idea what the authors intended 16:25:06 might be research 16:26:19 indeed 16:26:26 -!- faxathisia has left (?). 16:26:29 -!- faxathisia has joined. 16:27:38 type Integer = a -> Integer -> Integer 16:27:42 I think 16:27:59 huh ? 16:28:25 zero :: a -> b -> b 16:28:26 Error: Recursive type 16:28:41 oerjsn this ain't Gaskell 16:29:03 It's twelf! 16:29:03 Error: Lousy typing 16:29:04 thisbis Tc type system and nothing elsev-skell 16:29:18 Nat : Type, Z : Nat, S : Nat -> Nat 16:29:19 error iPhone youvhedreej tuppbg 16:29:25 touchscree 16:29:44 fax not enough without bodies 16:29:46 I don't think turing complete type system is good idea 16:29:48 anyway 16:29:49 but almost turing 16:30:05 if everything terminates you can encode proofs 16:30:27 otherwise you can prove false and proofs don't mean anything anoymore 16:30:46 Qi has TC type system apparently though 16:31:24 hmm anyone know a func rep of into that isn't church numerals 16:31:32 afair the point is if your type system is not terminating then you have to actually _run_ the types in your program 16:31:50 to check that they do terminate 16:32:03 you cannot just do them statically 16:32:04 oerjsn the types terminate the functions autogrnned by them may not 16:32:24 if you can encode a fixpoint in the type system then you basically got X : (a -> a) -> a, which lets you prove any 'a'? 16:32:40 e.g. everything is provable 16:32:57 yep - except the proof will not terminate 16:33:19 so if you actually run the proof you are still safe from reaching an erroneous conclusion, i think 16:33:26 hmmmmm 16:33:35 type Recur = Recur -> a 16:33:52 now this as usual my vague understanding from reading discussions... 16:33:57 *is as 16:34:22 Y :: Recur a -> ... 16:34:33 CBS to type the rest Oman iPhone 16:34:44 someone else fi I'd :P 16:34:49 lol 16:35:29 * oerjan half thinks iEhird must be wearing boxing gloves as well :D 16:35:50 no just typing really fast and ompeefixely 16:35:54 imprecicelt 16:36:22 doesn't it have spelling correction or something? 16:36:28 yes 16:36:39 that's the main problem 16:37:17 * faxathisia agrees about it being the ultimate declarative language 16:37:45 The kind of theorm proving required would be ... a lot of work to code in the first place though 16:38:39 I guess 16:38:46 I would just do 16:39:22 djinn(defs) 16:39:37 and die if we run into problems 16:39:49 actually they should add #djinn to haskell 16:40:00 #djinn curry :: ((a, b) -> c) -> a -> b -> c 16:40:20 IMO the best strategy would be compiling to c using some vm like stuff for dtnamicism 16:40:36 compiler written I'm hadell for pat matching 16:41:22 I think I lost xobbecton??? 16:41:30 hm a language based on spelling errors... 16:41:39 iEhird: still hearing you 16:42:09 lol xobbecton 16:42:30 oerjsn Yes 16:42:34 :D 16:43:34 I want iEmacs for iphone 16:43:51 write my compiler right here 16:43:53 :P 16:47:09 -!- iEhird has quit (Remote closed the connection). 16:53:08 -!- iEhird has joined. 16:56:44 -!- iEhird has quit (Remote closed the connection). 17:58:30 *yawn* Hello people. 18:02:18 * pikhq is of the opinion that an iPhone has a horrible keyboard, as do most portable devices. 18:04:24 hm, I wasn't a great fan of it when I played with one 18:05:50 Here, have some propaganda : http://www.thebestpageintheuniverse.net/c.cgi?u=iphone 18:06:22 no thanks, I don't feel like having propaganda 18:06:40 I do, but not right now 18:07:17 The iPhone actually has a decent interface, aside from that damnable keyboard. 18:07:28 The big thing that I hate is that it's all locked up. 18:07:37 I enjoy things like Rockbox and OpenMoko. 18:07:52 There's just something wonderful about sticking Doom on your MP3 player. 18:08:51 I have a mp3 of some vaguely Doom inspired song on mine. 18:08:55 "Blood on the wall" 18:09:06 Mine also runs the Game of Life. 18:10:02 my phone runs the game of life. useful when bored 18:10:57 Mine would if a) I had money b) the damned Neo 1973 would ship already. 18:11:26 http://rome.ro/sounds/Blood_On_The_Walls.mp3 18:11:35 Heh, still online. 18:19:42 hehe 18:19:53 there's a pretty nifty little java implementation out there 18:21:14 -!- iEhird has joined. 18:21:24 -!- iEhird has quit (Client Quit). 18:21:35 -!- iEhird has joined. 18:21:54 now THAT'S clever 18:22:36 a scheme interp that has really efficient continuations: it actually portable c 18:22:45 plies the c stack 18:23:51 now if you did that in a compiler scheme-c interaction would be trivial 18:24:17 scm proc = c proc 18:25:19 tail calls could be done using setjmp 18:25:34 Gah! Long jumps! 18:25:34 :p 18:25:43 like a macro TAIL(func,arg...) 18:26:19 setjmp(buf); func(buf,arg...); 18:26:37 dunno 18:27:22 basically: every function that tailcalls has a trampoline embedded 18:28:36 You want fun? int foo __attribute__((cleanup (foo_deconstructor))) = 0;. 18:28:44 Mmm. Attributes. :p 18:29:39 :) 18:29:57 no gcc specifics! 18:31:06 But GCC runs everywhere!... 18:32:20 SCMVAL scm_fact(SCMENV env, struct jmp_buf tail, SCMVAL n) { 18:32:43 hmm make that jmo buf * 18:33:14 hm 18:33:20 not sure... 18:35:22 pikhq 18:35:36 I guess if you are stack smashing already 18:36:19 then you could mangle sp-1 then jump 18:51:33 * pikhq observes that stack smashing might *not* work on this system. . . 18:52:05 My system, being AMD64, enforces the NX bit. 18:52:14 * Slereah imagines the incredible Hulk, smashing stacks 18:53:04 there's probably a way pikhq 18:53:21 stack smashing is quite a common trick 18:54:39 -!- iEhird_ has joined. 18:55:00 Um. . . Surely stack smashing is something that shouldn't be used? 18:55:19 (no more than actually *using* a buffer overflow?) 18:56:40 controlled stack smashing is useful in cases like this :-) 18:57:19 most/all common arch/os's support it somehow 18:57:33 It's also non-portable as fuck, *and* liable to break on systems like OpenBSD, NX-bit supporting systems, etc. 18:57:51 you can do it on openbsd 18:57:59 (granted, you can disable the stack-smashing protection on those systems. . . Doesn't make that a good idea.) 18:58:13 writing a libcstack would be good 18:58:16 Yeah; you have to compile with -fno-stack-protector 18:58:47 pikhq several common prigs do it 18:58:49 progs 18:58:51 -!- Sgeo has joined. 18:59:10 Doesn't make it a good idea. 18:59:50 It's almost *exactly* like relying on buffer overflows in your code. 18:59:57 void *dest; cstack_copy(dest); 19:00:25 cstack_unwind(); cstack_pushall(dest); 19:00:58 or something 19:04:52 -!- iEhird_ has quit. 19:05:14 -!- iEhird_ has joined. 19:05:54 -!- iEhird has quit (Read error: 113 (No route to host)). 19:13:59 pikhq ping 19:14:42 Pnog. 19:15:57 Gnap 19:18:20 I wonder how this will interact with gnu c 19:19:06 That depends. 19:19:28 If it depends upon undefined behavior, GCC will shoot you, then hand you a few errors and warnings. 19:19:30 -!- iEhird has joined. 19:19:45 actually I wonder the most portable way to find the srams 19:19:47 stack 19:21:06 -!- Hiato has joined. 19:21:29 Alright, back :) 19:21:32 Wassup all 19:22:03 Faxasthisia, how's the inspiration going? 19:22:08 another fun trick: call out native compiler then cast object code to func 19:22:25 = traditional interactive scheme system 19:22:52 -!- _KS has joined. 19:31:47 -!- oerjan has quit ("Sup"). 19:35:37 ping 19:36:06 -!- calamari has joined. 19:42:59 -!- Hiato has left (?). 19:45:52 -!- iEhird_ has quit (Read error: 113 (No route to host)). 19:57:20 -!- iEhird has quit. 19:58:01 -!- iEhird has joined. 20:06:08 There is one way to make tail recursion really easy to do: 20:06:16 seperate the data and return stacks 20:06:27 It is trivial for forth-like languages 20:07:10 how does that make it easy? 20:08:54 all calls have either a look-ahead or the compiler modifies the call into a jump 20:10:09 and every defined word ends in a call to another word, so there are lots of oportunities for tail-recusion 20:10:13 optimisation 20:10:15 ("hello".^#)^# 20:10:18 iEhird: ? 20:10:43 stack based esolang requiring quoting and unwrapping to loop! 20:11:05 (...) is a list 20:11:21 with elements "hello", ., etc 20:11:29 ^ is dup 20:11:39 . is output and pop 20:12:14 # is append the list on the top of the stack to the program and pop 20:12:25 so (x)# == x 20:13:15 -!- Hiato has joined. 20:15:44 iEhird: cool 20:15:52 seems familiar though 20:16:21 oh damn underload foes it 20:16:38 ok how about this 20:16:58 # wraps the rest I'd the prog 20:17:13 #abc -> (abc) 20:17:26 wait, no 20:17:44 hm 20:18:27 what about a Lang involving rewriting its own code by virtue of it being concatenrive and lists cab store code 20:20:04 ("hello".$0@$+$0!)$0@$+ 20:20:11 I think that's right 20:20:27 woow 20:20:45 where $ the program as a list 20:20:54 @ nth element 20:21:00 + append 20:21:05 ! delete 20:22:09 nasty 20:22:19 just put the whole program down, and have the output be the code after an illegal operation is executed. The only things you can modify are progra msource 20:22:25 simonrc but fun 20:23:51 ("hello"0\$@)0\$@ 20:24:15 @ get element call func with it 20:24:31 \ quote func 20:24:33 hmmm 20:24:37 * SimonRC goes. 20:25:31 ("hello"!+@0)+@0 20:26:03 hm 20:26:22 hm 20:26:58 I think that a language where the only thing you can do is modify the program itself would be interesting. Then the prog itself is simply read left to right, and each symbol has it's effect 20:27:00 +(!"hello"+@0) 20:27:11 no more stack 20:27:14 as soon as something illegal happens, the whole program exits, printing the current source 20:27:25 next remove @ 20:30:34 if you have a :xyz 20:30:41 x index 20:30:43 y list 20:30:49 z thing 20:31:01 append to y at x z 20:31:10 then that's possible 20:31:10 -!- calamari has quit ("Leaving"). 20:36:40 -!- calamari has joined. 20:37:40 Is daar iemand hier wat verstaan my as ek Afrikaans praat? 20:38:49 ?? 20:39:00 Ek het so gedink. 20:39:14 Come again, preferably in English 20:39:23 I said, "Is there anyone who will understand me if I speak Afrikaans?" 20:39:31 then I said "I though so" :P 20:40:05 I see 20:40:19 I got Afrikaans, but that was about it 20:40:24 lol 20:40:27 I suspected as much 20:40:30 what about 20:40:47 Mih mevin oti ca-usher uni ma-duber Ivrit? 20:40:49 Well, the verstaan is close enough to other germanic languages to understand too 20:40:55 yip 20:41:03 well, Afrikaans is nearly Dutch 20:41:05 For the rest, it will be hard! 20:41:09 :) 20:41:15 and the Hebrew? 20:41:19 no-one? ;) 20:41:27 I once spoke hebrew. 20:41:32 :D 20:41:34 When I was six years old. 20:41:40 Now, I've forgotten most of it. 20:41:45 Aha, well, I see 20:41:53 where are you from, Slereah? 20:41:56 France. 20:41:59 Cool 20:42:04 But my dad taught me. 20:42:04 so let me try: 20:42:15 Ja na par pa Franscois... 20:42:18 or something 20:42:20 cool 20:42:21 puhutteko suomea 20:42:21 Lulz 20:42:29 (= do you speak finnish) 20:42:36 Perkele! 20:42:36 nien 20:42:53 Ngia Kwazi Ogokoolooma Isizulu? 20:43:00 (I can't spell) 20:43:11 (=do you speak zulu?) 20:43:33 I got the zulu part! 20:43:36 Heh. 20:43:39 Hooray :) 20:43:56 there should be lots of "h" s though 20:44:30 Slereah, if you don't mind my asking, where was your dad from? 20:44:41 France as well! 20:44:46 :) 20:44:59 So where did the Hebrew pop out from ;) ? 20:44:59 But my great-grand-father was from Turkey. 20:45:04 Aahh 20:45:05 ok 20:45:09 mystery solved 20:45:10 And his ancestors from Spain. 20:45:15 hrmm 20:45:18 And their ancestors from Judea. 20:45:22 Woow 20:45:23 So that's that. 20:45:28 Ok, I see 20:45:37 nice to know your family history :) 20:45:48 I don't really know mine... 20:45:56 I have three relatives interested in genealogy, so it's not hard 20:46:05 lol, classic :D 20:46:36 Hrmm.. what is Haskel for? 20:46:43 Programming? 20:46:43 can it actually be used as a language? 20:46:47 yeah, yeah 20:46:50 but I mean 20:46:53 being laughed at because you don't use scheme, of course 20:46:53 ofc 20:47:05 should I bother writing anything in it 20:47:09 oh, I see 20:47:09 Oh timotiis, you minx. 20:47:11 right 20:47:11 its one of the best production lands 20:47:21 along with scheme 20:47:23 Hiato : Well, if you bother writing in Brainfuck, does it matter at all? 20:47:32 Slereah: I've been called a lot of things, but I think minx is a first 20:47:34 lol, so very true Slereah 20:48:05 but say, I distribute a prog (script?) in Haskell, is everyone gonna laugh and say :"Go learn a real language"? 20:48:29 compaered to FPC, Ruby etc 20:48:34 nah, it's a good language 20:48:37 I won't, but that's because I'm not in the programming communauty. 20:48:57 I also have a Haskell interpreter, to run the classic Unlambda. 20:49:15 I need to grab the scheme unlambda interpreter one of these days 20:49:20 Roger that timotiis, thanks. Slereah, that's a shame :( 20:49:27 no hiato 20:49:37 -!- iEhird has quit. 20:49:39 lol, wow, plenty of confidence there 20:49:42 ha 20:49:57 -!- iEhird has joined. 20:49:59 guess you can't give him a comeback, because he's not here 20:50:01 lol 20:50:09 yes I am 20:50:09 nevermind 20:50:15 Me, when I program, it has to be really easy or really hard. 20:50:21 Either Python or esolands. 20:50:25 g* 20:50:32 hrmm 20:51:04 Python + me = :( 20:51:04 Ruby + me = :\ 20:51:04 Delphi + me = :) 20:51:04 Eso + me = :D 20:51:16 But, python is awesome! :o 20:51:24 I can't use it though 20:51:31 I keep getting indentation blah blah 20:51:46 I like scheme, never really got into anything with too much syntax to learn 20:51:46 Heh. 20:52:15 scheme+haskell+c for objcode 20:52:18 yum 20:52:27 :) 20:52:31 hm 20:52:44 I should go back to haskell someday 20:53:12 Is that the Mecca of programmers? 20:53:13 incidentally, does anyone know if TeX is turing complete? 20:53:16 maybe 20:53:23 yes it is 20:53:26 I liked the XKCD on lisp, as far as they go 20:53:29 Well, other than Haskell, is there any *interesting* _easy_ (ish) and pleasant language that yanyone can recommend 20:53:36 *anyone 20:53:39 Scheme! 20:53:39 scheme. 20:53:45 cool 20:53:48 will check it out 20:53:52 I don't use many languages. 20:54:00 it's a dialect of lisp, so you'll have to get the hang of the parens 20:54:08 but it's really quite fun to use 20:54:14 O, I'll dig arounf 20:54:15 cool 20:54:17 *around 20:54:27 I've been wanting to move from delphi for a long time.. 20:54:34 but the C group brings me to tears 20:54:35 use my risk scheme compiler! oh wait its not written yet :P 20:54:41 and ruby has no real purpose 20:54:44 ;) 20:54:48 lol 20:54:54 use chicken. for now. 20:54:59 well, I'd like to iEhird 20:55:03 ruby could be worse. I've just never liked anything with more than two types of brackets 20:55:07 but PETA has something to say 20:55:20 Timotiis 20:55:22 I think 20:55:25 * Slereah is eating chicken right now. 20:55:29 heh. 20:55:31 Come and get me, PETA! 20:55:32 Therefore you are? 20:55:40 that how much you like a language, is directly related to the tutiorials you use 20:55:44 Yes. I are eating chicken. 20:55:46 :) 20:55:46 chicken = scheme compiler 20:55:47 lol 20:55:52 Maybe. I got into scheme with SICP 20:55:52 :D 20:56:11 Well, Ruby for me was hilarious because of Why's poignant guide 20:56:49 dangit, keep forgetting I have screen running. It's C-a a C-k to kill the line 20:57:38 :) 20:59:33 woow 20:59:39 Scheme looks daunting 21:00:00 why? 21:00:11 I could give you a basic primer in about 10 mins 21:00:19 yes please 21:00:21 :) 21:00:26 I get the reverse polish notation 21:00:28 but the rest.... 21:00:32 no, that's just polish notation 21:00:41 lol, shows how much I know 21:00:54 rpn is 3 2 +, pn is + 2 3 21:01:01 oh, I see 21:01:04 right o 21:01:09 rpn? 21:01:14 about that primer... 21:01:17 reverse polish notation 21:01:23 Oh. 21:02:00 hiato 21:02:02 okay... 21:02:05 let me see 21:02:14 what part is hard 21:02:18 yes iEhird 21:02:31 well, the whole thing in the wikipedia entry 21:02:38 syntax of define: (define (name arg1 arg2 ... argn) ) 21:02:38 (define a 10) (define eval-aplus2 (delay (+ a 2))) (define a 20) (force eval-aplus2) => 22 21:02:49 ok 21:02:51 roger 21:03:19 hiato 21:03:26 yes iEhird 21:03:28 (define (square x) (* x x)) 21:03:32 that should make sense, yes? 21:03:34 (lambda (args) code ) 21:03:34 yes 21:03:38 crystal clear 21:03:50 that square syntax 21:03:51 ooh, ok 21:03:54 yes 21:03:55 us short for 21:04:12 (define square (lambda (x) ... 21:04:20 aha 21:04:21 well 21:04:23 what's wrong with this one?, (define (fib n) (+ (fib (- n 1) (- n 2)))) 21:04:36 as in synatx 21:04:38 or logic? 21:04:40 logic 21:04:45 timoriis 21:04:46 well thta's obious 21:04:51 silly 21:04:54 :P 21:05:00 intentional, I promise 21:05:15 1 argument is taken for fib for starters, yet 2 are provided 21:05:16 then 21:05:21 its gonna go negative 21:05:26 very quickly 21:05:28 needs to be 21:05:35 no, the arguments aren't a problem. the lack of a test is a problem 21:05:48 timoriis wrong 21:05:53 (fib a b) 21:06:12 lawl yuu dum 21:06:13 generates the nth fib. what's wrong with that, apart from the fact it never stops computing? 21:06:32 hrmm 21:06:35 well, and it's tree recursive, so it's hopelessly ineffiecient 21:06:38 well 21:06:44 dude 21:06:50 read your code 21:06:52 I don't see it 21:06:55 I have, I wrote it 21:07:05 Hiato: doesn't test for 0 or the like 21:07:09 you give fib two args 21:07:19 Oh, ok I see 21:07:21 ah, shoot. typo 21:07:24 well I said it would go negative 21:07:27 lawl 21:07:34 (define (fib n) (+ (fib (- n 1)) (fib (- n 2)))) 21:07:35 (11:05:36 PM) Hiato: 1 argument is taken for fib for starters, yet 2 are provided 21:07:43 that's now correctly wrong 21:07:43 ;) 21:07:59 -!- iEhird has quit. 21:08:12 so if you feed in 0 21:08:18 -!- iEhird has joined. 21:08:20 its gonna give the fib's in negative 21:08:26 ? 21:09:00 yeah 21:09:05 cool 21:09:12 it never tests for reaching the bottom of the recursion 21:09:13 I grasp it :) 21:09:20 yeah 21:09:27 (11:05:42 PM) Hiato: its gonna go negative 21:09:33 hiato 21:09:33 Hooray ;) 21:09:36 suggestion 21:09:38 yes iEhird 21:09:51 read the little sxhener 21:09:55 sxhener 21:09:59 yes, read that 21:10:04 schemer 21:10:05 (define (fib n) 21:10:05 (if (zero? n) 0 21:10:05 (if (= n 1) 1 21:10:06 (+ (fib (- n 1)) (fib (- n 2)))))) 21:10:09 that's better 21:10:32 timoriis! remember tls? use cond 21:10:33 although it would break on a negative input 21:10:46 I much prefer if when it's a small statement like that 21:10:54 ok, I see now the structure of scheme 21:11:02 nested ifs are bad 21:11:03 but, where does a prgramme enter etc 21:11:13 hiato anywhere 21:11:15 (define (fib n) 21:11:16 (cond 21:11:16 ((zero? n) 0) 21:11:16 ((= n 1) 1) 21:11:16 (else (+ (fib (- n 1)) (fib (- n 2)))))) 21:11:22 and does (if (zero? n) 0 return zero? 21:11:30 you just put your code there 21:11:32 if n was 0, it does 21:11:39 cool 21:11:43 mostly 21:11:54 you interact with scheme via a 21:11:55 mostly? 21:11:58 repl. 21:12:02 zero? n returns #t if n was 0, so the if takes the first option, which was 0 21:12:14 you enter an expression it shows the results 21:12:26 oh, I see 21:12:34 iEhird, so like a shell 21:12:38 you do (load "file") to load some code you wrote 21:12:48 or just paste it in 21:12:48 cool, I get it 21:12:51 ok 21:12:54 when you're done developing that iteration 21:13:03 well, now I see the light ;] 21:13:03 then you use a batch compiler 21:13:12 and produce an executable 21:13:17 w00t 21:13:20 ;) 21:13:26 I like Scheme already 21:13:28 iEhird: happier with this then? 21:13:29 (define (fib n) 21:13:29 (if (or (zero? n) (= n 1)) 21:13:29 n 21:13:30 (+ (fib (- n 1)) (fib (- n 2))))) 21:13:39 there you go, properly written with a single if 21:13:42 and is functional stuff actually built with it? 21:13:47 it is functional 21:13:53 meh 21:13:55 I meant 21:13:55 although taht wasn't quite your question 21:14:04 it is imperative with a functional core 21:14:05 fully functional programmes 21:14:06 * Slereah is writing the help file for his pseudo-unlambda. 21:14:11 It's full of bird names. 21:14:14 (cool) 21:14:18 there is a set! func 21:14:23 ( :) ) 21:14:25 da, so it's not quite pure 21:14:25 meh 21:14:30 no no 21:14:33 I mean 21:14:34 but it's pretty good, and still generally usable for things 21:14:43 oh, what is it used for? 21:14:48 has Bob written stuff in Scheme 21:14:54 that you and I use 21:14:55 etc etc 21:15:03 yes, essentially timotiis 21:15:41 it's occasionally an extension language. I think the gimp is scripted in scheme. guile is a scheme dialect. you can do some pretty neat web stuff with it as well iirc, and there's an implementation for shell scripting 21:15:42 brb 21:15:47 k 21:16:00 awesome 21:16:00 but you probably don't use something written in it daily 21:16:06 understood 21:17:07 shceme vs haskell (because I like languages that can do [99,98..0] ) 21:17:10 which one? 21:17:46 http://99-bottles-of-beer.net/language-scheme-582.html 21:17:50 http://99-bottles-of-beer.net/language-haskell-1070.html 21:20:09 your call, really. I'd tend to rate scheme as easier to learn, but that's my opinion 21:20:31 ok, thanks 21:20:39 I'm just interested 21:20:44 because they both look the part 21:20:49 and both are unique 21:21:01 Does this work as an SKI-unlambda translator? http://membres.lycos.fr/bewulf/Russell/ski-unlambda.py 21:22:31 -!- Jontte has quit (Remote closed the connection). 21:22:35 I'm actually half-working on writing an infix notation system for scheme, including operator precedence :) 21:23:09 -!- Jontte has joined. 21:23:15 why? 21:23:20 for the hell of it 21:25:09 it's an interesting project to work on, really 21:25:22 and some of the functions I'm building as a part of it are quite useful 21:34:17 -!- RedDak has joined. 21:41:11 The iszero function seems to go okay through the Abstractor. 21:42:13 Why won't pred or succ go through! 21:44:18 Hiato: i got that. 21:44:18 that afrikaans 21:44:29 really 21:44:31 awesome 21:44:55 As ek nou Afrikaans pratt, sal net ons dit verstaan! 21:45:13 Praat jy Hollandse of Deutsch? 21:45:19 Hiato: "because they both look the part" -- What part? 21:45:55 by "the part" I mean "interesting, new to my eyes and different from everything I have seen thus far" 21:45:58 "Mih mevin oti ca-usher uni ma-duber Ivrit?" <<< this one i have no idea about, though, perhaps "i opine"? 21:45:58 :P 21:46:22 lol, well oklopol 21:46:26 ah right, I agree.. they are very unique 21:46:34 hebrew is next to impossible to write out in enlgihs letters 21:46:36 *English 21:46:54 yes faxathisia, even though I finally went with Haskell 21:47:04 because of lazy evalutaion and less brackets 21:47:23 should learn both though 21:47:51 yeah, I will eventually, but first I want to understand functional programming, and what better way to do it then Haskell 21:47:58 scheme, of course 21:47:59 then I can move onto scheme 21:48:06 I don't think there is a better place to find out what the hell call-with-current-continuation does than scheme 21:48:09 well, I see Haskell as being easier 21:48:18 true 21:48:26 though haskell is just, well I don't know really 21:48:35 I just think it looks easier to learn 21:49:30 faxathisia: I use scheme, and I still haven't figured out what it does 21:49:54 not properly, anyway 21:49:56 I have a few ideas 21:50:31 -!- ehird` has joined. 21:50:54 haha 21:51:09 anyhow. 21:51:21 ah, on a better machine at last? 21:51:57 Faxathisia: Did you ever come up with an Esolang in the end, or did the zoo prove useless? 21:52:17 well I kind of just watched Dune 21:52:20 :( 21:52:28 * faxathisia is going to try agian 21:52:30 oh 21:52:35 yes, I like that idea 21:52:47 Dune Made a Dune esolang? 21:53:05 lol, nope 21:53:08 "More spice required" 21:53:14 :) 21:53:45 Hm. 21:53:50 A D&D esolang. 21:54:03 that would be cool 21:54:08 Hiato: did it have something to do with "i opine"? :P 21:54:15 Variables would be in your backpack 21:54:19 though I think it is in the work in progress thing 21:54:21 fucking 40 minutes of logs 21:54:27 what is I opine 21:54:28 lol 21:54:43 Let's see if it is! 21:54:45 that thingie i tried to translate earlier 21:55:20 the hebrew, I understand that part, but what is "i opine" ? 21:55:22 There's one based on "a roguelike game" 21:55:30 there we go Slereah 21:55:52 I liek the idea. 21:56:02 Knock yourself ou 21:56:07 *out 21:56:07 :P 21:56:20 anyone: what is "i opine" ? 21:56:22 I already have trouble parsing minimalist languages. 21:56:33 lol, swithc to Ruby of FPC 21:56:41 then you just do case when/if 21:56:44 very easy 21:56:46 I'm not sure I could parse something with actual text. 21:56:50 lol 21:57:10 check out the Full 0 source, and you'll see it's just one big case statement 21:57:21 I will gladly write the interpreter though 21:57:25 if you want 21:57:35 oklopol 21:57:38 Well, I still need to finish my unlambda thingy. 21:57:41 don't leave me hanging 21:57:44 Maybe later. 21:57:46 sure Slereah 21:57:47 cool 21:58:32 oklopol, the Hebrew meant "Who will understand me when I speak Hebrew" 21:58:44 that was what you said first 21:58:54 yes 21:59:03 oh, afrikaans, then same in hebrew? 21:59:04 Maybe numbers could be, liek, a LEVEL N SWORD 21:59:21 yes, I did say the same thing in as many languages as I couldoklopol :P 21:59:25 "I hit input with my LEVEL N SWORD" 21:59:31 slereah, I like :) 21:59:42 perhaps, casting spell x calls the function 21:59:48 Yes! 21:59:48 and the mana is the argument 21:59:50 :P 22:00:02 timotiis: ? 22:00:08 and you need to move to an in to declare vars 22:00:10 or something 22:00:11 :P 22:00:20 *inn 22:00:22 Well, I think the argument would be more of a "cast spell on arg" 22:00:27 true 22:00:30 fair enough 22:00:37 and talking to an NPC would be output 22:00:42 or input 22:00:44 depending 22:00:46 puhutteko suomea? pratar ni svenska? sprechen sie deutsch? do you speak english? xu do tavla la lojban, plus a syntax error in the lojban one prolly. 22:01:00 wooow 22:01:06 Swedish!! :) 22:01:10 Input number : "YOU RECEIVE A LEVEL N SWORD!" 22:01:12 Yay! 22:01:12 heh 22:01:14 spechten? 22:01:15 surely 22:01:23 Although it would suck if your old word was better! 22:01:32 lol, yip 22:01:33 but you don't refuse a gift from the MJ! 22:01:40 oh yeah 22:01:41 err, GM. 22:01:47 sorry, i make no errors. 22:01:53 :) 22:01:53 -!- calamari has quit (Read error: 104 (Connection reset by peer)). 22:01:55 no worries 22:02:07 I don't even speak German, but I knew that much ;) 22:02:11 ... 22:02:22 i don't think you understood me :) 22:02:24 that it was german 22:02:29 I understood you 22:02:32 you were right 22:02:35 and I was wrong 22:02:36 A loop could be casting a spell on a monster with n health point, until he's dead! :o 22:02:42 but I recognised it was german 22:02:53 oh, i guess i misunderstood you too, a bit :) 22:02:55 that's what I was saying 22:02:59 Although you'd have to specify the damage of the spell in the function. 22:03:05 or then just i misunderstood anything. 22:03:06 a mutual misunderstanding :) 22:03:08 heh 22:03:24 i'll be fullscreen now, or i'll never get anything eaten... 22:03:24 -> 22:03:30 int Check_Stack_Grows_Down () { 22:03:30 char foo; 22:03:30 return &foo < stkbase; 22:03:30 } 22:03:30 Yes, though what would that mean Slereag 22:03:32 clever, clever 22:03:35 *h 22:03:40 :) 22:03:49 oklopol ^ 22:03:50 What would what mean? 22:03:58 damage of the spell in the function. 22:04:06 Well, for instance. 22:04:11 You have this monster. 22:04:15 He has 99 HP! 22:04:20 gasp 22:04:22 Then, you hit it with magic missile 22:04:30 With 1 damage point. 22:04:35 Until he's dead. 22:04:37 (cough someones been playing NWN ;) ) 22:04:44 I see, but why 22:04:45 Actually, no. 22:04:51 there needs to be incentive 22:04:55 we need to say that 22:04:56 XP 22:04:57 That way, the function is used 99 times! 22:05:03 ahahaha 22:05:08 that's brilliant 22:05:10 :D 22:05:14 recursion 22:05:19 so you can play as the DM 22:05:22 and summon a monster 22:05:22 Well, maybe the conclusion of the program would be "YOU WIN A MILLION XP" 22:05:26 then switch to hero 22:05:31 lol 22:05:31 Yes, the user is the DM. 22:05:34 then when hero 22:05:41 you cast spell x for n times 22:05:43 wicked 22:05:55 hrmm 22:05:56 He summons input monsters, and random number monster encounter! 22:06:03 Oh yeah! 22:06:09 And output would be talk to DM 22:06:12 xp = buy new functions premade 22:06:16 yeah 22:06:24 so 10 xp = fibonacci etc 22:06:35 or not actually.... 22:06:40 Heh. Maybe not. 22:06:49 The idea would be to have it usable. 22:06:56 true 22:06:59 Risk will be suuch a fast compiler :P 22:07:07 so where do NPC's fit in 22:07:10 :) 22:07:20 why bother talking 22:07:22 to them 22:07:25 I'm not sure so far. 22:07:28 aha 22:07:31 conditional 22:07:35 ooh 22:07:38 say you have stas 22:07:53 and you can only talk to an NPC if impress>10 and muscle>15 etc 22:08:00 so you can do if's like that :D 22:08:03 *stats 22:08:18 Well, if variables are objects, I guess conditional would be if you possess the object. 22:08:23 meh 22:08:27 I like the stats idea 22:08:28 For instance, a boolean could be a key to some dungeon door. 22:08:45 but okay 22:08:47 sure 22:08:51 it's you lang ;) 22:08:59 It's just an idea thrown around. 22:09:07 Not sure I will actually do something with it. 22:09:27 wait so programming is like you use a level editor 22:09:29 But it's true that it would be better to include NPC's, instead of just monster grinding. 22:09:31 then some AI plays your game? 22:09:43 well, kinda 22:09:51 I was thinking that you can be both DM 22:09:53 and Hero 22:09:57 to make it easier 22:10:01 but I suppose 22:10:08 that if we make it imperitive 22:10:12 then the hero 22:10:18 would just follow instructions 22:10:22 Maybe the input could be of two kinds. 22:10:24 and react acrdingly 22:10:33 *accordingly 22:10:44 Monster and object variables from the DM, and actions from the hero 22:10:50 yeah 22:10:52 there we go 22:10:53 :) 22:11:14 and it needs flashy 2D ascii graphics :P 22:11:17 like @ and # 22:11:19 ;) 22:11:29 The general words "monster" and "object" would be a cue for input 22:11:38 "A monster appear!" 22:11:53 hrmm 22:11:59 sounds like a script to me 22:12:02 While specific monsters would be values without requiring input 22:12:05 I imagined it differently 22:12:18 yes, that would be cool 22:12:26 each monster is the value of it's XP 22:12:30 and thus 22:12:34 killing it 22:12:48 adds it to the currently equipped item/variable 22:12:59 and casting on it casuses a loop 22:13:05 for it's Hp number of times 22:13:14 I like where this is going :) 22:13:14 Something like that. 22:13:33 But what would be strings? 22:13:45 Magic books or something? 22:13:56 I always carry a bunch of these in Oblivion. 22:13:57 yeah tomes of knowledge 22:14:00 Could you actually cannibalize an existing rouge-like? and use that for computing 22:14:01 :) 22:14:13 lol, I like 22:14:30 Perhaps, lists would be quests 22:14:35 :D 22:14:36 and Strings would be boks/tomes 22:14:48 and spell books would list the functions avaliable 22:14:49 :) 22:14:58 *books 22:15:05 "You find item n on your quest list" 22:15:09 And bam, you can use it 22:15:17 I like 22:15:33 or perhaps, quest lists could also be arrays 22:15:38 but yeah, it works anywho 22:15:42 a premature exit function would be when you die! :O 22:15:48 "You are eaten by a grue" 22:15:53 Ooh, sucks 22:15:55 :) 22:15:59 yes, though 22:16:02 that would be nice 22:16:11 and portals would return from a function 22:16:17 or quest 22:16:33 ? 22:16:36 call-with-current-continuation is when you go to a save point? 22:16:49 I don't know what that is, but sure, why not. 22:16:50 :D, but I like 22:17:13 * faxathisia is not sure if hat is close enough semantically 22:17:18 static main void would be the world (naah, just kidding) 22:18:00 Maybe you can include sentences without any program-specific meaning, to avoid doing a linear adventure. 22:18:11 Bandits would be the "garbage collectors" or variable destroyers as they raid unused variables 22:18:17 faxathisia: i'll explain call with current continuation 22:18:21 Heh. 22:18:21 yes, that would be nice 22:18:42 Say, you can only have x variables on you 22:18:48 so you go back through a portal 22:18:53 to you private stash 22:18:58 and exchange variables 22:19:06 -!- calamari has joined. 22:19:13 (call/cc f) copies the call stack, and constructs a function k. It then does (f k). When k is called with the argument x, the saved call stack is reinstated and the top call - that is, call/cc - returns x 22:19:17 Well, maybe your stash could be the other players. 22:19:33 and we could have the "Gardens of Negativity" from within which, if you drink the water, it applies NOT to all you equipped variables 22:19:33 "Take this, my back is killing me!" 22:19:41 alternatively: in (+ 2 (* 3 4) 5), when you get to (* 3 4), your continuation is (+ 2 [_] 5) 22:19:46 and the hole gets fileld in by the result 22:19:47 "I am encumbered, and cannot move!" 22:19:58 (call/cc f) calls f with a function that takes an argument to fill the hole 22:20:01 "Backpack overflow!" 22:20:15 lol :) 22:20:17 awesome 22:20:25 I Like ver much 22:20:27 :D 22:20:33 *y 22:20:50 Anyway, sorry to cut the "brainstorm" short 22:20:55 it's been fun 22:21:03 but its late here in GMT+2 land 22:21:09 Okay, bye. 22:21:14 so, I'll see you guys some other time 22:21:16 cheers 22:21:25 -!- Hiato has quit ("Leaving."). 22:26:54 I should really try to solve my lazy unlambda's problem, but now, there's no way I can think about it until I have some ideas written down. 22:27:26 "Dungeons and Data" 22:27:42 * ehird` is reinventing Foobrain with multiple files because it was getting bloated 22:27:45 and using Parsec 22:27:57 who wants to help make a brainfuck compiler that in the end will probably do the most optimizations evarr? :P 22:27:59 Parsecs? That's going to be a large program! 22:28:08 -!- elsa22 has joined. 22:28:13 I can't write machine code. 22:28:19 I got a note from my doctor! 22:29:21 faxathisia: getting to a save point would be calling a continuation, call/cc would be saving 22:30:22 -!- elsa22 has quit (Client Quit). 22:32:02 -!- Arrogant has joined. 22:35:53 no-one? :-) 22:36:10 Nope 22:36:50 -!- oerjan has joined. 22:37:04 It is far more exciting to be involved in a glorious medieval fantastic adventure, I guess! 22:37:13 * faxathisia doesn't know what optimizations you can do 22:37:16 (other than trivial stuff) 22:37:29 seems a very hard language to do optimizations with 22:37:54 nahh 22:38:03 there's even a compiler that optimizes 'if' algorithms 22:38:08 with haskells pattern matching! 22:38:12 it'll be easy! 22:41:30 wait 22:41:40 I was assuming Brainfuck -> Brainfuck 22:41:51 but you actually meant something else didn' tyou? 22:42:05 yes 22:42:05 Brainfuck -> C 22:45:06 ehird` and his crazy best-ever brainfuck compilers :-) 22:45:18 same one all the time 22:45:20 :P 22:45:22 heh 22:45:41 have you read egobf? 22:45:42 The important thing is that no one notice! 22:50:01 egobf is fun :P 22:50:43 Hm. What would be a good way to define a real variable in Dungeons and Datas? 22:51:00 drop some item in a specific place? 22:51:16 Yes, but what kind of item! 22:51:45 Integers are either n xp with some weapon including the name of the variable, or just some level n weapon. 22:52:33 Booleans are keys. 22:52:45 Strings are books. 23:14:30 I think I will have to make more than one process for loops. 23:20:22 -!- timotiis has quit ("leaving"). 23:27:46 oerjan: you there? 23:28:18 yep, just posting an interpretation of the obfuscated Perl code on the wiki 23:28:35 *ahem* 23:29:00 X_X 23:29:02 ANYWAY. 23:29:13 Doest though know the `Parsec'? 23:29:23 Indeed I do. 23:30:13 how doth my parser `infini-loop'?! 23:30:24 exampl~e: 23:31:14 http://hpaste.org/4818 23:32:30 :S 23:32:42 maybe i need a terminating case but i think it's more than that 23:32:51 no that's it 23:33:03 ok 23:33:07 so what would that be? :) 23:33:09 brainfuck = many oneIns "program" 23:33:58 you should browse the combinators in the parsec manual 23:34:13 possibly! :-) 23:34:27 my brain was thinking many (oneOf "abc") 23:34:30 instead of many PARSER 23:34:31 -!- RedDak has quit (Remote closed the connection). 23:34:42 aha, oerjan 23:34:44 you are wrong 23:34:48 oneIns returns [BF] 23:34:51 wait 23:34:53 that's unneeded 23:34:56 -!- Arrogant has quit ("Leaving"). 23:35:21 indeed 23:36:27 the <|> oneIns is wrong 23:36:48 kay 23:36:48 what should it be 23:37:03 or wait 23:37:30 the thing is, in Parsec you nearly always want to skip whiteSpace and comments before starting a real parser 23:37:45 OK 23:37:49 elaborate 23:37:50 :P 23:38:23 because of the way Parsec works, you don't want to have to back up more than necessary 23:39:26 put another way, your parser as written has the same problem of ] or eof following comments as your hand-written one had at one point 23:39:55 okay. 23:40:05 so how do i do skipping? 23:40:09 because you are entering oneIns before you know that there _is_ a non-comment operation available 23:40:11 i assume there's a combinator for it 23:40:22 -!- sebbu has joined. 23:40:29 skipMany (noneOf "[]<>+-.,") 23:41:09 in oneIns? 23:41:32 why not do like: map (fromJust . lookup [('+',Add 1),...] $ filter (any "[]<>+-,.") $ text 23:41:41 or whatever the syntax is 23:41:48 faxathisia: plz give me the [ and ] entries. 23:41:50 at the beginning, and after every operator 23:41:53 kthx 23:41:56 -!- iEhird_ has joined. 23:42:03 oh right I get you 23:42:05 oerjan: hm, example? 23:42:14 faxathisia: that will lose position information 23:42:49 like the lexeme parsers in Parsec 23:42:54 oerjan: perl interpretation obfuscated posting? 23:43:07 oklopol: my last wiki post 23:43:29 someone added Perl to the wiki 23:43:35 :D 23:43:47 arguably justified 23:43:49 and i was inspired 23:44:59 that your interpretation? 23:45:14 sorry, i'm bad at using the fancy wiki features... 23:45:32 ehird`: i use to define a function op c = char c >> skipSpace >> return c or equivalent 23:45:46 hm 23:45:48 probably, you did say something about interpretation... 23:45:55 oerjan: where would that be used, though? 23:45:57 oneIns? 23:45:58 yes i added that section 23:46:11 ehird`: also loop 23:46:30 everywhere you use char, since in brainfuck every character can be followed by comments 23:46:36 i think that's a pretty perfect description of what the code does 23:47:02 anyone happen to know what "continuation" is in finnish :-) 23:47:16 i'm not even sure of norwegian... 23:47:17 i use char in loop 23:47:19 -!- iEhird_ has quit (Remote closed the connection). 23:47:21 but oneOf in bfIns 23:47:23 :-) 23:47:40 oh right oneOf 23:47:51 then you want the skip function right after oneOf 23:47:57 i've tried searching in a few dictionaries... unfortunately it seems these web dictionaries are made by java queers who don't know what a continuation is :) 23:48:22 also, skip at the beginning of program 23:48:22 * oklopol apologises to any java queer residing here 23:48:44 oerjan: so what would the oneOf become? 23:49:00 the oneOf is as before 23:49:17 but on the next line, add your skip operation 23:49:48 -!- iEhird has quit (Remote closed the connection). 23:49:55 hm it may not actually be worth having an op that takes an argument 23:50:55 just make a skipComment function 23:51:31 add it (1) after char ']' (2) after oneOf (3) at the beginning of brainFuck 23:51:57 skipComment :: ? 23:52:06 skipComment :: Parser () 23:52:49 oneIns surely has to change? 23:52:49 after char '[' is not necessarily because it passes straight to brainfuck which already starts with one 23:53:07 yes, add one as a second line 23:53:26 ? 23:53:45 you want to do skipComment right after you do oneOf 23:54:32 oh btw the return's can be moved outside the case 23:54:37 it doesn't handle unmatched ]s now :( 23:54:39 just put $ between 23:55:51 hm? surely the parser would stop with an error if oneIns hits ] without being in ... oh right 23:56:13 you want your main parser to do an eof after calling brainfuck 23:56:40 i..see 23:56:44 explainerate :P 23:57:14 brainfuck just reads up until eof or ], it doesn't raise any error itself 23:57:26 so its caller must take care of the check 23:57:37 ok 23:57:38 esplain 23:57:40 :P 23:57:42 :P 23:58:28 mainParser = do prog <- brainfuck; eof; return prog 23:58:29 -!- sebbu2 has quit (Connection timed out). 2008-01-06: 00:00:35 i'm providing a non-monadic [BF] parseBF, is that good parsec style? :P 00:01:21 sure 00:04:39 also 00:04:40 case (parse program name code) of Left e -> error (show e) 00:05:58 that's one way 00:06:59 by the way, oerjan, is this a good way to cut down on overflow checks in compiled bf code: 00:07:03 >>><+ compiles to: 00:07:11 well, without >< reduction, ofc: 00:07:18 actually i would probably make it use a print statement and let the Right p -> part call the actual interpreter 00:07:28 "p++;p++;p++;p--;CHECKMEM;t[p]++;" 00:07:37 interpreter? :-) 00:07:42 why not p+=3; 00:07:50 or compiler 00:07:53 faxathisia: plz read 00:07:53 sorry :D 00:08:00 "well, without >< reduction, ofc:" 00:08:03 * oerjan has never written a real compiler 00:10:09 i recall that strictly speaking any of the p++ might fail if more than 1 beyond the allocated array... may not be a real problem 00:10:46 i.e. actual pointer arithmetic is undefined behavior in that case, possibly 00:10:53 Making some sort of Dungeons and Datas programs is hard. 00:11:06 It has to make sense to be of any interest! 00:11:37 Well, some sort of sense at least. 00:12:25 oerjan: oh well 00:12:29 oerjan: who cares :) 00:12:43 compiler goals: 1. be fast 2. don't use things that are machine-specific by design 00:12:45 that's it 00:23:06 -!- ehird` has left (?). 00:23:11 -!- ehird` has joined. 00:23:13 wedge :: String -> String -> String -> String 00:23:17 wedge :: String -> String -> String -> String 00:23:17 beautiful 00:24:34 eek 00:27:10 actually it's 00:27:12 wedge :: (Show a) => a -> String -> String -> String 00:30:02 oerjan: i CANNOT figure out the type errors i get with this: http://hpaste.org/4820 00:30:56 hm 00:31:26 what _are_ the type errors? 00:31:39 Couldn't match expected type `Char' against inferred type `String' 00:31:39 Expected type: BF -> [Char] 00:31:39 Inferred type: BF -> [String] 00:31:39 In the first argument of `map', namely `(indent . compile')' 00:31:39 In the first argument of `(++)', namely 00:31:39 `map (indent . compile') prog' 00:31:46 and: 00:31:50 Couldn't match expected type `Char' against inferred type `String' 00:31:51 Expected type: BF -> String 00:31:51 Inferred type: BF -> [String] 00:31:53 In the first argument of `map', namely `(indent . compile')' 00:31:54 In the first argument of `(++)', namely `map (indent . compile') b' 00:31:54 oops, sorry for spam 00:32:20 oh... 00:32:32 you want concatMap instead of map i think 00:32:46 ah, yes 00:36:39 oerjan: flatten [[1,2],[3,4]] -> [1,2,3,4] 00:36:49 in prelude? 00:37:01 concat 00:37:21 concatMap f l = concat (map f l) 00:38:03 heh, that IS concat 00:38:05 amusing 00:38:45 hm 00:38:49 gcc optimizes a+0 i hope 00:38:50 :P 00:39:05 one might assume 00:39:52 oerjan: what's that haskell function that acts as a filter? 00:40:00 that is, stdin->func->stdout 00:40:18 interact 00:43:24 gcc also optimizes x -= -x i hope :P 00:44:03 % wc -l mandelbrot.c 00:44:05 11471 mandelbrot.c 00:44:05 impressive 00:44:05 :P 00:44:09 exactly _where_ was your compiler going to do its optimizations you said? ;) 00:44:40 in the Optimize module 00:44:49 which ain't written yet 00:44:49 :) 00:44:53 3.63sec to execute 00:44:55 not too bad 00:45:45 oerjan: iterative optimization, too! 00:45:49 imperative pseudo-code: 00:46:29 while optimize(prog) != prog { prog = optimize(prog) } 00:46:38 there's probably a nice haskelly way to express that :P 00:48:49 oerjan: right? :P 00:49:05 iterate optimize somehow 00:49:31 thank you you are helpful 00:49:52 er, iterate is a function :) 00:50:16 that equality comparison may be expensive though 00:50:51 yeah, it would be like 00:50:58 let opt = optimize(prog) in ... 00:51:21 anyway, iterate useful for...? 00:51:33 well maybe this easier with explicit recursion 00:51:38 it seems to produce a list 00:52:19 you usually search the resulting list until you find the point you want 00:52:59 ah yes there is until 00:53:21 hm confusing definition 00:53:23 usage? 00:53:33 however it may need some cleverness to avoid calculating things twice 00:54:28 see #haskell 00:55:54 in principle until (\x -> x == optimize x) optimize would do _but_ it might calculate optimize twice 00:56:19 i can't see a way out of that 00:56:46 recursion is easier 00:57:20 :-) ok 00:57:53 untilEq f x | x == y = x 00:58:15 | otherwise = untilEq f y 00:58:27 where y = f x 00:59:30 optimizeFully p = case optimize p of p -> p x -> optimizeFully x 00:59:31 doesn't appear to exist 00:59:43 hm 00:59:45 no worky 00:59:46 :-) 01:00:00 unfortunately the of p binds a new variable 01:00:43 Maybe I'll start working on PSOX again on Monday.. 01:01:22 you _could_ do something with pairs but it wouldn't be any clearer than explicit recursion 01:01:44 or would it, hm 01:03:39 fst . head . dropWhile (uncurry (/=)) . tail . iterate (fst &&& optimize . snd) . (,) undefined 01:03:55 drunk on lambdabot, oerjan? 01:04:18 lambdabot? i did that in my head 01:04:27 heh, wow 01:04:37 i meant the pointless 01:04:39 :) 01:04:59 i expect @pl would produce something far worse 01:05:07 well yeah 01:05:36 @pl'ing is a rather esoteric thing to do :) 01:06:37 optimizeFully p = let opt = optimize p in if opt == p then p else optimizeFully opt 01:06:38 fugly! 01:06:39 :) 01:06:42 of course it's just a slightly more civilized abstraction elimination 01:06:53 No instance for (Eq Jill.Core.BF) 01:06:57 oshit 01:07:03 deriving (Eq) 01:07:15 yep 01:07:55 but as i said, i think that could be expensive, especially if optimizations happen only deeply 01:08:32 Chicken does it 01:09:41 comparing this step to the next, recursively? 01:09:46 i think so 01:10:05 oerjan: damn, optimizing BFSet will be hard with patmatching 01:10:13 Set/Inc/Read/Write ... BFSet 01:10:16 BFSet Inc... 01:10:17 etc 01:10:35 what's BFSet? 01:10:41 t[p+a] = b 01:10:44 note = instead of += 01:10:53 e.g. [-] is BFSet 0 0 01:10:57 [-]+ is BFSet 0 1 01:12:10 hm 01:12:39 for what values of n in BFLoop x [BFInc y n] can it be proved to be BFSet (x+y) n? 01:12:44 I think just 1, -1 01:12:58 err, 0 01:13:00 in the BFSet 01:13:37 if you assume a binary representation with wrapping on a fixed bitwidth 01:13:42 then any odd n will do 01:13:52 yes, they're chars 01:13:54 so 0..255 01:15:21 optimize (BFInc x a):(BFInc x b):xs = (BFInc p (a+b)):xs 01:15:22 parse error in pattern! 01:15:27 why :( 01:16:23 optimize ((BFInc x a):(BFInc x b):xs) = (BFInc p (a+b)):xs 01:16:32 actually 01:16:54 optimize (BFInc x a : BFInc x b : xs) = BFInc p (a+b) : xs 01:17:14 Conflicting definitions for `x' 01:17:15 In the definition of `optimize' 01:17:30 can't i use the same name for 'equal'? :( 01:17:34 nope 01:17:58 optimize (BFInc x a : BFInc x' b : xs) | x == x' = BFInc p (a+b) : xs 01:19:11 guards are ugly :) 01:19:24 ARE NOT 01:19:38 optimize (BFLoop x [BFInc x' n] : xs) | mod n 2 == 1 && x == x' = BFSet x 0 : xs 01:19:42 that is ugly 01:19:43 OTHERWISE! 01:20:05 hm..... you know 01:20:12 that gives me the feeling this code would be easier in lisp 01:20:22 it may help to include a line break 01:20:22 heh 01:20:23 why 01:20:33 oerjan: but where 01:20:43 before the | perhaps 01:20:49 so you can express the optimizations however you like (and hide a big confusing macro somewhere no noe looks) 01:20:56 line break + at least one space 01:21:08 (not that I'd do that!) 01:21:26 mod n 2 == 1 = odd n 01:24:46 p += 1; t[p+0] = 0; p += 1; t[p+0] = 0; 01:24:49 repeated loads of times 01:24:53 i have a feeling that's optimizable :P 01:25:13 that is, code X repeated N times = for (tmpvar=0;tmpvar bit tricky for a pattern match though 01:26:50 finding repeating subsections of a list, hm 01:29:59 hm if you consider sort . tails you get equal sublists nearby each other 01:30:04 heh 01:30:08 not much help 01:30:18 it could be the basis of an algorithm. 01:30:27 probably a bit expensive though 01:31:22 you could somewhat identify subfunctions that way 01:31:57 heh, now that IS interesting, but implausible 01:32:06 but finding repeating subsections would be useful. 01:32:14 i also want to identify 'if's 01:34:48 sheesh, gcc should have a -Ocs 01:34:52 optimize for compilation speed 01:34:56 this thing takes ab out 20 seconds to compile 01:35:23 oh, wonderful, it seems mandelbrot.b tape underflows forn o reason 01:35:50 hmm 01:35:51 does it? 01:35:58 oh! 01:36:00 duh 01:37:04 p = 0; 01:37:14 p += -1; if ((p+(-1))==0) { ... } 01:37:17 that should execute, right? 01:38:18 wait no 01:38:21 \damn 01:38:27 silly me 01:43:02 wtf, 9 seconds for mandelbrot 01:44:12 That's pretty fast! 01:45:12 Why have I not been working on PSOX?? 01:46:43 You've been thinking "I'll just do it later" for several days? 01:46:51 Slereah: No, I got 3 seconds before 01:47:07 That's still pretty fast. 01:47:22 Compared to the... roughly 3 hours per line I got on the Love Machine 9000. 01:47:36 9 seconds is the speed that BF interps get for mandelbrot.b 01:47:38 I compile to C! 01:48:13 hm, did i lose my network connection? 01:48:14 anyone? ping? 01:48:20 Pong. 01:49:54 Png 01:56:00 * ehird` just uses the OS' memory protection, for simplicity 01:56:03 -!- jix has quit ("CommandQ"). 01:56:14 And a sigsegv handler to expand 01:56:41 Now, who wants to tell me how to calculoate the page size in C... 01:57:09 I want to, I just don't know how to do it! 01:57:34 oerjan: Confusing isn't it! 01:58:10 what? 01:58:42 the low-elvel useful things that c can't do 01:58:59 Pöng 01:59:48 for some reason i wanna know how fast egobf is, please, ehird`, find it out for me :D 01:59:55 not that fast 01:59:58 not as fast as bf2c.hs 02:00:01 i have no idea why, one of my random obsessions 02:00:08 pretty good, though 02:00:18 mandelz? 02:01:06 iirc. about 3 seconds. 02:01:15 but it bus errors on this mac. 02:01:20 so: that's just a guess 02:03:32 but yeah: page size determination. 02:03:34 someone tell me how! 02:04:30 who runs unix? 02:04:34 oerjan? oklopol? 02:04:39 GregorR? Slereah? 02:04:54 sgeo? 02:05:03 ehird`? 02:05:11 necvermind 02:05:13 i figured it out 02:05:15 hm? 02:06:33 i run unix 02:06:43 but most of what i know i've learned from you. 02:07:28 * oklopol is very proud for actually having learned to use linux in just *six months* 02:10:21 woot 02:10:23 % time ./mandelbrot > /dev/null 02:10:23 ./mandelbrot > /dev/null 3.41s user 0.02s system 98% cpu 3.477 total 02:10:27 hooray for SIGSEGV 02:26:56 Aaaaargh 02:26:58 -!- Jontte has quit ("Konversation terminated!"). 02:27:17 It's hard to check an abstraction eliminator when you can't even do it by hand correctly! 02:27:58 Slereah: One check is shoving them through a type checkera 02:28:27 , 02:29:15 (is he correcting a grammar error or making a very complicated comma pun, we'll never know...) 02:29:43 maybe it was a ? without the shift! 02:30:10 I'm trying to correct one error of my Abstractor,. 02:30:33 -!- ehird` has quit. 02:30:58 Apparently, it doesn't like very much something of the form ^abc...(^xyz...)fgh... 02:31:21 Although even the successor function doesn't seem to work too well. 02:32:52 well deeply nested lambdas do blow up exponentially with the naive AE algorithm 02:35:08 Blow up as in "size increase" or "Make them wrong"? 02:35:18 size 02:35:56 That doesn't worry me too much, that's why I made a program. 02:36:14 it's the wrong expression I find worrying 02:36:32 Although I can't be too sure if it's the abstractor or the interpreter. 02:39:52 -!- calamari has quit ("Leaving"). 02:40:25 i would offer my eliminator but it's heavily tailored to unlambda (uses d and is careful about strictness) 02:42:02 -!- Sgeo has quit (Connection timed out). 02:42:31 Can you try this pred. function on unlambda, if you can copypasta on it? http://membres.lycos.fr/bewulf/Russell/Pred.txt 02:42:41 Just to see which program is the problem. 02:43:01 -!- Sgeo has joined. 02:44:32 well it's accepted and does nothing 02:45:01 and it is well-formed, because changing the final i to ! causes an error 02:45:48 hm... 02:46:47 Well, I try it with ``pred n `.xi 02:47:00 In a lazy evaluation, that is. 02:47:04 my optimizer simplifies it to ``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`ki 02:47:28 It always only prints 1 x for all values of n on mine 02:50:52 um shouldn't that be ```pred n .x i ? 02:51:50 then it works nicely here 02:51:59 Hm. 02:52:03 Let me think. 02:52:40 with ``pred n `.xi you are applying `pred n to too few arguments 02:53:05 so it just passes on to evaluating `.xi itself i assume, and just once 02:53:07 `n`.xi seems to work though 02:53:18 it shouldn't 02:53:22 ... 02:53:25 Damn. 02:53:59 Where's my pen. 02:54:04 here is the 256 from my self-interpreter: ```s``s`kski 02:54:04 ```s``s`kski 02:54:04 ```s``s`kski 02:54:31 ``s``s`kski 02:55:21 with that, ```pred n .x i prints 255 x'es in the unlambda C (i think) interpreter 02:57:20 (^f^x.f(f(f(...f(x)...)))) (.xi) = ^x.(.xi)((.xi)((.xi)(...(.xi)(x)...))) no? 02:57:30 It should at least evaluate more than 1? 02:57:55 Although I'm not too sure what it would be in combinators. 02:58:25 er it takes 2 arguments 02:58:31 f and x 02:58:52 oh wait 02:59:51 Here's a run for `2`.xi : http://membres.lycos.fr/bewulf/Russell/2%20run.txt 03:00:27 hm... 03:00:45 you may be right. however: 03:01:20 ``pred n f may not expand to the same as `(n-1) f 03:01:31 Oh. 03:01:45 rather, it may expand to something which waits for another argument before even starting to copy f's 03:02:14 So f is evaluated first, and only one x is printed? 03:02:58 well... 03:03:12 the thing is, while expanding top-level, f is never evaluated 03:03:50 it is only when your interpreter gives up the top-level because there isn't anything more to evaluate there, that it gets down to the f 03:04:49 ```pred n .x i seems to work 03:05:46 Let's see how succ n fares. 03:06:56 Also seems to work! 03:07:16 Output isn't easy to deal with under any evaluation! 03:09:28 When I'm more enthusiastic, I should try to see the evaluation of ``pred n`.xi 03:09:31 i think I/O behaves more reasonably if you only evaluate those operations at top level. then it works almost like monads... 03:10:13 (in a lazy setting) 03:11:28 What is exactly meant by top level? 03:12:49 the top of the parse tree 03:13:06 or in your case, only the start of the string for finding operators 03:14:49 Rebooting the modem, brb. 03:15:27 Or maybe not, the connection seems to be back 03:15:47 Sort of. 03:18:57 I'd check the run of the predn`.xi, but it looks like this : http://membres.lycos.fr/bewulf/Russell/Pred%20run.txt 03:19:30 Although I could try in your optimized version. 03:20:27 It's more reasonably sized. 03:20:51 i haven't checked it, it just came out of ulify2.scm :) 03:21:57 Well, at least the predn.xi seems to print the right number of x's. 03:22:16 ah yes, yours contains things like ``s`kk`ks 03:22:23 which = `k`ks 03:22:35 Is that a conversion of some sort? 03:22:48 ``s`kf`kg = `k`fg 03:23:10 I should add it with the eta conversion. 03:23:40 except in unlambda you need to add d's to it 03:23:52 but somehow i didn't see any in the result you saw 03:24:21 (my optimizer also tries to remove d's again) 03:24:36 Well, it's made of only primitive combinators. I assume that the evaluation isn't very important without IO 03:24:58 it depends. it can still be non-terminating. 03:25:22 ? 03:25:58 if `fg doesn't terminate, then ``s`kf`kg cannot be simplified to `k`fg 03:26:03 in strict unlambda 03:26:33 Oh. 03:26:57 Wouldn't ``s`kf`kg be ``Sfg? 03:27:36 no 03:28:15 ```s`kf`kgz = ```kfz``kgz = ``fz`gz = `sfg? 03:30:00 = `fg 03:30:17 Oh right. 03:30:44 " maybe it was a ? without the shift!" <<< sorry, that'd be + 03:31:02 On what moonspeak keyboard are you typing? 03:31:21 if oklopol's keyboard is like mine it could be ; without the shift, though 03:31:30 mine also has + below ? 03:31:30 (Does this conversion have a name? It's just to look pretty in the code) 03:32:45 well when you do it directly on lambdas it's just ^x`fg = `k`fg instead of ``s`kf`kg 03:33:09 so it's a shortcut, which madore mentions on the unlambda page 03:33:17 (noting that it is unsafe in unlambda) 03:33:20 So just an artefact of the conversion. 03:33:28 *abstraction elimination 03:35:44 hmm, if it was ";", it was obviously a request to change the subject 03:35:47 or shut up 03:35:51 hmm 03:36:05 or "you make too long sentences, wrap it up" 03:36:12 okay, not that obvious :-) 03:36:45 did someone here link maddox' rants? 03:37:12 who's maddox? 03:39:09 http://maddox.xmission.com/ 03:39:51 i've written similar articles, although more, and of worse quality (or at least not better) 03:40:03 probably the reason i found them interesting 03:40:29 ```s`k`ab`k`cdk -> ```ab`cdk 03:40:32 Yes. 03:41:28 A much shorter result for pred! 03:41:37 um you're missing a `k 03:42:46 Slereah: did you paste the original link? asdf guess i need to press ctrl+f :'( 03:43:02 haha! 03:43:07 it was ya :) 03:44:26 oerjan : I guess that explain the infinite loop I got for pred 03:45:15 heh :) 03:46:53 Any other ways to reduce ski to ski? 03:48:26 Although the pred down to ``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`ki is already pretty neat. 03:48:53 Seems to be the same as yours 03:51:58 yep, you now have the two main optimizations of mine 03:52:10 and the rest i think are unlambda-specific 03:52:36 Well, thanks. 03:53:18 you're welcome :) 03:53:41 Can a forkbomb cause lasting damage to a system? 03:53:52 I'm contemplating using a forkbomb to force myself off the computer 03:54:10 You could ask your mom to do that. 03:54:16 She'll gladly oblige. 03:54:21 "Get some fresh air!" 03:55:25 Do you have a particular way of finding those optimisation? 03:55:45 I'm thinking of trying it for some other combinators. 03:58:33 (And maybe combining the ski-unlambda translator, the abstractor and the interpreter to write programs in some unholy combination of SKI combinators, unlambda and lambda calculus!) 03:59:01 nah 04:05:28 -!- Sgeo_ has joined. 04:14:03 -!- _KS has quit. 04:15:18 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 04:27:03 There's the unholy Frankenstein : http://membres.lycos.fr/bewulf/Russell/Lazylambda4.py 04:36:38 When I'm done with this, every damn letter will be a combinator! :o 04:44:38 lol i made a bit of a miscalculation when saying i have more articles than this guy, i now realize i haven't read more than 30%, thought i was finished :) 04:44:53 the scroll bar... it's just too complex. 04:45:38 There's 10 years of article! 04:45:39 s 04:46:27 Writing in that mix of calculi is more pleasant. 04:46:44 For instance, some sort of iszero checker : ```^n((n(^x`ki))k)(^a^b`a`ab)`.0i````.F.a.u.xi 04:46:56 Where (^a^b`a`ab) can be any number. 04:47:36 With some hodgepodge of ` and parenthesis just for pleasure! 04:49:47 Hm. 04:49:55 `.^i generates an error. 04:50:06 It thinks I want to use i as a lambda variable. 04:51:39 Either I remove the ^s ^k ^i checker or find some way around it. 04:53:42 .^ in general seems to be a nuisance. 04:53:46 it's too simplistic, not skipping .'s 04:54:02 ? 04:54:20 i mean, checking for the literal string ^s etc. anywhere 04:54:47 That's what it does. 04:55:05 But if there's `.^i, it will find the string ^i in it. 04:55:27 And think I'm trying to sneak in some ski as variables. 04:56:06 And since `fg has ^ in it, the Abstractor will try to abstract it, instead of leaving it alone. 04:56:15 perhaps you could put the check in something like wff instead? 04:56:24 I should make some function to differentiate .^ from ^ 04:57:01 don't forget you can have ..^ etc. 04:57:08 I know. 04:57:22 That's why I'm thinking of a function instead of a lazy ass workaround. 04:57:43 (I had plenty of similar problems on the Love Machine 9000!) 04:59:46 I should check for an odd number of . before ^ I guess. 05:12:15 Seems to work. 05:15:14 question: do you allow ^. ? 05:16:58 Let's see! 05:17:14 ^.^b. 05:17:22 Gives k. 05:17:39 It's a lambda smiley. 05:18:00 -!- Sgeo_ has quit (Remote closed the connection). 05:18:06 Although a (^x`.yi) expression seems to pose problem. 05:18:23 When it tries to abstract ^x.y 05:18:38 Not sure why 05:19:39 Oh. 05:19:45 well my question was because it could break your odd number of . 's rule 05:19:58 It thinks that ^x.y is actually two combinators. 05:20:01 . and y. 05:20:31 Printing functions are quite annoying to implement. 05:25:11 Found the error. 05:25:29 Just a number error in the T[^x.y] -> `ky 05:26:17 Let's see the ^. case. 05:26:57 ^...^s 05:27:42 It doesn't crash, but it's not that good either. 05:27:48 oh and not to forget ^^ :D 05:28:11 ^..^ gives i, ^...^s gives ``si`ks 05:28:16 I'm not even sure why. 05:28:30 ^^ makes some infinite loop. 05:28:50 Although ^^^ translates as i okay. 05:28:55 my suggestion is to disallow ^ and . as variables 05:29:07 That too. 05:33:24 Well, right now, the program will change all non-printing ( into ` (or delete them if they're before ^), delete all non-printing ), change all variables and combinators into lowercase, eliminate abstraction from the result and read the result as Unlambda would. 05:33:46 Any parsing pitfall in mind? 05:35:30 ( -> variable number of ` 's right? 05:36:16 I think so. 05:36:30 um ( before ^ shouldn't be deleted should it 05:36:45 or... 05:37:13 Well, the ^abc... abc... in parenthesis is just for a clear way to see the whole lambda expression if I want to write it. 05:38:21 It poses problems if I want to write something like `(^a^b`ba)np 05:38:24 Errr, `(^a^b`ban)p 05:38:31 however you could then have an error if the lambda expression stops before the corresponding ) 05:38:43 right 05:39:13 what about instead saying ( before ^ moves past the ^+variable? 05:39:55 then you could drop ` 's inside 05:39:55 -!- slereah_ has joined. 05:40:08 [06:39] Although I guess I could check the length of the lambda expression to delete or not the parenthesis 05:40:09 [06:39] What? 05:40:56 oerjan> however you could then have an error if the lambda expression stops before the corresponding ) 05:41:06 oerjan> right 05:41:26 oerjan> what about instead saying ( before ^ moves past the ^+variable? 05:41:38 oerjan> then you could drop ` 's inside 05:41:43 whew 05:41:45 That's what the "what?" was for. 05:42:52 `(^a^b`ban)p -> `^a^b(`ban)p -> `^a^b``banp 05:44:16 Well, except it should be ``^a^b`bap 05:44:37 huh? 05:44:48 Wait. 05:45:01 * slereah_ uses the power of mental thinking 05:45:37 `(^a^b`ban)p wouldn't be legal. 05:45:57 That's ^a^b`ban applied to p, but `ban lacks one apply. 05:47:00 it's legal in lambda calculus to be applied too little 05:47:17 um wait 05:47:25 the point i was saying was 05:47:32 (ban) = ``ban right? 05:47:38 Yes. 05:47:56 and in ordinary lambda calculus a ^ usually continues until the next ) 05:48:22 For instance. 05:48:26 so why not say that (^a^bban) = ^a^b``ban 05:48:45 Well, I could do that for all variables. 05:49:15 Replace n non-printing letters by ````...````abcd...xyz 05:49:54 although it may be weird if you mix things, hm 05:50:04 I mix many thing already. 05:50:14 since ^a without parentheses only takes one following expression 05:50:37 I don't know about weirdness, but it might be hard to check for accuracy. 05:50:49 That would be a whole lot of combinations to try. 05:51:26 well lessee 05:51:48 you could say ` introduces unlambda syntax and ( introduces lambda calculus syntax 05:52:08 The thing is, I'm mixing both. 05:52:15 yes 05:52:24 For instance if I'm lazy and just want to copypasta some expression. 05:52:43 so if a subexpression starts with ` or ( you change to the other 05:53:28 Actually, both notations are used for both. 05:53:33 it would be safe as long as what you paste either is parenthesized or is a single expression starting with ` 05:53:50 well they have ^ in common 05:59:31 Well, it can now differentiate s=s[:i]+s[i+1:] 05:59:32 i=i-1 05:59:33 Oop 05:59:46 `(^a^b`ban)p and ``(^a^b`ba)np 06:00:06 But I don't know what will happen if there's more lambda inside the parenthesis. 06:00:25 -!- Slereah has quit (Read error: 110 (Connection timed out)). 06:00:30 -!- slereah_ has changed nick to Slereah. 06:00:58 ah yes there could be trouble 06:01:15 (^aa^bba) for example 06:01:33 the ^b would probably scope only the b 06:01:38 I was thinking more of ((^aa)(^bb)a) 06:02:09 `^aa^bba 06:02:12 Hm. 06:02:19 that should be fine if the outer ( is handled first 06:02:28 turning into `` 06:02:29 I guess so. 06:02:41 What of (^aa(^bb)a)! 06:03:00 i think that's fine 06:03:49 -> ^a(a(^bb)a) -> ^a``a(^bb)a -> ^a``a^bba 06:03:50 Reads it as `^aa^bba. But it should be... What should it be, actually? 06:04:30 Doesn't read it like that. 06:04:38 It's `ii for it. 06:06:49 subtle stuff 06:06:50 But well, I guess it's not too important. 06:15:50 Hm. Would a combinator-to-text be something like iszero n [print char 0] [iszero pred(n) [print char1] [...]]]? 06:17:11 So something actually like (^x . iszero x [print char 0] [iszero pred(x) [print char1] [...]]]) n 06:18:22 there is a church numeral printer hidden in my deadfish-in-unlambda code 06:18:36 it might be using d though 06:19:09 I guess I could just generate it in python for ASCII chars. 06:19:33 oh you want num->ascii 06:19:52 Well, num->any set of char, actually. 06:20:12 ASCII works okay, especially since I want to do a _ combinator. 06:20:41 Awaits input from the keyboard, and then converts it to some ASCII Church numeral. 06:20:48 but i wouldn't use pred. i would use a church-encoded list of the chars 06:21:13 and then do `head ``n tail list 06:21:34 Ah yes. I should read the list function for lambda calc. 06:22:09 Might be useful later! 06:22:21 (define (cons x y) (lambda (k) (k x y))) (define (car cons) (cons (lambda (x y) x))) (define (cdr cons) (cons (lambda (x y) y))) 06:22:40 I can't really read Haskell. 06:23:10 * faxathisia doesn't understand this ^ notation :S 06:23:14 given that that was scheme, i believe you :D 06:23:31 Heh. 06:23:35 er, possibly CL 06:23:40 Scheme, Haskel, same thing! 06:23:52 ^ is just a fancy ASCII for lambda. 06:24:40 well to make a cons (pair of things), you can make a closure which takes a function an applies it to those args 06:24:48 cons = (^h t . ^k. (k h t)) 06:25:03 in fact haskell is closer 06:25:15 cons = \h t -> \k -> k h t 06:25:30 so to select the head, such that (head (cons a b)) = a, head = (^cons. (cons (^head tail . head))) 06:25:57 though sadly, church-encoded lists soon hit against the type system 06:27:17 Why is a pairing noted as "cons"? 06:27:28 old lisp tradition 06:27:36 A cons is a pair of things 06:28:06 like the link of a linked list 06:28:16 * Slereah wikis 06:28:19 Oh, construct. 06:28:34 http://en.wikipedia.org/wiki/Cons 06:28:46 But, pair has the same number of letters! :o 06:29:11 Is there a Lisp function called pair? 06:29:30 scheme has pair? 06:29:50 (pair? (cons 'x 'y)) ;=> #t 06:30:09 What is this moonspeak! 06:30:15 scheme 06:30:27 ;=> ? 06:30:27 ````^m^n^f^x``nf``mfx^f^x`f`f`f`f`f`fx^f^x`f`f`f`fx.xi 06:30:30 Yay, addition! 06:30:43 ; <- comment => <- evaluates to 06:30:56 ah 06:31:05 * faxathisia should probably shut up and stop confusing people 06:31:23 Well, this is #esoteric 06:31:41 If we weren't allowed to confuse, it would be pretty silent. 06:32:11 and then, what would the alligators do? 06:32:21 cross the road? 06:32:26 You are confusing me oerjan. 06:32:34 you don't say. 06:32:34 My lazy unlambda has one clear advantage on the love machine 9000. 06:32:41 speed? 06:32:44 I have a perfect name for it. 06:32:51 oh? 06:32:55 It will be called "Lazy bird". 06:33:14 Since its combinators will be the combinator birds from "To mock a mockingbird". 06:33:50 And it's a name I can post on Esolang without shame, unlike "Love Machine 9000". 06:34:31 Although I came up with a srs business name for it. 06:34:37 "NTCM" 06:34:53 n-tape choice machine. 06:35:39 Srpska Radikalna Stranka? 06:35:51 Lulwut? 06:36:01 srs 06:36:21 http://www.encyclopediadramatica.com/The_Internet_is_serious_business 06:38:21 * oerjan has a lightbulb go off 06:40:30 you mean srs is _not_ an acronym? doesn't sound like serious business to me. 06:40:52 Merely a contraction! 06:41:15 ah, a contradiction. 06:41:37 that splains it. 06:42:52 There's a dick that shouldn't be in your sentence. 06:43:49 my sentience is none of your business. 06:52:22 Fixed point combinators are not especially rare (there are infinitely many of them). Some, such as this one (constructed by Jan Willem Klop) are useful chiefly for amusement: 06:52:22 Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L) 06:52:22 where: 06:52:22 L = ?abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r)) 06:52:25 Heh. 06:52:52 Let's see if I can make something similar! 07:01:50 Well, it might take a while. 07:02:34 It's doing the w's right now, and increasing in size! 07:02:50 I hope it eta-reduces a whole lot. 07:11:45 well 10 of the variables are not used 07:13:17 including w 07:13:23 ^a^b^c^d^e^f^g^h^|^j^<^l^m^n^o^p^q^$^t^u^v^w^x^y^z^r`r``````````````````````````th|$|$af|xedpo|ntcomb|nator is still running :o 07:18:05 http://membres.lycos.fr/bewulf/Russell/noyoucanthaveaneuralnetwork.jpg 07:18:07 Heh. 07:33:11 Hm. For the input ASCII -> Church numerals, what would be the best idea? 07:33:54 Just a correspondance number -> church numerals, or number->succ(succ(succ(...succ(KI)....)))? 07:37:58 I guess it's space against time. 07:45:53 succ(succ(...)) is easier to build up recursively 07:46:38 in case you need to use a table, like in unlambda 07:48:31 Yes, but won't it blow up for big numbers? 07:48:39 Lazy K seems to use such a table. 07:50:59 lazy K uses church numerals for I/O 07:51:41 you mean input in decimal digits? 07:52:11 No, just for any key. 07:52:16 From 0 to 255. 07:53:07 the table will be somewhat big i guess 07:53:26 do you use ?x input like unlambda? 07:53:46 oh wait 07:54:08 you don't really need all the numbers in a table 07:54:12 Just a _ combinator that will change into the Church integer. 07:54:48 oh so you do input ascii as church numerals 07:54:56 Yes. 07:55:16 so your question is not about how to use it, but what python should send into the program 07:56:35 you might use binary 07:56:50 adding 1 and multiplying by 2 should be simple enough 07:57:37 it might still get blown up when the program tries to analyze it, i suspect 07:58:58 Well, Lazy K has a table of ways to get short ASCII -> Church 07:59:02 I'll see how this fares. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:02:05 Hm. apparently, plenty of them have the combinator ``s`ksk 08:02:10 Which is the B combinator 08:02:47 2 is just ``sbi 08:25:35 -!- oerjan has quit ("Bye"). 10:14:31 -!- Hiato has joined. 10:14:38 Hello all 10:15:02 Can anyone help me with some Haskell quickly? 10:16:16 faxathisia? 10:17:33 show map Char.isLower "aBCde" 10:18:02 would that produce [True,False,False,True,True]? 10:23:27 -!- Hiato has left (?). 11:56:22 -!- timotiis has joined. 11:56:53 -!- faxathisia has quit ("Leaving"). 12:15:16 -!- RedDak has joined. 12:33:05 I think I'll just define the input as succ(succ(succ(...succ(KI)....))) 12:33:11 A table is too big. 12:49:33 But then again, the succ idea is painfully slow! 12:50:41 Aaaargh. 13:10:32 -!- jix has joined. 13:30:55 -!- sebbu2 has joined. 13:43:41 -!- sebbu has quit (Read error: 110 (Connection timed out)). 13:43:42 -!- sebbu2 has changed nick to sebbu. 13:56:15 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 13:57:11 -!- bsmntbombdood has joined. 14:24:37 -!- Hiato has joined. 14:24:45 Hello 14:27:01 can anyone help me with a Haskell exercise in Yet Another Haskell Tutorial? 14:27:08 it way hard 14:27:22 *its 14:30:00 * oklopol HELPs! 14:30:10 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)). 14:30:57 "Exercise 3.5 We’ve seen how to calculate sums and products using folding functions.Given that the function max returns the maximum of two numbers, write a function using a fold that will return the maximum value in a list (and zero if the list is empty). So, when applied to [5,10,2,8,1] it will return 10. Assume that the values in the list are always ≥ 0. Explain to yourself why it works." 14:31:03 Can't get it 14:31:11 oh 14:31:17 but I guess I should check out #Haskell 14:31:27 i assumed i actually wouldn't be able to do it, but that's trivial ) 14:31:28 :) 14:31:39 oh, really? 14:31:49 I just don't get what the folds will need to do 14:31:54 but could you explain? 14:32:04 you have a list A B C D E .. Z, and you need the max. basically, a max takes two values and returns the maximum of the two 14:32:10 yes 14:32:25 because max is... i lack terms :-)... it does A m B = B m A 14:32:37 and all the other funny features like that 14:32:38 yes 14:32:43 you can just do the maxes in any order 14:32:49 yes, I see 14:33:02 so... A B C -> A (B C) -> (A B C) would be a way to get the max of A B and C 14:33:06 now... 14:33:12 fold takes a list, and a function 14:33:26 it then takes a certain pair of values in the list, and performs the operation 14:33:35 ooh... 14:33:39 I think I get it 14:33:41 then, it takes that pair, and performs the operator on that pair, and another value in the list 14:33:43 good 14:33:55 on a related note, i think i need to poo -> 14:34:05 foldr (max) 0 [balh]? 14:34:13 lol, sure, er... don't let me stop you 14:34:18 *blah 14:34:20 looks correct 14:34:26 except you don't need the parens 14:34:33 ok, cool 14:34:36 thanks oklopol 14:34:39 now go forth 14:34:41 and make doodo 14:34:45 *doodoo 14:34:48 :P 14:34:51 ah, indeed! -> 14:35:44 hrmm 14:35:46 yes, it works 14:35:54 but why does it say you need two folds? 14:36:46 and is the fold direction important? 14:37:29 nevermind, it says a fold 14:37:37 still, is the direction relevant? 14:38:15 -!- slereah_ has joined. 14:49:40 (A m B) cmp (B m A) 14:49:49 where m is max. 14:50:10 and cmp is "compare these with yer braines" 14:50:35 did you compare? 14:52:27 aaaaactually 14:52:40 i'm globbing crap here 14:52:59 (A m (B m C)) cmp ((A m )B m C) 14:53:03 ... 14:53:06 more crap 14:53:10 (A m (B m C)) cmp ((A m B) m C) 14:53:12 better. 14:53:43 now, take your brain, stuff that in, wait a mo, tell it to generalize, wait a mo, and hope for the best 14:54:01 lol 14:54:02 ok 14:54:05 I'll try 14:54:07 hehe 14:54:35 alrighty 14:54:37 makes sense 14:54:40 (ish) 14:54:42 Hooray 14:54:44 :) 14:55:01 I like Haskell 14:55:05 it's so... 14:55:06 er 14:55:13 for the lack of a better word 14:55:15 strange 14:55:16 the max-function is a socalled "bag" function 14:55:17 ;) 14:55:21 ? 14:55:26 meaning it conceptually takes a *set* of arguments 14:55:27 -!- Jontte has joined. 14:55:32 aha 14:55:33 you can give it's args in any order that is. 14:55:38 yes 14:55:39 just like + and xor too 14:55:40 I see 14:55:43 yip 14:55:47 and * 14:55:55 -!- Slereah has quit (Read error: 110 (Connection timed out)). 14:56:05 and of course set operations except set substraction. 14:56:06 yeah, also * 14:56:09 (*=X=times=multiplication) 14:56:22 yes 14:56:39 meh, I'll continue with the tut some other itme 14:56:39 that is a helpful thing to know about a function, or not 14:56:48 i just wanted to coin a term for it 14:56:55 He 14:57:08 as in Heh as in laughter ;) 14:57:54 Haskell is exactly like ad-maths class 14:57:59 piece wise functions 14:58:01 i actually guessed what you meant there! :) 14:58:04 compliments etc 14:58:06 with "he" 14:58:09 yay :) 14:58:50 i've actually been wanting to make a language with a type system for a long time... could have my dream of having a language where args are given in arbitrary order come true 14:58:58 basically, the only list would be the set 14:59:10 and you could only give unary args 14:59:11 that would be cool, but also, confusing :) 14:59:40 no no! basically you'd have a distinct type for everything, how ELEGANT! 15:00:03 lol... lisp with sets instead of lists xD 15:00:09 Ah, yes well if Char is Different from String which is Different from Array of Char 15:00:12 then cool :) 15:00:20 :-\ 15:00:27 actually 15:00:30 I don't know 15:00:33 it might be aweosme 15:00:34 oh, no, that's not enough... 15:00:36 i mean 15:00:44 catenating strings... 15:01:00 you need to make a LeftAppendor object and a RightAppendor object 15:01:08 w00t 15:01:12 I like that :) 15:01:17 :DD 15:01:20 annoying, painful, stupid - but awesome 15:01:22 :) 15:01:24 indeed! 15:02:02 i've been thinking i could take all these millions of stupid features i'd concocted over the years, remove them from oklotalk and make a new language for them 15:02:17 i mean, that's sometimes pretty nice 15:02:17 :) 15:02:39 like, you wanna have the program in the form oper func oper func oper func etc 15:02:43 Well, I don't really mind, as long as we get to _eventually_ see the langauge 15:02:47 and it _exists_ 15:02:50 ;) 15:02:55 because then you don't need parens then. 15:02:56 woow 15:03:01 that would be cool, yip 15:03:07 and it's nice an sequelz 15:03:18 now, if types make up the order of usage of argumens 15:03:22 *arguments 15:03:40 then you can almost always have execution be linear if it's conceptually linear 15:03:44 if you know what i mean... 15:04:00 I think I get it... 15:04:12 but im not too sure 15:04:15 hehe 15:04:19 talking about flow control?? 15:04:21 i'll try and find a weird example 15:04:23 yes 15:04:23 or time 15:04:28 oh 15:04:34 then I get what yoyu are saying 15:04:45 in a twisted kind of abstract sense... 15:04:52 okay, very stupid example, but anyway 15:05:21 yes, im all eyes 15:05:24 ;) 15:05:35 let's say you wanna do "A - (B - C)", but don't want the parens... 15:05:41 yes 15:05:57 A - B - lparam C 15:05:58 xD 15:06:04 lol 15:06:06 funky 15:06:08 and I like it 15:06:16 makes programming truly painful :P 15:06:16 OH, C IS AN LPARAM, THEN THE OTHER MUST BE RPARAM! 15:06:22 indeed! :D 15:06:39 good luck with the interpreter though 15:06:55 trying to make it run in linear time :X 15:07:10 hehe, actually i'd just really like to do static typing, so this might be a nice thingie to test with. 15:07:19 :) 15:07:24 wait 15:07:26 i've always had either dynamic or brainfuck typing 15:07:27 nontheless 15:07:31 good luck :P 15:07:36 (where everything is statically a number...) 15:07:37 Heh 15:07:44 understood 15:08:16 http://esoteric.voxelperfect.net/wiki/Betterave 15:08:25 But, unlike these three languages, it is not tape- nor stack-based. Instead, programs are written as expressions. Like Scheme, it has a prefix notation, but unlike Scheme, there are no parentheses; each operator knows how many arguments must follow it. Thus, for example, the parameters of an addition come after the "+" symbol. 15:08:28 yeah, it runs everything in linear time, of course... hmm, i think static typing isn't the hard part anymore 15:08:30 perhaps too late 15:08:40 oh, no 15:08:56 yaeh 15:08:59 1. that's completely different 2. i had that idea 3 years ago 15:09:03 it's nearly everything you were o about 15:09:04 and thought it was original 15:09:14 lol 15:09:14 well 15:09:16 it's called "polish notation", i learned then 15:09:17 it's similar 15:09:20 yes 15:09:25 like FALSE 15:09:26 oh, no, that's polish notation. 15:09:29 nope 15:09:35 wait 15:09:35 false is rpn, reverse polish notation 15:09:38 FALSE is rpn 15:09:50 lol, we both realised 15:09:56 stack-based, you might say 15:09:59 it took me 2 seconds longer :P 15:10:06 (5:09:58 PM) oklopol: false is rpn, reverse polish notation 15:10:07 (5:10:00 PM) Hiato: FALSE is rpn 15:10:16 i just typed slow :) 15:10:24 Heh, good excuse 15:10:31 ;) 15:11:44 1. that's completely different. 2. i had that idea. 3. years ago, when i was in lapland, i saw a reindeer eat its own shit 15:12:21 haha, Must have been a truly inspiring sight 15:12:25 ;) 15:12:35 oh, sorry, that's not true, i just added something :) 15:13:02 oh I see, so what you meant is: 1. i had that idea. 3 years ago, when i was in lapland, i saw a reindeer eat its own shit ? 15:13:05 i mainly ogled at girls last time i was in lapland :) 15:13:25 unsurprisingly, I am not surpirised 15:13:32 and that is a helathy habbit nontheless 15:13:38 *healthy 15:13:40 no, i wanted to change the "3 years ago" into "part 3. years ago..." 15:13:58 I know, I was merely toying with you mortal mid 15:14:00 *mind 15:14:03 or *mud 15:14:07 whicheever 15:14:09 and in that you did succeed! 15:14:21 Hooray! 15:14:30 oh, btw, i played a bit with the idea of pattern matching 15:14:44 oh, and? 15:14:53 sofar, quicksort looks unbelievably weird, but i found comfort in that the prolog one i found is very similar :D 15:15:11 Cool 15:15:14 i thought i had the world's stupidest and ugliest idea ever when i invented scramble 15:15:24 the function that randomly scrambles a list 15:15:31 but? 15:15:43 used for sorting, that is 15:15:47 It turned into OgroSort (random sorting) 15:15:54 prolog has "perm", i then found out 15:16:00 lol 15:16:01 shame 15:16:08 and permutation is just fancy talk for scrambling :) 15:16:11 I wrote a permuatation algortihm once 15:16:23 I called it TVPA 15:16:31 and permutation is just fancy talk for scrambling :) ... er sure 15:16:32 :) 15:16:37 oh, i'm not even disappointed anymore when i found my ideas already in use, 15:16:43 they always are 15:16:55 what a horrible and demaning experience 15:17:02 I would threaten 15:17:08 to kill kittens unless I was credited 15:17:10 :P 15:17:19 and i usually found out about them right after i've invented them (usually because of my own googling, but often also by randomly looking at #haskell or somethign) 15:17:27 heh 15:17:51 i actually then renamed Scramble into Perm 15:18:14 aha, I see 15:18:23 http://rafb.net/p/jRzJ6635.txt 15:18:25 which is kinda lame because i'm trying to keep the concepts of pattern matching and constraint programming separate :P 15:18:29 it's in delphi 15:18:32 or is it logic programming... 15:18:37 i mean that thing. 15:18:45 I don't have the faintest clue 15:19:27 That's a perfect demonstration of my horrible procedural style 15:19:41 which is why I want to become proficient in functional languages 15:19:46 ala Haskell 15:21:30 i don't get much of that 15:21:34 well, i don't get all of that 15:21:43 hrmm 15:21:50 well grab FPC or something 15:21:54 and Permute away :P 15:22:05 FPC = Free Pascal Compiler 15:22:14 which is what Lazarus IDE is 15:22:27 anyway 15:22:34 that's besides the point 15:22:38 the point is the style 15:22:41 :) 15:22:45 for k := 0 to sizeof(p)-1 do if PosRightGreater(k) then maxp := k; 15:22:54 ...does that find the max of a list? 15:22:58 nope 15:23:02 what it does is 15:23:13 finds the furthest possible number from the left hand side 15:23:20 which has a number graeter than it on it's right 15:23:25 *greater 15:24:48 i think that's quite a slow way to do it... 15:24:55 it's the only way I could think of... 15:25:01 but you are correct 15:25:05 it is slow 15:25:19 fast, but slow in terms of cycles per permuttation 15:25:30 start from the right 15:25:38 it takes about 0.5 secs to rubn through 8! permuataions, I think 15:25:42 yes 15:26:23 hmm... 15:27:15 oh, right, just iterate from right to left, store the first number as max, and when you find a number > max, return the index of that 15:27:29 first == last in the lsit 15:27:30 list 15:27:34 hrmm 15:27:36 just first because started from the end... 15:28:03 but that won't be in lexicographical order 15:28:10 at all 15:28:32 that will find the last index in the list for which there are no greater numbers on the left 15:28:39 *right 15:28:40 lol 15:29:07 wait 15:29:08 oh 15:29:12 let me think 15:29:13 -!- jix has quit (Read error: 60 (Operation timed out)). 15:29:13 ... 15:29:31 well 15:29:42 -!- jix has joined. 15:29:42 I think that that won't be too much faster than what I am doing 15:29:45 let's say you have [9 5 6 8], store 8 as max, then go until you find a number greater than it 15:29:52 that's 9 15:29:55 oh, it's faster 15:30:01 like this you go through half the list 15:30:01 im just saying 15:30:06 true 15:30:07 well 15:30:11 yes, I do start on the left 15:30:13 your way you go through the list for every element of the list 15:30:21 true 15:30:30 mine is O(n), yours O(n^2), unless i read the code entirely wrong 15:30:39 no, you are right 15:30:50 yes, it's definitely not linera 15:30:53 *linear 15:31:02 wait 15:31:04 I don't get it 15:31:10 with 15:31:13 what don't you get 15:31:17 [9 5 6 8] 15:31:20 8 is max 15:31:23 go left 15:31:28 9 is then max 15:31:35 then that will be wrong 15:31:41 what should it return? 15:31:49 it should, return, in this example 15:31:50 5 15:31:55 well, yeah 15:31:57 as 5 has something to its right 15:32:00 which is greater 15:32:02 but do you see the connection between the algos? 15:32:04 8 doesn't 15:32:09 kind of 15:32:12 okay 15:32:14 but not really 15:32:19 wait a second 15:32:25 i'll give the hint. 15:32:30 sure 15:32:45 my algo finds the last number that does *not* have a greater number on its right 15:33:02 now, every number after it in the list will have a certain property 15:33:04 do you know what? 15:33:08 yes 15:33:16 a number graeter than it on it's right 15:33:22 *greater 15:33:22 yes 15:33:27 do you see the connection? 15:33:31 but that still is one step away 15:33:32 yes 15:33:35 as I did before 15:33:37 because 15:33:38 it is so trivial i didn't consider them a separate algo at all. 15:33:46 I still need the largest possible number 15:33:53 hmm 15:34:11 largest possible number? 15:34:12 whut 15:34:31 sorry 15:34:35 not he largest possible 15:34:36 you see i have no idea what you are doing with this since i haven't read the code, i'm just telling you the best algo to do what you explained :) 15:34:39 the furthest possible 15:34:45 indeed 15:34:56 but 15:34:58 in that case 15:35:01 I now know 15:35:05 that everything save 8 15:35:18 is valid in the 9 5 6 8 15:35:33 "valid"? 15:35:41 so, I guess I can just chosser the one before it 15:35:49 valid = something greater on it's right 15:35:55 well 15:36:00 then it won't be the leftmost. 15:36:01 and nine 15:36:05 yes 15:36:07 the problem 15:36:08 ohhhhh 15:36:15 actually 15:36:17 no 15:36:19 indeed, mine doesn't quite solve it ;) 15:36:20 not the problem 15:36:24 but, it's a trivial change. 15:36:30 the problem is rightmost 15:36:36 and your's would report 9 15:36:41 instead of 6 15:36:47 you want the rightmost? :D 15:36:50 yes 15:36:52 you said leftmost earlier 15:37:03 oh, in that case, it even simpler than my original one 15:37:32 (5:36:11 PM) Hiato: valid = something greater on it's right 15:37:38 take the last of the list, go to the left unless the new number is smaller than the last number 15:37:49 oh yeah huh 15:37:53 that would be way easier 15:38:20 but 15:38:27 that would yield false results 15:38:29 because 15:38:38 in 9 5 6 8 15:38:45 we would stop on 8 15:38:50 as 6<8 15:38:50 **until 15:38:54 s/unless/until 15:38:55 xD 15:38:58 aha 15:38:59 lol 15:39:16 then we have another problem 15:39:22 in 9 5 6 8 15:39:25 we go left 15:39:28 and stop on 5 15:39:33 as 5<9 15:39:37 no 15:39:38 which is not part of the condition 15:39:47 ? 15:39:52 at 6, the new number (6) is smaller than the last number (8) 15:39:55 so we return 6 15:39:59 of the index of it. 15:40:01 *or 15:40:01 oh yeah 15:40:03 huh 15:40:04 thanks 15:40:16 that will decrease the CPU cycles 15:40:16 :) 15:40:37 I just then have to change the code a bit 15:40:42 to say if it is the 1st number 15:40:44 then we are done 15:40:50 it's a big algorithmic improvement, i recommend you read a bit about complexities in general 15:40:52 instead of if PosRightGreater returns false 15:41:02 yes, I would like to 15:41:38 since i'm fairly sure i'd've lolled my ass off if i didn't know who you are :) 15:41:51 programmers are sometimes like that 15:42:07 i mean, if i'd just seen that algo on the net 15:42:10 I'm not sure whether to take that as a compliment or insult 15:42:13 but thanks :) 15:42:14 hehe 15:42:25 yes, if you'd have seen it on the net 15:42:25 ... 15:42:39 i mean, without knowing whose it is. 15:42:49 yes (I'm listening :P ) 15:42:54 -!- RedDak has quit (Remote closed the connection). 15:42:57 (no worries, I won't take offense) 15:43:05 (it was stupid ;) ) 15:43:55 it's just you get a bit obsessed about complexities after being around them constantly 15:44:11 fair enough :) 15:44:19 what is it that you do? 15:44:21 an algorithm that obviously does what it does inefficiently is actually very funny after that. 15:44:40 Hehe, I can see where you're coming from 15:44:53 if you don't mind my previous question 15:45:02 would you answer it ;) 15:45:10 sometimes also because a tabsize of 8 instead of 4 is enough, though, people are pretty obsessed with prettiness of code too :) 15:45:15 oh 15:45:21 wonder what that was 15:45:45 "people are pretty obsessed with prettiness of code too :)" unfortunately true 15:45:51 Well 15:45:57 what is it that you do? 15:46:02 for a living, or whatever? 15:46:03 ;) 15:46:36 oh, i'm in high school, possibly failing it, taking a few courses from the uni on the side 15:46:52 nice 15:46:55 me too 15:47:04 they just let me on one course at a time :-( 15:47:06 well, im not sure about failing (:P) or courses 15:47:12 shame 15:47:13 well 15:47:25 I have my sincere doubts that you are failing :) 15:47:41 well, after the first few weeks of high school i realized it has nothing to offer me (or anyone non retard.) 15:47:51 so... haven't really done anything there. 15:47:57 i lack a few courses i should have 15:47:58 Hahah, so very (sadly) true :) 15:48:11 oh, I see 15:48:28 I go to school, to come home 15:48:33 it's that simple :) 15:49:08 i don't really go, since i have 4 hours of lectures a week 15:49:17 no courses in high school anymore, just the one course in cs 15:49:22 in the uni 15:49:24 nice :) 15:50:14 basically, a course about heaps. 15:50:17 :) 15:50:39 :D 15:50:55 different ways to keep them balanced, stuff you could explain in a few lines for those who've never heard about them :) 15:51:25 i've actually done this, a whole course about ordos, i taught them to a friend in a few nights. 15:51:58 ordos? 15:52:02 http://rafb.net/p/0YrGtq15.txt 15:52:03 orderz 15:52:06 O() 15:52:09 oh 15:52:14 Big O notation 15:52:20 check it out 15:52:23 its way smaller now 15:52:26 haven't tested 15:52:28 but hey 15:53:38 be back later 15:53:43 got to do some stuff 15:53:45 cheers 15:53:46 -!- Hiato has left (?). 15:54:16 8| 15:54:26 people can be so weird... leaving irc... 16:20:00 what's the shortest brainfuck interpreter in a language not spesifically designed for brianfuck? 16:20:04 brain... 16:20:30 and by specific design i mean stuff like a language that executes brainfuck code. 16:40:19 -!- oklopol has quit ("for the need to encumber"). 16:47:25 -!- oklopol has joined. 17:00:57 -!- oerjan has joined. 17:17:49 -!- ehird` has joined. 17:21:44 -!- helios24_ has joined. 17:21:58 -!- helios24 has quit (Read error: 113 (No route to host)). 17:24:37 -!- Hiato has joined. 17:24:48 Wassabi 17:25:24 no thanks, but it is a bit chili outside. 17:25:47 oklopol: no fair, i was going to... 17:25:47 Hehe 17:25:52 (finally, a chance to pun-answer that) 17:25:52 :) 17:26:08 Souther Hemisphere - Oh Yeah :D 17:26:17 although i did it a previous time so... 17:26:18 warm there? 17:26:22 oerjan: i know 17:26:24 Summer! 17:26:26 and i was sooo jealous :\ 17:26:28 I know orejan 17:26:30 :) 17:26:51 i read all teh logs, although i usually skip the long discussions over debugging something :D 17:27:11 Hah, I also try to 17:27:21 well not skip, but not read memorizingly 17:27:25 whenever I go to slleep 17:27:27 skim 17:27:39 I'm garunteed to miss out on the *actual* 17:27:41 discussion 17:27:59 yes, well I just do Ctlr+F 17:28:00 :P 17:28:03 in the logs 17:28:06 ah yes. how come you started asking haskell questions just when i left ;) 17:28:21 Couldn't help it :) 17:28:29 That's when the exercises got hard in the tut 17:28:29 the fold thing? 17:28:31 ;) 17:28:32 yip 17:28:44 although oklopol handled that well :) 17:28:55 thanks, i thought so too :P 17:29:11 Yes, I must hand it to him: Oklopol, you taught me folds in ~3 lines, and the whole tut didn't make sense (about them) 17:29:33 i couldn't add the insightful "BUT, you can also do that with a StateT monad, and it's much COOLER" oerjan could've added! 17:29:42 *though 17:29:47 hm... 17:29:53 StateT? 17:29:54 (not would've, but could've) 17:30:28 no, State is sufficent ;) 17:30:35 i'm not sure what a monad would have to do with a fold, but i'm fairly sure you can put a bit of monad to everything :-) 17:30:36 amm, err... ok 17:30:52 sure, whatever floats your boat oklopol :P 17:31:02 * oklopol has a monad fetish 17:31:07 aha 17:31:17 well that explains everything 17:31:23 naah 17:31:25 someone should write a haskell fibonacci that uses just monads 17:31:27 nothing else 17:31:27 pulling your leg(s) 17:31:30 mmmk 17:31:38 or actually... nearly anything you do with lists will be essentially folds at the bottom anyhow, even if you use monad functions 17:31:49 i guess 17:32:11 (from the little understanding i have about the subject) 17:32:17 sure (desperately searches the tutorial for what monads are) 17:32:30 Hiato: they may have left that out out of mercy ;) 17:32:45 oh, ok 17:32:49 Hiato: yeah, quickly look them up so you can have a conversation about them :) 17:32:49 or just considered IO 17:32:53 in which case: I'm not interested :P 17:33:26 naah 17:33:28 actually you must have at least one monad eventually: IO to do I/O 17:33:29 I am 17:33:34 in a twisted way 17:33:49 "monad? i'll check wikipedia" *minute* "ah, now i see what you meant by that seven lines of monadic line noise" 17:34:23 Yes.. er.. no... am... maybe 17:34:32 choose the more appropriate one 17:35:03 oklopol: chooses "am", for he is such an egois. 17:35:04 Ät 17:35:05 *t 17:35:07 *egoist 17:35:10 *typoist 17:35:15 also 17:35:20 * oklopol != ok+tab 17:35:21 xD 17:35:24 Lol :) 17:35:27 * oerjan wonders if t means something in finnish 17:35:32 FUCK, i'm failing a bit too much heree.. 17:35:38 "/me" != "ok+tab" 17:35:54 oerjan: @, or "at" is pronounced "ät" 17:36:19 although you rarely see it in use as such, since it looks awful, that's what "ät" would mean 17:36:24 * Hiato wonders if "/me" will come out right 17:36:47 well that's just borrowing english pronunciation i take 17:36:52 yes 17:37:06 Watter taal praat jy oklopol? 17:37:21 "what language do you speak?"= 17:37:21 ? 17:37:25 yes 17:37:27 correct 17:37:27 actually 17:37:32 and the winner is.... 17:37:38 i remember praat and jy from yesterday 17:37:43 so... shouldn't have had to ask. 17:37:44 :D nice 17:38:00 * oerjan actually got that since "prat" is norwegian too 17:38:05 Dutch I take it.... 17:38:08 cool 17:38:13 well it's sprache in german and prata is talk in swedish, it's not like it's hard to remember something you almost remember already 17:38:14 or is memory failing 17:38:23 almost certainly borrowed from dutch though 17:38:28 yip 17:38:29 Hiato: also, finnish. 17:38:40 ah yes, we went through this yesterday :P 17:38:44 well, i use english more, but finnish is my native language 17:38:44 weel orejan 17:38:47 i guess we did 17:38:53 * oerjan has read that the only native word starting with in norwegian is "p" 17:39:05 Afrikaans = 90% Duthc + 5% English + 5%Randomness 17:39:06 *with p, sheesh 17:39:09 starting with? :D 17:39:10 *Dutch 17:39:10 oh 17:39:13 what :o 17:39:21 wtf 17:39:25 that's sick :D 17:39:36 not really 17:39:42 because every time you learn a rule 17:39:54 there are more exceptions then are things that confomr :( 17:39:57 *conform 17:40:35 all i know about dutch is from porn 17:40:38 ah, just like english then :D 17:40:50 ahahahahaah 17:40:56 and to orejan 17:40:58 too true 17:41:03 took me years to learn English 17:41:07 they make very sucky erotic comedies. 17:41:13 heh 17:41:31 I'll take it you're the expert 17:41:34 oklopol 17:41:49 i can't really think of anything funnier than an ugly guy having sex with three girls in fast motion with carneval music on the background :) 17:42:00 expert? 17:42:03 in porn? 17:42:03 lol, true 17:42:11 yes, well Dutch pron that is 17:42:21 typo? 17:42:22 oh, well probably any kind 17:42:26 :) 17:42:28 Ah, I see 17:42:43 http://esoteric.voxelperfect.net/wiki/2006_Esolang_Contest 17:42:48 Holy Guacamole 17:42:57 there is no way 3/4 of the Esolangs out ther 17:43:05 can do any of "The Tasks" 17:43:14 someone weas on something real good :) 17:43:16 *waz 17:43:18 *was 17:43:20 *blah 17:43:58 oh they _can_, if they're turing complete 17:44:13 treu, but you know what I meant 17:44:19 what I meant is: 17:44:35 i mean, _someone_ wrote a mandelbrot generator in bf... 17:44:43 hehe 17:44:45 No single human (or multiple humans) has/have the capacity to concentrate for a long enough period of time 17:44:53 true. 17:44:54 Yeah, I saw that 17:45:07 It's not hard really 17:45:12 at least the maths part 17:45:12 nonsense. first, write the program for a turing machine, secondly, implement the turing machine in language of choice 17:45:17 I did one in ruby easily 17:45:26 meh 17:45:28 fin 17:45:30 *fine 17:45:32 timotiis: now that you put it that way, can't think of anything simpler. 17:45:33 the house wins 17:46:11 as i recall, a mandelbrot in basic was one of the first programs i ever wrote, long long ago 17:46:15 is Pikhq the resident Brainfuck god? 17:46:23 dbc is, i think. 17:46:29 oh, I see 17:46:54 pikhq is the author of pebble, i'm assuming he owns at brainfuck, although i don't know what he's done with it 17:47:04 Cool' 17:47:09 also, i know he's said "brainfuck is easy once you've used it a bit" 17:47:16 not in those words, but something along those line 17:47:16 s 17:47:24 :D 17:47:30 Lunacy I tell you :P 17:47:35 heh 17:47:37 http://rafb.net/p/OXHki823.html 17:47:40 there we are 17:47:41 well, it's true, it's not that hard ;) 17:47:43 the madelbrot set 17:47:45 in Ruby 17:47:48 my own script 17:47:50 very easy 17:47:51 hm i think the uuencode task might be the simplest... 17:48:00 maybe 17:48:04 im not sure though 17:48:13 sed is definitely difficult 17:48:19 in non-stringy languages 17:55:20 Wise man once say: "Mandelbrot Set make IRC silent, Phoenix set make noise" 17:56:16 what is the Phoenix set? 17:56:28 its alos an infintely repeating set 17:56:31 hrmm 17:56:34 a fractal too 17:56:38 let me get the link 17:58:06 http://www.jamesh.id.au/fractals/mandel/Phoenix.html 18:00:34 aye 18:00:48 not pretty, hence it makes noise :P 18:02:46 interesting note: "aye" means "no" in finnish 18:02:52 although it's written "ei" 18:02:56 cool 18:03:01 I learnt some finnish 18:03:04 :) 18:03:09 interesting note: "aye" means "egg" in german, although it's spelled "ei" 18:03:09 what is yes? 18:03:11 also 18:03:16 ei har jeg hrt slikt 18:03:24 heh, and some german 18:03:37 it's not pronounced the same, i failed :) 18:03:44 "yes" is "kyllä" 18:03:50 pronounced? 18:03:52 (i.e. ei means "not" in norwegian, although it's a bit rare) 18:04:02 wicked 18:04:19 Hiato: i'm not sure how to type how it's pronounced in finnish in english... 18:04:31 sure, no problem 18:04:41 "ej" in swedish. 18:05:06 wow 18:05:07 well 18:05:18 I won't remmeber half of these, but cool nonetheless 18:05:25 *remember 18:05:40 "kule" pronounced a bit like "dune" and then "la" as in the beginning of "lag" 18:05:50 kule la 18:05:59 very bad explanation :) 18:06:20 I think I get it though :) 18:07:06 you can't really explain the exact pronunciation like that, since everything is pronounced a bit differently 18:07:10 but it's close 18:07:22 cool, thanks nonetheless 18:07:24 anywhodel 18:07:25 brb 18:07:27 supper 18:07:35 well, not right back but hey 18:18:44 0x20FF33 18:19:08 2162483 18:28:34 no, toffee 18:28:37 0x20FF33 18:30:20 back 18:35:44 -!- calamari has joined. 18:38:26 oklopol: I've done a small amount of things in Brainfuck, yes. 18:38:27 ;) 18:40:14 you yourself have said dbc is the guru, i think. this is why i had no trouble putting him above you in the brainfuck-capability meter i have in my head 18:40:36 i used to be pretty good myself.. 18:40:39 i think 18:40:55 a million years ago, when i was able to program in other languages than python.- 18:41:46 I think I caught Eso-fever 18:41:49 ... 18:41:52 :( 18:42:10 I already want to make a new language, and I haven't even named the current one :( 18:42:15 :P 18:44:33 Doctor, is it curable? 18:55:23 No. 18:55:33 However, with longterm treatment, it can be managed. 18:55:45 (side effects include severe geekiness_ 18:55:46 ) 18:58:27 :D 18:58:33 er.. I mean :( 19:00:12 Alright, I need some _community_ (winces) suggestions for a name for my esolang so that I can write an interpreter and not feel guilty about thinking about my next one 19:00:26 its the funky obfuscated one 19:00:56 where helloworld is : {{>>~~~~{-<}~~~~~~~~~{-<-<}<<}:{>>{~~~~~~~~{<}~{>}}<<}\ ~>{{~{v}}>>>v{~}^<<<}/(<<<){[<<]}:>:{>>{~~~~~~~~{<<}~{>>}}<<}\ ~{>>{vvvvvvvv~~~~~~~~~~~~~~~}<<}~{>>{vvvv~~~~~~~~~~~~~}<<}~ {>>{^^^^^^^^^^~}<<}~{>>{v~~~~~~~{{<<}~}v{~}vvvvvvv{~{>>}}^^^^^^~~~ {{<<}~}vvvv{~{>>}}v~~~}<<}~<{{^^^}}~{>>{vvvvvv~{{<<}~{>>}}^^^^^^^~~~~~~~~~~~{{<<}~{v>}}^^^^^^}}/{{()}}{[<<<<]}:>:{{~v}}\} 19:01:20 and outputting T using Fibonacci is: {{>>}~~~~~~~~~~~{{-<~}<<} /{{(<){[<<]}}}:>:~{>>{<<}}~{<<{>>~<<}>>}~{<<{>>}}\{>>v}~{^}~~~~~{<}~ {<{~}v>}~} 19:02:21 * Hiato wonders if ever anyone will respond, appropriately 19:04:04 Hmm. . . 19:06:33 Phlegethon. 19:06:45 Nice name, does it mean anything? 19:07:11 It's the outer ring of the 7th level of hell in /The Divine Comedy/. 19:07:24 aha 19:07:24 The naming, obviously, inspired by Malbolge. 19:07:33 yes, I see :) 19:07:49 though this is actually _possible_ to programme in, well just 19:08:07 hrmm 19:08:09 well 19:08:19 in the absence of any other suggestions 19:08:22 I will say 19:08:28 I Like :) 19:08:28 The 7th level of hell is reserved for those violent against people and property. 19:08:34 and it will now be processed 19:08:38 Which you will be after coding in that. :p 19:08:49 lol :P 19:08:51 Nice 19:09:12 (Even though in my religion, there is no hell, but hey ;) ) 19:09:23 Plegethon 19:09:29 it has a nice ring to it 19:10:00 * Hiato contemplates naming it Plegethon 2, to suggest some kind of advancement 19:13:01 Perhaps though 19:13:12 something less...er for the lack of a better word, evil 19:14:07 like Fluffy Bunny Esolang :P 19:19:11 Generic evil: Inferno. 19:21:04 I like 19:21:16 I dub the language Inferno 19:21:32 for no apparent reason too ;) 19:33:29 -!- oerjan has quit ("Coffee"). 19:48:10 exists, hiato 19:48:41 inferno exists? or call it exists. I'm confused... 19:48:58 a language named that exists 19:49:02 damn 19:49:04 well an os named that with a language called limbo 19:49:07 but yeah :P 19:49:11 ok, undo the dub process 19:49:26 oh yeah, I think I even heard of it 19:49:27 :P 19:49:40 plan9-related 19:49:43 thanks ehird1 19:49:46 yeah 19:49:50 that's right 19:49:52 bell labs 19:49:52 ehird` 19:49:53 :P 19:49:58 woops 19:50:00 typos 19:50:01 http://en.wikipedia.org/wiki/Limbo_programming_language quite clean code actually 19:50:01 sorry 19:50:02 ;) 19:50:49 ok, so any suggestion s for a new name? 20:08:37 what about Citizen II 20:08:38 ? 20:09:40 nftlLEMONtafn 20:09:51 name for the language LEMON that's all for now 20:10:04 sorry, I dpnt speak fruit 20:10:08 *don't 20:10:49 ehird` : would you so kindly explain what that was about, feel free to decline ;) 20:10:57 that's the name 20:11:02 for what? 20:11:03 nftlLEMONtafn is what you should call your language 20:11:09 oh I see 20:11:14 standing for: "name of the languge LEMON that's all for now" 20:11:55 am.. thank you for your.. err.. generous contribution, we value all of our customers equally, please hold 20:11:58 ... 20:11:59 ... 20:12:00 ... 20:12:01 .. 20:12:06 Ok, I see 20:12:22 I felt inspired too :P 20:14:54 come on, esoteric names for esoteric languages 20:15:17 well, I think the LEMON one was a bit too far away from anywhere, really 20:15:22 I don't mind changing the name 20:15:29 but not to that ;) 20:16:10 actually, I quite like just notlLEMON 20:16:27 as in name of the language (is) LEMON 20:16:31 that's wicked 20:16:33 :D 20:17:17 give it a mutable name global between each interpreter for it 20:17:21 nftlLEMONtafn is good though 20:17:25 and add a few command to change the name 20:17:29 *commands 20:18:12 not sure I'm with you oklopol... ehird` the stuff after lemon looks kind of stupid though 20:18:41 cool though 20:18:50 heh 20:18:55 or rather meh 20:19:42 rather how's about just LEMON 20:20:33 Hiato: not with me as in don't agree that'd be awesome, or didn't understand what i meant? 20:20:45 didn't understand 20:20:48 (a word) 20:20:48 oh 20:20:56 what word? 20:20:58 mutable? 20:21:13 well, really the whole thing, but yes, mutable 20:21:13 if something is mutable that means you can change it. 20:21:17 aha 20:21:32 so what is the interchangeable global? 20:21:37 and what should it do 20:21:49 interchangeable=mutable (methinks) 20:22:45 nevermind 20:23:09 what do you mean " give it a mutable name global between each interpreter for it" 20:26:59 hmm 20:27:10 :) 20:27:34 basically, that the name of the language could be changed by a primitive in your language. 20:27:34 Hah, im not even so sure you knew what you meant :P 20:27:40 ooh 20:27:43 nice 20:27:49 I see 20:27:53 no, it's not nice, but it's an idea :) 20:28:11 no, it is nice, because (I say so :P ) I like it :) 20:28:30 haha, well, the problem is it's a bit hard to implement :D 20:28:41 Oh yeah, you got that right :D 20:28:43 it could change the name on the wiki page xD 20:28:48 aweomse 20:28:54 but I would need PSOX 20:28:58 well, actually would have to move the page to another location :D 20:29:04 * Hiato waits for SGEO to storm in... 20:29:10 true 20:29:22 should a language with the new name already exist, it would just give a runtime error. 20:29:24 ok log in->create a page with the template 20:29:30 and then update the name part 20:29:31 :D 20:29:37 heh 20:29:44 xD 20:29:44 Runtime error... amm 404 :P 20:30:04 and for starters you can name it The Language That Changes Its Own Name 20:30:17 yeah 20:30:23 but then voxelperfect would die 20:30:33 because everyone would execute progs 20:30:37 just for fun 20:30:44 :D 20:30:47 to see if "it lives up to its name" 20:31:32 currently though, it's LEMON 20:31:38 codename, that is 20:31:43 until further notice ;) 20:32:23 :P 20:39:55 no 20:39:56 no hiato. 20:40:02 lemon is a parser generator, qutie common 20:40:03 used by sqlite 20:40:10 and its accompaning input language 20:40:25 nftlLEMONtafn isn't taken! 20:40:41 i'd prefer nftlltafn 20:40:47 for nftlLEMONtafn 20:43:29 -!- pikhq has quit (Read error: 110 (Connection timed out)). 20:47:34 no 20:47:37 LEMON can stand for: 20:47:55 Language Eminating Monstrous Ontologies: nftlLEMONtafn 20:47:59 To recap: 20:48:12 nftlLEMONtafn = name of the language LEMON that's all for now 20:48:21 LEMON = Language Eminating Monstrous Ontologies: nftlLEMONtafn 20:48:27 it's like HURD 20:48:31 but cooler 20:49:44 alright 20:49:48 you have convinced me 20:49:53 it will be called 20:49:58 nftlLEMONtafn 20:50:03 rather 20:50:14 notlLEMONtafn 20:50:32 o=of /= f 20:50:35 -!- Tritonio_ has joined. 20:52:15 but 20:52:18 that is not final 20:53:05 Ontology is a study of conceptions of reality and the nature of being. 20:53:07 interetsing 20:55:42 though, if LEMON is taken, perhaps it would be better not to have it form part of the name 20:56:15 hello everyone and happy new year! 20:56:37 Hello Tritonio 20:56:46 and happy new year to you to 20:56:50 Tritonio_: happy easter! 20:57:02 (even though today is the 6th for me :P ) 20:57:11 happy new easter! 20:58:33 Hiato: you see Tritonio_ lives a few trips around the world away from you 20:58:41 he's just celebrating new years' 20:58:49 :D heh 20:59:14 No way, but hehe anyway 20:59:28 -!- pikhq has joined. 21:03:40 what about this for the name: 21:03:41 TEPLTIAOAUHAUA (The Esoteric Programming Language That Is Absurdly Obfuscated And Unfortunately Has An Unpronouncable Acronym) 21:04:02 unpronouncable acronym rips on INTERCAL (Language With No Pronouncable Acronym) 21:04:09 meh 21:04:16 even though I just though of it 21:04:24 ok, well, Ill try again 21:05:03 actually (believe it or not) I'm glad ehird` is looking out for these things, otherwise this language would be cheap. Thanks :) 21:05:14 :D 21:05:36 Should I go the funky Acronym route? 21:06:17 BLAH (This is not an acronym for the language) 21:06:32 or BLAH (Not An Acronym For the Language) 21:07:36 BLAH (Blatently Lazy Acronym, Hey?) 21:10:35 call it: ACRONYM, Recursive (Languge Without Self-Reference In The Name) 21:13:30 :D 21:13:53 NCTOAN (Nope, Couldn't Think Of A Name) 21:13:53 NAMELESS () 21:14:09 or N/A 21:14:22 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)). 21:14:42 N/A (Not Applicable and Non-Acronym) 21:15:37 I like N/A 21:15:44 and ACRONYM 21:18:06 well done ehird` 21:18:13 Nononono 21:18:14 ACRONYM wins! :D 21:18:15 it's 21:18:18 ACRONYM, Recursive 21:18:19 :( 21:18:24 aww ok then :P 21:18:38 :) 21:18:55 congratulations and thank you :D :D 21:19:03 I like ACRONYM very much :D 21:19:55 thanks ehird` 21:19:56 :D 21:19:59 "You have a doomsday device? You have a doomsday device and you didn't tell me?" 21:20:02 "Frank! Frank, Frank. Boss. Of course I have a doomsday device. What do I look like, a sane person?" 21:20:14 timotiis: sam hughes!!! 21:20:44 ehird`: congratulations 21:20:53 ,o/ \o, \o/ 21:22:18 i found him on freenode once 21:22:24 he was away through 21:22:29 i think his nick was rashakil or similar 21:24:02 cool 21:32:07 -!- jix has quit ("CommandQ"). 21:33:06 -!- Jontte has quit ("Konversation terminated!"). 21:41:03 -!- Tritonio_ has joined. 21:41:14 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)). 21:48:56 -!- calamari has quit ("Leaving"). 21:55:23 I like the angle of incidence 1l, why was it abandoned 21:55:37 don't make me take it onto myself to complete..... 21:55:43 *upon 22:10:31 Well, I finished th spec for 1L_AOI 22:12:21 http://rafb.net/p/VC26oA18.txt 22:15:23 Does anybody know Gregor Richards' email address 22:15:30 I want to contact him 22:16:23 No idea. But he's in the channel. 22:16:32 GregorR: You paying attention to IRC today? :p 22:16:33 GregoR 22:16:37 oh yeah, huh 22:16:46 well GregorR 22:17:03 I would like you to check out the brief 1L_AOI spec I wrote 22:17:05 and perhaps 22:17:23 give it your blessing and continue the wonderful project that is the 1L language 22:17:59 GregorR 22:18:00 ? 22:18:04 oh well 22:22:49 -!- Aardwolf has joined. 22:28:05 woops 22:28:11 made a mistake in the spec 22:29:06 it would have been impossible to do anything with 22:29:13 because of a catch 22 22:30:08 you need to be moving down to increase something, but in order to move down, you need to increase something, and the original direction was right 22:30:16 thus it would have been impossible :P 22:30:18 fixed now though 22:32:27 ok GregorR and anyone else interested, here is the corrected spec for my idea of 1L_AOI (Angle Of Incidence) 22:32:28 http://rafb.net/p/VMGMTC23.txt 22:33:50 cheers 22:33:52 -!- Hiato has quit ("Leaving."). 22:37:04 -!- oerjan has joined. 22:41:41 I should add the i combinator of iota to Lazy Bird. 22:41:48 As an archeopterix or something. 22:42:02 ooh 22:44:13 Is the i combinator thusly? ``s``si`ks`kk 22:46:42 Hm. I'm trying to find a simple lambda form, but I'm not sure there's one beside the definition. 22:47:06 i = .x.xsk 22:47:15 er, \x.xsk 22:47:34 Yes, but well, I need a form for the string rewriting. 22:48:10 -> ^x``xsk -> ``s``si`ks`kk 22:48:15 which is what you had 22:48:32 Unfortunately, it seems that ``````...````iabcd...xyz = ````...````askbcdef....xyz 22:49:16 I could rewrite all occurence of the combinator as ``s``si`ks`kk, but well, I'd rather find a quicker method 22:49:38 oh. 22:49:59 well the obvious thing is to rewrite `ix as ``xsk 22:50:34 Well, there's that. 22:50:59 Good enough I guess. 22:54:25 Although... 22:54:47 Since it's supposed to be unique, maybe I should switch s and k to their translation. 22:55:57 ``x`i`i`i`ii`i`i`ii 22:56:36 problem is, you then need to add rules to recognize the translations. 22:57:13 Well, the i combinator will be added to the program itself. 22:58:13 i mean, i = ^x``x`i`i`i`ii`i`i`ii is not enough to define it 22:58:19 The problem is, I'm not sure how it would play out since ``x`i`i`i`ii`i`i`ii uses the combinator itself 22:58:22 Yes, that. 22:58:59 Ah, iota defines it just as a lambda expression. 22:59:17 Well, I'll just do the ``xsk 23:01:39 On another matter, I defined _ as replacing it with the ASCII input with s="```s`k`s``s`ksk``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`kk`k`ki"+s 23:01:48 And s=`ki 23:02:00 But it is quite slow. 23:02:19 I think I'll have to finish the table, but so far, I didn't even reached A. 23:02:23 -!- timotiis has quit ("leaving"). 23:05:55 table? 23:07:27 Thusly : http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird/Church%203.txt 23:08:48 i think 23 is too long, surely you can double and add 1 to the 11 version faster than that 23:10:20 your + is a bit deceptive i think 23:10:54 it assumes passing m and n as arguments, but for constructing numbers you would just put them in directly 23:11:48 Well, that's how I use my addition. 23:11:50 so ``+mn = ^f^x``mf``nfx = ^f``s`k`mf``s`k`nfi 23:12:03 In the lambda form 23:12:07 Easier to enter. 23:12:12 Just ``+ab 23:12:23 except then it is useless for constructing short numbers 23:12:31 succ *2 11 gives me ``s``s`ksk``s``s`ks``s`k`s`k``s`k``s``s`kski``sb``s``s`ks``s`k`s`k``s`k``sbi``sb``s``s`ks``s`k`s`k``s`k``sbi``sbik`kik`kik`ki 23:12:43 I use the Lazy K table to construct them. 23:13:16 ic 23:13:44 After shortening the 23, I get ``sb``s``s`ks``s`k`s`k``s`k``sbi``sb``s``s`ks``s`k`s`k``s`k``sbi``sb``s``s`ks``s`k`s`k``s`k``sbi``sbik`kik`kik`ki 23:13:50 Which is indeed shorter. 23:14:44 And ``23.xi prints the right number of x's. 23:15:22 oklopol: oklotalk! 23:15:32 Or simplify to `a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`ax with some dummy combinators. 23:18:49 oh right 23:19:15 the most obvious way to make this efficient would be to embed decimal notation... 23:20:22 it would even be possible to define #,0-9 such that ``#102 = church numeral 102 i think 23:20:33 although your 0 is already taken 23:21:11 # = church numeral 0, digit d = multiply by 10, add d 23:21:20 oh wait nonsense 23:21:46 it would have to be written ``201# for that 23:21:49 My 0 is already 0. 23:21:57 It's `ki. 23:22:06 thought so 23:22:13 = `sk 23:22:20 Also that. 23:22:54 (I made a Lazy Bird -> SK translator, in case I want it less readable) 23:36:03 -!- calamari has joined. 23:42:49 what's basically the biggest bf program out there? 23:42:54 it's 2mb lostkng.b right? 23:44:50 Probably. 23:55:06 -!- slereah_ has changed nick to Slereah. 23:56:14 Is a list of the form ``s``si`k[as many as size f the list - 1]``s``si`k[1]`k[2]`k[3][...]`k[n]? 23:56:17 there's an odd shortage of bf->machine code translators 23:56:28 Slereah: i know the lambdacalculus for it 23:56:36 CONS := \x y z. z x y 23:56:44 TRUE := \x y. x 23:56:47 FALSE := \x y. y 23:56:54 CAR := \x. x TRUE 23:56:59 CDR := \x. x FALSE 23:57:05 and have NIL := FALSE or similar 23:57:11 That's what I used. 23:57:17 maybe have NIL := CONS NIL NIL, with the y-combinator 23:57:17 :D 23:57:21 What's CAR-CDR-NIL? 23:58:05 I suppose CAR-CDR are the take first-second element 2008-01-07: 00:02:57 CAR is FIRST 00:02:59 CDR is REST 00:03:03 NIL is terminator 00:03:12 Terminator? 00:03:17 from lisp. the list (a b c) is (a . (b . (c . NIL))) 00:03:23 (car that-list) -> a 00:03:28 (cdr that-list) -> (b . (c . NIL)) 00:03:46 where (x . y) is CONS x y of course. 00:03:50 Oh, end of the list. 00:04:42 yes 00:04:54 when talking about cons-pair lists, it's wise to use lisp terminology 00:04:55 :-) 00:05:17 Yeth. 00:06:20 i don't know sk very well 00:06:31 what's S = again? 00:07:02 \xyz -> xz(yz) 00:07:03 S = ^abc.(ac)(bc) 00:07:13 Yes. 00:07:21 that's pretty close to CONS 00:07:23 i guess 00:07:33 NIL is ^x.True sez Wikipedia 00:07:40 naww, that sounds wrong 00:07:53 True or False is an arbitrary choice 00:07:54 i'd make NIL: "cons NIL NIL" 00:07:55 CONS is ``s``s`ks``s`k`s`ks``s`k`s`k`si``s`k`s`kkk`kk 00:07:58 just because that's cool :-) 00:08:05 ehird`: that's not going to work 00:08:10 why not, oerjan 00:08:13 TRUE is the combinator k. 00:08:16 it means you cannot have NIL as an element of the list 00:08:30 yes, it does 00:08:38 also, you cannot actually _test_ when you have reached the end 00:08:38 (NIL . NIL) is a list with just NIL as the element 00:08:46 ok that's the real reason 00:08:47 hmm, that is a good point 00:08:55 NIL := \x. FALSE 00:08:57 seems the best choice to me 00:09:07 since, i mean, there's nothing "YES", "TRUE" about the end of the list 00:09:08 :-) 00:09:25 Well, it would just be `kk 00:09:35 That's not very yessy. 00:10:04 what's FALSE? 00:10:07 `SK, no? 00:10:10 no, wait 00:10:11 well 00:10:21 It is actually. 00:10:30 But us little people prefer `KI 00:10:59 pff, in my day we didn't have I 00:11:05 we thought ``SKK was perfectly suitable 00:11:16 *ii 00:12:04 \x. x 00:16:56 i should make TRADLISP 00:17:00 tried to be as much like old lisps as possible! 00:17:06 like LISP 1.0 with extensions 00:17:41 :P 00:17:46 that would be pretty esoteric, nowadays 00:18:08 hm, anyone know how LISP 1.0 or 1.5 did pretty-printing of e.g. functions? 00:18:51 what was that esolang that was an alternative history BASIC again... 00:20:12 beats me 00:20:24 but i could write all symbols in uppercase 00:20:27 :D 00:20:31 and use odd indentation styles 00:21:07 I could write it in itself, and make it compile to machine code on the fly, for extra silliness 00:24:08 "If the nazis won WWII, what would BASIC look like?" 00:24:30 10 HEIL HITLER 00:24:37 20 GAS 10 00:24:46 ok that was lame :| 00:25:10 GOTO AUSCHWITZ 00:25:53 yes! 00:26:18 GOTO AUSCHWITZ 00:26:23 AUSCHWITZ: 00:26:25 REM RETURN 00:32:09 ah, http://esoteric.voxelperfect.net/wiki/VENIAL was it 00:32:53 i think the one you just described could be called GODWIN :) 00:36:26 behold! RETROLISP: http://rafb.net/p/8qu6qQ34.txt 00:36:37 things to note: ; is the only comment seperator that coders use. 00:36:40 and no space after it either! 00:36:55 symbols are ALWAYS in uppercase, just don't even question it (sure, it might work in any case, but just..DON'T) 00:37:02 also: symbols are bad, mainly. 00:37:07 the repl prompt is a single * 00:37:32 er, MULT vs. TIMES? 00:37:40 err, yeah 00:37:41 pick one 00:37:42 :P 00:37:47 old lisp used TIMES 00:37:48 so i guess that 00:37:57 and PRINT is not actually used 00:38:03 yeah, that's true 00:38:06 it was when i wrote that comment 00:38:27 did old lisp have strings? 00:38:39 didn't it just have symbols with some weird way to have special chars in it 00:38:42 some sort of special form 00:39:02 (did it even have LIST?) 00:40:22 :P 00:42:11 EXPLODE? or was that prolog 00:54:21 probably lisp 00:54:27 hm 00:54:37 retrolisp is crap, i want an alternate history lisp 00:55:57 oerjan: i wonder what's the most low-level fundamental change i can make while still being able to call it 'althistory lisp' 00:57:18 don't use parentheses... 00:57:33 then it's not lisp 00:57:46 ah but use something equivalent 00:58:27 although that might merely turn it into LOGO 00:58:45 nah 00:58:47 i think parens have to say 00:58:50 *stay 00:58:56 (A B C) should be valid 00:59:44 then... don't use cons cells 01:00:55 what then 01:00:57 not a vector 01:01:00 that's not elegant :P 01:01:09 since lisp was originally 100% theoretic 01:01:52 hmph you're being difficult :D 01:02:00 let's think a little less fundamental ;P 01:02:13 -!- Aardwolf has quit ("Leaving"). 01:02:18 well you could use german... 01:02:40 hahaha 01:02:44 :) 01:02:57 (FUNKZION FAK (N) IST 01:03:22 or something like that 01:03:36 somehow i think i spelled Funkzion wrong 01:03:51 heh, naw 01:03:58 however 01:04:01 instead of: 01:04:02 ; blah 01:04:06 i'm going to have a special form like 01:04:12 (DROP ...) 01:04:15 which is ignored 01:04:22 oerjan: funktion i think 01:04:22 literally ignored 01:04:23 not a NOP 01:04:28 but: 01:04:36 "tion" is just pronounced "tzion" 01:04:43 literally ignored 01:04:47 that's semantically weird... 01:04:54 oerjan: why :D 01:04:56 as it is in norwegian (swedish-based guess, because i know you love those :)) 01:04:58 (so is most old lisp) 01:05:05 ((a b c)) was '(a b c) 01:05:06 "funksjon" 01:05:07 in lisp 1.5 01:05:20 oerjan: i meant the pronunciation 01:05:47 no, no t sound in it 01:05:57 f-u-nk-sj-o-n 01:06:13 hmm, what's "induction" or "penetration"? 01:06:18 sjon there too? 01:06:29 always -sjon 01:06:33 oh 01:06:41 * oklopol is surprised 01:06:56 01:07:09 latin/french words are heavily regularized 01:07:21 i'm always surprised i don't know something i had no way to know anyway. 01:07:29 oerjan: hm, drop is kinda silly i agree :P 01:08:29 just read the last 5 years of maddox, i have to say that man knows his shit 01:14:18 -!- slereah_ has joined. 01:26:22 who wants to tell me the simplest language with a trivial self-interpreter that isn't the null language and doesn't have a blatant 'eval' 01:26:23 :P 01:27:34 if it's "trivial" doesn't that amount to having eval... 01:37:58 perhaps he doesn't like the word. 01:38:08 selfify() 01:38:40 selfarize 01:38:46 selfisticate 01:38:51 oerjan: well, less trivial than eval() 01:38:53 :| 01:39:05 maybe i should say: simpl 01:39:06 e 01:40:11 well lisp has a simple self-interpreter, which just happens to be included under the name "eval" 01:40:19 :) 01:40:25 lisp's self interpreter isn't that simple. 01:40:30 add the p combinator to unlambda, a combinator that parses an input string as an unlambda program 01:40:40 *function 01:41:24 input string would of course be represented as a list of peano numbers or smth, but anywayz 01:41:26 asdfdsaf 01:42:57 :| 01:43:00 but that's basically eval. 01:44:05 -!- Slereah has quit (Read error: 110 (Connection timed out)). 01:45:31 ehird`: the parser is done in an eval fashion there, yes 01:46:27 -!- sebbu has quit ("@+"). 02:18:51 -!- ehird` has changed nick to ehirdsleep. 02:19:08 -!- ehirdsleep has quit. 02:20:32 -!- ehirdsleep has joined. 04:19:44 -!- lifthrasiir has joined. 04:35:56 -!- slereah_ has changed nick to Slereah. 04:36:12 * Slereah tries to make a factorial function. 04:36:18 But it doesn't seem to ever stop! 04:46:07 -!- oerjan has quit (Remote closed the connection). 04:52:14 -!- oerjan has joined. 05:16:59 Hm. For a factorial using recursion, would I have to get out the result, the step, and print it if it's the last step and then deleting the recursion? 05:17:06 With some sort of v combinator 05:17:56 -!- oerjan has quit ("Lost terminal"). 05:19:38 huh? 05:21:17 Well, so far my attempts at a factorial function never stopped. 05:47:00 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:34 -!- sebbu has joined. 09:58:09 -!- sebbu2 has joined. 10:05:25 -!- oerjan has joined. 10:07:56 One of the Turing paper uses a delta symbol in lambda calculus. 10:09:58 With { {delta} M } (M) = ^f[^x[{f}({f}(x))]] if M's a combinator and { {delta} M } (N) = ^f[^x[{f}(x)]] if N and M's are and N isn't M. 10:10:09 Anyone got any idea on the deeper meaning of it? 10:10:48 Since mister T said "We have not as yet assigned any meanings to our formulaes, and we do not intend to do so in general" 10:12:43 right... 10:13:02 it's an equality testing predicate 10:13:06 -!- sebbu has quit (Read error: 110 (Connection timed out)). 10:13:20 a hypothetical one 10:13:33 Oh. It's impossible to do one with only lambdas? 10:13:43 i assume he later proves it's inconsistent that it exists 10:14:30 When I say "different", I don't mean that you can convert one into the other. 10:14:49 Well, it is that, but much restricted. Only to alpha conversion. 10:14:55 i see. 10:15:45 "If N and M are in normal form, are not transformable into one another by repeated application of (i), and have no free variables" 10:15:50 ok maybe delta M itself is not considered a combinator. ah, it's the usual delta function 10:16:17 -!- sebbu2 has changed nick to sebbu. 10:16:18 except with result defined as combinators instead of numbers 10:16:36 Well, (dM)N can be replaced by the combinator 1 or 2. 10:16:38 well, church numerals 10:16:52 What's the delta function? 10:17:04 usually delta_x(y) = 0 if x /= y, 1 otherwise 10:17:05 Or which one, more accurately. 10:17:22 Ah, Kronecker delta. 10:20:34 -!- Hiato has joined. 10:20:44 Hello all 10:20:57 GergorR, are you paying attention today? 10:21:03 Hello sir. 10:21:12 Hello Slereah 10:21:29 Where you on last night with the 1l_AOI spec? 10:22:16 Depends if you need logs or my memory. 10:22:26 lol, well your memory 10:22:32 and then you opinion 10:22:40 * oerjan assumes GregorR is still sleeping. also if you want him to notice you better spell his nick correctly. 10:22:46 I wasn't there. 10:22:58 lol, thanks orejan 10:23:13 ok well Slereah, and possible orejan (if he's interested) 10:23:25 you know that the 1l spec is incomplete 10:23:28 [11:22] [GregorR TIME reply]: Mon Jan 7 02:22:57 10:23:32 Prolly sleep. 10:23:36 Yeah 10:24:00 anyway, the 1l Angle of Incidence was such a cool idea 10:24:08 an esolang with 1 symbol! 10:24:19 Describe! 10:24:23 so I couldn't help but complete the spec 10:24:25 http://rafb.net/p/VMGMTC23.txt 10:24:50 The only such idea I had was a lazy Gdel numbering of the program 10:24:52 essentially, it's like befunge where you ave a command pointer moving though the code 10:25:12 oh, :) 10:25:13 anyway 10:25:31 then, depending on whether it passes through or by a + sign 10:25:35 various things happen 10:25:52 if it passes by, it gets deflected if the current cell is non-zero 10:25:52 Are all programs valid? 10:25:56 yes 10:26:05 and anything not a + is a nop and comment 10:26:17 if it passes through a plus 10:26:21 stuff happens 10:26:31 and it is turing complete 10:26:37 because it is essentially BF 10:26:42 but way cooler :) 10:27:09 oh, and execution halts when the CP pases through the top or right hand edge of the code 10:27:13 *passes 10:27:28 Do you have a sample program? 10:27:29 there is no bottom or left edge 10:27:35 unfortunately, not 10:27:40 but I am working on one 10:27:49 I'm having a hard time reading it. 10:27:53 it's just difficult to see the stuff 10:27:55 Well, just use a bunch of +'s! 10:28:01 heh 10:28:09 :) 10:28:15 I want to output the letter A 10:28:22 just like 1l_a 10:28:27 or 1l_105 10:28:36 but, it will be wasy easier in this one 10:28:42 as you can just have a line of stuff 10:28:45 :) 10:28:49 anyway 10:28:52 I have tennis now 10:29:06 but I will be back in ~1hour 30mins 10:29:13 Bye. 10:29:14 and hopefully will show you the prog 10:29:15 :) 10:29:21 -!- Hiato has quit ("Leaving."). 12:22:24 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 12:22:28 -!- puzzlet has joined. 13:23:31 -!- Hiato has joined. 13:23:44 I'm back :) 13:24:02 Welcome back 13:24:05 ok here we are http://rafb.net/p/e7f7cE36.txt with an example 13:24:07 thanks :) 13:24:12 it outputs "1" 13:24:14 :) 13:24:22 I was too lazy to do otherwise 13:24:24 Ah, it's 2D! 13:24:31 yip 13:24:35 I'm somehow disappointed! 13:24:42 Am.. Ok... 13:25:00 Do you know what the whole "L" language group is about? 13:25:06 No. 13:25:09 Well 13:25:33 its attempting to implement BF in a funge like manner using minimal commands 13:25:51 1 is pretty minimal I guess! 13:25:57 Aha :D 13:26:08 This is why I wanted to show GregorR 13:26:10 because 2L 13:26:14 Unless you make some sort of 0 command language. 13:26:19 has 3 commands, and 1l_a/105 has 2 13:26:24 but mine has 1! 13:26:27 Hah 13:26:29 But it's hard to make them Turing complete. 13:26:39 yes, although this one is 13:26:41 :D 13:26:51 I was talking about 0 commands! 13:26:55 it is trivial to convert any given BF programme into 1l_AOI 13:26:57 oh, yes 13:27:03 that would be very difficult :P 13:27:25 99 has zero instructions, but isn't very TC! 13:27:38 :) 13:27:42 woops, wait 13:27:49 there is an error in the prog 13:27:50 meg 13:27:52 *meh 13:28:01 time to fix 13:28:31 actually, it's a problem with the spec 13:28:33 blah 13:31:23 http://rafb.net/p/wJ5SQL87.txt 13:31:25 ok, fixed 13:31:30 there was another catch 22 13:32:13 in order to get to a specific cell, you would have to turn, but in order to turn, that cell would have to be non-zero, and in order for it to be non-zero, you would have to turn :P 13:32:54 Turn manually! 13:33:03 Haha :) 13:33:18 Ubuntu arrived! 13:33:19 brb 13:33:23 gonna fetch the CD's 13:33:40 Wow, you know Ubuntu himself? 13:33:43 I'm impressed! 13:35:18 Hehe, cute :D 13:36:08 Wait 13:36:16 why did I order Ubuntu 7.10 13:36:23 I wanted Kubuntu :( :( 13:36:25 oh well 13:36:30 I already have ubuntu 13:36:33 but hey 13:36:42 I got stickers though, on the plus side :D 13:37:35 how do you check someones time, Slereah? 13:37:45 you did it earlier 13:38:24 "/time" just gives me the server's time ... 13:39:52 Well, right-click on the name, CTCP, time 13:39:52 At least on mIRC 13:40:13 /ctcp ... TIME possibly 13:40:37 hm nah 13:40:40 yep 13:40:44 unknown command for me 13:40:53 bets I get is "/time" 13:40:57 *best 13:41:09 you don't have /ctcp ? 13:41:17 nope, not in pidgin 13:41:25 hm 13:41:26 Unknown command. 13:41:52 can you insert ^A control chars in your messages? 13:42:14 not sure what that means 13:42:19 ^A 13:42:30 amm.... that didn't work 13:42:32 ascii code 1 13:42:42 aha, let me see 13:42:50 nope, no ASCII code's allowed for me 13:42:52 although your client did not respond to my /ctcp time ... 13:43:57 can you at least do /me commands? not that it helps with this 13:44:10 * Hiato thinks he can 13:44:15 ah 13:44:39 what happens if you press ctrl-V ctrl-A ? 13:45:03 as in paste, select all? 13:45:09 * oerjan tests 13:45:19 did that come out as an action? 13:45:28 (3:45:32 PM) ***oerjan tests 13:46:06 well if it actually does paste and select all then it's not what i mean 13:46:23 yep, well that's what happens ;) 13:46:25 in my client ^V^A inserts a ^A control 13:46:42 nope, sorry, which client are you using? 13:46:47 irssi 13:46:50 terminal based 13:46:54 (Pidgin is kinda incomplete) 13:46:58 oh, I see 13:47:02 hrmm 13:47:13 maybe I should move to miranda or something 13:47:16 meh, effort 13:47:38 if you could insert ^A characters then you could /msg someone ^ATIME^A 13:47:42 because I need Gtalk + MSN + IRC 13:47:59 although possibly you would not see the response 13:48:18 hrmm, did you get something? 13:48:28 not from you 13:48:33 ok, well 13:48:38 but Slereah's client responded 13:48:40 I tryd /msg oerjan TIME 13:48:47 ok well 13:48:55 I'll get Miranda now 13:48:55 no i did not see that but i don't think i'm supposed to 13:49:06 oh wait 13:49:09 oh, well I didn't see anything either 13:49:20 without ctrl chars? 13:49:25 well, yes 13:49:33 you are not registered 13:49:42 registered in what 13:49:50 only registered nicks can send private messages on freenode 13:50:06 aha, well, I can send them to myself 13:50:11 do I need to register? 13:50:16 rather should I? 13:50:48 it has advantages 13:50:57 does it cost? 13:51:07 sending private messages, keeping others from using your nick 13:51:10 no 13:51:18 cool, then I'll register 13:51:23 it's an automated thing 13:51:30 I see 13:51:55 how do I initiate it? 13:51:59 although if your client is primitive you may have to send the password manually when you log on 13:52:10 blah 13:52:14 well, miranda is way better 13:52:19 you send messages to nickserv 13:52:37 start with help i guess 13:52:42 ok, sure 13:52:52 oh, and check the freenode webpage perhaps 13:53:11 it has some tips on this 13:53:11 roger 13:53:21 well, im gonna log out, and come back in ith miranda 13:53:25 cheers 13:53:26 rather brb 13:53:28 -!- Hiato has left (?). 13:58:26 -!- Hiato has joined. 13:58:32 Im back 13:58:34 I think 13:58:36 :) 13:58:48 Is it awesome now? 13:58:59 Well, Miranda is way Cooler :D 13:59:14 /time 13:59:18 \time 13:59:26 Meh, I cant do either now 13:59:28 |time 13:59:31 _time 13:59:34 -time 13:59:36 * Hiato ponders if /me will work 13:59:40