00:00:00 --- log: started forth/19.10.29 00:10:46 --- join: reepca joined #forth 01:03:32 --- join: proteus-guy joined #forth 01:03:32 --- mode: ChanServ set +v proteus-guy 01:58:27 --- join: dave0 joined #forth 03:09:00 --- quit: ryke (Ping timeout: 265 seconds) 04:11:36 --- quit: rdrop-exit (Quit: Lost terminal) 05:18:11 --- quit: Croran (Ping timeout: 245 seconds) 05:54:37 --- quit: dave0 (Quit: dave's not here) 06:31:02 --- quit: X-Scale (Ping timeout: 265 seconds) 06:32:11 --- join: X-Scale joined #forth 06:40:21 --- join: TonySidaway joined #forth 06:40:49 --- join: dddddd joined #forth 07:05:37 --- quit: proteus-guy (Ping timeout: 240 seconds) 07:15:30 --- join: cheater joined #forth 07:30:41 --- quit: tabemann (Ping timeout: 245 seconds) 07:43:21 --- join: warriors joined #forth 10:02:55 --- quit: chunkypuffs (Quit: ZNC 1.7.1 - https://znc.in) 10:39:44 --- join: chunkypuffs joined #forth 11:29:01 --- join: jdavidboyd joined #forth 12:36:19 --- quit: gravicappa (Ping timeout: 240 seconds) 12:38:10 --- join: f-a joined #forth 12:55:27 --- quit: warriors (Quit: Connection closed for inactivity) 13:54:39 --- join: dave0 joined #forth 13:56:29 --- join: jedb__ joined #forth 13:58:49 --- quit: jedb_ (Ping timeout: 240 seconds) 16:14:25 --- quit: f-a (Ping timeout: 240 seconds) 16:16:11 --- join: f-a joined #forth 16:18:23 --- join: jedb_ joined #forth 16:19:34 I am not really sure I get the point of POSTPONE 16:19:45 what are useful cases you use it for? 16:20:24 that one I can answer I think! 16:20:49 --- quit: jedb__ (Ping timeout: 240 seconds) 16:21:56 some Words execute immediately, even when included inside a Word 16:22:26 yeah, the immediate words 16:22:34 ; immediate 16:22:43 so in that particular case you want the Word to execute later when the 'container' word is used 16:22:59 and not when the 'container' Word is built 16:23:41 i came across that the other day, I'm trying to recall the circumstances 16:24:58 yeah that would be most welcome 16:31:51 this example was provided by our own Zen Master of Forth 16:31:54 : THINKING ( -- ) ." I'm deciding... " ; 16:31:55 : NEWIF ( x -- ) postpone THINKING postpone IF ; immediate 16:31:55 : FOO ( x -- ) newif ." yes" else ." no" then ; 16:31:55 1 FOO I'm deciding... yes ok. 16:31:55 0 FOO I'm deciding... no ok 16:32:26 fortunately I added it to my glossary at the time 16:33:20 https://mecrisp-stellaris-folkdoc.sourceforge.io/glossary.html?highlight=postpone#postpone 16:33:24 I see! 16:34:11 :) 16:34:22 --- join: tabemann joined #forth 16:35:05 I have the source of somebody's cross-compiler for an AVR Forth. It's full of postpones and dictionary changes. I sometimes start to try to understand it, but it defeats me every time. 16:35:37 seems something to be used with care 16:35:57 I used to find Scheme's call/cc mind-boggling, so I'm easy to confuse. 16:37:16 * tp is still in the process of learning lisp/scheme 16:37:21 hey guys 16:37:34 My son, then in his mid-teens, wrote an approximation of call/cc in C (which he knew had limitations) and quickly explained it to me. 16:37:41 hey tabemann 16:38:05 TonySidaway, it's handy when our kids explain stuff to us! 16:38:15 how do you feel to switch from forth to lisp? =D 16:38:24 and vice versa 16:38:45 better yet - learn haskell 16:38:56 if you want something that will blow your mind/melt your brain, learn that 16:39:23 I barely understand lisp atm but it seems a distant relative of Forth 16:39:49 forth and lisp have in common that they do not really separate compilation and execution much 16:39:52 I wrote many some in haskell 16:40:30 I would like to write something in forth 16:40:41 but I know very little of embedde systems 16:40:44 I really like the concept of a list processor, but have a long way to go to actually be comfortable with lisp 16:41:19 f-a, Ive spent a lifetime working with embedded, I know the hardware side very well 16:41:41 there are some major differences between forth and lisp; e.g. lisp is inherently garbage collected, while forth never is 16:41:43 tp are there any other domains in your opinion where forth is ok to use? 16:42:10 tabemann, yeah, thats why Id never use any GC language in embedded 16:42:36 squeeze 'em bytes 16:42:50 f-a, I'm doubtful there is, for instance Id rather use Lisp in a pc program 16:43:00 * f-a nods 16:43:30 but for embedded nothing Ive used before compares to Forth 16:44:13 for concurrency I'd recommend haskell and erlang 16:44:19 Im also finding that Assembly and Forth are inseparable when I use Forth 16:44:29 those two really outclass anything else out there with regard to those 16:45:06 tabemann, are you recommending haskell and erlang for PC use ? 16:45:22 definitely 16:45:37 and if you want distributed computing, really nothing is better than erlang 16:45:42 The key thing you need to know about Lisps in general (and Scheme in particular) is that they're based on a mathematical form called lambda calculus. Scheme also owes a lot to early sixties compiler design, particularly that focused on algol 60. It departed from earlier lisps in enforcing static binding. Older lisps (of which Emacs lisp is one of the few survivors in active use) had dynamic binding. 16:45:48 I looked at ocaml a while back and liked that as well 16:45:54 --- join: ryke joined #forth 16:45:55 whereas haskell has greater straight-line performance than erlang 16:46:26 ocaml in many ways is like haskell, aside from that it is strict rather than lazy, and it lacks type classes, and instead has a powerful module system 16:46:47 and it, unfortunately, has limited hard-coded function overloading that you can't really change 16:47:16 TonySidaway: never understod what dynamic binding is good for 16:47:56 I keep trying to start learning Haskell, but the lack of brackets makes it difficult for me to take seriously as a functional language. :D 16:48:03 hahah 16:48:22 TonySidaway, at least I'm over my 'bracket phobia' with lisp now 16:49:04 f-a, it's handy if you're writing a language processor and you flunked the compiler design course and haven't a clue what you're doing. 16:49:34 haha 16:49:36 Easy to implement, a headache to use. 16:49:44 I'm 99% embedded and 1% PC so I'll probably never encounter all the complex haskell or erlang stuff 16:49:47 TonySidaway: I hate significant whitespace indentation but unfortunately it is what it is 16:50:02 tp: haskell2010 is remarkably simple 16:50:26 no need to be a type astronaut to write solid programs 16:50:54 I personally love type inference and a very expressive typing, since it makes debugging/refactoring faster 16:51:05 If Python had brackets I'd probably be a kool-aid quaffing Pythonista by now. 16:52:15 I like the quality of Haskell that if it compiles, it probably works 16:52:34 yes, compiling is often a pain, but you'll fix a lot of your errors trying to get it to compile 16:52:44 atm the only language I love is Forth, I know C, Perl, assembly and did heaps of machine code back in the day 16:52:45 Loved Ruby when I learned it. Went away for a year or two, came back and couldn't remember how to code it. 16:53:25 I decided to go from Perl to lisp and miss all the pythons and rubies inbetween 16:53:56 to me Python is a language to quickly write use-once or use-a-few-times scripts in 16:54:02 I still cant see any reason to go to python from Perl for my pc business app glue 16:54:13 i see Perl like that 16:54:23 also it's a language that my boss won't object to me writing code in 16:54:26 Actually discovered Scheme because I was looking for an implementation of Tcl for my Palm M100. Fred Bayer's LispMe was there, and it turned out to be a much better language. 16:55:10 yeah, python is the darling of the 'popular programs' set these days 16:55:14 I remember trying to learn Perl. I hate it 16:55:40 oh I also like tcl/tk, dont mind it 16:56:01 I would like to build a small terminal game in forth 16:56:04 just to get the gist of it 16:56:06 lol, also forgot I use SH a LOT 16:56:22 the thing about Python is that it is nice to work with superficially, but lacks the qualities of both very high level (Haskell, Erlang) and very low level (C, Forth, asm) languages 16:56:25 in fact I've replaced Perl with SH quite a bit in the last 12 months 16:56:42 tabemann, AND PYTHON IS slow 16:56:52 oos sorry caps 16:56:52 in many ways it's what JavaScript would be if it were better designed and not so damn messy to work with 16:57:18 Wrote an app in Perl 4 once. Went away for a bit and Perl 5 came out with lots of changes. I was too mean to buy the new edition of the Camel book and meanwhile I managed quite happily with the spiffy, debugged versions of sed, awk, find, grep and the like. 16:57:44 yes, Python is slow 16:57:44 I've written all my Forth development glue in SH and avoided Perl 100% 16:57:55 I hate shell 16:58:06 Was a huge C geek too, so scripting was only for trivial problems. 16:58:23 tp tabemann, AND PYTHON IS slow 16:58:24 tp oos sorry caps 16:58:29 Ive become attracted to SH, it's reliable and on every unix box 16:58:36 AND PYTHON IS suspiciously looks like a word definition 16:58:52 haha, was just fumble fingers 16:59:26 I'm a ksh fan. bash tries too hard. 16:59:57 The pdksh on OpenBSD is just great. 17:00:05 when writing my Forth dev stuff I decided I wasnt going to use the latest hot kid on the block programming languages, but stick to whatever came on all unix boxes 17:00:05 I don't know how to do proper data structures in shell 17:00:44 Python and Haskell both date back to the early 90's 17:00:54 it really annoys me when people release Forth support apps in the latest 'new thing' like GO etc 17:00:59 Erlang also dates back to the 90's 17:01:09 Perl and Tcl are just as old 17:01:20 tabemann, sure, but theyre not part of a FreeBSD BASE install 17:01:34 tho Python is 17:01:43 ok, `bl` is? 17:01:47 yes, installing the whole Haskell environment just to run a script is a pain 17:01:59 see bl 17:02:00 32 Constant bl 17:02:04 New rule: tp is forbidden to use any software written since 1980. 17:02:05 yeah, thats my feeling also 17:02:12 TonySidaway, hahah 17:02:57 I believe as an amateur programmer (well, I got paid but no formal education) that understanding data structured and general methods is way better 17:03:11 I'd take Python over shell any day personally 17:03:24 i use FreeBSD purely because it still depends on unix apps I know well and learnt 40 years ago 17:03:44 no systemd 17:04:36 I dumped Linux because of systemd about 4 years ago after looking for a alternative over the previous decade 17:04:59 I dont actually have anything against systemd, I just hate change :) 17:05:41 I use BSD because one day I looked at top on my Debian system and realised I had no idea what all those processes were doing. OpenBSD works for me when I have a laptop, but FreeBSD is easier to get if I have to rely on shell accounts. 17:06:17 I still have Linux (mx linux) on my thinkpad and I'm very happy with that 17:06:22 Both are very good, very simple and they never let me down. 17:06:39 I've been a loyal Debian user since 2001 17:06:45 I really like openbsd also, but Im a zfs and FreeBSD jails addict now 17:06:59 I am reading this line from "starting forth" 17:07:00 BL FIND IF EXECUTE 17:07:05 what does BL accomplish here? 17:07:19 BL is the space constant 17:07:27 * crc stopped using Debian after the second time his dpkg databases became corrupted beyond repair 17:07:32 apart from inserting a space ? 17:07:52 no, bl doesn't insert a space 17:07:55 it just returns 32 17:07:59 https://www.forth.com/starting-forth/11-forth-compiler-defining-words/#Curtain_Calls this is the example 17:08:17 crc, yeah, debian package management is a joke compared to the *bsd's 17:09:41 the only problems I've had with Debian is that Debian testing occasionally becomes wonky, but is fixed later on, while Debian stable is, well, stable but is just too stable 17:10:00 I think it's bl word find if execute. 17:10:40 like in the past lightdm started acting weird, so I switched to gdm3..... but then gdm3 became wonky but lightdm started working just fine again, so I switched back to it 17:10:51 TonySidaway, yes, seems to say "if a blank space is found, execute it" ? 17:10:58 I agree 17:11:09 tp: agreed, though I'm having issues w/setting up NetBSD' s pkgsrc lately; will have to try again soon 17:11:12 it means to read one word delimited by a space, and if one is found, execute it 17:11:13 but where is the matching "then" ? 17:11:23 there should be a then 17:11:33 : INTERPRET ( -- ) 17:11:33 BEGIN 17:11:33 BL FIND IF EXECUTE 17:11:33 ?STACK ABORT" Stack empty" 17:11:33 ELSE NUMBER THEN 17:11:34 AGAIN ; 17:11:36 tabemann, I think that's right. 17:11:47 Would be the whole example from that link 17:12:03 crc, ta! 17:12:23 I think WORD is missing before the FIND 17:13:56 Never had any problems with any package system, which is a source of perplexity to me. Because keeping all those dependencies straight sounds like voodoo. 17:15:41 I think deps are one of the hardest things to manage but that *BSD does a reasonable job. 17:16:00 probably the worst package system problem I've had was when nvidia switched support for my video card on my old machine to an "old" package, and of course dpkg did not know this 17:16:06 I even took somebody's advice to switch to Ubuntu by pointing my Debian system at the Ubuntu servers. And it worked! This was in the early days of Ubuntu, before it went all weird. 17:19:34 Had to stop using Ubuntu when it kept trying to install some useless 3D graphical front-end on my elderly PC. A GUI shouldn't need more graphics acceleration than the software you actually want to run on the machine. 17:19:42 I abandoned Linux because of the constant change, the rapid evolution required more energy and time than I wanted to commit to a OS. 17:21:17 normally I just do apt update ; apt upgrade a few times a year and am fine 17:21:42 crc: thanks 17:21:49 (and everyone) 17:24:27 tabemann, true, it's the same on my Linux laptop. Dead easy to maintain and if it all goes foobar, I just reinstall the OS. But with FreeBSD I can actually fix anything, I never need to reinstall 17:25:22 Just realised the Linux partition on my laptop (which is currently missing under mysterious circumstances) was actually xubuntu. Commendably clean and free of most obvious nonsense. I inherited that partition from my son who owned the laptop before. Still OpenBSD was the body used system on that computer. 17:25:55 *most used. Autocorrect. 17:28:26 Was really sold on BSD when I realised you could upgrade the whole thing in minutes. The core-plus-packages design ought to be adopted by Linux distributions. 17:29:14 TonySidaway, nah, the NIH attitude is strong with Linux, plus then there is the GPL 17:30:13 It's really weird how the gcc people won't include sensible stuff like strlcpy. 17:30:30 i find it curious how OPENZFS which is CDDL licensed and therefore NOT GPL compatible has been pretty much taken over by Linux 17:30:31 In glibc, I mean. 17:30:47 perhaps a license issue ? 17:31:29 I think they just decided it was tainted by BSD thinking, to be honest. 17:31:32 strlcpy is in bsd/string.h 17:32:04 I was dismayed to see a "grub error" displayed by OpenZFS on FreeBSD 12 17:32:27 tabemann, really? That's great. I'll check it out next time I have access to a glibc system. 17:32:50 TonySidaway, bummer about the 'missing' laptop 17:33:09 tabemann, bummer about your stolen PC and all your sourcecode 17:33:40 * tp looks at his pc and tries how to imagine wrapping chains around it 17:33:59 just keep your code on github 17:34:06 no way! 17:34:16 tp, autistic family member. I think I hid it somewhere in panic during a meltdown. It never made a reappearance. 17:34:17 I HATE git* 17:34:27 because even if someone steals it, but instead like your hard drive goes kaputt 17:34:33 *doesn't steal it 17:34:42 And no lost data. Everything important was backed up. 17:34:44 tabemann, yeah, I have a raid and backups 17:35:09 --- quit: ryke (Ping timeout: 265 seconds) 17:35:14 the thing is part of why I like github is I like my code being visible to others 17:36:09 tabemann, I have my Forth documentation on sourceforge and because I use py.sphinx my code is readable via a browser 17:36:44 Oh I use BitBucket because I hate people seeing my crappy code until it's ready and to be looked at. 17:37:08 I really loathe any git* style repos, I find them hard to navigate, the code reader is broken and only supports the most popular languages 17:37:17 They permit private projects in their free accounts. 17:37:41 I like sourceforge, it's free and easy to use 17:37:55 and my Forth doc will live until SF dies 17:38:25 Im a steadfast Fossil SCM user myself 17:38:29 As long as you dodge the occasional tumbleweed, I guess sourceforge is okay. 17:39:27 it beats paying for a Digital Ocean account ;-) 17:39:50 which I did since 2016 just for my Forth docs 17:40:03 ugh... I want to port my attoforth floating-point math routines to hashforth using fixed point 17:40:12 Git frightens me. I only want to keep my stuff safe, but it has really intimidating widgets and jargon. I just stick to a few commands that have worked in the past. 17:40:14 $10USD a month adds up over 3 years 17:40:24 but in many ways I've forgotten how my math routines work 17:40:41 tabemann, hahah, i can relate 17:41:06 furthermore, attoforth is a 3-stack forth whereas hashforth is a 2-stack forth 17:41:20 because hashforth has no floating-point stack 17:41:59 TonySidaway, i dont get why people use GIT, I mean GIT was designed for a million line Linux source tree, yet people will use it for a simple C 5 line 'blinky' led program ... 17:42:29 it's ubiquitous tp 17:42:37 I have a friend who says that people like git because it merges code well most of the time... even though it's a clusterfuck when it doesn't 17:42:40 which means documentation, help etc is aplenty 17:42:51 I prefer darcs myself 17:42:56 f-a, not around here it isnt ;-) 17:42:57 tp, if github and bitbucket supported fossil, I'd give it a go. 17:43:07 tp: what do you use then 17:43:10 simple folders? 17:43:12 hg? 17:43:17 f-a, fossil 17:43:18 darcs is a good example of when haskell does not go right 17:43:30 sometimes it has really horrid performance for no good reason 17:43:53 patch theory had to be ironed out 17:44:01 but now it is way better 17:44:15 I like the perma-cherry-picking idea 17:44:18 f-a I used hg and then bzr before fossil 17:44:27 good 17:46:05 I'm personally happy with git - I used svn before, and I like having the whole repository locally better than only parts of a repository 17:46:18 f-a, from 1997 I used the old original centralised "cvs" before I went to hg around 2008 17:47:24 tabemann, I only use decentralised SCM's myself, hence my love of fossil 17:47:49 well it has been a pleasure, night gents 17:47:50 fossil is the SCM used for and written by the author of SQLITE 17:47:55 g'night f-a 17:47:55 The OpenBSD project still uses CVS. 17:48:00 f-a, nighto f-a 17:48:04 --- quit: f-a (Quit: leaving) 17:48:35 are they just being conservative for conservatism's sake tony? 17:48:50 because I see no good reason why anyone should still be using CVS in 2019 17:49:08 fossil has saved my code so many times, I think I'll marry it one day! 17:49:47 tabemann, I think they're just concentrating on developing their system. CVS seems to work okay so they don't feel the pressing need to change. 17:49:55 tabemann, I guess CVS still does what it was designed to do ? 17:50:34 CVS doesn't allow having different source tree layouts in different branches... 17:51:03 There have been proposals to "upgrade" to this or that but so far they've never felt the need to change to any one newer SCM strongly enough. 17:51:05 which was one plus of SVN when it came along 17:52:44 plus CVS has been bugfree since 2008 17:52:44 And these people can move fast when they want. They're known for their innovations, many of which find their way to other systems. 17:53:26 well openbsd maintain openssh 17:53:34 OpenSSH is nearly ubiquitous, and they wrote it and still manage and distribute the portable version. 17:54:11 perhaps the openbsd devs dont need different source tree layouts in different branches ? 17:54:39 Early adopters of tmux, which is a lightweight, sane and maintainable alternative to screen. 17:55:01 I never had any problems with CVS myself, but nothing compares to fossil imho 17:55:20 TonySidaway, a pox on tmux! 17:55:39 * tp casts aspersions on tmux 17:56:06 Im annoyed with tmux because the author refused to support serial comms 17:56:28 which is why my entire Forth dev system is built around Screen 17:57:07 okay, I've gotta head home 17:57:08 bbl 17:58:09 and so far screen is ok, but I may look at using unix utils later 17:58:16 tabemann, cya! 17:58:49 --- quit: proteusguy (Ping timeout: 265 seconds) 18:02:10 --- quit: tabemann (Ping timeout: 276 seconds) 18:03:24 bbl, lunchtime! 18:04:22 I am annoyed with C because it doesn't support first class continuations. But what can I do? 18:08:32 Actually one implementation of Scheme, known as chicken, supports first class continuations while compiling directly to C. The result is very good indeed, despite basically being a bunch of C functions that never return, and a garbage collector that operates by tidying up the C return stack. 18:10:31 It's the kind of thing I can imagine a bright undergraduate scribbling in the margin of their functional programming notes and giggling about with a friend. But this is actually a working and very good Scheme system. 18:12:22 --- join: proteusguy joined #forth 18:12:22 --- mode: ChanServ set +v proteusguy 18:13:53 So yeah, C does support first class continuations, if you are prepared to use a suitably lisp-like front end and a terrifying runtime. 18:23:11 --- quit: TonySidaway (Quit: TonySidaway) 18:23:25 --- join: ryke joined #forth 18:25:37 --- quit: dave0 (Quit: dave's not here) 18:28:36 --- quit: proteusguy (Ping timeout: 268 seconds) 18:41:19 --- join: proteusguy joined #forth 18:41:19 --- mode: ChanServ set +v proteusguy 19:02:36 --- join: tabemann joined #forth 21:21:55 --- quit: cheater (Quit: leaving) 21:38:49 --- quit: dddddd (Ping timeout: 240 seconds) 22:04:48 --- join: gravicappa joined #forth 23:59:59 --- log: ended forth/19.10.29