00:00:00 --- log: started forth/17.04.12 00:03:07 --- join: coelebs (viileppi@gateway/shell/blinkenshell.org/x-cjheudocxcawfsnp) joined #forth 00:04:00 that's alot better 00:04:44 Why can't I do : reference [ ! ] literal ; ? 00:05:47 because there is nothing for ! to consume and also nothing for literal to consume? what are you trying to do with that? 00:11:25 --- quit: yunfan (Quit: already be with hell) 00:14:55 --- join: yunfan (~roooot@unaffiliated/yunfan) joined #forth 00:16:56 --- join: MrBusiness3 (~ArcMrBism@2602:306:8325:a300:c801:d7f:77e1:92be) joined #forth 00:19:47 --- quit: MrBismuth (Ping timeout: 255 seconds) 00:22:16 --- join: gravicappa (~gravicapp@ppp83-237-174-199.pppoe.mtu-net.ru) joined #forth 00:23:33 John[Lisbeth]: btw, it is really hard to follow the state of what your words mean when there is no other source than your liveblogging on here of revisions and re-revisions 00:36:22 --- join: Bahman (~Bahman@88.247.101.164) joined #forth 00:47:06 --- quit: fiddlerwoaroof (Ping timeout: 260 seconds) 01:05:25 --- join: dys (~dys@2003:5b:203b:100:6af7:28ff:fe06:801) joined #forth 01:14:45 --- quit: nighty-_ (Ping timeout: 252 seconds) 01:21:26 --- quit: MrBusiness3 (Ping timeout: 255 seconds) 01:38:56 --- quit: Bahman (Ping timeout: 268 seconds) 01:41:36 --- join: nighty- (~cp@www.taiyolabs.com) joined #forth 01:53:45 --- quit: John[Lisbeth] (Ping timeout: 255 seconds) 01:56:27 --- join: bedah (~bedah@2a02:810d:243f:f584:221:ccff:fe5f:92ff) joined #forth 02:11:55 --- quit: M-jimt (Write error: Broken pipe) 02:16:37 --- join: pointfree[m] (pointfreem@gateway/shell/matrix.org/x-qvpidmwpcmltzdvp) joined #forth 02:23:41 --- quit: smokeink (Ping timeout: 240 seconds) 02:23:55 --- join: smokeink (~smokeink@175.20.93.51) joined #forth 02:32:34 --- quit: smokeink (Ping timeout: 260 seconds) 02:34:35 --- join: M-jimt (jimtmatrix@gateway/shell/matrix.org/x-jtfqiolyrddygmif) joined #forth 02:50:59 --- join: MrBusiness (~ArcMrBism@2602:306:8325:a300:ed9b:e41d:3a9f:5062) joined #forth 02:51:50 --- quit: cp__ (Quit: Disappears in a puff of smoke) 04:44:10 --- join: GeDaMo (~GeDaMo@212.225.127.213) joined #forth 04:53:01 --- join: Bahman (~Bahman@88.247.101.164) joined #forth 05:30:35 --- quit: karswell (Remote host closed the connection) 05:31:55 --- join: karswell (~user@36.91.199.146.dyn.plus.net) joined #forth 05:42:33 --- quit: Bahman (Ping timeout: 260 seconds) 05:56:09 --- quit: yunfan (Quit: already be with hell) 05:56:46 --- join: yunfan (~roooot@unaffiliated/yunfan) joined #forth 05:57:11 --- quit: yunfan (Client Quit) 06:02:19 --- join: yunfan (~roooot@unaffiliated/yunfan) joined #forth 06:03:05 --- quit: yunfan (Client Quit) 06:03:43 --- join: yunfan (~roooot@unaffiliated/yunfan) joined #forth 06:14:11 --- join: proteusguy (~proteus-g@2405:9800:b408:bc31:76c6:3bff:feb7:da03) joined #forth 06:14:12 --- mode: ChanServ set +v proteusguy 07:18:27 --- quit: clog (^C) 07:18:27 --- log: stopped forth/17.04.12 07:18:40 --- log: started forth/17.04.12 07:18:40 --- join: clog (~nef@bespin.org) joined #forth 07:18:40 --- topic: 'Forth Programming | logged by clog at http://bit.ly/91toWN | https://www.forthworks.com/forth/standards/DPANS/ | www.greenarraychips.com | https://github.com/mark4th' 07:18:40 --- topic: set by crc!sid2647@gateway/web/irccloud.com/x-bvbpvizerlziiwww on [Sun Mar 19 09:24:31 2017] 07:18:40 --- names: list (clog dual John[Lisbeth] true-grue taij33n pointfree a3f dzho koisoke cajg josh5tone sigjuice @crc rpcope pdewacht nerfur zy]x[yz diginet2 carc newcup APic bavier ggherdov` rgrinberg rprimus malyn djinni jeremyheiler LeCamarade Quozl` +bluekelp irsol midre z0d ovf cartwright DGASAU phadthai Keshl_ reepca dograt koz_ joneshf-laptop DKordic nighty-- qzo coelebs gravicappa dys nighty- bedah pointfree[m] M-jimt MrBusiness GeDaMo karswell yunfan +proteusguy) 07:18:40 --- names: list (vsg1990) 07:19:41 ALIAS isn't part of ANS, but useful if your forth has it :) 07:21:26 does it come with gforth? 07:21:33 yes 07:24:28 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 07:28:08 --- join: xek (xek@nat/intel/x-hxlaisbmmnlnpqaa) joined #forth 07:37:08 --- join: fiddlerwoaroof (~fiddlerwo@unaffiliated/fiddlerwoaroof) joined #forth 07:49:01 : alias create , does> @ execute ; 07:52:33 what's shorthand for over swap ? 07:55:30 Hmmm ... can't think of one 07:57:02 tuck 07:57:13 er, no, sorry 07:57:16 HA 07:57:37 > what's shorthand for over swap ? 07:57:37 one that you define? 07:57:48 yeah, there's not a standard word for an under-dup 07:57:49 I know but I try not to define stack words that are common 07:58:14 so you need google and/or your forth wordlist in next tab 07:58:23 how to I invoke an error in forth? 07:58:24 ans 08:01:03 As in cause the stack to empty and stop the further processing of tokens 08:01:36 abort 08:01:59 ty 08:18:52 --- join: Bahman (~Bahman@88.247.101.164) joined #forth 08:20:11 I'd like to create a word like { except not for use during compilation 08:20:33 so I could type 2 { foo -- } foo . RETURN 2 OK 08:22:26 a simpler word would be a word that pops the stack and assigns it to a word 08:22:44 constant 08:22:52 2 constant two 08:23:07 that confuses me because is it not possible to change it later on? 08:23:13 it is not truly "constant" 08:23:27 which isn't an issue I'm just curious 08:23:35 All values are constant, it's just a matter of how long they're constant for :P 08:23:53 I think that is a universal truth which extends beyond forth 08:24:49 On some implementations, you may be able to do 3 ' two >body ! 08:25:49 2 value two 08:26:06 constant is : constant create , does> @ ; 08:26:21 (is that how value works? I've never actually used it; might need "value two 2 to two") 08:28:34 How do I do : foo 2 constant blah blah blah blah : . . . RETURN 2 2 2 OK 08:28:56 constant doesn't work during compilation (as far as I know) 08:29:23 does ans require that it does not work? 08:29:26 or is that a grey area 08:29:47 what do you want that to do? 08:29:59 Well basically like { but inline 08:30:00 It's not an immediate word so it wouldn't parse the name at compile time 08:30:28 What does { do? 08:30:30 I don't know what ans forth says about the subject, but : foo 2 constant ; in my forth would create a word "foo" that, when executed, will parse a word from the input stream and create a new constant with that name and value 2 08:30:37 { } is local variable syntax 08:30:57 Ah 08:31:54 It is made to look like stack comments 08:32:09 : foo { a b c } b c + a - ; 08:32:29 which is a lot noisier than just : foo + - ; 08:32:47 sure if you want to be a minimalist. Later on if I did optimizations I may do that 08:32:57 I personally am a high level programmer so I prefer convenience above all else 08:33:00 Is there some reason your foo word isn't just : foo 2 2 2 ; ? 08:33:02 why are you using forth if you're not a minimalist 08:33:17 lol 08:33:19 long story 08:33:22 but forth is what I want for sure 08:33:24 or lisp 08:33:26 if you're looking for convenience, you're probably in the wrong place 08:33:31 nah 08:33:34 trust me this is what I want 08:34:01 why would I trust you? 08:34:18 Because I am the best person to tell you about what I my own self wants 08:34:27 just as you are the best person to tell me what you want 08:34:57 Forth is the language for me. 08:35:04 but you've demonstrated repeatedly that you're not the best person to judge forth 08:35:19 From your perspective 08:35:29 I know how forth works inside and out and you can believe me or not 08:35:41 It i just that I do not know ans forth 08:35:46 that is what confuses you 08:35:57 have you figured out how to make a macro yet? 08:36:03 I have not yet learned macros 08:36:06 in any language 08:36:10 I know what they do though 08:36:17 you use them to extend the syntax of the language 08:36:23 it is one of the reasons I chose forth 08:36:53 so you haven't encountered the forth word "immediate" yet? 08:37:02 I have messed with it but I haven't figured out how to use it yet 08:37:13 I could trace back the word definitions but I don't feel like it 08:37:30 so, without understanding something as fundamental as that, how can you say that you "know how forth works inside and out" 08:37:48 Macros does not a forth make 08:37:55 a forth can come with no macros, though it probably shouldn't 08:38:22 I'm sorry but you're wrong 08:38:47 a forth without immediate words would be pretty useless 08:40:41 you are mistaken my friend 08:40:53 to make a forth you make a linked list and make a word to push and pop from that list 08:41:05 and from there you make swap and with about 10 other words you've got forth 08:41:19 and all forths are just an extension of that, including forths with macros 08:41:28 forth is and always will just be a linked list 08:41:34 would you include "if" in those 10 words? 08:41:54 Yeah I mean sure you want if then but languages did not always have those 08:42:09 What I mean to say is there is no forcing someone to put macros in their forth 08:42:19 macros are an optional component 08:42:24 do you understand that if and then are immediate words? 08:42:29 yes 08:42:47 any word which uses infix is an immediate word to my understanding, at least in ans 08:43:02 : is an example of this 08:43:06 ... what does this have to do with infix 08:43:10 no, : is not immediate 08:43:43 eh 08:43:51 An immediate word runs at compile time 08:43:51 well then something similar to immediate 08:44:15 how does one make a word an immediate word? 08:44:22 with the word "immediate" 08:44:34 somebody else do it. I'm getting bored with this shit 08:44:48 hmm interesting 08:46:04 I mean on the one hand you can say I do not understand forth becuase I do not know macros but I will still claim you are incorrect 08:46:20 It's how control flow words like if and do work, they run during compilation and compile conditional branches and the like 08:46:29 really my point was that you're in the wrong place. please try #python 08:46:40 Lol python is the opposite of what I want 08:46:45 python is an awful shitty language that sucks ass 08:46:47 way worse than forth 08:54:35 From your perspective it may seem like I am actually a very bad forther and that is not wrong, but one can understand forth and still be bad at it 08:54:42 I have the understanding but not the experience 08:54:53 I only found out about forth a short time ago and I had to prove it could indeed do what I wanted 08:55:41 I wouldn't presume to have the authority to say whether or not you're a bad forther. I just think you're a bad person 08:56:39 John[Lisbeth]: linked lists aren't a core part of forth. I. My forth, the only linked list is the dictionary headers, and I could implement hem in a number of ways that don't involve lined 08:56:44 Linked lists 08:57:13 so you dont have to implement it as a linked list as you don't want 08:57:16 it could be an array or what have you 08:57:19 but you have to have push and pop 08:57:21 thats the main thing 08:57:27 push pop, swap, add, a few other things 08:57:29 then you've got forth 08:57:53 You have a stack, and words that operate on the top few values of it 08:58:04 yeah thats pretty much all you need. 08:58:47 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 09:01:00 You need a bit more. A memory area for new words, an interpreter, a dictionary, and a compiler. Some IO. Without that all you have is an rpn calculator. 09:02:10 yeah I mean from your perspective you do because you are probably a low level programmer 09:02:24 I am a high level programmer who's abstraction level is from the shell or above 09:02:27 so that is already implemented for me 09:02:36 What are your ten words that make up a minimal forth? 09:02:54 --- quit: Bahman (Read error: Connection reset by peer) 09:03:25 Ok so this is what I am saying 09:03:34 if you start out on an assembler machine yes you need to implement more stuff 09:03:44 on my layer of abstraction I already start at an implemented language 09:03:54 :) 09:04:02 so the forths that I have written are bash forth and javascript forth in which things like the interpreter are already implemented for me 09:04:29 John[Lisbeth], If I understand you correctly it calls embedded/internal DSL. 09:04:59 well if you mean my own forths I just do it by creating a global linked list and making functions which operate on that list 09:05:30 You have to remmeber I am not an electrical engineer I have no intention of making an assembler forth 09:05:44 I have to ask again: how can you say "I know how forth works inside and out," but then dodge questions about a minimal forth implementation with "I'm a high level programmer, I don't need to care about that stuff?" 09:06:30 I don't know how to demonstrate to you that I know how forth works inside and out. Rest assured I have spent the last five years thinking about this and I am not incorrect that forth is what I want it to be. 09:06:37 * crc is not an engineer either, but has implemented forth systems from the ground up many times, in many languages over the last decade 09:06:45 seems like a waste of time to me 09:06:54 feel free if you want to do that ans has already done the work for me 09:06:54 Have you written any programs in forth? 09:07:04 I am writing some forth right now. 09:07:22 can we all just agree this guy is a troll and ignore him from now on? 09:07:33 Implementing your own Forth system right after reading Brodie's books it's a part of learning curve of every forther :) 09:07:48 it's great fun 09:07:51 There is no logical reason for me to implement my own forth from scratch when ans already did that work for me 09:08:01 ans is not an implementation 09:08:05 alright 09:09:15 ANS is a loose specification which some, but far from all, forth systems support. Your program can be 100% ANS compliant but still not work as expected due to implementation differences allowed by the standard. 09:10:50 Undefined behaviour beyond the scope of the standard is a ordinary thing in almost every PL. 09:11:18 meh I think they may fix that in future standards. I reason I can get enough portablity to suit my liking 09:12:08 --- join: MrBismuth (~ArcMrBism@2602:306:8325:a300:ed9b:e41d:3a9f:5062) joined #forth 09:12:12 Not likely. The effort for a revised standard adds some hints and makes minimal changes to the existing standard with regard to ambiguity 09:12:33 --- join: Bahman (~Bahman@88.247.101.164) joined #forth 09:12:43 true-grue: very true, but most languages don't have as many implementations as forth 09:14:01 Eh I think ans can do what I want and if it can I will move onto a different standard 09:14:16 for my specific purpose gforth is perfect 09:14:25 works exactly how I need it to to solve the problem I am trying to solve 09:14:26 afk 09:14:54 --- quit: MrBusiness (Ping timeout: 252 seconds) 09:15:38 crc, My point is that we don't need the standard at all. Lua, Python and others don't have it. Still, we need to have reference implementations. Something like PolyForth, cmForth, eForth and other good Forth systems from the past. Sadly today I see no good modern and inspiring Forth system. 09:16:19 I'm quite happy working in and supporting my own implementation for me and my small pool of users. 09:17:32 crc, That's great. I think, instead of the standard, we need to have a pool of good ideas, practices, tricks for the Forth system builders. 09:18:13 I can agree with that. 09:18:28 you have that, they're just not in a single cohesive place on the internet. and a lot of them are on websites that are no longer maintained and disappearing 09:19:27 clearly you have to have standards if you want high level programming. The problem is most forthers are not high level programmers. Makes no difference to me though 09:19:42 If gforth is redefineable at runtime then I can redefine gforth to be whatever I want and still be compliant with ans 09:19:59 We have standards! Many, many standards :P 09:21:22 even if forth it's self is fucked gforth does what I need it to 09:23:10 what do you need it to do? 09:23:29 3 and only 3 things 09:23:37 1. Fully extensible macros 09:23:42 2. Completely redfineable at runtime 09:23:47 3. Able to do everything my hardware can do 09:24:13 You can do it with Lisp/Scheme. 09:24:39 Yes that is true. Lisp also does what I want. I prefer forth though because it is simpler 09:25:32 that's arguable :) 09:25:39 yes it is. 09:25:44 They are both fine langauges, forth and lisp 09:25:46 I pick forth, sue me 09:26:06 The main reason to choose Forth is its minimal nature -- you may implement your own version in a matter of weeks. That's why Forth was the first HLL for many of new processor architectures. 09:26:08 --- join: logiqub (~victor@AMontsouris-559-1-13-252.w90-24.abo.wanadoo.fr) joined #forth 09:26:19 I pick forth cause it is easier to go from forth to lisp than from lisp to forth, more or less 09:26:26 that is my main reason in fact 09:26:51 Hi all 09:27:00 hello 09:27:09 It's a very rare case when you can completely understand the internal workings of your instrument. And it's exactly the case of myForth (the Forth which you build for yourself). 09:27:10 Hi logiqub :) 09:27:48 I kind of finished a small tetris, looking for the next app for the platform 09:27:58 which platform? 09:28:07 http://logiqub.com 09:29:03 https://wiki.theory.org/YourLanguageSucks Hmm... 09:29:29 I was looking for the reason why "Prolog sucks", but find nothing :) 09:29:36 found 09:29:45 lol XD 09:29:46 --- quit: dys (Ping timeout: 260 seconds) 09:30:19 There is also a funny pages about how many different ways you can shoot yourself in the foot in any language 09:30:26 The Forth joke is pretty good 09:32:37 http://www.toodarkpark.org/computers/humor/shoot-self-in-foot.html 09:39:39 logiqub: I'll watch for the source release. The descriptions make it look like an interesting base. 09:40:35 @crc, thanks I look forward to your feedback 09:47:40 --- join: dys (~dys@ip-109-40-2-122.web.vodafone.de) joined #forth 09:48:57 eh 09:49:24 I do : blah new-type immediate: blah blah .. RETURN 3 2 ok should be 2 2 09:50:43 Where does the definition of "blah" end? What is new-type"? What is "immediate;"? 09:51:09 : blah new-type immediate ; blah blah . . return 3 2 ok 09:51:32 "immediate" should be outside the definition 09:52:02 "immediate" words are usually used during the compilation of words 09:54:24 How do I make just one word be immediate 09:54:51 : newword ... ; immediate 09:55:18 The "immediate" word applies to the most recent definition 09:55:18 no 09:55:38 : new-word myvar @ myvar @ ; immediate 09:55:43 how do I make the first one immediate and the second one not 09:56:13 "immediate" applies to the most recent definition, in your example "new-word" would become immediate 09:56:30 then immediate is not the word I am curious about at the moment 09:57:05 What are you trying to achieve? 09:58:04 Well in this particular instance : new-word myvar @ myvar @ ; needs to act differently with both @ 09:58:18 How does it need to behave? 09:59:13 variable myvar 4 myvar ! : new-word myvar @ myvar @ ; 5 myvar ! new-word . . RETURN 5 4 ok 10:00:39 Oh, I see 10:01:13 looks suspiciously like you want us to implement your linked list stack for you 10:01:13 Try : new-word [ myvar @ ] literal myvar @ ; 10:01:29 lol I already implemented and debugged my linked lists do you want to see them? 10:01:40 I even added a type to it 10:01:44 only if you use a pastebin 10:02:44 unless what you're after is what GeDaMo just wrote 10:03:14 in your example, is it that you want 4 to be hard-coded into the definition of new-word? 10:04:00 --- quit: neceve (Quit: Konversation terminated!) 10:05:03 If you want to store the previous value every time you run new-word, that will be a little different 10:09:29 yeah of course I would ose pastebin 10:10:40 --- quit: logiqub (Quit: Lost terminal) 10:13:35 https://hastebin.com/raw/icayalegut 10:13:46 There see I have no need for you to implement any datastructures from me I have that handled 10:15:51 I mainly ask questions when there is a word that I think exists already but I do not know what the word is or how to use it in a "sentence" 10:16:05 http://dl.forth.com/sitedocs/dpans94.pdf 10:16:08 you need to clarify what it is you want 10:16:16 or in regards to elements of low level which I don't understand 10:16:20 < zy]x[yz> in your example, is it that you want 4 to be hard-coded into the definition of new-word? 10:16:21 This is the ANS doc. It has the standard ANS wordsets covered 10:16:35 zy]x[yz: I want what I want and I don't want what I don't want. And what I want is elusive like a fox and shifts like the tides 10:16:53 don't do drugs, kids 10:16:59 lol 10:17:05 "Some Commonly Used Forth Words" http://forth.sourceforge.net/mirror/comus/index.html 10:17:10 meh 10:17:13 don't feel like reading 10:17:42 I've already got almost everything I need except macros 10:20:23 I am basically just slowly making the next logical assumption I need to make until the backbone of my language is made and then I'll just create pretty macros to make it look like javascript 10:20:28 and then I'll use that as my shell 10:22:41 --- quit: Bahman (Ping timeout: 260 seconds) 10:25:29 how can we answer your questions if you won't read the responses? 10:25:56 By answering the question I have rather than sending me a long thing to read which may or may not contain the solution 10:26:06 I still don't know whether your new-word question has been answered or not 10:26:20 I do not currently have any questions about new-word 10:27:37 so you did want 4 to be hard-coded into the definition of new-word? 10:29:17 no that was just an example problem to help demonstrate to you what I wanted. You seemed to be unable to think about it abstractly unfortunately 10:30:49 when nobody here can understand what it is that you want, it might be time to consider the possibility that you suck at communicating 10:31:08 lol I think it is just you who has this problem. The others seem to be fine with answering my questions. 10:31:49 What you fail to grasp is that you think there is a single problem I am trying to solve and I suppose that there is but it follows an algorithm which would take me a long time to explain to you 10:32:06 and so I make simple mockup problems based on the piece of the main problem I am working at at the time so you don't have to view the whole problem 10:33:03 okay, so, in your mockup, the answer which hard-codes the literal value 4 into the definition of the word "new-word" is the solution you were looking for? 10:34:42 https://hastebin.com/eyeqiqafup.hs a few quick comments after looking over the linked list code 10:35:30 I do not currently have any questions regarding new-word 10:35:48 it's obvious that you're not following 10:35:49 if you must know the next most logical thing to do in my algorithm is to choose what to implement next which is most likely the next type I would like to have 10:36:10 I haven't decided which type I want yet but I think maybe a doubly linked list 10:36:40 I have also thoguht about skipping types and start to make more words which operate on the lists which I have already implemented 10:36:51 and I have not decided which one of those is the most logical thing to do yet so I am waiting to figure it out 10:37:17 Possibly relevant: my implementation of algebraic data types in Forth https://github.com/ForthHub/ForthFreak/blob/master/FunForth 10:37:32 https://github.com/ForthHub/ForthFreak/blob/master/FunForthLists 10:37:41 mainly the current type I have is not fully done because I do not have the string metadata that I wanted and I also can not operate on it 10:37:55 It's not efficient but maybe there are ideas to be had 10:37:56 and in order to get the string metadata in it I have to be able to operate on it anyway 10:38:13 therefore the next most logical thing to do is to implement words which operate on the types I have just created 10:38:34 crc, you see a lot of duplicates in there because they're just copy-pasted responses he's gotten from people in this channel over the past couple of days, and people have responded to him with slightly different solutions for the same thing 10:39:06 copying and pasting is a really effective way to use the solutions others have given you 10:39:17 not if you don't understand them 10:39:21 ok 10:40:17 I think the diffrence between us is you are a much more low level guy than me 10:40:42 I tend to try to operate on the highest level of abastraction that I can reach 10:40:52 please stop saying that 10:41:02 stop saying what? 10:41:54 this "I'm a high-level guy" bullshit. it's completely meaningless 10:42:16 So do you presume to know which level of the stack I work on? 10:42:41 Perhaps I was imagining the last 5 years maybe you are correct about my life. 10:42:58 at this rate does not seem very likely though 10:43:10 the more you write, the more I'm convinced you don't work on any level of any stack 10:44:40 The more you write the more I am convinced that you have a false view of what I do and what I am working on. 10:44:59 I work in systems programming and language design, mainly shells 10:45:02 I design shells 10:45:08 I am writing a shell in forth to be my system shell 10:45:15 I have been working on producing this system shell the last 5 years 10:45:21 if you do not want to help me make a system shell that is fine 10:46:42 the last 5 years have not been very productive, have they? 10:46:47 https://github.com/twisted-pear/gfsh -- shell written in gforth 10:48:38 zy]x[yz: no the first four years were not super productive at all. It took me that long to find a base language which was suitable to write the shell in 10:48:47 The last year has been the most productive 10:49:03 and among the last year I have started actually implementing the shell in the last couple of months 10:49:20 The first four years were to lay down the theoretical groundwork to prove that I had in my hands a language which mathematically would never need to be replaced 10:49:37 I needed a language which could do everything, more or less 10:49:54 everything which could be done. Everything which should be able to be done 10:50:42 I expect it to be 15 years before my shell is stable enough to be put in a system like debian unstable branch 10:51:14 My goal is to replace the bash shell for all main unix based systems 10:51:27 this is because bash is a poor shell and is limiting as a programming language 10:52:46 My goal is that with my shell, if a new programmer learns it as their very first langauge, then they will able to use it as a full language that does what they want 10:53:02 Unlike my experience in which one of my first langauges, bash, was very limiting for me and forced me to switch to another language 10:53:22 It is to help new linux users get going in linux faster, ultimatey, thus saving lots of man hours 10:54:38 bash is sufficient to host a forth environment. here's one: https://github.com/Bushmills/Bashforth 10:55:08 I have written a version of concatenative bash but I would ultimately like to replace bash so that when people open their terminals it will be my shell and not bash 10:57:02 The main problem is for alot of new linux users one of their first "languages" is bash, even though few of them actually learn the language features of bash 10:57:25 but for users like me who decided to learn the programming features in bash and use them extensively it is an uphill battle with syntax which is just plain broken and filled with wats 10:58:04 and so I want to provide the next generation of programmers a shell that will not disappoint them and taht will not need to be replaced but can be continually extended and modified as they see fit even after I die 10:58:53 I part I set out to do it because the people in #bash were not very kind to me in teaching bash and are actually dishonest about what bash can an dcan not do when you press them with hard questions. 10:59:23 They said to me alot of things about programming which I know know to be incorrect and my ultimate goal is to supplant their software so they wont need to be rude with any more new users 11:00:04 Basically I am going to create a second stack in forth and put a language sorta like javascript and sorta like perl onto that stack leaving ans forth untouched 11:00:33 I will try to do it only by defining words so that nothing is actually taking up much space 11:00:55 Anyway excuse me I am going to drive a block over to my house real quick and I may not log back in before I go to sleep 11:01:49 * crc gives up on this. I'll happily answer serious questions, but this is waste of time. 11:02:17 isn't it illegal to drive under the influence where you live? 11:05:32 --- quit: John[Lisbeth] (Ping timeout: 255 seconds) 11:07:22 so anyway, how do metaforths generally approach the issue when targets have, for example, separate code and data memory spaces? words like allot or create would need to know whether you want to allot space in code memory or in data memory 11:08:13 I have a plan in mind but before I go forward with it I was wondering whether there was a generally accepted way to handle this 11:15:18 I have no experience with a harvard architecture, but http://www.bradrodriguez.com/papers/moving7.htm has some notes on a forth for 8051 chips which use that 11:15:54 ah, the good ol' 8051. thanks 11:58:27 --- join: Mat4 (~claude4@ip5b409fe8.dynamic.kabel-deutschland.de) joined #forth 12:00:47 --- quit: Mat4 (Client Quit) 12:15:03 --- quit: karswell (Remote host closed the connection) 12:16:26 --- join: karswell (~user@36.91.199.146.dyn.plus.net) joined #forth 12:48:49 --- join: Mat4 (~claude4@ip5b409fe8.dynamic.kabel-deutschland.de) joined #forth 13:13:45 --- quit: Mat4 (Quit: Leaving) 13:42:26 --- quit: GeDaMo (Remote host closed the connection) 13:55:47 --- quit: Keshl_ (Quit: Konversation terminated!) 14:24:16 --- quit: gravicappa (Remote host closed the connection) 14:34:04 zy]x[yz: depends on your dialect, but not sure i see a problem? words like , and ALLOT allocate form data space and COMPILE, etc allocate from code space. at least ans is written to assume code and data spaces may be separate 14:34:58 s/form/from/ 14:41:07 or is the problem that you have no way of distinguishing a data space pointer from a code space pointer? 15:10:25 --- quit: nighty-- (Quit: Disappears in a puff of smoke) 15:15:54 there may be cases where I would want to allot in code space, like to build a jump table or something 15:16:33 I need to think about it. it may be as simple as just having a context-aware allot 15:17:03 or just calling code space allot something else 15:19:26 or could have one ALLOT and a context-switchable HERE 15:19:41 re: scollback, wow. 15:20:38 yeah, that what brad rodriguez did in that article. he has an ihere and isomethingiforgotalready for code space 15:21:42 oh it is iallot, ok 15:21:47 and others 15:22:30 kind of wish my ops hadn't lapsed on here, because john is making the channel unfit for purpose 15:33:14 tbf I was egging him while bored at work. I don't really mind dumb weirdos filling dead air occasionally, but the spam he generates is just too voluminous 15:33:24 egging him on* 15:37:12 fair enough. was just getting a bit wistful for the time this channel had high signal/noise (but haven't been doing enough forthy stuff to generate much signal myself except to answer questions, so i shouldn't gripe) 15:39:46 i am bored enough that i would try to clean up his pastebin code if i could even suss what it is trying to do 15:40:58 and if he is going to have the controlled susbstances act and recipe.com open at the same time, he should really start making sure he is reading off the right list before heading out on a grocery run 15:41:53 haha 15:42:03 --- quit: true-grue (Read error: Connection reset by peer) 15:44:08 --- join: Keshl (~Purple@24.115.181.94.res-cmts.gld.ptd.net) joined #forth 15:55:54 koisoke: I was going to do that but since he won't read it anyway there's no point 15:57:56 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 15:58:19 --- mode: crc set +o koisoke 16:05:33 --- quit: dual (Ping timeout: 260 seconds) 16:11:30 crc: thanks 16:12:35 So one thing I've been wondering - are stack comments worth it? I've seen opinions that they should be everywhere, that they should be nowhere, and some that they should be only where they're necessary. Personally I've been trying to write without them after seeing how smoothly it went in one of sam falvo's videos, but feel like although it pushes me to simplify in many cases, it also makes me more prone to using variables. Thoughts? 16:15:44 i find them a huge help to readability to get gist without needing to mentally simulate stack effect 16:15:53 I use stack comments in most words. Helps me when going back to old code. 16:17:07 should they be put in after the related code is all working together, after the word is working, or as the word is being written? 16:17:23 also makes it easier to if a word's behavior is as intended when debugging 16:17:49 I put in the stack effect up front and revise it as needed during development. 16:18:48 I'll often stub out a set of words and their stack effects before filling in the actual definitions. Helps me track the overall flow as I begin work. 16:18:50 as crc said. i use them basically like function prototypes except that the implementation is blind to their content 16:20:47 Do you usually put a name ("count") or a loose type indicator ("n")? 16:20:59 My comments are terse 16:22:17 reepca: depends 16:22:30 http://forthworks.com/atua/Atua.md would be a sample source in my forth 16:23:14 My comments would look like: (xy-y) 16:32:18 what is s:keep? does that commit an ephemeral string to permanent storage? 16:32:55 --- join: newuser|706 (5744025b@gateway/web/cgi-irc/kiwiirc.com/ip.87.68.2.91) joined #forth 16:33:54 hello, does anyone have by any chance lexgen1_2.zip from https://web-beta.archive.org/web/20080828232501/http://home.freeuk.com/meboulton/forth/lexgen/lexgen.html ? 16:34:28 Yes 16:35:04 There's also s:temp which makes a temporary copy of a string 16:35:17 cool 16:35:24 (Retro has a rotating buffer of space for temporal strings) 16:36:39 that's how I did it, but I just know one of these days I'm going to have a situation that generates n+1 temporary buffers and it's going to be a hard-as-hell bug to diagnose 16:37:16 I might steal your method from you 16:37:44 * Zarutian usually puts stack comments, side effects comments and why comments in his code, when he remembers that is or when it is really needed. 16:39:23 Arg, working with a heap it's sort of necessary to use indexes instead of direct addresses and it's driving me nuts because I'm not used to it 16:40:36 Because now I need to either pass around a base address to all of the lower-level definitions in addition to an index or use a variable 16:41:33 --- join: dual (~bonafide@cpe-74-75-153-119.maine.res.rr.com) joined #forth 16:44:54 reepca: do you use, how can I put this, accessor words to access various fields or such those things in the heap? 16:45:16 I've got LCHILD, RCHILD, and PARENT words 16:45:35 which are implemented as just really simple multiplications, additions, and divisions (all by 2 or 1) 16:46:59 well, I might be a bit c centric here in this regard but I usually define field accessor words for structs or things. Mostly for my own convience. 17:23:35 --- join: nighty-- (~nighty@d246113.ppp.asahi-net.or.jp) joined #forth 17:48:16 newuser|706: sorry, I can't find any copies in my archives :( 17:51:02 10x for looking, i hoped maybe the forth_CD has it but no luck, not there 18:34:17 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 19:17:01 --- quit: Zarutian (Quit: Zarutian) 20:00:58 --- quit: proteusguy (Remote host closed the connection) 20:03:12 --- quit: newuser|706 (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 20:32:46 --- quit: neceve (Quit: Konversation terminated!) 21:30:48 --- quit: vsg1990 (Quit: Leaving) 21:37:07 --- quit: ACE_Recliner (Ping timeout: 268 seconds) 21:50:59 --- join: HoloIRCUser2 (~holoirc@95.235.12.115) joined #forth 21:53:52 --- quit: HoloIRCUser2 (Client Quit) 21:55:38 --- join: logiqub (~victor@AMontsouris-559-1-13-252.w90-24.abo.wanadoo.fr) joined #forth 21:59:28 --- join: proteusguy (~proteus-g@180.183.96.83) joined #forth 21:59:28 --- mode: ChanServ set +v proteusguy 22:03:28 --- quit: MrBismuth (Ping timeout: 245 seconds) 22:12:45 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 22:13:31 --- join: ggumpi (~gumpi@95.235.12.115) joined #forth 22:14:41 --- quit: ggumpi (Client Quit) 22:15:08 --- join: ggumpi (~gumpi@95.235.12.115) joined #forth 22:19:20 : hi ." Hello everybody!" ; hi cr 22:32:13 --- quit: ACE_Recliner (Ping timeout: 245 seconds) 22:44:40 hi 22:46:54 --- join: wa5qjh (~Thunderbi@121.54.90.135) joined #forth 22:53:23 --- quit: wa5qjh (Ping timeout: 255 seconds) 23:05:27 --- join: wa5qjh (~Thunderbi@121.54.90.135) joined #forth 23:15:41 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 23:23:43 --- quit: ggumpi (Quit: ggumpi) 23:24:06 --- join: ggumpi (~gumpi@95.235.12.115) joined #forth 23:26:49 --- part: ggumpi left #forth 23:46:50 --- quit: ACE_Recliner (Remote host closed the connection) 23:59:59 --- log: ended forth/17.04.12