2015-04-22T00:00:34Z sethalves quit (Quit: Leaving.) 2015-04-22T00:05:26Z vdamewood quit (Max SendQ exceeded) 2015-04-22T00:12:17Z jeapostrophe quit (Ping timeout: 256 seconds) 2015-04-22T00:22:22Z jao joined #scheme 2015-04-22T00:22:56Z mrowe_away is now known as mrowe 2015-04-22T00:29:13Z _sjs joined #scheme 2015-04-22T00:32:09Z RexButler joined #scheme 2015-04-22T00:32:42Z RexButler: Is there a way to append two lists without doing a reverse in the process? The standard way I can think of doing it does... 2015-04-22T00:35:23Z RexButler: Same goes for map... 2015-04-22T00:36:08Z vdamewood joined #scheme 2015-04-22T00:37:00Z vraid: append? 2015-04-22T00:37:08Z vraid: rudybot: (append '(1 2 3) '(4 5 6)) 2015-04-22T00:37:09Z rudybot: vraid: your sandbox is ready 2015-04-22T00:37:09Z rudybot: vraid: ; Value: '(1 2 3 4 5 6) 2015-04-22T00:37:47Z daviid quit (Ping timeout: 256 seconds) 2015-04-22T00:38:58Z RexButler: I'm implementing my own append procedure 2015-04-22T00:39:03Z jeapostrophe joined #scheme 2015-04-22T00:39:10Z RexButler: using cons and car/cdr 2015-04-22T00:39:22Z RexButler: recursively/iteratively 2015-04-22T00:39:45Z RexButler: It turns out its a lot easier in doing so to reverse one list in the process 2015-04-22T00:39:46Z allfs joined #scheme 2015-04-22T00:39:59Z RexButler: make sense? 2015-04-22T00:40:55Z RexButler: :) 2015-04-22T00:41:36Z jlongster quit (Ping timeout: 240 seconds) 2015-04-22T00:43:16Z vraid: sure 2015-04-22T00:43:30Z vraid: and in that case, no, i can't see how you'd do it without reversing the first list 2015-04-22T00:43:48Z vraid: assuming you want to keep it tail recursive 2015-04-22T00:44:04Z RexButler: Yes, tail recursive 2015-04-22T00:44:08Z RexButler: That's what I thought 2015-04-22T00:44:26Z vraid: you have to get to the end one way or another 2015-04-22T00:45:10Z RexButler: Hmm... so I'm guessing repeated getting the last element would be even slower than a one time reverse? 2015-04-22T00:45:43Z vraid: much, much slower 2015-04-22T00:45:54Z RexButler: Yeah 2015-04-22T00:46:08Z vraid: it turns it from a linear problem into a triangular problem 2015-04-22T00:49:47Z sethalves joined #scheme 2015-04-22T00:50:55Z Vutral joined #scheme 2015-04-22T00:54:31Z RexButler: Can someone why racket would not give a line number in an error message? 2015-04-22T00:54:41Z RexButler: Can someone tell me why ... * 2015-04-22T00:55:15Z RexButler: :( 2015-04-22T00:55:44Z vraid: did you turn off debugging? 2015-04-22T00:56:33Z RexButler: I didn't turn it on, if that's what you are asking. 2015-04-22T00:58:22Z RexButler: (Or in other words, I did not know there was such a thing.) 2015-04-22T00:58:40Z vraid: are you running in command line or drracket? 2015-04-22T00:59:11Z RexButler: command line of course 2015-04-22T00:59:40Z vraid: i don't know in that case, so ask in #racket 2015-04-22T01:00:23Z RexButler: Well, you learn something new every day. I just added "(require racket/trace)" to the top and all is well. 2015-04-22T01:00:35Z RexButler: (wait) 2015-04-22T01:03:39Z jeapostrophe quit (Ping timeout: 276 seconds) 2015-04-22T01:05:44Z Pixel_Outlaw: Anyone notice that TinyScheme preforms a lot slower in Gimp? There is actually a good pause when recursing through a high number. 2015-04-22T01:06:18Z Pixel_Outlaw: Wonder if they compiled it funny... 2015-04-22T01:07:00Z Gianormagantrous joined #scheme 2015-04-22T01:07:00Z Gianormagantrous quit (Changing host) 2015-04-22T01:07:00Z Gianormagantrous joined #scheme 2015-04-22T01:07:40Z RexButler: What was the recursion? 2015-04-22T01:07:50Z RexButler: IE what does the code look like? 2015-04-22T01:07:58Z Pixel_Outlaw: (define (f left) (if (> left 0) (f (- left 1)))) 2015-04-22T01:08:06Z Pixel_Outlaw: Give it (* 640 480) 2015-04-22T01:08:21Z Pixel_Outlaw: Then try in your terminal. 2015-04-22T01:08:48Z jlongster joined #scheme 2015-04-22T01:10:41Z Pixel_Outlaw: When I try TinyScheme in my terminal outside Gimp it runs much faster. Not sure why. 2015-04-22T01:10:58Z RexButler: Hmm... I would expect it to be slowish either place 2015-04-22T01:11:10Z Pixel_Outlaw: TinyScheme is slow. 2015-04-22T01:11:19Z Pixel_Outlaw: But, somehow in Gimp it is much slower. 2015-04-22T01:11:36Z RexButler: you are saying (define (f left) (if (> left 0) 0))) in a really slow way 2015-04-22T01:11:55Z RexButler: Err, close 2015-04-22T01:12:25Z RexButler: Maybe (define (f left) (max 0 left)) 2015-04-22T01:13:08Z RexButler: No, (define (f left) (min 0 left)) 2015-04-22T01:13:20Z Pixel_Outlaw: Are you trying this in Racket? 2015-04-22T01:13:31Z jeapostrophe joined #scheme 2015-04-22T01:14:02Z RexButler: My code or yours? 2015-04-22T01:14:03Z jlongster quit (Ping timeout: 276 seconds) 2015-04-22T01:14:10Z Pixel_Outlaw: No my code is fine for Scheme. 2015-04-22T01:14:25Z Pixel_Outlaw: I'm saying it is executing slower inside Gimp. 2015-04-22T01:14:47Z vraid: RexButler: i don't think the algorithm is the point here 2015-04-22T01:14:47Z Pixel_Outlaw: Via "Script Fu" which is actually TinyScheme 2015-04-22T01:15:27Z Pixel_Outlaw: I'm just wondering if anyone has noted how much slower Gimp is with TinyScheme. 2015-04-22T01:15:29Z Pixel_Outlaw: :) 2015-04-22T01:15:58Z RexButler: So you made it slow on purpose to demonstrate something? 2015-04-22T01:17:14Z RexButler: Maybe it's just recursion like that which is slow for TinyScheme... (I'm not familiar with TinyScheme myself) 2015-04-22T01:18:08Z RexButler: Pixel_Outlaw: Do you see my point about how (define (f left) ...) could be improved? 2015-04-22T01:19:37Z Pixel_Outlaw: My function was minimal code to do recursion 307200 times. Not to do any kind of subtraction. 2015-04-22T01:20:14Z RexButler: Right. :) 2015-04-22T01:20:21Z RexButler: Yeah, I can't help you on that one. 2015-04-22T01:24:59Z joneshf-laptop quit (Remote host closed the connection) 2015-04-22T01:25:06Z jlongster joined #scheme 2015-04-22T01:31:09Z turtleman_ joined #scheme 2015-04-22T01:32:58Z BossKonaSegwaY joined #scheme 2015-04-22T01:34:55Z RexButler: Okay, help: 2015-04-22T01:35:23Z RexButler: http://sprunge.us/NfhE 2015-04-22T01:36:53Z vraid: RexButler: iterate takes 2 arguments, you're giving it 1 2015-04-22T01:37:19Z vraid: at line 46 2015-04-22T01:38:29Z RexButler: Are you sure? Look at the ()'s 2015-04-22T01:38:40Z vraid: (iterate (cdr xs)) 2015-04-22T01:39:05Z RexButler: Oops 2015-04-22T01:39:31Z Riastradh joined #scheme 2015-04-22T01:40:22Z fungle joined #scheme 2015-04-22T01:40:58Z RexButler: vraid: I kept fixating on the first occurance 2015-04-22T01:41:42Z {[]}grant joined #scheme 2015-04-22T01:44:51Z RexButler: Okay, feel free to examine and critique my code: 2015-04-22T01:44:52Z RexButler: http://sprunge.us/iXVS 2015-04-22T01:44:56Z RexButler: Please... 2015-04-22T01:47:24Z vraid: RexButler: you can omit 'f' from the local function in my-map 2015-04-22T01:48:11Z RexButler: Yes... thanks 2015-04-22T01:48:26Z RexButler: Is the define within a define like so okay? 2015-04-22T01:48:38Z RexButler: I don't know if that's the standard way to do it 2015-04-22T01:49:00Z RexButler: (I was practicing rewriting stuff in tail-recursive form.) 2015-04-22T01:49:14Z vraid: in racket it's fine 2015-04-22T01:49:36Z RexButler: Also, I called all the inner functions "iterate" for lack of another option 2015-04-22T01:49:41Z vraid: but in other implementations it might not be so 2015-04-22T01:49:52Z vdamewood quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2015-04-22T01:49:55Z RexButler: Which is annoying when racket doesn't give me line numbers 2015-04-22T01:50:02Z vraid: there's no established standard there either, people call them different things 2015-04-22T01:50:05Z kephra: define or let is a question of taste, RexButler - my question here is, if its possible to factor all iterate functions into one 2015-04-22T01:50:14Z RexButler: and just references "iterate" 2015-04-22T01:50:44Z kephra: more typical scheme style would be letrec I guess 2015-04-22T01:50:51Z mooe quit (Quit: Connection closed for inactivity) 2015-04-22T01:50:56Z kephra: but define works same 2015-04-22T01:51:08Z kephra: extends the current environment 2015-04-22T01:51:25Z vraid: RexButler: there's another way to write it http://pasterack.org/pastes/95341 2015-04-22T01:52:12Z kongtomorrow quit 2015-04-22T01:52:53Z RexButler: Well, it looks like everything is an instance of accumulate, but that's the point of the exercise 2015-04-22T01:53:09Z {[]}grant quit (Ping timeout: 245 seconds) 2015-04-22T01:53:42Z RexButler: Is that what you meant by "all iterate functions into one", kephra? 2015-04-22T01:54:05Z RexButler: (Essentially what I'm trying to do is recreate stuff I read in SICP from memory) 2015-04-22T01:54:30Z kephra: yes, all iterate function look similar - I would try to combine them into one common one 2015-04-22T01:54:44Z grant- joined #scheme 2015-04-22T01:55:43Z Pixel_Outlaw: RexButler if you want the true SICP experiance you need a screetching MIDI version of Jesu Joy of Man's Desiring when you sit down to work. 2015-04-22T01:55:59Z Pixel_Outlaw: ...assuming you've seen the videos. :) 2015-04-22T01:56:14Z RexButler: I bought HTDP and was sorely disappointed. 2015-04-22T01:56:20Z RexButler: No, Pixel_Outlaw, I haven't 2015-04-22T01:56:47Z RexButler: So SICP is _THE_ book 2015-04-22T01:57:10Z Pixel_Outlaw: I usually use Common Lisp but have been drawn into Scheme via writing my own Gimp plugins. You might like The Little Schemer for another workbook. 2015-04-22T01:57:44Z RexButler: There are fewer books on Scheme than one might expect... perhaps that is a good thing. 2015-04-22T01:58:17Z vraid: RexButler: for instance: http://pasterack.org/pastes/93613 2015-04-22T01:58:40Z Pixel_Outlaw: Well people seem to have SPS or Scary Paren Syndrome where they get turned off before even trying the Lisp family. 2015-04-22T01:59:31Z Pixel_Outlaw: It's all Java, C#, PHP and Python these days for books... 2015-04-22T01:59:49Z RexButler: It's not so bad, once you get used to it (the ()'s). Assuming of course you have an editor that highlights matching parens and you use vim's % key a lot. 2015-04-22T01:59:54Z c74d3 is now known as c74d 2015-04-22T02:00:46Z RexButler: Can you do cool stuff with scheme with Gimp? 2015-04-22T02:01:03Z Pixel_Outlaw: It is...limited. 2015-04-22T02:01:07Z kephra: RexButler, yeah 2015-04-22T02:01:29Z RexButler: LInks to cool pictures would be appreciated. :) 2015-04-22T02:01:30Z Pixel_Outlaw: Mostly to just calling the tools. You *can* do per pixel operations on images but it is far too slow to be of use in that way. 2015-04-22T02:02:00Z RexButler: I learned to program by doing pixel stuff. But that was back in the DOS 320 x 240 x 256 color days. 2015-04-22T02:02:34Z RexButler: Now I also want to know why scheme in Gimp is slow. 2015-04-22T02:03:14Z grant- is now known as {0}grant 2015-04-22T02:03:49Z Pixel_Outlaw: I don't have much to show per se. But I was working on a LOGO like library a while back. 2015-04-22T02:04:17Z Pixel_Outlaw: https://github.com/RyanBurnside/GIMP-Turtle 2015-04-22T02:04:21Z kephra: http://paste.lisp.org/display/147327 <- RexButler example of a Gimp/Scheme code I'm using for ages 2015-04-22T02:04:33Z Pixel_Outlaw: This was very early Scheme for me. Probably a lot of taboos in there. 2015-04-22T02:05:11Z kephra: e.g. one can use to batch convert files 2015-04-22T02:05:20Z turtleman_ quit (Ping timeout: 250 seconds) 2015-04-22T02:05:57Z Pixel_Outlaw: Usually it is used to manipulate the existing tools rather than do per pixel work. 2015-04-22T02:06:28Z Pixel_Outlaw: Takes 20 seconds to fill a 64x64 pixel square for example - very very bad. 2015-04-22T02:06:38Z RexButler: Hmm... I wonder what cool programs with scheme/lisp extensions I should try. 2015-04-22T02:06:51Z kephra: a scheme fast enough for pixel pushing would be nice - then gimp would be like an emacs for graphics 2015-04-22T02:07:01Z Pixel_Outlaw: kephra, that is my dream! 2015-04-22T02:07:19Z Pixel_Outlaw: I'd love per pixel operations, they do seem to offer it for Python in Gimp though. -_-; 2015-04-22T02:07:35Z kephra: imho, scheme in gimp has same role as in autocad - an embedded scripting language for gurus 2015-04-22T02:07:46Z Pixel_Outlaw: Yes... 2015-04-22T02:08:01Z vraid: that's neat, i didn't even know gimp used scheme 2015-04-22T02:08:21Z kephra: most autocad users do not know how to access the lisp, vraid 2015-04-22T02:08:29Z Pixel_Outlaw: I get the impression that the developers kind of include it for historic reasons but don't really fully understand it. 2015-04-22T02:08:30Z RexButler: You can do some crazy cool stuff with python and it's math libraries with just a few lines of code. 2015-04-22T02:08:47Z vraid: the downside being that you have to use python :| 2015-04-22T02:08:52Z RexButler: haha 2015-04-22T02:08:58Z pjb: You can do some crazy cool stuff with lisp and it's math libraries with just a few sexps of code. 2015-04-22T02:09:17Z Pixel_Outlaw: I don't mind Python at all. However I'd prefer Common Lisp to Python. 2015-04-22T02:09:26Z RexButler: I like Ruby 2015-04-22T02:09:32Z RexButler: But I don't mind python 2015-04-22T02:09:44Z pjb: Yes, but ruby is matzacred lisp, so let's forget it. 2015-04-22T02:10:23Z Pixel_Outlaw: Really when you look back to the late 60's they really got LISP right the first time. Well, for the most part. 2015-04-22T02:10:29Z Pixel_Outlaw: Elegance through s-expressions. 2015-04-22T02:10:45Z RexButler: As long as it's not PHP, I say {nightmarish devil shudder} 2015-04-22T02:10:46Z Pixel_Outlaw: Even though there were M-expressions then 2015-04-22T02:11:00Z pjb: never implemented. 2015-04-22T02:11:41Z kephra: when we come to hype languages, I want to finish a blog: The evil of McEval and the curse of a little Smalltalk 2015-04-22T02:12:18Z kephra: St/80 was 35 years to early - since then a new language is hyped every few years - each one a step closer to lisp or smalltalk 2015-04-22T02:12:29Z pjb: http://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/index.html 2015-04-22T02:12:30Z rudybot: http://tinyurl.com/k6n8gb6 2015-04-22T02:12:33Z pjb: until now. 2015-04-22T02:13:08Z RexButler: I want to learn Smalltalk for the same reason I'm learning Scheme 2015-04-22T02:13:13Z RexButler: to broaden my mind 2015-04-22T02:13:31Z RexButler: Language snobs tend to love it, so I figure I better try 2015-04-22T02:13:33Z Pixel_Outlaw: pjb I have a book from 1970's where they have stuff outside the parens but I think we discussed it before. Don't recall what you said. 2015-04-22T02:13:55Z fungle quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2015-04-22T02:13:56Z kephra: but looking at early implementation I see a repeating pattern: the code looks as of someone read SICP and alSt, decided that an own language is easy, and repeated all errors out of the book 2015-04-22T02:14:06Z pjb: Pixel_Outlaw: keyword: "implemented". 2015-04-22T02:14:36Z RexButler: alSt? 2015-04-22T02:14:45Z kephra: alSt = a little Smalltalk 2015-04-22T02:15:09Z RexButler: Recommend? 2015-04-22T02:15:13Z kephra: yeah! 2015-04-22T02:15:23Z kephra: and free to download also 2015-04-22T02:15:27Z RexButler: As a first book on Smalltalk? 2015-04-22T02:15:30Z fungle joined #scheme 2015-04-22T02:15:36Z kephra: if you have a C Compiler 2015-04-22T02:15:44Z Pixel_Outlaw: I think there is quite a bit of Lisp zealotry actually. :) Maybe not as bad as the Rust folk but still plenty out there. 2015-04-22T02:15:48Z saul: Pixel_Outlaw, the most likely reason Script-fu is slower than TinyScheme is that garbage collection takes more time to handle the thousands of bindings to the Procedural DataBase. 2015-04-22T02:15:53Z kephra: alSt teaches how to write a !TOY! Smalltalk implementation 2015-04-22T02:16:08Z Pixel_Outlaw: saul I was thinking that might be a possibility... 2015-04-22T02:16:13Z pjb: gst works nicely. You can write your unix tools with gst. 2015-04-22T02:16:50Z kephra: RexButler, a lot of people coming from C understand Smalltalk, after they realize how it implemented 2015-04-22T02:17:45Z Pixel_Outlaw: It is very important to not try and force every language to be written like C. Too many people try to force everything they learn into C... 2015-04-22T02:18:00Z Pixel_Outlaw: Possibly why Scheme/Lisp blows minds. 2015-04-22T02:18:22Z Pixel_Outlaw: You can kind of get away with it using do and set!... 2015-04-22T02:18:32Z kephra: a large part of alSt is written in Smalltalk 2015-04-22T02:18:53Z kephra: the result runs on an Atari or Amiga - with about 300kb left for bytecode image 2015-04-22T02:19:11Z echo-area joined #scheme 2015-04-22T02:19:20Z kephra: ... of course it also runs on modern computers 2015-04-22T02:19:29Z RexButler: On my short list to learn: Haskell, hardcore C, and Smalltalk 2015-04-22T02:19:35Z kephra: but alSt is similar age as clisp 2015-04-22T02:19:51Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-04-22T02:20:01Z kephra: RexButler, you might consider Forth or Postscript 2015-04-22T02:20:19Z kephra: but its hard to get hands on a real forth system in our days 2015-04-22T02:20:57Z kephra: real forth = forth is running at the bare iron, as operating system 2015-04-22T02:21:26Z Pixel_Outlaw: Genera anyone? heh 2015-04-22T02:23:02Z Pixel_Outlaw: I would have loved to be at MIT during the early Lisp days. 2015-04-22T02:23:25Z Pixel_Outlaw: Probably not smart enough to make the cut though... 2015-04-22T02:25:40Z RexButler: kephra: Why Postscript? 2015-04-22T02:25:47Z RexButler: or Forth, for that matter. 2015-04-22T02:28:14Z kephra: both are stack/word oriented languages 2015-04-22T02:29:14Z RexButler: I should add APL to my list... or whatever one of those array based languages are called. 2015-04-22T02:29:24Z kephra: and seeing a full featured premtive real time multi tasking, editor, debugger, compiler, meta compiler within 8k - add an other 16kb - and you have VolX4th 2015-04-22T02:29:41Z rszeno quit (Quit: Leaving.) 2015-04-22T02:29:50Z kephra: those 24kb of VolX4th had been the OS of Cubase 2015-04-22T02:30:03Z kephra: including GUI, Midi, ... 2015-04-22T02:30:54Z kephra: every (good) language will widen your vision of what could be done with a computer 2015-04-22T02:32:23Z kephra: writing a forth program means extending a forth system to implement a domain specific language to solve your problem 2015-04-22T02:32:31Z kephra: the result is often very short code 2015-04-22T02:32:50Z pjb: writing a lisp program means extending a lisp system to implement a domain specific language to solve your problem 2015-04-22T02:32:51Z pjb: the result is often very short code 2015-04-22T02:33:07Z kephra: one strange feature of forth is that you implement bytecode interpreters 2015-04-22T02:33:27Z pjb: I've never implemented any bytecode interpreter in forth. On the other hand in lisp, dozens! 2015-04-22T02:33:57Z kephra: pjb, never did any build>does code? 2015-04-22T02:34:12Z pjb: what's build>does code? 2015-04-22T02:34:13Z allfs quit (Remote host closed the connection) 2015-04-22T02:34:35Z kephra: a typical forth construct of a word that has a building part and an execution part 2015-04-22T02:34:46Z pjb: I'm a lisp programmer. 2015-04-22T02:35:22Z ArneBab_ joined #scheme 2015-04-22T02:35:28Z kephra: build writes a bytecode, does defines the interpreter 2015-04-22T02:36:13Z pjb: Who would write the byte code by hand? Who would write a byte-code compiler, and interpret it by hand? Are you reading what you're writing? 2015-04-22T02:37:20Z kephra: thats normal in forth - e.g. constants, variables and collon definitions have 3 different interpreters (code field areas) 2015-04-22T02:38:45Z ArneBab quit (Ping timeout: 248 seconds) 2015-04-22T02:39:51Z kephra: each word has a name (nfa), a link to the next word in dictionary (lfa), a link to a bytecode interpreter (cfa), and parameters or bytecode for the word (pfa) 2015-04-22T02:40:14Z pjb: yeah. forth be forth. 2015-04-22T02:40:43Z kephra: its just a suggestion, if you have a list of languages that are eye opening 2015-04-22T02:43:09Z RexButler: https://www.youtube.com/watch?v=a9xAKttWgP4 2015-04-22T02:43:29Z RexButler: Maybe I should learn APL? Any array language aficianadoes here? 2015-04-22T02:44:19Z Pixel_Outlaw: Maybe just learn one at a time and learn it well before moving on. 2015-04-22T02:45:45Z RexButler: Yes... but once I reach the point of diminishing returns it's fun to switch 2015-04-22T02:46:05Z kephra: RexButler, but then you only scratch the surface 2015-04-22T02:46:30Z kephra: imho, only one who can curse a language for hours, has really used it ( one of my hiring tips ;-) 2015-04-22T02:46:34Z RexButler: true 2015-04-22T02:47:00Z kephra: you know there are 10 types of languages: those everybody curse, and those nobody uses 2015-04-22T02:47:57Z Pixel_Outlaw: There is PLENTY about Scheme/Lisp to keep a programmer busy. Just exploring different concepts. 2015-04-22T02:48:18Z Pixel_Outlaw: Especially as it is kind of a language building toolkit. 2015-04-22T02:49:16Z Pixel_Outlaw: By all means try new things but don't become so fascinated with different kinds of hammers that you never pound nails with them.:D 2015-04-22T02:52:10Z RexButler: Yes... but learning other languages can be mutually self-reinforcing because of cross-pollenization... 2015-04-22T02:52:56Z RexButler: So you gain more from 80 hours of scheme and 20 hours of smalltalk than 110 hours of scheme alone 2015-04-22T02:53:11Z RexButler: You get the idea... 2015-04-22T02:53:59Z pjb: Actually, all the early languages should be learned/studied, IMO. Fortran, LISP, COBOL, SNOBOL, APL, FORTH, Smalltalk, C. But only Lisp should be used in general. 2015-04-22T02:54:08Z pjb: I forgot PL1. 2015-04-22T02:54:19Z pjb: and Algol. Actually, you can s/C/PL1/ 2015-04-22T02:54:45Z Pixel_Outlaw: Oh...COBOL... 2015-04-22T02:55:00Z Pixel_Outlaw gets nightmare flashbacks of it on AS400 2015-04-22T02:55:02Z pjb: Yes, it's interesting. Write a couple of programs with it to see how it is. 2015-04-22T02:55:14Z RexButler: What is SNOBAL? 2015-04-22T02:55:19Z pjb: SNOBOL. 2015-04-22T02:55:27Z RexButler: ha, you know what I mean. 2015-04-22T02:56:06Z Pixel_Outlaw: A time when languages shouted in all caps and ground out calculations rather than making web pages out of unicorn farts. 2015-04-22T02:56:11Z kephra: my two fav languages of that time PL/360 and JOVIAL 2015-04-22T02:56:38Z kephra: PL/360 is a pascal like ASM for /360 by Wirth 2015-04-22T02:56:58Z kephra: JOVIAL is an ALGOL like language for (military) embedded systems 2015-04-22T02:58:03Z kephra: but assuming that people come from curly braces algol + crippled OO my advise would be: Lisp, Smalltalk, Forth 2015-04-22T02:58:24Z pjb: Then you learn some Wirth languages. Pascal, Modula-2, Modula-3, Oberon. Again, not to be used in general (well, you may use Modula-3 to write a kernel if don't want to it in Lisp). 2015-04-22T02:58:45Z pjb: Then you learn Eiffel and Ada (you may use Eiffel, but lisp is funnier). 2015-04-22T02:58:54Z kephra: the Oberon and Modular workstations had been great fun at that time 2015-04-22T02:59:03Z kephra: seen them in real life! 2015-04-22T03:00:12Z Pixel_Outlaw: I wonder if there is any programming language preservation museum so we can explore. 2015-04-22T03:00:18Z Pixel_Outlaw: P_O, there is it is called the Internet 2015-04-22T03:00:32Z RexButler: Okay folks... if you could only teach your illiterate twin 5 programming languages what would they be? 2015-04-22T03:00:40Z kephra: archive org is working on emulators, Pixel_Outlaw 2015-04-22T03:00:49Z Pixel_Outlaw: kephra, cool, thanks 2015-04-22T03:01:05Z pjb: Pixel_Outlaw: free software. You can use a very big number of languages on Linux, either natively or thru virtual machines. 2015-04-22T03:01:35Z pjb: http://nasium-lse.ogamita.com:8117/ 2015-04-22T03:01:45Z pjb: http://nasium-lse.ogamita.com/ 2015-04-22T03:01:45Z RexButler: My list: C, Scheme, APL, {stack language}, Scala 2015-04-22T03:01:53Z Pixel_Outlaw: Guess there is also that Rosetta Code page too... 2015-04-22T03:02:51Z kephra: PL/360 (to learn both ASM and a Wirth language), Forth, Scheme, Smalltalk, Lua 2015-04-22T03:03:06Z RexButler: I have Scala in my list because it is a good statically type FP/OOP mix that can do both styles well. 2015-04-22T03:03:20Z RexButler: Maybe I add Ruby to my list 2015-04-22T03:03:33Z kephra: lets replace PL/360 with C - to be serious 2015-04-22T03:03:39Z pjb: Also learning various early assemblers is interesting. To see how easy it was to write _applications_ with those assemblers. 2015-04-22T03:03:50Z Pixel_Outlaw: I really only use Common Lisp, Python, C++ and recently Scheme...so those? 2015-04-22T03:04:22Z kephra: pjb, easy depends on environment - I was able to to boot a H316 before I was able to read or write proper 2015-04-22T03:04:57Z kephra: writing ASM on mainframes could be really easy with right macro system 2015-04-22T03:04:58Z Pixel_Outlaw: Learning Perl for shits and giggles now. Hopefully it will thicken my mustache like Larry Wall. I'm not thrilled about it just yet. 2015-04-22T03:05:20Z kephra: writing ASM in our days is hell 2015-04-22T03:05:51Z pjb: kephra: if you try to run and use VM/MVS on hercule, you can see how you could "inhabit" the machine with simple assembler code (and let's say, some hard-wired conventions). 2015-04-22T03:06:27Z kephra: pjb, yea - Hercules is a great tool 2015-04-22T03:07:10Z Fare joined #scheme 2015-04-22T03:07:13Z dmiles_afk quit (Read error: Connection reset by peer) 2015-04-22T03:07:29Z Pixel_Outlaw: I keep trying to warm up to Racket and Clojure but something about Clojure feels...out of place and Racket is very large. 2015-04-22T03:07:33Z kephra: pjb, http://kephra.de/src/comment-y2k.txt <- my favorite comment from OS/360 source 2015-04-22T03:08:30Z kephra: http://kephra.de/src/mvs38-y2k.txt <- and this code did run on every modern MVS system ( shipped with CB tapes in oct 1999) 2015-04-22T03:08:56Z kephra: included e.g. by Volker Bandkes MVS 2015-04-22T03:11:48Z dmiles_afk joined #scheme 2015-04-22T03:12:02Z Pixel_Outlaw: One of these days I'd like to get the ASM merit badge sewn onto my programmer sash. 2015-04-22T03:12:23Z kephra: Pixel_Outlaw, Clojure shows the evil of McEval - means the trival implementation together with JVM prevents tail optimization 2015-04-22T03:13:03Z Pixel_Outlaw: All I know is that it felt like it had waaaaaay too much syntax and it barfed errors like crazy when you made a syntax error. 2015-04-22T03:13:23Z kephra: I really wonder: why does someone design and hype a lisp like language with tail optimization? 2015-04-22T03:14:23Z kephra: or why does someone cripple a language by design requiring a ref counting GC for finalization ( python ) 2015-04-22T03:15:09Z kephra: s/with tail/without tail/ 2015-04-22T03:15:17Z Pixel_Outlaw: kephra, I don't understand the first question. You need that for recursion. 2015-04-22T03:15:19Z Pixel_Outlaw: Oh 2015-04-22T03:15:20Z Pixel_Outlaw: nvm 2015-04-22T03:15:52Z Pixel_Outlaw: Are you saying that Clojure doesn't bother with tall call optimization? 2015-04-22T03:15:54Z kephra: Clojure does not do tail optimization - it can not do it, because of a trivial implementation hitting the wall of JVM 2015-04-22T03:16:00Z mario-go` joined #scheme 2015-04-22T03:16:19Z mario-goulart quit (Remote host closed the connection) 2015-04-22T03:16:19Z Pixel_Outlaw: That is probably one of the few gripes I have with Common Lisp. SBCL provides it but it is not required. 2015-04-22T03:16:26Z kephra: you could do tail optimization in JVM, e.g. by implementing a CPS - but they did not 2015-04-22T03:16:36Z Pixel_Outlaw: CL tends to use iteration via LOOP however so it is somewhat forgiven. 2015-04-22T03:17:17Z pjb: Pixel_Outlaw: remember a lot of functions use dynamic binding, unwind-protect, even without knowing it. Implementation of those often makes calls non-terminal, therefore TCO useless. 2015-04-22T03:17:36Z kephra: tail optimization and continuations could make debugging more difficult 2015-04-22T03:20:50Z jeapostrophe quit (Ping timeout: 256 seconds) 2015-04-22T03:21:45Z Pixel_Outlaw: I'd be kind of daunted to write a Scheme interpreter. I have a feeling there is a lot of deep understanding required behind that abstraction of clean language. 2015-04-22T03:22:05Z Pixel_Outlaw: When you get down to actual resource management. 2015-04-22T03:22:23Z kephra: you might join mine - I'm still searching for a regression tester 2015-04-22T03:23:06Z kephra: http://kephra.de/o3proto/r4rs-subset.html <- Pixel_Outlaw *shameless plug* ... all others here already know it - I spam progress nearly everyday here ;-) 2015-04-22T03:23:12Z RexButler: Are there any unit testing frameworks for Scheme worth using... or should I roll my own? 2015-04-22T03:23:38Z Pixel_Outlaw: I'll take a look kephra. 2015-04-22T03:29:37Z fungle quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2015-04-22T03:33:58Z kephra: http://o3db.com/proto/veritas.html <- an example with more eye candy then r4rs test ... look at the html source to see the real eye candy! 2015-04-22T03:40:44Z oleo quit (Read error: Connection reset by peer) 2015-04-22T03:42:09Z pecg joined #scheme 2015-04-22T03:42:27Z oleo joined #scheme 2015-04-22T03:43:37Z Pixel_Outlaw: ha! 2015-04-22T03:43:42Z Pixel_Outlaw: cook kephra 2015-04-22T03:43:44Z Pixel_Outlaw: *cool 2015-04-22T03:44:40Z Pixel_Outlaw: One of these days I might get into web programming I just HATE how fast it changes and how browsers render things differently (or not at all) 2015-04-22T03:45:25Z Pixel_Outlaw: RexButler, I seem to recall GNU Scheme being able to render some basic graphics... 2015-04-22T03:45:32Z Pixel_Outlaw: You mentioned visual programming. 2015-04-22T03:46:16Z Pixel_Outlaw: Also you might like Realm of Racket if you want to build some games in Racket. 2015-04-22T03:46:29Z Pixel_Outlaw: (Based on an older book for Common Lisp) 2015-04-22T03:46:33Z kephra: Pixel_Outlaw, the goal of this project is to use a scheme like language to write single page database web applications - with scheme hiding most of js callback hell by continuations 2015-04-22T03:47:16Z Pixel_Outlaw: More Lisp less JavaScript sounds like a good idea to me. 2015-04-22T03:47:44Z badkins quit 2015-04-22T03:48:07Z kephra: e.g. the (query-file ...) in the above example needs to access a database, so it needs to connect to a server - the browser sends the request, if the JS ends! 2015-04-22T03:48:18Z RexButler: What do you have to do to get a browser to read a program from source in an html file? 2015-04-22T03:48:36Z RexButler: I assume the language is implemented in javascript? 2015-04-22T03:48:36Z kephra: so the interpreter has to end at this point - and continue when the reply event is fired by the browser 2015-04-22T03:49:38Z kephra: RexButler, scheme code could come from a