< 1165022094 0 :Razor-X!unknown@unknown.invalid QUIT :Remote closed the connection < 1165022605 0 :Razor-X!n=user@user-11faaoj.dsl.mindspring.com JOIN :#esoteric < 1165023126 0 :GregorR-L!unknown@unknown.invalid QUIT :"Leaving" < 1165024402 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :what's the IP address of esolangs.org? < 1165024421 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :after the move < 1165024594 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :** Ping ** ping ** esolangs.org PING esolangs.org.org (209.86.66.93) 56(84) bytes of data. < 1165024605 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Does that answer your question? < 1165024703 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :yep, because if I pinged it, it said: < 1165024708 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :ping esolangs.org < 1165024708 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :ping: unknown host esolangs.org < 1165024723 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :M-x ping < 1165024726 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Gotta love Emacs. < 1165024760 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1165024763 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :do you use ERC? < 1165024771 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :the IP brings me to a spammy earthlink site though < 1165024798 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I hate how earthlink does that < 1165024798 0 :wooby!n=alan@ny-lancastercadent4g1-3a-236.buf.adelphia.net JOIN :#esoteric < 1165024811 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I want real dns, damnit! < 1165024824 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1165024837 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :I think that my DNS server is confused about esolangs.org somehow < 1165024898 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :can anyone of you access the wiki? < 1165025054 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I do bsmntbombdood. < 1165025226 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Although, recently RCIRC has been getting the news articles. < 1165025359 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Maelzel, who bade me pleasant weather the eyelids were it will be sure trader, I believed from tree stood a man whipped syllable! < 1165025569 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165025597 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :this is fun < 1165025607 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :what is it < 1165025612 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :texts from spam mails? :D < 1165025620 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1165025642 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :source code? < 1165025643 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :37,000 lines of edgar allen poe ran through a markov chain based text generation algorithm < 1165025655 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :aha < 1165025698 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :From the House of the lips resumed the lonely went boldly out < 1165025740 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :The house of lips! < 1165025759 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :hehe, I'm sure that spam mail generators use a similar algorithm < 1165025898 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :this is awsome < 1165025948 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :You can generate some crazy words < 1165025967 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :som Frof luessan thaut, asperach thand undclifich terslike < 1165026051 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :woureattledia! Uponed enegen se no in theas shruce < 1165026160 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :oard perfect factsrisk assessment mapstate, by state datauseful? < 1165026253 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I need some other author to do it with < 1165026327 0 :pikhq!n=pikhq@24.55.113.24 JOIN :#esoteric < 1165026703 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION lives again. < 1165026754 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :If you are interested, the code is at http://bsmntbombdood.mooo.com/markov.lisp < 1165028344 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does evil things to "pointsfree". < 1165028354 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I gave it \a:b:c:d:e:f:z->f:e:d:c:b:a:z < 1165028391 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has made the optimizer in BFM much smarter, and is in the middle of a rewrite into several passes (for clarity purposes). < 1165028417 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :Aardwolf: you're right it's not working < 1165028424 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :Aardwolf: you can get to the wiki from here though: http://esoteric.voxelperfect.net/ < 1165031921 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I've decided to play around with Common Lisp, but I wonder what makes it so ``Lisp-y'' if it uses iterative loops. < 1165032007 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Scheme has iterative looping constructs doesn't it? < 1165032017 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah it does, but it's considered bad Scheme style. < 1165032028 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :And if you need anything more crazy than that, you just use call/cc. < 1165032048 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Someone in #lisp told me to rewrite a recursive function iteratively < 1165032062 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I can do both fairly well. < 1165032099 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :There are some applications where recursion is simply an easier way to code. An infix expression parser is one of those. < 1165032109 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1165032126 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :The LOOP macro is extremely unlispy < 1165032136 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I remember LOOP scaring me. < 1165032142 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Because it was so much to memorize. < 1165032158 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : (loop for i from 0 to (- (length seq) len) by len collecting (subseq seq i (+ i len))) < 1165032186 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'm scared shitless. < 1165032192 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165032213 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :streams abstraction? < 1165032214 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :There's a whole LOOP sublanguage. Like the DEFMACRO sublanguage. < 1165032223 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: ... You haven't read SICP?! < 1165032227 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :DEFMACRO doesn't have a sublanguage < 1165032229 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :The essence of common lisp lies not in being functional, because it often isn't, but in it's macros. < 1165032249 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :DEFMACRO is not hygenic Common Lisp. < 1165032262 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :s/it's/its/ < 1165032265 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Which is why Scheme SYNTAX-CASE macros are specifically called ``hygenic macros''. < 1165032274 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :DEFMACRO is the only way to do some stuff < 1165032279 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Non-functional stuff < 1165032293 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :GENSYMs were annoying. I remember that much too. < 1165032304 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Nope, what's SICP? < 1165032309 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :ACTION dies. < 1165032319 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :One of THE best treatises on computer science EVER. < 1165032330 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Structure and Interpretation of Computer Programs. < 1165032359 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1165032411 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(defmacro queue-push (item place) `(setf ,place (append ,place (list ,item)))) < 1165032412 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I can't see why there isn't something in between Common Lisp and Scheme. Something hygenic, but also having machine-like capabilities. < 1165032421 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :You can't write that as a function < 1165032458 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Why? Can't Common Lisp functions produce other functions? < 1165032474 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Yes... < 1165032516 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Why would that make a difference? < 1165032574 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :(define (queue-push item place) (define (queue-push* item place) `(set! ,place (append ,place (list ,item)))) (eval (queue-push* item place) )) < 1165032608 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :common lisp doesn't have define, but ok < 1165032611 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :A subfunction generates the new function, and then the outer function evaluates it. Simple. < 1165032627 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Well, DEFINE here is being used in the same way as DEFUN, no? < 1165032632 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165032663 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :But that still doesn't work < 1165032669 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Why not? < 1165032677 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(common) lisp doesn't have pass by reference < 1165032698 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Errr.... ? < 1165032735 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Well, it does < 1165032753 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I'm not quite seeing what pass by reference and pass by value have anything to do here. < 1165032767 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I suspect this is some difference in the way procedures are handled. < 1165032769 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sounds like someone's brain is borken. < 1165032784 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :For a function to modify its args, you need pass by reference < 1165032785 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Meh. < 1165032798 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :But, how does it matter? I'm generating a new function? < 1165032818 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :QUEUE-PUSH* returns a new function, which is then EVALed. < 1165032844 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Which is the whole point of DEFMACRO < 1165032858 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Oh... you can't do that in your average DEFUN ? < 1165032897 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :DEFMACRO does what you did for you < 1165032898 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :sorta < 1165032905 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Meh. < 1165032939 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(defmacro queue-push (item place) `(setf ,place (append ,place (list ,item)))) < 1165032966 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(defun queue-push (item place) `(setf ,place (append ,place (list ,item)))) < 1165032980 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :er, (defun queue-push-f (item place) `(setf ,place (append ,place (list ,item)))) < 1165032992 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :The DEFUN definition should just produce a procedure, no? < 1165033012 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(queue-push ...) === (eval (queue-push-f ...)) < 1165033013 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Or a closure... I think the Common Lisp term was. < 1165033037 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165033118 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :But I only barely know cl, so I might be leading you off track < 1165033171 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :(defun my-cons* (arg) `(cons ,arg '())) (defun my-cons (arg) (eval (my-cons* arg))) < 1165033173 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :What bsmntbombdood is saying is true seems absolutely unLispy to me. . . < 1165033179 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :(my-cons 5) => (5) < 1165033194 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :So it seems you don't need DEFMACRO. < 1165033202 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1165033222 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :You can't modify arg in MY-CONS < 1165033234 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Err, I'm not modifying any arg.... < 1165033239 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :And try that in your REPL too. It works. < 1165033304 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165033367 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165033370 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :But (defun my-cons (arg) (cons arg nil)) works just as well < 1165033428 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(defun foo (arg) (setf arg 1)) doesn't modify arg outside of foo < 1165033436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(and can't)\ < 1165033501 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Oh oh. I see. < 1165033513 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :So, you're talking about modifying a top-level definition? < 1165033520 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165033533 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Like, in Scheme, (define alpha 5) (define (test) (set! alpha 3)) ? < 1165033557 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I don't know, what does that do? < 1165033559 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Maybe the first DEFINE usage becomes DEFPARAMETER in Common Lisp. I can't remember the difference between DEFPARAMETER and DEFVAR. < 1165033587 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :defparameter changes the value of the variable if it is already defined < 1165033595 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Ah-hah. < 1165033601 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :So then the first DEFINE would be a DEFVAR. < 1165033623 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :And I believe that SET! would become SETQ, but I'm not sure on that. < 1165033640 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165033645 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1165033671 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :The R5RS standard is really tiny. Even the draft for R6RS is pretty small too. It's fairly simple to memorize everything in it. < 1165033707 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165033762 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I think that Scheme is more pure, and cl is more usefull (outside of the educational world) < 1165033781 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. Scheme manipulating binary files becomes a bit cumbersome. < 1165033850 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I was looking at some code to read a file, it is very unlispy < 1165033853 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165033894 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165033939 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I love Lisps :3 < 1165033945 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1165033988 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Oh, have you read the post that started StumpWM? < 1165033994 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1165034011 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :It's funny. It's part of the coding-Lisp-under-acid ethos. < 1165034052 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I love my window manager < 1165034073 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I used Ratpoison, so I'd love to see StumpWM become a tour de force. < 1165034086 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :s/used/use/ < 1165034091 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION uses ion < 1165034099 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Ion's too complicated for me, heh. < 1165034108 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Too many dadgummed keys to remember. < 1165034150 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I go out of ion style and use the mouse for some stuff < 1165034177 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :The mouse is useless in ratpoison. < 1165034194 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165034217 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I, frankly, don't like reaching the 30 cm over to my trackball. < 1165034223 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :It's too far. < 1165034410 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165034535 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I'm having a Paul Graham moment :P < 1165034579 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1165034585 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :never heard of him < 1165034590 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :O_O < 1165034603 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :You're... learning CL.... without hearing about Paul Graham?!?!?! < 1165034610 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :ACTION oggles. < 1165034618 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I guess I should look him up < 1165034629 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :He is *the* foremost Lisp elitist out there. < 1165034666 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165034686 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :(And then there's Jeff Fox, who sounds like Moore Came To Him in a Revelation and was Saved by Moore.) < 1165034742 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :If Graham were writing for Stalin instead of for Lisp, the people would be whooping and cheering in love for The Party. < 1165034855 0 :pikhq!n=pikhq@24.55.113.24 JOIN :#esoteric < 1165034974 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :It's crazy how old lisp is < 1165035152 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :this is cool: http://www.levenez.com/lang/history.html#04 < 1165035829 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, it is. < 1165035836 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I can't even understand how other languages got traction. < 1165035856 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Well, I can understand C, but I would see the word as: Low-level: C, High-level: Lisp. < 1165035916 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I can understand C++ gaining traction, by merit of being C-oid. . . < 1165035938 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Although what it's been abused for is rather surprising. < 1165035956 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I can't imagine C++ getting traction. Why, how, what drove these mad people?! < 1165035981 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :g++ after being worked on for years by hundreds of developers is only slightly stronger than GHC, OCaML, and clisp. < 1165036000 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :And it even loses in certain tests. < 1165036001 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Getting away from the restrictions of C while still being C. < 1165036012 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I call that C and a monkey's bastard child. < 1165036037 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, that's my respect for C++. < 1165036051 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I can understand it getting traction simply because there are people mad enough to think its the world's greatest language. < 1165036079 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :But someone would have to commit the original folly before the university hordes begin being indoctrinated in it. < 1165036105 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I feel how the old C++ites feel with Java now. They must feel like leftovers from the Last Crusade. < 1165036121 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :s/feel how/wonder how/ < 1165037168 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to bed < 1165037303 0 :Sgeo!unknown@unknown.invalid QUIT :Remote closed the connection < 1165037867 0 :anonfunc!n=pimaniac@adsl-70-135-59-64.dsl.chi2ca.sbcglobal.net JOIN :#esoteric < 1165038739 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Ok, what came after lisp? < 1165038741 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :COBOL < 1165038757 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Now, people like cobol for it's englishness < 1165038798 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Now, I don't know where I'm going with this < 1165038842 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :People *hate* Cobol for it's Englishness, actually. XD < 1165038867 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Well then how did it catch on? < 1165038884 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Managers, unlike human beings, like Cobol for that trait. < 1165038901 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :That needs to be quoted :P < 1165038910 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :And managers controll what language there subordinates use < 1165038941 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165038948 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :And FORTRAN. < 1165038952 0 :twobitsprite!n=someonee@cpe-075-177-191-014.nc.res.rr.com JOIN :#esoteric < 1165038972 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :is there a channel for the Joy language anywhere? (I figured you guys would know) < 1165038981 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Classifying Lisp and COBOL together is like classifying Life and Death together. < 1165038988 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :or... is there at least anyone on here that knows anything about Joy? < 1165038989 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :twobitsprite: If it's an esolang, this'd be it. :p < 1165039001 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: ? < 1165039007 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :As you just saw twobitsprite, nope. < 1165039015 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :I don't know if Joy is intended to be an esolang < 1165039017 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :On the channels business. < 1165039025 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: yeah... < 1165039026 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :A link to Joy please? < 1165039036 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Joy_programming_language < 1165039042 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :ありがとう。 < 1165039048 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :it looks like it's mostly in early developement... < 1165039097 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Oh, so that's where I remember it from... < 1165039106 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :You'll be getting the most support from #forth. < 1165039116 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :that's what I was thinking < 1165039142 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Functionality and stack usage scare me. < 1165039145 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1165039169 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1165039171 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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). < 1165039208 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: joy seems to be doing alright... < 1165039210 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I think you can functionally program in forth < 1165039219 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :You can, but it's not a preferred way. < 1165039224 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Now, that's just me, of course. < 1165039235 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: Yay! Unicode works here for once! < 1165039236 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I can't imagine recursion very well with a dedicated stack. < 1165039248 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :forth has recursion < 1165039255 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Tail recursion, rather. < 1165039277 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :factor has full tail-call optimization < 1165039277 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :It has tail recursion (by way of RECURSE), but it's not used very often. < 1165039291 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :For a second there, I was thinking that it was "Ari ga tou", though. . . XD. < 1165039298 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :... ;D < 1165039310 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :The and is truth? < 1165039314 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :*ant < 1165039359 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165039375 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Kinda like how I'm not that good with OOP paradigms. < 1165039428 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :OOP is great < 1165039467 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It suffers from "when all you have is a hammer, everything starts looking like a nail", though. < 1165039479 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I'm not saying it works for everything < 1165039509 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not saying you did. I'm just saying that OOP suffers from that problem. < 1165039570 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165039697 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"but everything /is/ a function". ;) < 1165039778 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Everything is *not* an object. < 1165039798 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :It is in java < 1165039807 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Meh. That's true. < 1165039828 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165039847 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I've never actually thought of programming in terms of manipulating objects. < 1165039860 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1165039865 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165039884 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1165039897 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I also hate the fact about OOP in that, what should belong to the superclass, what to the subclass, etc. < 1165039905 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Even though the decision is at best aesthetic. < 1165039905 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :A quicksort is not an object < 1165039922 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :But a quicksort can be a method < 1165039926 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :on a lits < 1165039928 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :list < 1165039945 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :twobitsprite: it should be a method contained by an object that manages related types of methods < 1165039956 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I can understand Lisp's everything-is-a-procedure methodology pretty well. < 1165039974 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Obviously there are places where it's cumbersome. < 1165039992 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I doubt that most people define constants using Church Numerals in their Scheme programs. < 1165040000 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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... < 1165040010 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Yeah < 1165040038 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165040045 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :To think that everything in the world can be boiled down into some top-down heirarchy is just silly < 1165040052 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :true, true < 1165040053 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: What'd be better is a generic quicksort function which applies to many datatypes. < 1165040084 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165040099 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Of course, OOP is invaluable in certain situations as well. < 1165040101 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes the Brainfuck paradigm. :p < 1165040104 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :but every language effectively imposes it's own design philosophy on how you do things, and the related limitations or caveats < 1165040116 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I've been doing too much on BFM lately. < 1165040133 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I'm spread between 2 projects, and am about to tackle on a third. < 1165040143 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(optimization is approaching perfection, and BFM is being split into multiple passes of compilation for clarity's sake) < 1165040147 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that's why everyone should learn many different languages with different paradigms- and that's what Esoteric Programming is all about < 1165040155 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yup. < 1165040173 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :An ID3v2 parser/creator, and SLUMTP. I'll be attempting to create a port of jMemorize soon enough. < 1165040202 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165040239 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165040242 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I understand < 1165040259 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165040265 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Personally, I like Java, but it's not the best tool for everything. < 1165040277 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :ACTION personally despises java < 1165040279 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Language choice should reflect the task at hand < 1165040281 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :dispises* < 1165040285 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :No RodgerTheGreat has the right of it. Each language has its own biases. < 1165040292 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :twobitsprite: If you designed your program that well in the beginning, you're not in the real world. < 1165040310 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :One should attempt to use a language which is biased in favor of what you need from it. < 1165040313 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Lisps have the capability to be tuned to your program domain, but that tuning requires thinking Lispily. < 1165040336 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165040362 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :s/and/any < 1165040379 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :twobitsprite: That goes without saying. < 1165040410 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(if you are worthy of the title "programmer", that is) < 1165040428 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think the most useful thing I learned from LISP is the related design philosophy- code everything assuming the rest of your program works. < 1165040447 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165040478 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'd agree with that < 1165040582 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165040610 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :without all of the business these days of "making BASIC a *real* language" < 1165040884 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notes that the next Gnash version is due "any day now". . . < 1165040942 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which should, in theory, support all of Flash v7 and parts of v8. . . < 1165040961 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The version supporting all of v9 is targeted for this summer. :) < 1165041061 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1165041798 0 :Robdgreat!n=Robdgrea@ip70-171-77-116.no.no.cox.net JOIN :#esoteric < 1165041810 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION coughs < 1165042001 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Thief. < 1165042228 0 :pikhq!unknown@unknown.invalid QUIT :"leaving" < 1165042819 0 :Robdgreat!unknown@unknown.invalid PRIVMSG #esoteric :eh. < 1165043183 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sharpens his tension knife < 1165043228 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hah. wit. < 1165043250 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries. < 1165043254 0 :sreeram!n=Sreeram@125.22.145.63 JOIN :#esoteric < 1165043276 0 :Robdgreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shrugs. < 1165043294 0 :Robdgreat!unknown@unknown.invalid PRIVMSG #esoteric :I've only been using this nick for 10 years. But I can change just for you. < 1165043296 0 :Robdgreat!unknown@unknown.invalid NICK :Asaph < 1165043320 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :eh? < 1165043370 0 :Asaph!unknown@unknown.invalid PRIVMSG #esoteric :I entered and was greeted with a cough and "Thief." < 1165043398 0 :Asaph!unknown@unknown.invalid PRIVMSG #esoteric :eh, screw it. < 1165043399 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :ahh... is this about the similarity of nicks between you and RodgerTheGreat? lol... < 1165043423 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shrugs < 1165043425 0 :Asaph!unknown@unknown.invalid PRIVMSG #esoteric :I suppose. < 1165043447 0 :Asaph!unknown@unknown.invalid PRIVMSG #esoteric :no worries < 1165043451 0 :Asaph!unknown@unknown.invalid PRIVMSG #esoteric :have a good night < 1165043456 0 :ivan`!unknown@unknown.invalid QUIT :" Try HydraIRC -> http://www.hydrairc.com <-" < 1165043458 0 :Asaph!unknown@unknown.invalid QUIT :"Error 1606. Press any key to continue." < 1165043467 0 :twobitsprite!unknown@unknown.invalid PRIVMSG #esoteric :that was odd < 1165043491 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Error 666. Just too damn evil. < 1165043771 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1165044720 0 :twobitsprite!unknown@unknown.invalid QUIT : < 1165046399 0 :clog!unknown@unknown.invalid QUIT :ended < 1165046400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1165046560 0 :sreeram!unknown@unknown.invalid PART #esoteric :? < 1165046703 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Oh? You've never programmed top-down before? < 1165046720 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I do it quite routinely. < 1165046740 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :If x, do complex-y else complex-z. And then I later code complex-y and complex-z. < 1165046757 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I am a bit biased to top-down planning myself, because it suits my on-the-spot thinking style more. < 1165047201 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165047226 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if I run into a problem, I can keep making progress toward completing the assignment, rather than just being stumped < 1165047287 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, g'night everyone. < 1165047321 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :goodnight < 1165050575 0 :anonfunc!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050575 0 :Razor-X!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050576 0 :RodgerTheGreat!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050576 0 :pgimeno!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050579 0 :puzzlet!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050579 0 :sp3tt!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050579 0 :bsmntbombdood!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050579 0 :lindi-!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050580 0 :wooby!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050580 0 :Aardwolf!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050580 0 :SevenInchBread!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050580 0 :fizzie!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050582 0 :GregorR!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050583 0 :lament!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050583 0 :SimonRC!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050584 0 :mtve!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050584 0 :meatmanek!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1165050693 0 :anonfunc!n=pimaniac@adsl-70-135-59-64.dsl.chi2ca.sbcglobal.net JOIN :#esoteric < 1165050693 0 :wooby!n=alan@ny-lancastercadent4g1-3a-236.buf.adelphia.net JOIN :#esoteric < 1165050693 0 :Razor-X!n=user@user-11faaoj.dsl.mindspring.com JOIN :#esoteric < 1165050693 0 :Aardwolf!n=neusring@kotnet-145.kulnet.kuleuven.be JOIN :#esoteric < 1165050693 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165050693 0 :RodgerTheGreat!n=RodgerTh@wads-5-233-82.resnet.mtu.edu JOIN :#esoteric < 1165050693 0 :pgimeno!n=pgimeno@124.Red-80-59-211.staticIP.rima-tde.net JOIN :#esoteric < 1165050693 0 :puzzlet!n=puzzlet@122.46.198.22 JOIN :#esoteric < 1165050693 0 :SimonRC!n=sc@bylands.dur.ac.uk JOIN :#esoteric < 1165050693 0 :fizzie!n=fizban@sesefras.zem.fi JOIN :#esoteric < 1165050693 0 :lindi-!n=lindi@kulho150.adsl.netsonic.fi JOIN :#esoteric < 1165050693 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1165050693 0 :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood JOIN :#esoteric < 1165050693 0 :lament!n=lament@S010600110999ad06.vc.shawcable.net JOIN :#esoteric < 1165050693 0 :GregorR!n=gregor@c-71-193-149-252.hsd1.or.comcast.net JOIN :#esoteric < 1165050693 0 :meatmanek!n=meatmane@cpe-65-29-79-179.indy.res.rr.com JOIN :#esoteric < 1165050693 0 :mtve!i=mtve@mtve.vm.jvds.com JOIN :#esoteric < 1165053276 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :wooby, thanks for the link < 1165053297 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :Aardwolf: no problem < 1165053308 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :i emailed graue, i thought it might have been a dns problem < 1165053316 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :apparently the server randomly stops working < 1165054568 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :Deltaplex is done < 1165054802 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :ACTION investigates < 1165054961 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :ha that's awesome < 1165055031 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :I just hope someone will have the courage to make something in it, because it's so annoying to code in pixels < 1165055359 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1165055364 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :perhaps an IDE is in order? < 1165055816 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :hah maybe :D < 1165055861 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1165055886 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :are you familiar with mondrian, the artist? < 1165055907 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :he's the dutch guy that did the paintings that are multicolor blocks with black lines < 1165056034 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :yep, I know both him and the Piet programming language < 1165057224 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :right < 1165057236 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :well i was researching his stuff < 1165057244 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :and did some preliminary research into < 1165057249 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :a mondrian encoding scheme < 1165057257 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :IE the most efficient way to store his original works < 1165057315 0 :wooby!unknown@unknown.invalid PRIVMSG #esoteric :and hm, its just kinda interesting :) < 1165060348 0 :jix!n=jix@L63ab.l.strato-dslnet.de JOIN :#esoteric < 1165060452 0 :sedimin!n=Miranda@217.118.109.198 JOIN :#esoteric < 1165060456 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :hi there < 1165061886 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1165062264 0 :SevenInchBread!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1165062289 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :howdy? < 1165062893 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :sup < 1165062925 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :I have posted idea for new language < 1165062934 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Stalactite < 1165063446 0 :anonfunc!unknown@unknown.invalid QUIT : < 1165063626 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :checking... < 1165064224 0 :wooby!unknown@unknown.invalid QUIT : < 1165064597 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :always nice if an esolang comes out of a dream ;) < 1165064684 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1165064698 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :this happened to me for the first time < 1165064722 0 :sedimin!unknown@unknown.invalid PRIVMSG #esoteric :but I don't think it happens usually, that would be quite crazy :) < 1165066489 0 :sedimin1958!n=Miranda@217.118.109.198 JOIN :#esoteric < 1165067454 0 :sedimin!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1165069522 0 :jix_!n=jix@L62e6.l.strato-dslnet.de JOIN :#esoteric < 1165069819 0 :jix!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1165071666 0 :sedimin1958!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1165071983 0 :tgwizard!n=tgwizard@c-923fe155.178-1-64736c10.cust.bredbandsbolaget.se JOIN :#esoteric < 1165075074 0 :cmeme!n=cmeme@boa.b9.com JOIN :#esoteric < 1165075104 0 :cmeme!unknown@unknown.invalid QUIT :Remote closed the connection < 1165075135 0 :cmeme!n=cmeme@boa.b9.com JOIN :#esoteric < 1165075348 0 :cmeme!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165075353 0 :cmeme!n=cmeme@boa.b9.com JOIN :#esoteric < 1165075382 0 :cmeme!unknown@unknown.invalid QUIT :Remote closed the connection < 1165075414 0 :cmeme!n=cmeme@boa.b9.com JOIN :#esoteric < 1165076669 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165077668 0 :Sgeo!n=Sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1165080241 0 :SevenInchBread!unknown@unknown.invalid QUIT :Connection reset by peer < 1165080299 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165080375 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :I'm reading over LOOP. Why would anyone want to use LOOP instead of DO? < 1165080399 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :It stinks much too much of COBOL to me. < 1165080570 0 :pikhq!n=pikhq@24.55.113.24 JOIN :#esoteric < 1165080663 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :My bfm.tcl rewrite is now partially working. < 1165080751 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165080802 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165080815 0 :SevenInchBread!unknown@unknown.invalid QUIT :Connection reset by peer < 1165080865 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165080926 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165080980 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165081022 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ties SevenInchBread to the Freenode server < 1165081218 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165081270 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165081853 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165081906 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165082131 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165082184 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165082350 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165082403 0 :SevenInchBread!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165083359 0 :SevenInchBread!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1165083528 0 :CakeProphet!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165083589 0 :CakeProphet!unknown@unknown.invalid PART #esoteric :? < 1165083595 0 :CakeProphet!n=CakeProp@h42.241.213.151.ip.alltel.net JOIN :#esoteric < 1165084067 0 :calamari!n=calamari@ip72-200-73-175.tc.ph.cox.net JOIN :#esoteric < 1165084148 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :'Lo. < 1165084161 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1165084174 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :med < 1165085163 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :dadadaDOM!# < 1165085287 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1165085303 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :howdy, everyone. < 1165085324 0 :pikhq!n=pikhq@24.55.113.24 JOIN :#esoteric < 1165086502 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION refers people to the famous story about Qc Na. < 1165086535 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I believe that is the definitive opinion on OO versus non-OO. < 1165086575 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Care to refer to it? < 1165086581 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :GIYF < 1165086979 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165086996 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1165087127 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165087261 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :yup < 1165087306 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Although you may end up with a library of functions that are all very nice but not used much < 1165087352 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :As with all other things, the solution involves someone with a modicum of grey matter. . . < 1165087403 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1165087474 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165087544 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I do however advocate trying to decide all the functions/methods you are going to write in you head first. < 1165087555 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :s/however // < 1165087593 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :You will end up missing a lot of them, but that doesn;t matter too much as you will have *thought* about the problem. < 1165087755 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the best way to start coding any moderately sized application is by sitting down and thinking about it for a while. < 1165087917 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The worst way, of course, is to just start throwing shit together. . . < 1165087930 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1165087991 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(Pre-rewrite BFM started showing some of those issues. . . Largely because the language evolved faster than the compiler0 < 1165088666 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION lols at the Visitor Pattern. < 1165088694 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :AFAICT, it's just the map operation. < 1165088710 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is still crazy enough to think BFM is a good idea. XD < 1165088771 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Do you have the translator source online? < 1165088777 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :s/translator // < 1165088793 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I've got a very outdated source up. < 1165088847 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :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. . . < 1165088878 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So, if I bother working on it today, I should have a modern BFM release up. . . Tomorrow? < 1165088970 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(for the record: ift and whilet, with expr, should allow for traditional "if {foo==0}" statements) < 1165089062 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1165089112 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, to be fair, it'd be "if var {expr var==0} {code-here} : temp0 temp1". < 1165089124 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :s/if/ift/ < 1165089907 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Why are we not working on the Factory language? < 1165089924 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Because it's horrible. < 1165089929 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Absolutely horrible. < 1165089938 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'm still getting nightmares from it. < 1165090227 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Hmm... Paul Graham is making an interesting point here: http://paulgraham.com/gap.html < 1165090270 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Though the monetary gap between rich and poor (within a developed country) is very wide, it doesn't matter much. < 1165090369 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165090398 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :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." < 1165090473 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Or until he saw the CEO. < 1165090526 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1165091087 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1165092080 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165092080 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :using functions I haven't defined. < 1165092118 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165092152 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :So I use a weird combination of both methods. < 1165092277 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165092307 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I end up making a rough little sketch of what needs to be done. . . < 1165092391 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165092393 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :ACTION refers pikhq to the Unicode elipsis. < 1165092403 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1165092413 0 :Aardwolf!unknown@unknown.invalid PRIVMSG #esoteric :(in reply to SimonRC) < 1165092437 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't care < 1165093047 0 :Arrogant!n=Arrogatn@90.orlando-04-05rs.fl.dial-access.att.net JOIN :#esoteric < 1165093089 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165093315 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: Well, what I tend to have in my head is a rough idea, not something like an essay outline or a strict flowchart. < 1165093357 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'd say that's pretty much how I go about things < 1165093381 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :PnP? < 1165093399 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Plug n Play? < 1165093411 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Paper and Pencil, I assumed. < 1165093449 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shrugs < 1165098471 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :yes, PnP = paper and pencil, (as in RPG systems) < 1165098487 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION finds some clever code to flatten a Scheme-style tree: < 1165098505 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :in Haskell, we would, of course have: < 1165098506 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :flatten (Cons Null r) = flatten r < 1165098509 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1165098514 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :data SCM = Cons SCM SCM | Null | ... < 1165098556 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :you can apparently flatten in linear time and ocnstant space, lazily if you use the clever trick: < 1165098561 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :flatten (Cons (Cons l m) r) = flatten $ Cons l $ Cons m r < 1165098570 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :the rest just writes itself < 1165098589 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I just read about pipes in lisp < 1165098593 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :very interesting < 1165098620 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :pipes? < 1165098648 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :a list of the form (1 2 3 . #) < 1165098653 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :(I got that trick from here: http://okmij.org/ftp/Scheme/misc.html#lazy-flattener) < 1165098674 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ah, nice < 1165098694 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Kinda like python generators < 1165098779 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :In Haskell you get those for free < 1165098782 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1165098791 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :heh yeah < 1165099052 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Similar to a stream. < 1165099115 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :(stream-list 1 2 3) => (1 . (delay (2 3))) < 1165099124 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :It's the same thing as lazy evaluation. < 1165099130 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165099262 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :(define (interval x y) (if (< x y) (list x (delay (interval (+ x 1) y))) '())) < 1165099298 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :That way, the Scheme interpreter only interprets as many list items as neccessary to complete an operation. < 1165099308 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :There's your effecient tail recursion. < 1165100756 0 :ivan`!i=ivan@wikipedia/ivan JOIN :#esoteric < 1165101433 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1165101710 0 :anonfunc!n=pimaniac@adsl-70-135-59-64.dsl.chi2ca.sbcglobal.net JOIN :#esoteric < 1165102286 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :while i understood the meaning of GIYF when simonRC used it, my translation was considerably less polite than the official one. < 1165102461 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :which, apparently, wikipedia already has noted < 1165102783 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :'Lo, oerjan. < 1165102797 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hi pikhq < 1165102811 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION contemplates discussing his recent changes to BFM, for the benefit of oerjan. < 1165102822 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION runs away screaming < 1165102827 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :just kidding < 1165102870 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :First change, which I've discussed previously, is the C string support. < 1165102894 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Secondly, if one doesn't specify a location to @, it assigns one. < 1165102910 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Third, optimization is smarter. < 1165102916 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :fun < 1165102942 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Finally, I've *almost* finished a rewrite of the compiler, splitting it into multiple passes for clarity's sake. < 1165102943 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i've noticed all except the third before < 1165102953 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and fourth < 1165102999 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :how is optimization smarter? < 1165103041 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Remember your suggestion for having a cleared-cell stack? < 1165103052 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1165103057 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Implemented. < 1165103103 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165103123 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So, string output doesn't affect the cleared-cell stack at all. < 1165103219 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1165103244 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i had some further ideas about declarations < 1165103282 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah? < 1165103291 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :basically, a keeps0 declaration < 1165103300 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which does? < 1165103391 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1165103429 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. . . < 1165103452 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So, something that'd be rather simple to add to the optimize pass. . . < 1165103506 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and a "touches" declaration, with sort of the opposite meaning < 1165103544 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :An "isnot0" if it wasn't 0 at the end of the loop? < 1165103546 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it would be a guarantee that those variables are the _only_ ones changed by the loop. useful to avoid some stack clearing < 1165103557 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1165103562 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I see. < 1165103590 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :You should write actual documentation so that people who don't know TCL can help out. < 1165103608 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it could be combined with left/right and would be a way to avoid clearing everything in that case < 1165103615 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Might require a little bit of redesigning in ::optimize. . . Oh well. This kind of thing is *why* I split it into multiple passess. < 1165103622 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: oerjan is one of those people. :p < 1165103636 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: So uh... what ze heck is is0 ? < 1165103645 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Is the cell 0? < 1165103658 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :What optimizations does the compiler perform? < 1165103658 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :a declaration that a cell is supposed to be 0 at that point of the program < 1165103664 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It tells the compiler that the cell is 0, so that it can avoid cell-clearing. < 1165103677 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: Currently, it eliminates pointless cell-clearing. < 1165103680 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Cell-clearing. Makes a lot of sense, seeing how much else I know of it :P < 1165103721 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165103732 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Why are you cell-clearing? < 1165103762 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Some of the macros do cell-clears to make sure the temporary variables are safe to use. . . < 1165103773 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cell-clearing is the first step of setting a brainfuck cell to a known value if it is unknown < 1165103781 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Temporary variables was what I suspected. < 1165103810 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :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. < 1165103823 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also common is, well, breaking out of a loop. < 1165103830 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because it compiles _to_ brainfuck < 1165103841 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Oh yah. < 1165103858 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The temporary variables are passed as an argument to the macros. . . < 1165103885 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :But if the macros are clean, the temporary variables should leave no trace, no? < 1165103897 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :But the coder might *not* be clean. ;) < 1165103905 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :DIRTY, DIRTY CODER < 1165103912 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's a matter of severe paranoia. < 1165103928 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Extra swaddling eh? < 1165103941 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Very un-C-like. < 1165103948 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no it is simply due to clean macros clearing both before and after use < 1165103951 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That, and I'm not sure if *all* of the macros are clean, anyways. < 1165103961 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Then why not use the Lisp philosophy of creating disparate namespaces for clean and unclean macros? < 1165103998 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but the optimizer removes unnecessary cleanness