←2006-12-01 2006-12-02 2006-12-03→ ↑2006 ↑all
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 <Aardwolf> what's the IP address of esolangs.org?
01:53:41 <Aardwolf> after the move
01:56:34 <Razor-X> ** Ping ** ping ** esolangs.org PING esolangs.org.org (209.86.66.93) 56(84) bytes of data.
01:56:45 <Razor-X> Does that answer your question?
01:58:23 <Aardwolf> yep, because if I pinged it, it said:
01:58:28 <Aardwolf> ping esolangs.org
01:58:28 <Aardwolf> ping: unknown host esolangs.org
01:58:43 <Razor-X> M-x ping
01:58:46 <Razor-X> Gotta love Emacs.
01:59:20 <bsmntbombdood> hehe
01:59:23 <bsmntbombdood> do you use ERC?
01:59:31 <Aardwolf> the IP brings me to a spammy earthlink site though
01:59:58 <bsmntbombdood> I hate how earthlink does that
01:59:58 -!- wooby has joined.
02:00:11 <bsmntbombdood> I want real dns, damnit!
02:00:24 <Aardwolf> :(
02:00:37 <Aardwolf> I think that my DNS server is confused about esolangs.org somehow
02:01:38 <Aardwolf> can anyone of you access the wiki?
02:04:14 <Razor-X> Yeah, I do bsmntbombdood.
02:07:06 <Razor-X> Although, recently RCIRC has been getting the news articles.
02:09:19 <bsmntbombdood> 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 <bsmntbombdood> 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 <bsmntbombdood> this is fun
02:13:27 <Aardwolf> what is it
02:13:32 <Aardwolf> texts from spam mails? :D
02:13:40 <bsmntbombdood> nope
02:14:02 <Aardwolf> source code?
02:14:03 <bsmntbombdood> 37,000 lines of edgar allen poe ran through a markov chain based text generation algorithm
02:14:15 <Aardwolf> aha
02:14:58 <bsmntbombdood> From the House of the lips resumed the lonely went boldly out
02:15:40 <bsmntbombdood> The house of lips!
02:15:59 <Aardwolf> hehe, I'm sure that spam mail generators use a similar algorithm
02:18:18 <bsmntbombdood> this is awsome
02:19:08 <bsmntbombdood> You can generate some crazy words
02:19:27 <bsmntbombdood> som Frof luessan thaut, asperach thand undclifich terslike
02:20:51 <bsmntbombdood> woureattledia! Uponed enegen se no in theas shruce
02:22:40 <Aardwolf> oard perfect factsrisk assessment mapstate, by state datauseful?
02:24:13 <bsmntbombdood> I need some other author to do it with
02:25:27 -!- pikhq has joined.
02:31:43 * pikhq lives again.
02:32:34 <bsmntbombdood> 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 <SimonRC> 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 <wooby> Aardwolf: you're right it's not working
03:00:24 <wooby> Aardwolf: you can get to the wiki from here though: http://esoteric.voxelperfect.net/
03:58:41 <Razor-X> 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 <bsmntbombdood> Scheme has iterative looping constructs doesn't it?
04:00:17 <Razor-X> Yeah it does, but it's considered bad Scheme style.
04:00:28 <Razor-X> And if you need anything more crazy than that, you just use call/cc.
04:00:48 <bsmntbombdood> Someone in #lisp told me to rewrite a recursive function iteratively
04:01:02 <Razor-X> I can do both fairly well.
04:01:39 <Razor-X> There are some applications where recursion is simply an easier way to code. An infix expression parser is one of those.
04:01:49 <bsmntbombdood> indeed
04:02:06 <bsmntbombdood> The LOOP macro is extremely unlispy
04:02:16 <Razor-X> I remember LOOP scaring me.
04:02:22 <Razor-X> Because it was so much to memorize.
04:02:38 <bsmntbombdood> (loop for i from 0 to (- (length seq) len) by len collecting (subseq seq i (+ i len)))
04:03:06 <pikhq> I'm scared shitless.
04:03:12 <Razor-X> 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 <bsmntbombdood> streams abstraction?
04:03:34 <Razor-X> There's a whole LOOP sublanguage. Like the DEFMACRO sublanguage.
04:03:43 <Razor-X> bsmntbombdood: ... You haven't read SICP?!
04:03:47 <bsmntbombdood> DEFMACRO doesn't have a sublanguage
04:03:49 <SimonRC> The essence of common lisp lies not in being functional, because it often isn't, but in it's macros.
04:04:09 <Razor-X> DEFMACRO is not hygenic Common Lisp.
04:04:22 <SimonRC> s/it's/its/
04:04:25 <Razor-X> Which is why Scheme SYNTAX-CASE macros are specifically called ``hygenic macros''.
04:04:34 <bsmntbombdood> DEFMACRO is the only way to do some stuff
04:04:39 <bsmntbombdood> Non-functional stuff
04:04:53 <Razor-X> GENSYMs were annoying. I remember that much too.
04:05:04 <bsmntbombdood> Nope, what's SICP?
04:05:09 * Razor-X dies.
04:05:19 <Razor-X> One of THE best treatises on computer science EVER.
04:05:30 <Razor-X> Structure and Interpretation of Computer Programs.
04:05:59 <bsmntbombdood> meh
04:06:51 <bsmntbombdood> (defmacro queue-push (item place) `(setf ,place (append ,place (list ,item))))
04:06:52 <Razor-X> 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 <bsmntbombdood> You can't write that as a function
04:07:38 <Razor-X> Why? Can't Common Lisp functions produce other functions?
04:07:54 <bsmntbombdood> Yes...
04:08:36 <bsmntbombdood> Why would that make a difference?
04:09:34 <Razor-X> (define (queue-push item place) (define (queue-push* item place) `(set! ,place (append ,place (list ,item)))) (eval (queue-push* item place) <implementation-dependant environment>))
04:10:08 <bsmntbombdood> common lisp doesn't have define, but ok
04:10:11 <Razor-X> A subfunction generates the new function, and then the outer function evaluates it. Simple.
04:10:27 <Razor-X> Well, DEFINE here is being used in the same way as DEFUN, no?
04:10:32 <bsmntbombdood> yeah
04:11:03 <bsmntbombdood> But that still doesn't work
04:11:09 <Razor-X> Why not?
04:11:17 <bsmntbombdood> (common) lisp doesn't have pass by reference
04:11:38 <Razor-X> Errr.... ?
04:12:15 <bsmntbombdood> Well, it does
04:12:33 <Razor-X> I'm not quite seeing what pass by reference and pass by value have anything to do here.
04:12:47 <Razor-X> I suspect this is some difference in the way procedures are handled.
04:12:49 <pikhq> Sounds like someone's brain is borken.
04:13:04 <bsmntbombdood> For a function to modify its args, you need pass by reference
04:13:05 <Razor-X> Meh.
04:13:18 <Razor-X> But, how does it matter? I'm generating a new function?
04:13:38 <Razor-X> QUEUE-PUSH* returns a new function, which is then EVALed.
04:14:04 <bsmntbombdood> Which is the whole point of DEFMACRO
04:14:18 <Razor-X> Oh... you can't do that in your average DEFUN ?
04:14:57 <bsmntbombdood> DEFMACRO does what you did for you
04:14:58 <bsmntbombdood> sorta
04:15:05 <Razor-X> Meh.
04:15:39 <bsmntbombdood> (defmacro queue-push (item place) `(setf ,place (append ,place (list ,item))))
04:16:06 <bsmntbombdood> (defun queue-push (item place) `(setf ,place (append ,place (list ,item))))
04:16:20 <bsmntbombdood> er, (defun queue-push-f (item place) `(setf ,place (append ,place (list ,item))))
04:16:32 <Razor-X> The DEFUN definition should just produce a procedure, no?
04:16:52 <bsmntbombdood> (queue-push ...) === (eval (queue-push-f ...))
04:16:53 <Razor-X> Or a closure... I think the Common Lisp term was.
04:17:17 <bsmntbombdood> yeah
04:18:38 <bsmntbombdood> But I only barely know cl, so I might be leading you off track
04:19:31 <Razor-X> (defun my-cons* (arg) `(cons ,arg '())) (defun my-cons (arg) (eval (my-cons* arg)))
04:19:33 <pikhq> What bsmntbombdood is saying is true seems absolutely unLispy to me. . .
04:19:39 <Razor-X> (my-cons 5) => (5)
04:19:54 <Razor-X> So it seems you don't need DEFMACRO.
04:20:02 <bsmntbombdood> no
04:20:22 <bsmntbombdood> You can't modify arg in MY-CONS
04:20:34 <Razor-X> Err, I'm not modifying any arg....
04:20:39 <Razor-X> And try that in your REPL too. It works.
04:21:44 <bsmntbombdood> yeah
04:22:47 <Razor-X> 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 <bsmntbombdood> But (defun my-cons (arg) (cons arg nil)) works just as well
04:23:48 <bsmntbombdood> (defun foo (arg) (setf arg 1)) doesn't modify arg outside of foo
04:23:56 <bsmntbombdood> (and can't)\
04:25:01 <Razor-X> Oh oh. I see.
04:25:13 <Razor-X> So, you're talking about modifying a top-level definition?
04:25:20 <bsmntbombdood> yeah
04:25:33 <Razor-X> Like, in Scheme, (define alpha 5) (define (test) (set! alpha 3)) ?
04:25:57 <bsmntbombdood> I don't know, what does that do?
04:25:59 <Razor-X> Maybe the first DEFINE usage becomes DEFPARAMETER in Common Lisp. I can't remember the difference between DEFPARAMETER and DEFVAR.
04:26:27 <bsmntbombdood> defparameter changes the value of the variable if it is already defined
04:26:35 <Razor-X> Ah-hah.
04:26:41 <Razor-X> So then the first DEFINE would be a DEFVAR.
04:27:03 <Razor-X> And I believe that SET! would become SETQ, but I'm not sure on that.
04:27:20 <bsmntbombdood> yeah
04:27:25 <bsmntbombdood> I think
04:27:51 <Razor-X> 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 <Razor-X> 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 <bsmntbombdood> I think that Scheme is more pure, and cl is more usefull (outside of the educational world)
04:29:41 <Razor-X> Yeah. Scheme manipulating binary files becomes a bit cumbersome.
04:30:50 <bsmntbombdood> I was looking at some code to read a file, it is very unlispy
04:30:53 <Razor-X> 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 <Razor-X> 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 <Razor-X> I love Lisps :3
04:32:25 <bsmntbombdood> heh
04:33:08 <Razor-X> Oh, have you read the post that started StumpWM?
04:33:14 <bsmntbombdood> no
04:33:31 <Razor-X> It's funny. It's part of the coding-Lisp-under-acid ethos.
04:34:12 <bsmntbombdood> I love my window manager
04:34:33 <Razor-X> I used Ratpoison, so I'd love to see StumpWM become a tour de force.
04:34:46 <Razor-X> s/used/use/
04:34:51 * bsmntbombdood uses ion
04:34:59 <Razor-X> Ion's too complicated for me, heh.
04:35:08 <Razor-X> Too many dadgummed keys to remember.
04:35:50 <bsmntbombdood> I go out of ion style and use the mouse for some stuff
04:36:17 <Razor-X> The mouse is useless in ratpoison.
04:36:34 <bsmntbombdood> yeah
04:36:57 <Razor-X> I, frankly, don't like reaching the 30 cm over to my trackball.
04:37:03 <Razor-X> It's too far.
04:40:10 <Razor-X> 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 <Razor-X> I'm having a Paul Graham moment :P
04:42:59 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
04:43:05 <bsmntbombdood> never heard of him
04:43:10 <Razor-X> O_O
04:43:23 <Razor-X> You're... learning CL.... without hearing about Paul Graham?!?!?!
04:43:30 * Razor-X oggles.
04:43:38 <bsmntbombdood> I guess I should look him up
04:43:49 <Razor-X> He is *the* foremost Lisp elitist out there.
04:44:26 <Razor-X> 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 <Razor-X> (And then there's Jeff Fox, who sounds like Moore Came To Him in a Revelation and was Saved by Moore.)
04:45:42 <Razor-X> 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 <bsmntbombdood> It's crazy how old lisp is
04:52:32 <bsmntbombdood> this is cool: http://www.levenez.com/lang/history.html#04
05:03:49 <Razor-X> Yeah, it is.
05:03:56 <Razor-X> I can't even understand how other languages got traction.
05:04:16 <Razor-X> Well, I can understand C, but I would see the word as: Low-level: C, High-level: Lisp.
05:05:16 <pikhq> I can understand C++ gaining traction, by merit of being C-oid. . .
05:05:38 <pikhq> Although what it's been abused for is rather surprising.
05:05:56 <Razor-X> I can't imagine C++ getting traction. Why, how, what drove these mad people?!
05:06:21 <Razor-X> g++ after being worked on for years by hundreds of developers is only slightly stronger than GHC, OCaML, and clisp.
05:06:40 <Razor-X> And it even loses in certain tests.
05:06:41 <pikhq> Getting away from the restrictions of C while still being C.
05:06:52 <Razor-X> I call that C and a monkey's bastard child.
05:07:17 <Razor-X> Yeah, that's my respect for C++.
05:07:31 <pikhq> I can understand it getting traction simply because there are people mad enough to think its the world's greatest language.
05:07:59 <Razor-X> But someone would have to commit the original folly before the university hordes begin being indoctrinated in it.
05:08:25 <Razor-X> I feel how the old C++ites feel with Java now. They must feel like leftovers from the Last Crusade.
05:08:41 <Razor-X> 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 <bsmntbombdood> Ok, what came after lisp?
05:52:21 <bsmntbombdood> COBOL
05:52:37 <bsmntbombdood> Now, people like cobol for it's englishness
05:53:18 <bsmntbombdood> Now, I don't know where I'm going with this
05:54:02 <pikhq> People *hate* Cobol for it's Englishness, actually. XD
05:54:27 <bsmntbombdood> Well then how did it catch on?
05:54:44 <pikhq> Managers, unlike human beings, like Cobol for that trait.
05:55:01 <Razor-X> That needs to be quoted :P
05:55:10 <bsmntbombdood> And managers controll what language there subordinates use
05:55:41 <Razor-X> 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 <Razor-X> And FORTRAN.
05:55:52 -!- twobitsprite has joined.
05:56:12 <twobitsprite> is there a channel for the Joy language anywhere? (I figured you guys would know)
05:56:21 <pikhq> Classifying Lisp and COBOL together is like classifying Life and Death together.
05:56:28 <twobitsprite> or... is there at least anyone on here that knows anything about Joy?
05:56:29 <pikhq> twobitsprite: If it's an esolang, this'd be it. :p
05:56:41 <bsmntbombdood> Razor-X: ?
05:56:47 <Razor-X> As you just saw twobitsprite, nope.
05:56:55 <twobitsprite> I don't know if Joy is intended to be an esolang
05:56:57 <Razor-X> On the channels business.
05:57:05 <twobitsprite> Razor-X: yeah...
05:57:06 <Razor-X> A link to Joy please?
05:57:16 <twobitsprite> http://en.wikipedia.org/wiki/Joy_programming_language
05:57:22 <Razor-X> ありがとう。
05:57:28 <twobitsprite> it looks like it's mostly in early developement...
05:58:17 <Razor-X> Oh, so that's where I remember it from...
05:58:26 <Razor-X> You'll be getting the most support from #forth.
05:58:36 <twobitsprite> that's what I was thinking
05:59:02 <Razor-X> Functionality and stack usage scare me.
05:59:05 <bsmntbombdood> interesting
05:59:29 <bsmntbombdood> why?
05:59:31 <Razor-X> 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 <twobitsprite> Razor-X: joy seems to be doing alright...
06:00:10 <bsmntbombdood> I think you can functionally program in forth
06:00:19 <Razor-X> You can, but it's not a preferred way.
06:00:24 <Razor-X> Now, that's just me, of course.
06:00:35 <pikhq> Razor-X: Yay! Unicode works here for once!
06:00:36 <Razor-X> I can't imagine recursion very well with a dedicated stack.
06:00:48 <bsmntbombdood> forth has recursion
06:00:55 <Razor-X> Tail recursion, rather.
06:01:17 <twobitsprite> factor has full tail-call optimization
06:01:17 <Razor-X> It has tail recursion (by way of RECURSE), but it's not used very often.
06:01:31 <pikhq> For a second there, I was thinking that it was "Ari ga tou", though. . . XD.
06:01:38 <Razor-X> ... ;D
06:01:50 <Razor-X> The and is truth?
06:01:54 <Razor-X> *ant
06:02:39 <Razor-X> 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 <Razor-X> Kinda like how I'm not that good with OOP paradigms.
06:03:48 <bsmntbombdood> OOP is great
06:04:27 <pikhq> It suffers from "when all you have is a hammer, everything starts looking like a nail", though.
06:04:39 <bsmntbombdood> I'm not saying it works for everything
06:05:09 <pikhq> Not saying you did. I'm just saying that OOP suffers from that problem.
06:06:10 <twobitsprite> 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 <pikhq> "but everything /is/ a function". ;)
06:09:38 <Razor-X> Everything is *not* an object.
06:09:58 <bsmntbombdood> It is in java
06:10:07 <Razor-X> Meh. That's true.
06:10:28 <Razor-X> 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 <Razor-X> I've never actually thought of programming in terms of manipulating objects.
06:11:00 <RodgerTheGreat> hm
06:11:05 <twobitsprite> 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 <Razor-X> Yes.
06:11:37 <Razor-X> I also hate the fact about OOP in that, what should belong to the superclass, what to the subclass, etc.
06:11:45 <Razor-X> Even though the decision is at best aesthetic.
06:11:45 <twobitsprite> A quicksort is not an object
06:12:02 <bsmntbombdood> But a quicksort can be a method
06:12:06 <bsmntbombdood> on a lits
06:12:08 <bsmntbombdood> list
06:12:25 <RodgerTheGreat> twobitsprite: it should be a method contained by an object that manages related types of methods
06:12:36 <Razor-X> Yeah, I can understand Lisp's everything-is-a-procedure methodology pretty well.
06:12:54 <Razor-X> Obviously there are places where it's cumbersome.
06:13:12 <Razor-X> I doubt that most people define constants using Church Numerals in their Scheme programs.
06:13:20 <twobitsprite> 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 <bsmntbombdood> Yeah
06:13:58 <RodgerTheGreat> 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 <twobitsprite> To think that everything in the world can be boiled down into some top-down heirarchy is just silly
06:14:12 <RodgerTheGreat> true, true
06:14:13 <pikhq> bsmntbombdood: What'd be better is a generic quicksort function which applies to many datatypes.
06:14:44 <Razor-X> 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 <Razor-X> Of course, OOP is invaluable in certain situations as well.
06:15:01 * pikhq likes the Brainfuck paradigm. :p
06:15:04 <RodgerTheGreat> but every language effectively imposes it's own design philosophy on how you do things, and the related limitations or caveats
06:15:16 <pikhq> I've been doing too much on BFM lately.
06:15:33 <Razor-X> I'm spread between 2 projects, and am about to tackle on a third.
06:15:43 <pikhq> (optimization is approaching perfection, and BFM is being split into multiple passes of compilation for clarity's sake)
06:15:47 <RodgerTheGreat> that's why everyone should learn many different languages with different paradigms- and that's what Esoteric Programming is all about
06:15:55 <Razor-X> Yup.
06:16:13 <Razor-X> An ID3v2 parser/creator, and SLUMTP. I'll be attempting to create a port of jMemorize soon enough.
06:16:42 <twobitsprite> 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 <RodgerTheGreat> yeah
06:17:22 <RodgerTheGreat> I understand
06:17:39 <twobitsprite> 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 <RodgerTheGreat> Personally, I like Java, but it's not the best tool for everything.
06:17:57 * twobitsprite personally despises java
06:17:59 <RodgerTheGreat> Language choice should reflect the task at hand
06:18:01 <twobitsprite> dispises*
06:18:05 <Razor-X> No RodgerTheGreat has the right of it. Each language has its own biases.
06:18:12 <pikhq> twobitsprite: If you designed your program that well in the beginning, you're not in the real world.
06:18:30 <pikhq> One should attempt to use a language which is biased in favor of what you need from it.
06:18:33 <Razor-X> Lisps have the capability to be tuned to your program domain, but that tuning requires thinking Lispily.
06:18:56 <twobitsprite> 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 <twobitsprite> s/and/any
06:19:39 <pikhq> twobitsprite: That goes without saying.
06:20:10 <pikhq> (if you are worthy of the title "programmer", that is)
06:20:28 <RodgerTheGreat> 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 <twobitsprite> 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 <RodgerTheGreat> I'd agree with that
06:23:02 <RodgerTheGreat> 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 <RodgerTheGreat> 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 <pikhq> Which should, in theory, support all of Flash v7 and parts of v8. . .
06:29:21 <pikhq> The version supporting all of v9 is targeted for this summer. :)
06:31:01 <bsmntbombdood> hmm
06:43:18 -!- Robdgreat has joined.
06:43:30 * RodgerTheGreat coughs
06:46:41 <pikhq> Thief.
06:50:28 -!- pikhq has quit ("leaving").
07:00:19 <Robdgreat> eh.
07:06:23 * twobitsprite sharpens his tension knife
07:07:08 <RodgerTheGreat> hah. wit.
07:07:30 * twobitsprite tries.
07:07:34 -!- sreeram has joined.
07:07:56 * Robdgreat shrugs.
07:08:14 <Robdgreat> 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 <twobitsprite> eh?
07:09:30 <Asaph> I entered and was greeted with a cough and "Thief."
07:09:58 <Asaph> eh, screw it.
07:09:59 <twobitsprite> ahh... is this about the similarity of nicks between you and RodgerTheGreat? lol...
07:10:23 * RodgerTheGreat shrugs
07:10:25 <Asaph> I suppose.
07:10:47 <Asaph> no worries
07:10:51 <Asaph> 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 <twobitsprite> that was odd
07:11:31 <bsmntbombdood> Error 666. Just too damn evil.
07:16:11 <RodgerTheGreat> 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 <Razor-X> RodgerTheGreat: Oh? You've never programmed top-down before?
08:05:20 <Razor-X> I do it quite routinely.
08:05:40 <Razor-X> If x, do complex-y else complex-z. And then I later code complex-y and complex-z.
08:05:57 <Razor-X> I am a bit biased to top-down planning myself, because it suits my on-the-spot thinking style more.
08:13:21 <RodgerTheGreat> 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 <RodgerTheGreat> if I run into a problem, I can keep making progress toward completing the assignment, rather than just being stumped
08:14:47 <RodgerTheGreat> well, g'night everyone.
08:15:21 <wooby> 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 <Aardwolf> wooby, thanks for the link
09:54:57 <wooby> Aardwolf: no problem
09:55:08 <wooby> i emailed graue, i thought it might have been a dns problem
09:55:16 <wooby> apparently the server randomly stops working
10:16:08 <Aardwolf> Deltaplex is done
10:20:02 * wooby investigates
10:22:41 <wooby> ha that's awesome
10:23:51 <Aardwolf> 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 <wooby> heh
10:29:24 <wooby> perhaps an IDE is in order?
10:36:56 <Aardwolf> hah maybe :D
10:37:41 <wooby> hehe
10:38:06 <wooby> are you familiar with mondrian, the artist?
10:38:27 <wooby> he's the dutch guy that did the paintings that are multicolor blocks with black lines
10:40:34 <Aardwolf> yep, I know both him and the Piet programming language
11:00:24 <wooby> right
11:00:36 <wooby> well i was researching his stuff
11:00:44 <wooby> and did some preliminary research into
11:00:49 <wooby> a mondrian encoding scheme
11:00:57 <wooby> IE the most efficient way to store his original works
11:01:55 <wooby> and hm, its just kinda interesting :)
11:52:28 -!- jix has joined.
11:54:12 -!- sedimin has joined.
11:54:16 <sedimin> hi there
12:18:06 <Aardwolf> hi
12:24:24 -!- SevenInchBread has quit ("haaaaaaaaaa").
12:24:49 <sedimin> howdy?
12:34:53 <Aardwolf> sup
12:35:25 <sedimin> I have posted idea for new language
12:35:34 <sedimin> http://esoteric.voxelperfect.net/wiki/Stalactite
12:44:06 -!- anonfunc has quit.
12:47:06 <Aardwolf> checking...
12:57:04 -!- wooby has quit.
13:03:17 <Aardwolf> always nice if an esolang comes out of a dream ;)
13:04:44 <sedimin> hehe
13:04:58 <sedimin> this happened to me for the first time
13:05:22 <sedimin> 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 <Razor-X> I'm reading over LOOP. Why would anyone want to use LOOP instead of DO?
17:26:39 <Razor-X> It stinks much too much of COBOL to me.
17:29:30 -!- pikhq has joined.
17:31:03 <pikhq> 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 <pikhq> 'Lo.
18:29:21 <calamari> hi
18:29:34 <lament> med
18:46:03 <SimonRC> dadadaDOM!#
18:48:07 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
18:48:23 <RodgerTheGreat> howdy, everyone.
18:48:44 -!- pikhq has joined.
19:08:22 * SimonRC refers people to the famous story about Qc Na.
19:08:55 <SimonRC> I believe that is the definitive opinion on OO versus non-OO.
19:09:35 <pikhq> Care to refer to it?
19:09:41 <SimonRC> GIYF
19:16:19 <SimonRC> 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 <RodgerTheGreat> yes
19:18:47 <RodgerTheGreat> 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 <SimonRC> yup
19:21:46 <SimonRC> Although you may end up with a library of functions that are all very nice but not used much
19:22:32 <pikhq> As with all other things, the solution involves someone with a modicum of grey matter. . .
19:23:23 <SimonRC> heh
19:24:34 <SimonRC> 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 <SimonRC> I do however advocate trying to decide all the functions/methods you are going to write in you head first.
19:25:55 <SimonRC> s/however //
19:26:33 <SimonRC> 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 <RodgerTheGreat> the best way to start coding any moderately sized application is by sitting down and thinking about it for a while.
19:31:57 <pikhq> The worst way, of course, is to just start throwing shit together. . .
19:32:10 <SimonRC> indeed
19:33:11 <pikhq> (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 <SimonRC> 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 <SimonRC> Do you have the translator source online?
19:46:17 <SimonRC> s/translator //
19:46:33 <pikhq> I've got a very outdated source up.
19:47:27 <pikhq> 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 <pikhq> So, if I bother working on it today, I should have a modern BFM release up. . . Tomorrow?
19:49:30 <pikhq> (for the record: ift and whilet, with expr, should allow for traditional "if {foo==0}" statements)
19:51:02 <SimonRC> ok
19:51:52 <pikhq> Well, to be fair, it'd be "if var {expr var==0} {code-here} : temp0 temp1".
19:52:04 <pikhq> s/if/ift/
20:05:07 <Sgeo> Why are we not working on the Factory language?
20:05:24 <pikhq> Because it's horrible.
20:05:29 <pikhq> Absolutely horrible.
20:05:38 <pikhq> I'm still getting nightmares from it.
20:10:27 <SimonRC> Hmm... Paul Graham is making an interesting point here: http://paulgraham.com/gap.html
20:11:10 <SimonRC> Though the monetary gap between rich and poor (within a developed country) is very wide, it doesn't matter much.
20:12:49 <SimonRC> 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 <SimonRC> 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 <pikhq> Or until he saw the CEO.
20:15:26 <SimonRC> hm
20:24:47 <GregorR> Heh
20:41:20 <Razor-X> 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 <Razor-X> using functions I haven't defined.
20:41:58 <Razor-X> 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 <Razor-X> So I use a weird combination of both methods.
20:44:37 <Razor-X> 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 <pikhq> I end up making a rough little sketch of what needs to be done. . .
20:46:31 <Aardwolf> 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 <Razor-X> Huh?
20:46:53 <Aardwolf> (in reply to SimonRC)
20:47:17 * pikhq doesn't care
20:57:27 -!- Arrogant has joined.
20:58:09 <SimonRC> 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 <Razor-X> 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 <RodgerTheGreat> I'd say that's pretty much how I go about things
21:03:01 <Sgeo> PnP?
21:03:19 <Razor-X> Plug n Play?
21:03:31 <Razor-X> Paper and Pencil, I assumed.
21:04:09 * RodgerTheGreat shrugs
22:27:51 <SimonRC> 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 <SimonRC> in Haskell, we would, of course have:
22:28:26 <SimonRC> flatten (Cons Null r) = flatten r
22:28:29 <SimonRC> oops
22:28:34 <SimonRC> data SCM = Cons SCM SCM | Null | ...
22:29:16 <SimonRC> you can apparently flatten in linear time and ocnstant space, lazily if you use the clever trick:
22:29:21 <SimonRC> flatten (Cons (Cons l m) r) = flatten $ Cons l $ Cons m r
22:29:30 <SimonRC> the rest just writes itself
22:29:49 <bsmntbombdood> I just read about pipes in lisp
22:29:53 <bsmntbombdood> very interesting
22:30:20 <SimonRC> pipes?
22:30:48 <bsmntbombdood> a list of the form (1 2 3 . #<function to return next object>)
22:30:53 <SimonRC> (I got that trick from here: http://okmij.org/ftp/Scheme/misc.html#lazy-flattener)
22:31:14 <SimonRC> ah, nice
22:31:34 <bsmntbombdood> Kinda like python generators
22:32:59 <SimonRC> <mutter>In Haskell you get those for free</mutter>
22:33:02 <SimonRC> :-)
22:33:11 <bsmntbombdood> heh yeah
22:37:32 <Razor-X> Similar to a stream.
22:38:35 <Razor-X> (stream-list 1 2 3) => (1 . (delay (2 3)))
22:38:44 <Razor-X> It's the same thing as lazy evaluation.
22:38:50 <bsmntbombdood> yeah
22:41:02 <Razor-X> (define (interval x y) (if (< x y) (list x (delay (interval (+ x 1) y))) '()))
22:41:38 <Razor-X> That way, the Scheme interpreter only interprets as many list items as neccessary to complete an operation.
22:41:48 <Razor-X> 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 <oerjan> while i understood the meaning of GIYF when simonRC used it, my translation was considerably less polite than the official one.
23:34:21 <oerjan> which, apparently, wikipedia already has noted
23:39:43 <pikhq> 'Lo, oerjan.
23:39:57 <oerjan> 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 <oerjan> just kidding
23:41:10 <pikhq> First change, which I've discussed previously, is the C string support.
23:41:34 <pikhq> Secondly, if one doesn't specify a location to @, it assigns one.
23:41:50 <pikhq> Third, optimization is smarter.
23:41:56 <bsmntbombdood> fun
23:42:22 <pikhq> Finally, I've *almost* finished a rewrite of the compiler, splitting it into multiple passes for clarity's sake.
23:42:23 <oerjan> i've noticed all except the third before
23:42:33 <oerjan> and fourth
23:43:19 <oerjan> how is optimization smarter?
23:44:01 <pikhq> Remember your suggestion for having a cleared-cell stack?
23:44:12 <oerjan> yes
23:44:17 <pikhq> Implemented.
23:45:03 <pikhq> 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 <pikhq> So, string output doesn't affect the cleared-cell stack at all.
23:46:59 <oerjan> i see
23:47:24 <oerjan> i had some further ideas about declarations
23:48:02 <pikhq> Yeah?
23:48:11 <oerjan> basically, a keeps0 declaration
23:48:20 <pikhq> Which does?
23:49:51 <oerjan> 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 <pikhq> Hmm. . .
23:50:52 <pikhq> So, something that'd be rather simple to add to the optimize pass. . .
23:51:46 <oerjan> and a "touches" declaration, with sort of the opposite meaning
23:52:24 <pikhq> An "isnot0" if it wasn't 0 at the end of the loop?
23:52:26 <oerjan> 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 <pikhq> Oh.
23:52:42 <pikhq> I see.
23:53:10 <Razor-X> You should write actual documentation so that people who don't know TCL can help out.
23:53:28 <oerjan> it could be combined with left/right and would be a way to avoid clearing everything in that case
23:53:35 <pikhq> 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 <pikhq> Razor-X: oerjan is one of those people. :p
23:53:56 <Razor-X> oerjan: So uh... what ze heck is is0 ?
23:54:05 <Razor-X> Is the cell 0?
23:54:18 <Razor-X> What optimizations does the compiler perform?
23:54:18 <oerjan> a declaration that a cell is supposed to be 0 at that point of the program
23:54:24 <pikhq> It tells the compiler that the cell is 0, so that it can avoid cell-clearing.
23:54:37 <pikhq> Razor-X: Currently, it eliminates pointless cell-clearing.
23:54:40 <Razor-X> Cell-clearing. Makes a lot of sense, seeing how much else I know of it :P
23:55:21 <pikhq> 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 <Razor-X> Why are you cell-clearing?
23:56:02 <pikhq> Some of the macros do cell-clears to make sure the temporary variables are safe to use. . .
23:56:13 <oerjan> cell-clearing is the first step of setting a brainfuck cell to a known value if it is unknown
23:56:21 <Razor-X> Temporary variables was what I suspected.
23:56:50 <Razor-X> 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 <pikhq> Also common is, well, breaking out of a loop.
23:57:10 <oerjan> because it compiles _to_ brainfuck
23:57:21 <Razor-X> Oh yah.
23:57:38 <pikhq> The temporary variables are passed as an argument to the macros. . .
23:58:05 <Razor-X> But if the macros are clean, the temporary variables should leave no trace, no?
23:58:17 <pikhq> But the coder might *not* be clean. ;)
23:58:25 <GregorR> DIRTY, DIRTY CODER
23:58:32 <pikhq> It's a matter of severe paranoia.
23:58:48 <Razor-X> Extra swaddling eh?
23:59:01 <Razor-X> Very un-C-like.
23:59:08 <oerjan> no it is simply due to clean macros clearing both before and after use
23:59:11 <pikhq> That, and I'm not sure if *all* of the macros are clean, anyways.
23:59:21 <Razor-X> Then why not use the Lisp philosophy of creating disparate namespaces for clean and unclean macros?
23:59:58 <oerjan> but the optimizer removes unnecessary cleanness
←2006-12-01 2006-12-02 2006-12-03→ ↑2006 ↑all