00:00:00 --- log: started forth/05.12.29 00:05:19 robert: how is c64 project coming? 00:06:56 Well, I got a little tired of the mallocing. malloc() works, free() doesn't. I also made a multiprecision multiplication function, but it needs improvement. 00:08:01 oi... low-level stuff sounds fun ;) 00:08:05 is cool though 00:10:27 Yeah, it's actually pretty fun. 00:53:54 --- quit: nballen () 01:26:54 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 01:49:26 --- join: snoopy_1711 (n=snoopy_1@dslb-084-058-101-031.pools.arcor-ip.net) joined #forth 01:55:17 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 01:55:44 --- nick: snoopy_1711 -> Snoopy42 01:57:23 --- join: Topaz (n=top@spc1-horn1-6-0-cust128.cosh.broadband.ntl.com) joined #forth 02:19:00 --- join: Cheery (i=Henri@a81-197-18-99.elisa-laajakaista.fi) joined #forth 02:21:09 --- join: T0paz (n=top@spc1-horn1-6-0-cust128.cosh.broadband.ntl.com) joined #forth 02:22:05 --- quit: Topaz (Read error: 113 (No route to host)) 03:00:54 --- join: amca_at_cins (i=amca@rdlax12-b023.dialup.optusnet.com.au) joined #forth 03:01:14 Hello 03:43:35 * amca_at_cins is away: I'm busy 03:58:05 --- quit: Snoopy42 (kornbluth.freenode.net irc.freenode.net) 03:58:31 --- join: Snoopy42 (n=snoopy_1@dslb-084-058-101-031.pools.arcor-ip.net) joined #forth 04:21:44 --- join: PoppaVic (n=pete@0-1pool67-97.nas22.chicago4.il.us.da.qwest.net) joined #forth 06:18:49 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-101-031.pools.arcor-ip.net) joined #forth 06:26:05 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 06:26:19 --- nick: snoopy_1711 -> Snoopy42 06:35:43 --- quit: swalters_ (Read error: 104 (Connection reset by peer)) 06:44:20 --- quit: amca_at_cins ("bed") 06:50:46 --- quit: T0paz ("Leaving") 06:54:32 --- join: swalters_ (n=swalters@6532183hfc82.tampabay.res.rr.com) joined #forth 07:36:14 --- quit: PoppaVic ("Pulls the pin...") 07:37:45 --- join: PoppaVic (n=pete@0-1pool64-246.nas22.chicago4.il.us.da.qwest.net) joined #forth 08:20:54 --- quit: PoppaVic ("Pulls the pin...") 08:26:54 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 08:26:54 --- mode: ChanServ set +o JasonWoof 08:34:24 --- nick: Pragmatic -> Pragger|SIGHUP 09:30:40 --- quit: snowrichard ("Leaving") 09:49:50 --- join: nballen (n=nballen@adsl-69-111-248-132.dsl.renocs.pacbell.net) joined #forth 11:36:34 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-098-226.pools.arcor-ip.net) joined #forth 11:44:41 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 11:44:52 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 11:44:56 --- nick: snoopy_1711 -> Snoopy42 12:16:53 --- nick: Raystm2 -> nanstm 13:08:54 --- join: madgarden (n=madgarde@Kitchener-HSE-ppp3577611.sympatico.ca) joined #forth 13:49:16 PING! 13:49:35 hi 13:50:39 --- join: aum (n=aum@60-234-156-82.bitstream.orcon.net.nz) joined #forth 13:50:59 oh my god, someone is online.. 13:52:30 i've been working most of the day... 13:52:34 so, what are you doing at the moment slava? kicking factor to new speed enhancements? 13:52:55 i just finished up some stuff for my paying job, and now i'm working on factor docs 13:55:52 i wanted to ask crc about his markup language 14:03:33 rml 14:04:10 what do you want to ask? 14:24:55 --- quit: Cheery ("Leaving") 15:08:33 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 16:28:01 --- nick: nanstm -> Raystm2 16:39:11 --- join: TheBlueWizard (i=TheBlueW@ts001d0219.wdc-dc.xod.concentric.net) joined #forth 17:29:18 --- part: TheBlueWizard left #forth 18:07:58 --- join: sproingie (n=chuck@64-121-2-59.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 18:23:28 --- join: amca_at_cins (i=amca@rdlax11-a094.dialup.optusnet.com.au) joined #forth 18:23:47 Hello 18:53:00 hello 18:55:37 hello nballen 18:58:52 :) 19:00:36 How are you today? 19:00:58 wonder if there's a way in existing forths to run a word every time a value is pushed onto the stack 19:01:39 You would have to chang the code of Literal wouldnt you? 19:01:45 (change) 19:01:56 and every prim that left something on the stack 19:03:21 amca_at_cins: I helped a friend move for several hours and now I can't get myself to concentrate... 19:03:27 so I'm just browsing the internet 19:03:30 ;) 19:03:33 thanks for asking 19:03:34 looking at a forth-ish language where there's no global data stack, but a "current receiver" instead 19:03:45 the default receiver is the dstack, so it would behave the same 19:03:59 nballen: Hehe. Im kinda in that state too 19:04:24 sproingie: Interesting 19:04:47 sproingie: I was just looking at 4stack :) 19:04:48 one interesting consequence of it is something i call auto-thunking 19:04:53 similar to currying 19:05:20 http://rf.fcode.org/board/index.php?topic=265.0 19:05:38 with autothunking, you could conceivably write word invocations in any order 19:05:40 so instead of "[LIT] " it would be (apart from the default stack) "[LIT] "? 19:05:52 1 2 +, + 1 2, and 1 + 2 would all work the same 19:06:02 * amca_at_cins spins out 19:06:27 since any word that hadn't received all its args would "wait" for them before executing 19:07:01 so something like multiple-function, mutliple-data instructions? 19:07:12 sproingie: what is your goal here? 19:07:27 nballen: flexible syntax and partial application 19:07:43 partial application can eliminate a lot of stack juggling 19:08:16 sproingie: So there would be at least a data stack, return stack and operation stack? 19:08:16 flexible syntax to make it more functional? 19:08:22 or just easier to read? 19:08:25 yeah there'd probably be a receiver stack 19:08:28 nballen: both 19:09:04 imagine a word line (x1 y1 x2 y2 -- ) 19:09:32 say you want to draw a line from 5,5 to 5,10 and 10,5 19:09:32 sproingie: if I were you I would write a compiler that would write forth from your sloppy language 19:09:57 you could create a partially applied line with 5,5 19:10:12 dup it, then call it the first time with 5,10, and the second time with 10,5 19:10:45 :noname can do this, sort of, but it's awkward 19:11:25 like I said, "forth with macros" ;) 19:11:47 naw, forth already has macros 19:12:08 isnt the postpone/immediate combo fullfilling macro function? 19:12:38 you know what I don't know 19:12:43 I'm a forth newie 19:13:12 So am I 19:13:14 :) 19:13:19 it'd result in a pretty different language if you used this feature regularly. it'd be like a sloppy lisp 19:13:31 I just now bits and pieces of ANS Forth, not the whole 19:13:37 but you could always write orthodox forth in such a scheme too 19:13:44 no pun intended ;) 19:14:00 what I mean to say is sprongie's syntactic ambiguity could be solved at readtime instead of by adding two-way functionality 19:14:04 lol 19:14:15 er "added" not "solved" 19:14:36 thinking of calling it "phrase", since you'd contain words within phrases before evaluating them 19:14:38 that sentence didn't really come out well... 19:14:45 hmmm 19:15:13 sort of a loose usage of the term "phrase", but it's got a poetic ring to it too :) 19:15:43 heh 19:16:43 and it's a bit like the original smalltalk ... even more spoken language metaphors there 19:17:51 * amca_at_cins coded in smalltalk at uni. He didnt like how *everything* was an object. Maybe if smalltalk had more of a RPN style he would have liked it more 19:18:03 smalltalk-72 was a lot more like forth 19:18:05 concatenative anyway 19:18:33 * amca_at_cins hasnt seen smalltalk-72 19:18:57 it's unwriteable with most keyboards. it used quite a few funny symbols 19:19:22 interesting 19:20:24 http://www.ddj.com/documents/s=9938/ddj0601c/0601c.html I just read this 19:20:33 * amca_at_cins looks 19:21:20 Steele briefly mentions non-ascii characters in programming languages, etc 19:22:36 http://www.bitsavers.org/pdf/xerox/alto/Smalltalk72_Manual.pdf 19:23:28 smalltalk's characters were kind of silly. steele was talking about actual mathematical notation type operators, like a "parallel do" operator or something 19:23:36 --- join: asymptote (n=weldon@pool-68-239-94-232.res.east.verizon.net) joined #forth 19:23:50 okay.... 19:25:42 lol, is that a little hand pointing right with it's index finger? 19:25:53 yep 19:26:02 personally my favorite is the smiley 19:27:07 i think i'm going to write my java apps with a smiley-face variable. maybe use it for loop indexes so it's all over the place 19:27:20 take advantage of those unicode identifiers 19:27:51 in fact i could give all my variable and method and class names different wingdings 19:27:53 hehe 19:28:24 "A picture is a thousand words" Hyper self documenting code ;) 19:29:24 too bad there aren't any obscene gestures in the unicode wingdings codepoint range 19:30:18 hehe 19:30:24 of course there's identical graphemes all over the place, and java doesn't normalize them 19:30:31 you could have a bird for exceptions 19:30:37 so i could have probably a dozen *different* variables named A 19:30:43 lol 19:30:51 if (A != A) { A.A(A) } 19:30:56 you would need a hex editor to read it 19:31:26 i'm so amazed there aren't obfuscated java code contests that take advantage of this 19:32:52 if (A != A) { // Paging Ayn Rand, Ms Rand, please come to the courtesy desk and blow me ... 19:33:09 lol 19:33:46 one of these days someone's going to look at these irc logs and hunt me down for it 19:34:25 not sure if #forth is on meme's logs tho 19:35:01 Why would they hunt you down? 19:44:51 i dunno, some ayn rand lover i guess 19:46:57 Ah. Poor novelist fans 19:49:34 What is she famous for writing? She does erotic fiction eh? 19:49:42 fountainhead 19:49:45 atlas shrugged 19:49:46 etc. 19:49:55 stuff you are supposed to read when you're 14 and still truly libertarian 19:51:10 does "truly libertarian" = "anarchist"? 19:51:30 famous for building a philosophy around such novel and enlightening concepts as "A = A" 19:51:47 mostly it's stuff like "A = A, therefore taxes are bad and the poor should starve" 19:51:59 amca_at_cins, not sure; I just know Rand fans are the kind of people who like Ann Coulter and think they got everything they have on their own 19:52:12 * amca_at_cins doesnt know Ann Coulter 19:52:19 she's kind of like nietzsche without the sense of humor 19:52:22 or brains 19:52:28 or compassion 19:52:29 lol 19:52:35 or penis 19:52:42 well that's debateable 19:52:49 lol 19:52:55 Ayn Rand is proof that nobody is too ugly to get laid 19:53:48 yeah she was pretty handsome 19:55:24 --- quit: crc (kornbluth.freenode.net irc.freenode.net) 19:55:39 crc: Hi ho 20:00:23 sproingie: lol, you're in #lisp, too 20:11:28 --- join: crc (n=crc@pdpc/supporter/active/crc) joined #forth 20:11:28 --- mode: irc.freenode.net set +o crc 20:11:50 crc: Hi ho 20:20:20 --- join: thinkinginbinary (n=tom@pool-68-163-187-81.bos.east.verizon.net) joined #forth 20:20:27 --- part: thinkinginbinary left #forth 20:20:53 nballen: yep, i like lisp 20:22:17 * amca_at_cins doesnt like lisp too much. Too absract for his tatses 20:22:22 (tastes) 20:22:32 lisp's pretty concrete 20:22:37 scheme on the other hand, that gets abstract 20:23:04 * asymptote loves lisp 20:23:07 but I hate scheme 20:23:08 go figure 20:23:45 What's that functional version of Forth? Hope? Joy? 20:24:40 Joy I think 20:26:32 hmm, I don't hate scheme, but I certainly do appreciate 2 namespaces 20:26:51 I hate the single namespace 20:27:03 and I hate false and and empty list being different 20:27:45 sproingie: in what way is lisp concrete that scheme isnt? 20:27:51 amca_at_cins: do you like any functional or declarative languages? 20:28:12 amca_at_cins: it has more stuff built-in for practical work 20:28:38 nballen: What is an example of a declarative language? 20:28:39 clos for example 20:28:47 prolog 20:28:47 Haskell and ML look interesting to me 20:28:53 Dont like prolog 20:29:03 prolog is the "most" declaractive I would say 20:29:05 sproingie: What does clos do? 20:29:05 --- quit: crc (Read error: 110 (Connection timed out)) 20:29:15 amca_at_cins: common lisp object system 20:29:27 clos is the oldest standardized OO system in the world 20:29:34 big honking complex oop framework. blows most other oo frameworks out of the water 20:29:36 and part of common lisp 20:29:45 sproingie: Can you right a specific byte to a specific memory location in lisp? 20:29:49 multiple dispatch (MAN does that spoil you if you go somewhere else) 20:29:50 amca_at_cins: yes 20:29:54 amca_at_cins, yes 20:30:02 not portably tho 20:30:08 it varies by compiler 20:30:10 understandably 20:31:04 how would you write the "C" equivelant of '*(0x12) = 0x34' ? 20:31:16 amca_at_cins: SQL comes first to mind as an example of declarative, I think I missed the window to chime in to the conversation though... ;) 20:31:29 nballen: hehe. tnx 20:32:23 amca_at_cins, well in CMU's lisp they have an assembler subsystem that you could use; I think SBCL does the same 20:32:32 ah 20:32:51 amca: what does that do? (I don't ever use c) 20:32:53 Mostly you would use the debugger 20:32:57 so there is nothing like Forth's '!' or BASIC's POKE? 20:33:11 nballen, the word at address 0x12 is given the value of 0x34 20:33:16 it would be like in forth: 20:33:18 ah 20:33:20 hex 12 34 ! 20:33:43 ok 20:33:46 not in common lisp. all the compilers have assemblers 20:34:09 sproingie well, clisp doesn't 20:34:16 lisps don't *have to* go to native code 20:34:21 it's just that most of them do 20:34:24 clisp is a bytecode vm 20:34:26 wouldnt it be 'hex 34 12 !'? 20:34:33 amca_at_cins, yes, sorry 20:34:45 I reversed ! in my system because it makes more sense to me that way 20:34:50 Understandable. I had to look it up to be sure :) 20:35:07 amca_at_cins: you would make a big huge application, then you would later rewrite the bottlenecked code in c and use '*(ox12) = 0x34' 20:35:13 :) 20:35:17 most lisps are converging to uffi to at least interface c in a standard way 20:35:37 commercial lisps tend to have their own, which usually work better 20:35:39 how many lisps are there anymoer? 20:35:44 too damn many 20:35:45 does anybody use MCL or Clisp anymore? 20:35:46 nballen: Most C compilers dont let you dereference literals though 20:35:53 it's pretty much just allegro and sb/cmu 20:36:05 nballen: Embedded C compilers usually have to though I think 20:36:10 allegro and lispworks 20:36:34 yeah, I don't know anything about C... it's like not being able to speak english 20:36:44 clisp has really fast numerics, since it uses some well tuned c libraries for that 20:36:45 ioccc has the great line x[10] == 10[x] 20:36:47 I loved that 20:36:59 I've been looking more and more at gcl lately 20:37:06 gcl is pretty bad 20:37:17 but I think their idea was sound 20:37:27 why do we seem to talk about lisp everywhere but #lisp? 20:37:33 lol 20:37:57 factor's pretty neat, it's kind of a fusion of lisp and forth 20:37:58 Because it is a bit hard to understand what you are saying with a simulated speech impediment 20:38:11 lithp is good a prothething lithtth 20:38:17 shouldnt it be #lithp? 20:38:25 lithp is a language 20:38:32 O_o 20:38:38 esoteric? 20:38:40 somewhat 20:38:47 it's common lisp with s/s/th/g 20:38:55 factor didn't really speak to me... 20:39:09 lol 20:39:11 sweet 20:39:41 factor's moving toward vectors and away from lists... becoming a bit more apl-ish there 20:40:16 vectors, as opposed to lists allow for more parallelism dont they? 20:40:37 frankly i can't get used to the rpn syntax everywhere. even forth's IF statements are kept in reasonably normal order 20:40:54 factor places the condition and the 'if' word at opposite ends, with any amount of quotation inbetween 20:41:22 amca_at_cins: i doubt factor will go parallel. the vectors are just smaller and faster in general 20:42:21 As in an array instead of linked list implementation? 20:42:26 yep 20:42:35 * amca_at_cins nods 20:42:57 frankly i think it's a mistake for interpreted code. good for compiled tho 20:43:04 it should support quotations with both representations 20:43:08 --- quit: asymptote ("Leaving") 20:43:20 array implementaion is bad for interpreted? 20:43:48 bad for doing clever tricks that build up or destructure quotations at runtime 20:44:05 then again it's not like factor has pattern matching, so it never mattered that much 20:46:59 factors lists are immutable... 20:47:04 wierd 20:47:25 immutable data structures are pretty common in functional languages 20:47:39 factor has roots in joy 20:47:56 --- join: crc (n=crc@pdpc/supporter/active/crc) joined #forth 20:47:56 --- mode: ChanServ set +o crc 20:48:45 i really should learn how to write a lisp reader in factor and write a lisp dialect with factor's runtime 20:49:06 yeah... but why would you want a purely functional _stack_based_ language? 20:49:25 i guess if you're into linear combinator logic 20:49:32 factor's definitely not "pure" 20:49:35 is joy purely or mostly functional? 20:49:40 purely 20:49:56 hm, I'll get to it eventually... :) 20:50:11 aside from being able to do i/o of course, since it's not restricted by lazy evaluation and whatnot 20:50:35 joy's mostly just a toy tho. you can explore pretty much everything it does with a subset of factor 20:50:45 and get a spiffy ui to go with it 20:51:19 harumph 20:51:24 Anyone feel like explaining this quote to me? "in a purely functional program, the value of a variable never changes, and yet, it changes all the time! A paradox!" 20:51:38 amca_at_cins: i dunno, someone being clever 20:51:40 I understand about the variable never changing - being immutable and all 20:51:47 From 20:51:50 purely functional languages don't really even have variables per se 20:51:57 yeah, "referential transparency"... 20:51:58 they have bindings, which are names for values 20:52:02 http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html 20:52:38 And they can change which number they refer to, but not the actual number istelf? 20:53:23 yunno joel, starting a pointless bitter curmudgeonly rant by stating that you're making a pointless bitter curmudgeonly rant doesn't make it any less of a pointless bitter curmudgeonly rant 20:53:28 amca_at_cins: think of the execution of a purely functional language to be an evaluation of what would happen _if_ the code _were_ to be evaluated 20:53:44 heh 20:54:02 nothing but a "programmers were real men IN MY DAY" rant 20:54:08 Is ML a purely functional lang? Or am I thinking of Miranda? 20:54:11 i stopped paying attention to joel long ago 20:54:25 amca_at_cins: SML is not pure. haskell is. 20:54:27 Why was that? 20:54:34 ah 20:54:53 because he pontificates endlessly about The One True Way, yet I haven't seen his software taking the world by storm 20:56:23 Fair enough 20:56:32 LOL: "The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world's largest massively parallel supercomputer. " 20:56:42 he sprinkles some interesting points about how FP is good, but then runs right off the rails and says how freaking *segmentation faults* are some kind of programmatic kyosaku intended to open your eyes to the true reality of nature 20:56:52 and how this fancy-dancy OOP stuff is just blinding people to it 20:57:01 lol 20:57:25 "purely functional programs have no side effects and are thus trivially parallelizable" is that true? 20:57:29 yes 20:57:38 you can execute pure functional code in any order 20:58:00 afk, brb 20:58:16 ok 21:00:04 don't you have to learn multiple programming languages in a typical cs course? 21:00:10 (was an english major) 21:01:03 Usually yeah 21:01:13 Not in the first year though 21:01:30 god, I hope university cs departments aren't spitting people out into the world with nothing but java under they're belts... 21:01:53 nballen: May I ask what langs you know? 21:02:14 oh yeah, sorry I responded to your message before 21:02:22 in IM? 21:02:30 I don't know why irc doesn't let me do private messages... 21:02:37 are you identifird? 21:02:37 y 21:02:43 erm..identified 21:02:58 cause you are only allowed to IM if you are registered and identified 21:03:04 To save being IM spammed 21:03:35 I use common lisp and haskell frequently... I wouldn't claim to "know" any other languages 21:03:48 * amca_at_cins nods 21:03:55 just bits and pieces while 'packing' 21:03:57 :) 21:04:00 Are you aquainted with other langs? 21:04:03 y 21:04:15 Forth I assume you have a passing aquaintence with. 21:04:22 Just curious, sorry 21:04:28 no worries 21:04:30 what about you? 21:04:34 Wondering where your perspective on programming comes from 21:04:42 comon lisp was my first language 21:04:46 I'm a rare beast 21:04:51 :) 21:04:54 First played around with BASIC 21:04:58 interesting 21:05:17 Learned Pascal, then smalltalk in uni 21:05:42 bumped up against Java for a while, know enough about C for it to not look like a foriegn language 21:05:52 snuggling up to Forth currently 21:05:59 haven't done any smalltalk, squeak looks cool though... 21:06:23 I have been playing with smalltalk so much of late I get pissed off when my calculater doesnt use postfix :) 21:06:48 eheh, you can get rpn calculators... 21:06:49 smalltalk is a very pure OO as compared to C++. Java is modelled off of it 21:07:05 I know. But dont they be expensive HPs? 21:07:46 you know what, I've never even taken a college level math class I do my math by hand or with lisp, I don't know... 21:07:54 I have a programmable calc that I am planning to code a Forth for. It runs a z80, so it should be possible to port one of the availible libvs 21:08:14 would be cool 21:08:17 I forgot about basic arithmetic when I got a calc at school 21:08:31 I just refeshed my memory yesterday about how to do long division 21:08:42 gonna go off for a while. nite all 21:08:45 * sproingie waves 21:08:47 nite 21:08:48 * sproingie & 21:09:04 night! 21:09:16 sproinie &? 21:09:37 what does that translate from into English? 21:09:43 (maybe this is a pointer...) 21:10:16 amca_at_cins: saying smalltalk is "pure OO" is silly :) 21:10:20 That was what I was thinking 21:10:28 amca_at_cins: smalltalk uses block closures as much as any functional language does 21:10:29 slava: Oh? 21:10:33 is common lisp "pure OO"? 21:10:53 i don't know, i think programming paradigm labels don't mean much 21:10:56 I thought Lisp was pure functional originally? 21:10:58 nobody can define OOP 21:11:10 I disagree myself 21:11:19 what is OOP? 21:11:26 I think we may have had this discussion before 21:11:38 I'd like to label myself a "pragmatic" programmer 21:11:39 * amca_at_cins 's mem is so bad he cant remember it though 21:11:39 :) 21:11:42 do you know CLOS? 21:11:48 Im more SE >.> 21:11:52 amca_at_cins: see last night and virl 21:11:57 slava: nope 21:11:58 is it OOP? its very different from smalltalk... but its still OOP 21:12:22 slava: Could you polease explain block closures to me? 21:12:29 do you know lambdas in lisp? 21:12:34 nballen: Where is the url for htat? 21:12:37 its the same concept 21:12:49 I know lambdas in general - anonyomous functions 21:13:04 the syntax in smalltalk is [|] 21:13:14 its the same as (lambda (...) ...) 21:13:23 I don't know, I just remember him thinking you were starting a language war by defending java... 21:13:38 where == ? 21:13:45 inputs to the closure 21:13:51 Ah 21:14:02 i'm coding some obj-C right now, i won't consider this program OOP at all 21:14:03 so parameters? 21:14:09 its just a bunch of structs with random methods tossed in 21:14:31 amca_at_cins: in factor, anonymous functions are simpler than list 21:14:32 lisp* 21:14:48 for example, you multiply the top of the stack by 2 using 2 * 21:14:53 an anonymous function that does this is [ 2 * ] 21:15:06 3 [ 2 * ] call is the same as 3 2 * 21:15:26 but you can pass the [ 2 * ] around on the stack, or take it apart and make a new anonymous function; its just a list 21:15:37 OOP is more of a style. A way of programming. Languages that call themselves OOP languages purport to make programming in OOP easier. It is possibly to code OOP in C. 21:16:39 The Forth concept of components seems to be very similar to OOP to me, except that the data and code are not necessarily constrained to be tightly meshed and you dont have inheritance 21:17:04 From what I figure out, OOP is just structured ADT with inheritence. 21:17:29 Any of what I say sound incorrect? Im pulling this off of the top of my head currently 21:18:56 Oh, and polymorphism 21:19:42 http://en.wikipedia.org/wiki/Object_Oriented_Programming#Fundamental_concepts seems to list it quite well to my eyes 21:21:00 lol @ OOP as a new paragigm, point of view or marketing term 21:21:45 * amca_at_cins nods 21:25:40 mms://streaming.fem.tu-ilmenau.de/internet/22c3/2005-12-27_-_22c3_-_Saal3_Writing_better_code_(in_Dylan)_-_Fast_development_of_object-oriented_functional_programs/22c3_saal3_6.wmv 21:26:06 there is a great quote in this kind of about subject oriented vs object oriented thinking 21:27:19 nballen: What is it? 21:28:16 talking about multimethods: he says is sex an action of men that is acted upon women, or an action of women acted upon men, and was sex between two women or two men the same as etc etc etc 21:28:55 making a good point... in clos/dylan methods are not attached to objects they are attached to generic functions 21:32:27 --- quit: nballen () 21:36:54 --- join: nballen (n=nballen@adsl-69-111-248-132.dsl.renocs.pacbell.net) joined #forth 21:36:59 whoops 21:37:10 have to be more careful closing programs 21:38:00 hehe 21:38:04 I hate it when I do that 21:38:32 I tend to do that when switching from Linux to Win (CTRL-F4 for virtual desktop #4) 21:39:13 lol 21:39:17 Is it possible to rwrite a purely functional language in postfix? 21:39:47 postfix the language or postfix the notation? 21:39:48 ;) 21:40:05 well, I think someone just claimed joy was purely functional 21:40:11 but I can't back that u[ 21:40:12 up 21:40:20 the notation 21:40:32 Ill double check 21:40:45 no... there is no postfix... 21:40:49 what am I thinking of... 21:41:31 postscript? 21:41:35 I don't know 21:42:27 Postscript is a concatenative lang 21:43:18 that's probably it... 21:43:29 i'm getting senile 21:44:50 I got into Forth through it 21:47:59 cool, its used for making documents right? 21:48:02 like .ps files? 21:49:00 yep 21:49:13 open up a ps file and you see postfix :) 21:49:16 text :) 21:54:25 nballen: joy is purely functional 21:54:43 ok, thanks 21:56:57 Is joy post or prefix? 22:00:32 postfix 22:00:44 factor's has a purely functional subset which is similar to joy 22:01:26 ah 22:02:11 --- quit: sproingie (Remote closed the connection) 22:02:15 One thing I dont understand about pure functional languages: How can they generate time based output? 22:03:21 (eg animation) My understanding of pure functional languages is that they do not allow for side effects. My brain is having a hard time figuring how to do time/event based programming in a functional as opposed to iterative way 22:05:11 you would use recursion 22:06:00 For instance in my mind, how do you write to a frame buffer different frames over a time period if there are no side effewcts allowed 22:06:00 haskell and I'm sure some other languages would use something horrible called a monad to hide/simulate/whatever side effects 22:06:23 Ah 22:06:25 Hmmm 22:06:55 a monad is like a lang primitive? 22:07:00 http://en.wikipedia.org/wiki/Monads_in_functional_programming 22:07:08 as in you can not deconstruct it further in functional langs 22:07:10 thanks 22:08:30 if I understand your question correctly, you would have a parameter in your recursive function for the frame buffer and when you recursed you would call the fun with the expanded buffer 22:10:28 so at the end of DisplayFrame, you would have a call to DisplayFrame, and at the start or end have a monad that pauses for the required amount oif time 22:10:43 no no... 22:10:48 forget monads for the moment 22:10:54 ok 22:10:58 I really ought to learn Haskell 22:11:34 In Haskel, how would you call DisplayFrame once a second? 22:12:18 your function would pause for the required amount of time, then if there was a new frame it would recurse with the old buffer + the new frame, otherwise it would just call itself with its original arguments 22:13:36 How would you get the function to pause? 22:14:12 um, there's a getClocktime function 22:14:35 off the top of my head I don't remember what a wait or a pause for n seconds function is 22:14:53 you would actually use a monad 22:16:51 And the monad would create the side-effect of waiting? 22:16:57 ok here: http://www.nomaware.com/monads/html/iomonad.html 22:18:15 thanks 22:18:26 I'm not sure if it actually helps 22:18:44 none of this stuff really defines what a monad is... 22:18:50 well Ill see :) 22:19:43 "Input/Output is incompatible with a pure functional language because it is not referentially transparent and side-effect free. The IO monad solves this problem by confining computations that perform I/O within the IO monad." 22:19:47 Ah, just as I thought 22:20:06 yeah, but it's not really a black box 22:20:13 its trickery 22:21:26 A fudge? 22:21:57 function x gets user input, but behind the vale of "a function does something and returns a value" 22:22:20 monads are just dealing with the proceduralness of io 22:23:22 vale = veal 22:23:25 oops 22:23:28 veil 22:23:37 lol 22:23:41 yes, you're right 22:23:49 people have made video games and all sorts of things in haskell 22:23:55 * amca_at_cins nods 22:23:57 and whoever those people are they are crazy 22:24:09 and had way to much time on their hands 22:24:11 ;) 22:24:14 So it is impossible in a purely functional language, just like a turing machine 22:24:27 it = IO 22:24:52 What is uyour fave lang? 22:25:21 well imagine if a square, or whatever you want to call it, the turing machine is using isn't written on until right-before it is called... 22:25:42 I'm a lisp bigot, so to speak 22:25:50 but one that keeps quiet 22:26:07 :) 22:26:28 hehe 22:26:38 A non-opinionated bigot? :) 22:27:25 I read a joke somewhere about the british govt didnt implement the turing machine because of its lack of IO and a lack of infinite tapes :) 22:27:38 lol 22:27:40 you can do I/O in a purely functional way 22:29:22 slava: how? 22:29:29 moands are purely functional from the outside 22:29:31 that's the whole point 22:29:41 but on the inside they are not 22:29:57 at some point in every language, the abstractions break down and become machine code 22:30:31 lisp doesn't really have cons cells -- they're just 8-byte blocks managed by the GC. but the abstractions make it appear they exist 22:31:26 Okay. Fair enough point 22:32:00 What are the 8 bytes for? two words? 22:32:11 two pointers... 22:32:30 [car|cdr] ? 22:33:22 yes, which originally stood for "contents of the adress part of the regester" and "contents of the register part of the decrement" or something like that... 22:33:34 * amca_at_cins nods. 22:33:46 a list in lisp is made up of linked cons cells, with the car pointing at the object and the cdr pointing at the next cons 22:33:58 whart does the word cons stand for? 22:33:59 until a cons with a cdr of nil 22:35:08 er... I don't know... I guess I assumed it was in some way a morpheme relating to construct... 22:36:21 * amca_at_cins nods 22:36:24 sounds plausable 22:36:31 :) 22:37:04 in dynamic language circles you often hear 'consing' as a verb meaning to allocate memory, and this is usually a concern when optimizing 22:37:23 I see 22:37:27 if you enter (time (foo bar)) in lisp, it will print the time to run, and the bytes consed 22:37:42 consing = allocate memory to create a new cons 22:38:01 what is the difference between lisp and scheme? 22:39:15 scheme is a dialect of lisp 22:39:34 a lot of people use lisp to refer to common lisp as opposed to scheme though 22:39:46 what differentiates it from CL? 22:40:09 scheme is minimalist and used by academics, common lisp is ugly and powerful and used by applications programmers 22:41:34 Good description :) 22:41:46 eheh 22:41:52 is there an open source version of CL? 22:41:54 common lisp has like 700 defined functions 22:42:00 there is good reason for sceme 22:42:03 scheme 22:42:17 yeah, 4 that I can think of off the top of my head 22:42:30 sbcl, cmucl, openmcl, and clisp 22:42:41 lispworks and acl also have free trial versions 22:43:01 thanks 22:43:10 What is the good reason for scheme? 22:43:22 (the 700 functions) 22:44:56 How many does scheme have? 22:45:19 Doesnt scheme just have a subset of the 700 functions? 22:46:13 scheme only has one namespace and doesn't have a lot of the gross things that are necessary to make things fast, etc 22:46:32 both lisps can be mapped down to the same 7 primitices 22:46:34 primitives 22:46:59 scheme does it more ideally, making less compromises 22:47:46 I see 22:47:53 What are the 7 primitives? 22:48:06 (, ), cdr, car ...? 22:49:15 http://www.paulgraham.com/acl.html <-- at the bottom of the page it provides the first two chapters 22:49:25 * amca_at_cins looks 22:49:32 i've got to go 22:49:37 its been nice talking to you 22:49:38 :) 22:49:48 later 22:49:53 --- quit: nballen () 23:01:36 --- quit: aum () 23:30:58 --- join: amca_ (i=amca@rdlax11-a049.dialup.optusnet.com.au) joined #forth 23:48:22 --- quit: JasonWoof ("off to bed") 23:49:02 --- quit: amca_at_cins (Read error: 113 (No route to host)) 23:53:54 --- join: amca_at_cins (i=amca@rdlax9-017.dialup.optusnet.com.au) joined #forth 23:59:59 --- log: ended forth/05.12.29