01:14:54 -!- Razor-X has quit (Remote closed the connection). 01:23:25 -!- Razor-X has joined. 01:32:06 -!- GregorR-L has quit ("Leaving"). 01:53:22 what's the IP address of esolangs.org? 01:53:41 after the move 01:56:34 ** Ping ** ping ** esolangs.org PING esolangs.org.org (209.86.66.93) 56(84) bytes of data. 01:56:45 Does that answer your question? 01:58:23 yep, because if I pinged it, it said: 01:58:28 ping esolangs.org 01:58:28 ping: unknown host esolangs.org 01:58:43 M-x ping 01:58:46 Gotta love Emacs. 01:59:20 hehe 01:59:23 do you use ERC? 01:59:31 the IP brings me to a spammy earthlink site though 01:59:58 I hate how earthlink does that 01:59:58 -!- wooby has joined. 02:00:11 I want real dns, damnit! 02:00:24 :( 02:00:37 I think that my DNS server is confused about esolangs.org somehow 02:01:38 can anyone of you access the wiki? 02:04:14 Yeah, I do bsmntbombdood. 02:07:06 Although, recently RCIRC has been getting the news articles. 02:09:19 Maelzel, who bade me pleasant weather the eyelids were it will be sure trader, I believed from tree stood a man whipped syllable! 02:12:49 How fairy-like hue of the danger of a thousand years, upon the moral soul has nothing. We may be impels us, and after our depth. There is the first. 02:13:17 this is fun 02:13:27 what is it 02:13:32 texts from spam mails? :D 02:13:40 nope 02:14:02 source code? 02:14:03 37,000 lines of edgar allen poe ran through a markov chain based text generation algorithm 02:14:15 aha 02:14:58 From the House of the lips resumed the lonely went boldly out 02:15:40 The house of lips! 02:15:59 hehe, I'm sure that spam mail generators use a similar algorithm 02:18:18 this is awsome 02:19:08 You can generate some crazy words 02:19:27 som Frof luessan thaut, asperach thand undclifich terslike 02:20:51 woureattledia! Uponed enegen se no in theas shruce 02:22:40 oard perfect factsrisk assessment mapstate, by state datauseful? 02:24:13 I need some other author to do it with 02:25:27 -!- pikhq has joined. 02:31:43 * pikhq lives again. 02:32:34 If you are interested, the code is at http://bsmntbombdood.mooo.com/markov.lisp 02:59:04 * SimonRC does evil things to "pointsfree". 02:59:14 I gave it \a:b:c:d:e:f:z->f:e:d:c:b:a:z 02:59:51 * pikhq has made the optimizer in BFM much smarter, and is in the middle of a rewrite into several passes (for clarity purposes). 03:00:17 Aardwolf: you're right it's not working 03:00:24 Aardwolf: you can get to the wiki from here though: http://esoteric.voxelperfect.net/ 03:58:41 I've decided to play around with Common Lisp, but I wonder what makes it so ``Lisp-y'' if it uses iterative loops. 04:00:07 Scheme has iterative looping constructs doesn't it? 04:00:17 Yeah it does, but it's considered bad Scheme style. 04:00:28 And if you need anything more crazy than that, you just use call/cc. 04:00:48 Someone in #lisp told me to rewrite a recursive function iteratively 04:01:02 I can do both fairly well. 04:01:39 There are some applications where recursion is simply an easier way to code. An infix expression parser is one of those. 04:01:49 indeed 04:02:06 The LOOP macro is extremely unlispy 04:02:16 I remember LOOP scaring me. 04:02:22 Because it was so much to memorize. 04:02:38 (loop for i from 0 to (- (length seq) len) by len collecting (subseq seq i (+ i len))) 04:03:06 I'm scared shitless. 04:03:12 One of the main reasons DO is not used in Scheme very often is because the syntax is longer to remember than tail recursion. Of course, tail recursion pays the price of computing effeciency until you learn the streams abstraction. 04:03:33 streams abstraction? 04:03:34 There's a whole LOOP sublanguage. Like the DEFMACRO sublanguage. 04:03:43 bsmntbombdood: ... You haven't read SICP?! 04:03:47 DEFMACRO doesn't have a sublanguage 04:03:49 The essence of common lisp lies not in being functional, because it often isn't, but in it's macros. 04:04:09 DEFMACRO is not hygenic Common Lisp. 04:04:22 s/it's/its/ 04:04:25 Which is why Scheme SYNTAX-CASE macros are specifically called ``hygenic macros''. 04:04:34 DEFMACRO is the only way to do some stuff 04:04:39 Non-functional stuff 04:04:53 GENSYMs were annoying. I remember that much too. 04:05:04 Nope, what's SICP? 04:05:09 * Razor-X dies. 04:05:19 One of THE best treatises on computer science EVER. 04:05:30 Structure and Interpretation of Computer Programs. 04:05:59 meh 04:06:51 (defmacro queue-push (item place) `(setf ,place (append ,place (list ,item)))) 04:06:52 I can't see why there isn't something in between Common Lisp and Scheme. Something hygenic, but also having machine-like capabilities. 04:07:01 You can't write that as a function 04:07:38 Why? Can't Common Lisp functions produce other functions? 04:07:54 Yes... 04:08:36 Why would that make a difference? 04:09:34 (define (queue-push item place) (define (queue-push* item place) `(set! ,place (append ,place (list ,item)))) (eval (queue-push* item place) )) 04:10:08 common lisp doesn't have define, but ok 04:10:11 A subfunction generates the new function, and then the outer function evaluates it. Simple. 04:10:27 Well, DEFINE here is being used in the same way as DEFUN, no? 04:10:32 yeah 04:11:03 But that still doesn't work 04:11:09 Why not? 04:11:17 (common) lisp doesn't have pass by reference 04:11:38 Errr.... ? 04:12:15 Well, it does 04:12:33 I'm not quite seeing what pass by reference and pass by value have anything to do here. 04:12:47 I suspect this is some difference in the way procedures are handled. 04:12:49 Sounds like someone's brain is borken. 04:13:04 For a function to modify its args, you need pass by reference 04:13:05 Meh. 04:13:18 But, how does it matter? I'm generating a new function? 04:13:38 QUEUE-PUSH* returns a new function, which is then EVALed. 04:14:04 Which is the whole point of DEFMACRO 04:14:18 Oh... you can't do that in your average DEFUN ? 04:14:57 DEFMACRO does what you did for you 04:14:58 sorta 04:15:05 Meh. 04:15:39 (defmacro queue-push (item place) `(setf ,place (append ,place (list ,item)))) 04:16:06 (defun queue-push (item place) `(setf ,place (append ,place (list ,item)))) 04:16:20 er, (defun queue-push-f (item place) `(setf ,place (append ,place (list ,item)))) 04:16:32 The DEFUN definition should just produce a procedure, no? 04:16:52 (queue-push ...) === (eval (queue-push-f ...)) 04:16:53 Or a closure... I think the Common Lisp term was. 04:17:17 yeah 04:18:38 But I only barely know cl, so I might be leading you off track 04:19:31 (defun my-cons* (arg) `(cons ,arg '())) (defun my-cons (arg) (eval (my-cons* arg))) 04:19:33 What bsmntbombdood is saying is true seems absolutely unLispy to me. . . 04:19:39 (my-cons 5) => (5) 04:19:54 So it seems you don't need DEFMACRO. 04:20:02 no 04:20:22 You can't modify arg in MY-CONS 04:20:34 Err, I'm not modifying any arg.... 04:20:39 And try that in your REPL too. It works. 04:21:44 yeah 04:22:47 I know in Scheme the only reason I'd use a macro was if some piece of code kept repeating itself over and over again, or I was in this sort of a position, where it's technically better Lisp-style to use a macro to generate the code instead of having a helper procedure produce a procedure that is evaluated by the outer procedure. 04:22:50 But (defun my-cons (arg) (cons arg nil)) works just as well 04:23:48 (defun foo (arg) (setf arg 1)) doesn't modify arg outside of foo 04:23:56 (and can't)\ 04:25:01 Oh oh. I see. 04:25:13 So, you're talking about modifying a top-level definition? 04:25:20 yeah 04:25:33 Like, in Scheme, (define alpha 5) (define (test) (set! alpha 3)) ? 04:25:57 I don't know, what does that do? 04:25:59 Maybe the first DEFINE usage becomes DEFPARAMETER in Common Lisp. I can't remember the difference between DEFPARAMETER and DEFVAR. 04:26:27 defparameter changes the value of the variable if it is already defined 04:26:35 Ah-hah. 04:26:41 So then the first DEFINE would be a DEFVAR. 04:27:03 And I believe that SET! would become SETQ, but I'm not sure on that. 04:27:20 yeah 04:27:25 I think 04:27:51 The R5RS standard is really tiny. Even the draft for R6RS is pretty small too. It's fairly simple to memorize everything in it. 04:28:27 Common Lisp seems appealing because of its support for such things as variable types and endian-ness and good binary file support and such. Just seems more robust. 04:29:22 I think that Scheme is more pure, and cl is more usefull (outside of the educational world) 04:29:41 Yeah. Scheme manipulating binary files becomes a bit cumbersome. 04:30:50 I was looking at some code to read a file, it is very unlispy 04:30:53 In Chicken, you'd end up creating your own mini OOP system (unless you want to use something that already exists like TinyCLOS, but I hate them all) to represent the byte structure of the file and other abstractions for binary data slots. 04:31:34 And even in R6RS there's nothing like bit shifting and stuff. The closest thing they have to the architecture in the R6RS draft is endian-ness. 04:32:19 I love Lisps :3 04:32:25 heh 04:33:08 Oh, have you read the post that started StumpWM? 04:33:14 no 04:33:31 It's funny. It's part of the coding-Lisp-under-acid ethos. 04:34:12 I love my window manager 04:34:33 I used Ratpoison, so I'd love to see StumpWM become a tour de force. 04:34:46 s/used/use/ 04:34:51 * bsmntbombdood uses ion 04:34:59 Ion's too complicated for me, heh. 04:35:08 Too many dadgummed keys to remember. 04:35:50 I go out of ion style and use the mouse for some stuff 04:36:17 The mouse is useless in ratpoison. 04:36:34 yeah 04:36:57 I, frankly, don't like reaching the 30 cm over to my trackball. 04:37:03 It's too far. 04:40:10 Even though I'd get dreadfully flamed out in both #scheme and #lisp for saying this, I think both of the lisps are drifting towards each other. R6RS really shows the burden of having such a minimal standard on Scheme, and I think CL is also beginning to adopt a more ``clean abstraction'' style. 04:42:15 I'm having a Paul Graham moment :P 04:42:59 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 04:43:05 never heard of him 04:43:10 O_O 04:43:23 You're... learning CL.... without hearing about Paul Graham?!?!?! 04:43:30 * Razor-X oggles. 04:43:38 I guess I should look him up 04:43:49 He is *the* foremost Lisp elitist out there. 04:44:26 He and Chuck Moore are singular to their dedication to their paradigms of choice, and have written hopeless amounts of propoganda for their respective paradigms. 04:44:46 (And then there's Jeff Fox, who sounds like Moore Came To Him in a Revelation and was Saved by Moore.) 04:45:42 If Graham were writing for Stalin instead of for Lisp, the people would be whooping and cheering in love for The Party. 04:47:35 -!- pikhq has joined. 04:49:34 It's crazy how old lisp is 04:52:32 this is cool: http://www.levenez.com/lang/history.html#04 05:03:49 Yeah, it is. 05:03:56 I can't even understand how other languages got traction. 05:04:16 Well, I can understand C, but I would see the word as: Low-level: C, High-level: Lisp. 05:05:16 I can understand C++ gaining traction, by merit of being C-oid. . . 05:05:38 Although what it's been abused for is rather surprising. 05:05:56 I can't imagine C++ getting traction. Why, how, what drove these mad people?! 05:06:21 g++ after being worked on for years by hundreds of developers is only slightly stronger than GHC, OCaML, and clisp. 05:06:40 And it even loses in certain tests. 05:06:41 Getting away from the restrictions of C while still being C. 05:06:52 I call that C and a monkey's bastard child. 05:07:17 Yeah, that's my respect for C++. 05:07:31 I can understand it getting traction simply because there are people mad enough to think its the world's greatest language. 05:07:59 But someone would have to commit the original folly before the university hordes begin being indoctrinated in it. 05:08:25 I feel how the old C++ites feel with Java now. They must feel like leftovers from the Last Crusade. 05:08:41 s/feel how/wonder how/ 05:26:08 * SimonRC goes to bed 05:28:23 -!- Sgeo has quit (Remote closed the connection). 05:37:47 -!- anonfunc has joined. 05:52:19 Ok, what came after lisp? 05:52:21 COBOL 05:52:37 Now, people like cobol for it's englishness 05:53:18 Now, I don't know where I'm going with this 05:54:02 People *hate* Cobol for it's Englishness, actually. XD 05:54:27 Well then how did it catch on? 05:54:44 Managers, unlike human beings, like Cobol for that trait. 05:55:01 That needs to be quoted :P 05:55:10 And managers controll what language there subordinates use 05:55:41 Rather than having books on Scheme or Haskell or even Forth in the miscellaneous languages section of our local Borders, you have Common Lisp and COBOL. 05:55:48 And FORTRAN. 05:55:52 -!- twobitsprite has joined. 05:56:12 is there a channel for the Joy language anywhere? (I figured you guys would know) 05:56:21 Classifying Lisp and COBOL together is like classifying Life and Death together. 05:56:28 or... is there at least anyone on here that knows anything about Joy? 05:56:29 twobitsprite: If it's an esolang, this'd be it. :p 05:56:41 Razor-X: ? 05:56:47 As you just saw twobitsprite, nope. 05:56:55 I don't know if Joy is intended to be an esolang 05:56:57 On the channels business. 05:57:05 Razor-X: yeah... 05:57:06 A link to Joy please? 05:57:16 http://en.wikipedia.org/wiki/Joy_programming_language 05:57:22 ありがとう。 05:57:28 it looks like it's mostly in early developement... 05:58:17 Oh, so that's where I remember it from... 05:58:26 You'll be getting the most support from #forth. 05:58:36 that's what I was thinking 05:59:02 Functionality and stack usage scare me. 05:59:05 interesting 05:59:29 why? 05:59:31 They're paradigms which I see as almost entirely mutually exclusive (unless you implement a stack in a functional language, which is something different altogether). 06:00:08 Razor-X: joy seems to be doing alright... 06:00:10 I think you can functionally program in forth 06:00:19 You can, but it's not a preferred way. 06:00:24 Now, that's just me, of course. 06:00:35 Razor-X: Yay! Unicode works here for once! 06:00:36 I can't imagine recursion very well with a dedicated stack. 06:00:48 forth has recursion 06:00:55 Tail recursion, rather. 06:01:17 factor has full tail-call optimization 06:01:17 It has tail recursion (by way of RECURSE), but it's not used very often. 06:01:31 For a second there, I was thinking that it was "Ari ga tou", though. . . XD. 06:01:38 ... ;D 06:01:50 The and is truth? 06:01:54 *ant 06:02:39 Of course, If Factor and its like do fly, I'd love to pursue it, but IMO I don't think I can cope well with the paradigm. 06:02:55 Kinda like how I'm not that good with OOP paradigms. 06:03:48 OOP is great 06:04:27 It suffers from "when all you have is a hammer, everything starts looking like a nail", though. 06:04:39 I'm not saying it works for everything 06:05:09 Not saying you did. I'm just saying that OOP suffers from that problem. 06:06:10 yeah... it's easy to think to yourself "but everything /is/ an object" until you get into strange constructs which would only occur in a program which are not easily stuffed into an object 06:08:17 "but everything /is/ a function". ;) 06:09:38 Everything is *not* an object. 06:09:58 It is in java 06:10:07 Meh. That's true. 06:10:28 Objects, in my experience, are only useful for situations in which you need differing state per instance of object and assosciated functions to this instance that manipulate local state. 06:10:47 I've never actually thought of programming in terms of manipulating objects. 06:11:00 hm 06:11:05 but the problem is, proceedures (which is what any program is in a language like Java, etc, that fact is just disguised from you) to not easily (or, at least not obviously) break down in to categorical heirarchies 06:11:24 Yes. 06:11:37 I also hate the fact about OOP in that, what should belong to the superclass, what to the subclass, etc. 06:11:45 Even though the decision is at best aesthetic. 06:11:45 A quicksort is not an object 06:12:02 But a quicksort can be a method 06:12:06 on a lits 06:12:08 list 06:12:25 twobitsprite: it should be a method contained by an object that manages related types of methods 06:12:36 Yeah, I can understand Lisp's everything-is-a-procedure methodology pretty well. 06:12:54 Obviously there are places where it's cumbersome. 06:13:12 I doubt that most people define constants using Church Numerals in their Scheme programs. 06:13:20 bsmntbombdood: I understand this... bad analogy really... there are however proceedures which can be applied to "objects" (data structures, really) which do not all belong to some superclass... 06:13:30 Yeah 06:13:58 OOP doesn't necessarily mean "everything is an object", it means you use objects to categorize and organize your code logically and modularly. Modularity is the main advantage, really. 06:14:05 To think that everything in the world can be boiled down into some top-down heirarchy is just silly 06:14:12 true, true 06:14:13 bsmntbombdood: What'd be better is a generic quicksort function which applies to many datatypes. 06:14:44 My two best paradigms are either on the byte level, where I can think of things as simply bytes and structures pointing to positions of bytes, or the functional methodology. 06:14:59 Of course, OOP is invaluable in certain situations as well. 06:15:01 * pikhq likes the Brainfuck paradigm. :p 06:15:04 but every language effectively imposes it's own design philosophy on how you do things, and the related limitations or caveats 06:15:16 I've been doing too much on BFM lately. 06:15:33 I'm spread between 2 projects, and am about to tackle on a third. 06:15:43 (optimization is approaching perfection, and BFM is being split into multiple passes of compilation for clarity's sake) 06:15:47 that's why everyone should learn many different languages with different paradigms- and that's what Esoteric Programming is all about 06:15:55 Yup. 06:16:13 An ID3v2 parser/creator, and SLUMTP. I'll be attempting to create a port of jMemorize soon enough. 06:16:42 RodgerTheGreat: right, of course... I'm mostly ranting on about how the IT industry likes to think that OOP is god's gift to software 06:17:19 yeah 06:17:22 I understand 06:17:39 In reality, if you designed your program well enough in the abstract from the beginning, it really doesn't matter what language you use to implement it, it's all simply a matter of taste and style 06:17:45 Personally, I like Java, but it's not the best tool for everything. 06:17:57 * twobitsprite personally despises java 06:17:59 Language choice should reflect the task at hand 06:18:01 dispises* 06:18:05 No RodgerTheGreat has the right of it. Each language has its own biases. 06:18:12 twobitsprite: If you designed your program that well in the beginning, you're not in the real world. 06:18:30 One should attempt to use a language which is biased in favor of what you need from it. 06:18:33 Lisps have the capability to be tuned to your program domain, but that tuning requires thinking Lispily. 06:18:56 pikhq: of course, no design is perfect, and knowing the nuances of your chosen language will effect your design, but for the most part and language, so long as it is turing complete, will do 06:19:22 s/and/any 06:19:39 twobitsprite: That goes without saying. 06:20:10 (if you are worthy of the title "programmer", that is) 06:20:28 I think the most useful thing I learned from LISP is the related design philosophy- code everything assuming the rest of your program works. 06:20:47 it's mostly a matter of which language provides the most features which will save you typing and save you from focusing on to many inane details 06:21:18 I'd agree with that 06:23:02 I've been playing with LUA lately- I really like the design of the language. It embodies a number of the things I liked about BASIC. 06:23:30 without all of the business these days of "making BASIC a *real* language" 06:28:04 * pikhq notes that the next Gnash version is due "any day now". . . 06:29:02 Which should, in theory, support all of Flash v7 and parts of v8. . . 06:29:21 The version supporting all of v9 is targeted for this summer. :) 06:31:01 hmm 06:43:18 -!- Robdgreat has joined. 06:43:30 * RodgerTheGreat coughs 06:46:41 Thief. 06:50:28 -!- pikhq has quit ("leaving"). 07:00:19 eh. 07:06:23 * twobitsprite sharpens his tension knife 07:07:08 hah. wit. 07:07:30 * twobitsprite tries. 07:07:34 -!- sreeram has joined. 07:07:56 * Robdgreat shrugs. 07:08:14 I've only been using this nick for 10 years. But I can change just for you. 07:08:16 -!- Robdgreat has changed nick to Asaph. 07:08:40 eh? 07:09:30 I entered and was greeted with a cough and "Thief." 07:09:58 eh, screw it. 07:09:59 ahh... is this about the similarity of nicks between you and RodgerTheGreat? lol... 07:10:23 * RodgerTheGreat shrugs 07:10:25 I suppose. 07:10:47 no worries 07:10:51 have a good night 07:10:56 -!- ivan` has quit (" Try HydraIRC -> http://www.hydrairc.com <-"). 07:10:58 -!- Asaph has quit ("Error 1606. Press any key to continue."). 07:11:07 that was odd 07:11:31 Error 666. Just too damn evil. 07:16:11 lol 07:32:00 -!- twobitsprite has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:02:40 -!- sreeram has left (?). 08:05:03 RodgerTheGreat: Oh? You've never programmed top-down before? 08:05:20 I do it quite routinely. 08:05:40 If x, do complex-y else complex-z. And then I later code complex-y and complex-z. 08:05:57 I am a bit biased to top-down planning myself, because it suits my on-the-spot thinking style more. 08:13:21 my tendency was building from the bottom-up, but I've found myself using top-down more for homework and such in my CS classes 08:13:46 if I run into a problem, I can keep making progress toward completing the assignment, rather than just being stumped 08:14:47 well, g'night everyone. 08:15:21 goodnight 09:09:35 -!- anonfunc has quit (brown.freenode.net irc.freenode.net). 09:09:35 -!- Razor-X has quit (brown.freenode.net irc.freenode.net). 09:09:36 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 09:09:36 -!- pgimeno has quit (brown.freenode.net irc.freenode.net). 09:09:39 -!- puzzlet has quit (brown.freenode.net irc.freenode.net). 09:09:39 -!- sp3tt has quit (brown.freenode.net irc.freenode.net). 09:09:39 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 09:09:39 -!- lindi- has quit (brown.freenode.net irc.freenode.net). 09:09:40 -!- wooby has quit (brown.freenode.net irc.freenode.net). 09:09:40 -!- Aardwolf has quit (brown.freenode.net irc.freenode.net). 09:09:40 -!- SevenInchBread has quit (brown.freenode.net irc.freenode.net). 09:09:40 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 09:09:42 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 09:09:43 -!- lament has quit (brown.freenode.net irc.freenode.net). 09:09:43 -!- SimonRC has quit (brown.freenode.net irc.freenode.net). 09:09:44 -!- mtve has quit (brown.freenode.net irc.freenode.net). 09:09:44 -!- meatmanek has quit (brown.freenode.net irc.freenode.net). 09:11:33 -!- anonfunc has joined. 09:11:33 -!- wooby has joined. 09:11:33 -!- Razor-X has joined. 09:11:33 -!- Aardwolf has joined. 09:11:33 -!- SevenInchBread has joined. 09:11:33 -!- RodgerTheGreat has joined. 09:11:33 -!- pgimeno has joined. 09:11:33 -!- puzzlet has joined. 09:11:33 -!- SimonRC has joined. 09:11:33 -!- fizzie has joined. 09:11:33 -!- lindi- has joined. 09:11:33 -!- sp3tt has joined. 09:11:33 -!- bsmntbombdood has joined. 09:11:33 -!- lament has joined. 09:11:33 -!- GregorR has joined. 09:11:33 -!- meatmanek has joined. 09:11:33 -!- mtve has joined. 09:54:36 wooby, thanks for the link 09:54:57 Aardwolf: no problem 09:55:08 i emailed graue, i thought it might have been a dns problem 09:55:16 apparently the server randomly stops working 10:16:08 Deltaplex is done 10:20:02 * wooby investigates 10:22:41 ha that's awesome 10:23:51 I just hope someone will have the courage to make something in it, because it's so annoying to code in pixels 10:29:19 heh 10:29:24 perhaps an IDE is in order? 10:36:56 hah maybe :D 10:37:41 hehe 10:38:06 are you familiar with mondrian, the artist? 10:38:27 he's the dutch guy that did the paintings that are multicolor blocks with black lines 10:40:34 yep, I know both him and the Piet programming language 11:00:24 right 11:00:36 well i was researching his stuff 11:00:44 and did some preliminary research into 11:00:49 a mondrian encoding scheme 11:00:57 IE the most efficient way to store his original works 11:01:55 and hm, its just kinda interesting :) 11:52:28 -!- jix has joined. 11:54:12 -!- sedimin has joined. 11:54:16 hi there 12:18:06 hi 12:24:24 -!- SevenInchBread has quit ("haaaaaaaaaa"). 12:24:49 howdy? 12:34:53 sup 12:35:25 I have posted idea for new language 12:35:34 http://esoteric.voxelperfect.net/wiki/Stalactite 12:44:06 -!- anonfunc has quit. 12:47:06 checking... 12:57:04 -!- wooby has quit. 13:03:17 always nice if an esolang comes out of a dream ;) 13:04:44 hehe 13:04:58 this happened to me for the first time 13:05:22 but I don't think it happens usually, that would be quite crazy :) 13:34:49 -!- sedimin1958 has joined. 13:50:54 -!- sedimin has quit (Read error: 110 (Connection timed out)). 14:25:22 -!- jix_ has joined. 14:30:19 -!- jix has quit (Read error: 110 (Connection timed out)). 15:01:06 -!- sedimin1958 has quit (Read error: 110 (Connection timed out)). 15:06:23 -!- tgwizard has joined. 15:57:54 -!- cmeme has joined. 15:58:24 -!- cmeme has quit (Remote closed the connection). 15:58:55 -!- cmeme has joined. 16:02:28 -!- cmeme has quit (Read error: 131 (Connection reset by peer)). 16:02:33 -!- cmeme has joined. 16:03:02 -!- cmeme has quit (Remote closed the connection). 16:03:34 -!- cmeme has joined. 16:24:29 -!- SevenInchBread has joined. 16:41:08 -!- Sgeo has joined. 17:24:01 -!- SevenInchBread has quit (Connection reset by peer). 17:24:59 -!- SevenInchBread has joined. 17:26:15 I'm reading over LOOP. Why would anyone want to use LOOP instead of DO? 17:26:39 It stinks much too much of COBOL to me. 17:29:30 -!- pikhq has joined. 17:31:03 My bfm.tcl rewrite is now partially working. 17:32:31 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)). 17:33:22 -!- SevenInchBread has joined. 17:33:35 -!- SevenInchBread has quit (Connection reset by peer). 17:34:25 -!- SevenInchBread has joined. 17:35:26 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)). 17:36:20 -!- SevenInchBread has joined. 17:37:02 * pikhq ties SevenInchBread to the Freenode server 17:40:18 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)). 17:41:10 -!- SevenInchBread has joined. 17:50:53 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)). 17:51:46 -!- SevenInchBread has joined. 17:55:31 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)). 17:56:24 -!- SevenInchBread has joined. 17:59:10 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)). 18:00:03 -!- SevenInchBread has joined. 18:15:59 -!- SevenInchBread has quit ("haaaaaaaaaa"). 18:18:48 -!- CakeProphet has joined. 18:19:49 -!- CakeProphet has left (?). 18:19:55 -!- CakeProphet has joined. 18:27:47 -!- calamari has joined. 18:29:08 'Lo. 18:29:21 hi 18:29:34 med 18:46:03 dadadaDOM!# 18:48:07 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 18:48:23 howdy, everyone. 18:48:44 -!- pikhq has joined. 19:08:22 * SimonRC refers people to the famous story about Qc Na. 19:08:55 I believe that is the definitive opinion on OO versus non-OO. 19:09:35 Care to refer to it? 19:09:41 GIYF 19:16:19 RodgerTheGreat: Surely the problem with top-down programming is when you try to split the problem up in ways it won't split. This complements the problem of bottom-up programming, which is writing a load of pieces of elegant code that each do a simple, well-defined task, but none of whic approach solving your actual problem. 19:16:36 yes 19:18:47 the only real solution is rigorously designing the interactions of portions of your code beforehand. Of course, building from the bottom up without such a previously defined design generally creates re-useable code even when not all of it ends up being necessary 19:21:01 yup 19:21:46 Although you may end up with a library of functions that are all very nice but not used much 19:22:32 As with all other things, the solution involves someone with a modicum of grey matter. . . 19:23:23 heh 19:24:34 ESR advocates a style he calls "midle-out programming" where you write the bit sof code that actually *do* stuff, and gradually move the nice setup, teardown, do-multiple-things, etc into layers above, and move the low-level details into layesr below. 19:25:44 I do however advocate trying to decide all the functions/methods you are going to write in you head first. 19:25:55 s/however // 19:26:33 You will end up missing a lot of them, but that doesn;t matter too much as you will have *thought* about the problem. 19:29:15 the best way to start coding any moderately sized application is by sitting down and thinking about it for a while. 19:31:57 The worst way, of course, is to just start throwing shit together. . . 19:32:10 indeed 19:33:11 (Pre-rewrite BFM started showing some of those issues. . . Largely because the language evolved faster than the compiler0 19:44:26 * SimonRC lols at the Visitor Pattern. 19:44:54 AFAICT, it's just the map operation. 19:45:10 * pikhq is still crazy enough to think BFM is a good idea. XD 19:46:11 Do you have the translator source online? 19:46:17 s/translator // 19:46:33 I've got a very outdated source up. 19:47:27 I'm trying to finish my multi-pass rewrite, make the optimizing pass a bit nicer, and add an "expr" command to be called from whilet and ift. . . 19:47:58 So, if I bother working on it today, I should have a modern BFM release up. . . Tomorrow? 19:49:30 (for the record: ift and whilet, with expr, should allow for traditional "if {foo==0}" statements) 19:51:02 ok 19:51:52 Well, to be fair, it'd be "if var {expr var==0} {code-here} : temp0 temp1". 19:52:04 s/if/ift/ 20:05:07 Why are we not working on the Factory language? 20:05:24 Because it's horrible. 20:05:29 Absolutely horrible. 20:05:38 I'm still getting nightmares from it. 20:10:27 Hmm... Paul Graham is making an interesting point here: http://paulgraham.com/gap.html 20:11:10 Though the monetary gap between rich and poor (within a developed country) is very wide, it doesn't matter much. 20:12:49 If a rich man can spend 10,000 time as much on something as a non-rich one, it doesn't get him a suit that looks 10,000 times as good, or a journey 10,000th or the duration, or a computer 10,000 times as easy to use. 20:13:18 As PG puts it: "If Lenin walked around the offices of a company like Yahoo or Intel or Cisco, he'd think communism had won. Everyone would be wearing the same clothes, have the same kind of office (or rather, cubicle) with the same furnishings, and address one another by their first names instead of by honorifics. Everything would seem exactly as he'd predicted, until he looked at their bank accounts. Oops." 20:14:33 Or until he saw the CEO. 20:15:26 hm 20:24:47 Heh 20:41:20 I tend to write my programs the same way I write my essays -- I make sure I'm familliar with my topic or problem domain, I formulate a rough sketch in my head of how the program will flow, I begin writing code according to this scaffolding, attempting to create sub-functions on demand unless I realize that it takes too long a time to do in my first ``pass'', and keep going until I run out of steam or I realize that most of my program is 20:41:20 using functions I haven't defined. 20:41:58 At that point, begin looking at the helper functions I've left undefined to identify common pieces of code and start making a library for those, and then I code these bottom-up. 20:42:32 So I use a weird combination of both methods. 20:44:37 I absolutely abhor precise planning. I just can't create anything if I've made a complete paper-pencil model of the program. It turns to uncreative mush. 20:45:07 I end up making a rough little sketch of what needs to be done. . . 20:46:31 if I had 10,000 times as much money, I'd know how to use it, you still can buy a 100x more expensive house and stuff 20:46:33 * Razor-X refers pikhq to the Unicode elipsis. 20:46:43 Huh? 20:46:53 (in reply to SimonRC) 20:47:17 * pikhq doesn't care 20:57:27 -!- Arrogant has joined. 20:58:09 Razor-X: There is nothing to say that you can't do the first stages of that process with PnP, or better, in your head. 21:01:55 SimonRC: Well, what I tend to have in my head is a rough idea, not something like an essay outline or a strict flowchart. 21:02:37 I'd say that's pretty much how I go about things 21:03:01 PnP? 21:03:19 Plug n Play? 21:03:31 Paper and Pencil, I assumed. 21:04:09 * RodgerTheGreat shrugs 22:27:51 yes, PnP = paper and pencil, (as in RPG systems) 22:28:07 * SimonRC finds some clever code to flatten a Scheme-style tree: 22:28:25 in Haskell, we would, of course have: 22:28:26 flatten (Cons Null r) = flatten r 22:28:29 oops 22:28:34 data SCM = Cons SCM SCM | Null | ... 22:29:16 you can apparently flatten in linear time and ocnstant space, lazily if you use the clever trick: 22:29:21 flatten (Cons (Cons l m) r) = flatten $ Cons l $ Cons m r 22:29:30 the rest just writes itself 22:29:49 I just read about pipes in lisp 22:29:53 very interesting 22:30:20 pipes? 22:30:48 a list of the form (1 2 3 . #) 22:30:53 (I got that trick from here: http://okmij.org/ftp/Scheme/misc.html#lazy-flattener) 22:31:14 ah, nice 22:31:34 Kinda like python generators 22:32:59 In Haskell you get those for free 22:33:02 :-) 22:33:11 heh yeah 22:37:32 Similar to a stream. 22:38:35 (stream-list 1 2 3) => (1 . (delay (2 3))) 22:38:44 It's the same thing as lazy evaluation. 22:38:50 yeah 22:41:02 (define (interval x y) (if (< x y) (list x (delay (interval (+ x 1) y))) '())) 22:41:38 That way, the Scheme interpreter only interprets as many list items as neccessary to complete an operation. 22:41:48 There's your effecient tail recursion. 23:05:56 -!- ivan` has joined. 23:17:13 -!- oerjan has joined. 23:21:50 -!- anonfunc has joined. 23:31:26 while i understood the meaning of GIYF when simonRC used it, my translation was considerably less polite than the official one. 23:34:21 which, apparently, wikipedia already has noted 23:39:43 'Lo, oerjan. 23:39:57 hi pikhq 23:40:11 * pikhq contemplates discussing his recent changes to BFM, for the benefit of oerjan. 23:40:22 * oerjan runs away screaming 23:40:27 just kidding 23:41:10 First change, which I've discussed previously, is the C string support. 23:41:34 Secondly, if one doesn't specify a location to @, it assigns one. 23:41:50 Third, optimization is smarter. 23:41:56 fun 23:42:22 Finally, I've *almost* finished a rewrite of the compiler, splitting it into multiple passes for clarity's sake. 23:42:23 i've noticed all except the third before 23:42:33 and fourth 23:43:19 how is optimization smarter? 23:44:01 Remember your suggestion for having a cleared-cell stack? 23:44:12 yes 23:44:17 Implemented. 23:45:03 Also, I've got calls to right and left not clearing out the cleared-cell stack unless an operation which changes memory is used while doing relative addressing. 23:45:23 So, string output doesn't affect the cleared-cell stack at all. 23:46:59 i see 23:47:24 i had some further ideas about declarations 23:48:02 Yeah? 23:48:11 basically, a keeps0 declaration 23:48:20 Which does? 23:49:51 it is used at the beginning of a while. it checks the value of the location before the loop and acts as is0 only if it actually was zero 23:50:29 Hmm. . . 23:50:52 So, something that'd be rather simple to add to the optimize pass. . . 23:51:46 and a "touches" declaration, with sort of the opposite meaning 23:52:24 An "isnot0" if it wasn't 0 at the end of the loop? 23:52:26 it would be a guarantee that those variables are the _only_ ones changed by the loop. useful to avoid some stack clearing 23:52:37 Oh. 23:52:42 I see. 23:53:10 You should write actual documentation so that people who don't know TCL can help out. 23:53:28 it could be combined with left/right and would be a way to avoid clearing everything in that case 23:53:35 Might require a little bit of redesigning in ::optimize. . . Oh well. This kind of thing is *why* I split it into multiple passess. 23:53:42 Razor-X: oerjan is one of those people. :p 23:53:56 oerjan: So uh... what ze heck is is0 ? 23:54:05 Is the cell 0? 23:54:18 What optimizations does the compiler perform? 23:54:18 a declaration that a cell is supposed to be 0 at that point of the program 23:54:24 It tells the compiler that the cell is 0, so that it can avoid cell-clearing. 23:54:37 Razor-X: Currently, it eliminates pointless cell-clearing. 23:54:40 Cell-clearing. Makes a lot of sense, seeing how much else I know of it :P 23:55:21 I've got plans to make it check if the cell is 1, 2, -1, or -2, so that it can make some cell-clearing shorter. 23:55:32 Why are you cell-clearing? 23:56:02 Some of the macros do cell-clears to make sure the temporary variables are safe to use. . . 23:56:13 cell-clearing is the first step of setting a brainfuck cell to a known value if it is unknown 23:56:21 Temporary variables was what I suspected. 23:56:50 Although why you would keep the BF array and temporary variables on the same contiguous chunk of memory I have no idea. I would use something like a stack. 23:57:03 Also common is, well, breaking out of a loop. 23:57:10 because it compiles _to_ brainfuck 23:57:21 Oh yah. 23:57:38 The temporary variables are passed as an argument to the macros. . . 23:58:05 But if the macros are clean, the temporary variables should leave no trace, no? 23:58:17 But the coder might *not* be clean. ;) 23:58:25 DIRTY, DIRTY CODER 23:58:32 It's a matter of severe paranoia. 23:58:48 Extra swaddling eh? 23:59:01 Very un-C-like. 23:59:08 no it is simply due to clean macros clearing both before and after use 23:59:11 That, and I'm not sure if *all* of the macros are clean, anyways. 23:59:21 Then why not use the Lisp philosophy of creating disparate namespaces for clean and unclean macros? 23:59:58 but the optimizer removes unnecessary cleanness