Fork me on GitHub

(Thread/sleep (* 1000 60 60 7))


what, if any, are the areas where forth + forth's postfix provides an advantage over lisp ?


can anyone recommend a good forth to play with to get a hang of how forth works?


qqq: you know about factor? if you're not doing firmware, forthish languages are fun but not rilly practical except postscript, it you like typesetting.


@qqq I built a concatenative in about 3 episodes of my video tutorials


In general though Forths are very low level. I've seen some forths written almost entirely in x86 assembly


@tbaldridge : I agree that Forth can get very low level. However, on the other hand, Forth also seems to hit this APL level conciseness of info / line (even higher than any Scheme I'd say). If that claim is true, there is certainly something very "high level" about the power of forth too.


In terms of "info per line", it'd probably have to be Perl / Haskell > APL > Forth > Scheme > C > ASM


I'd have to disagree that APL is less concise than Haskell


and to some-extent APL level of conciseness could be seen as a detriment


Yeah, you're right, it's probably Perl / APL > Haskell > Forth > Scheme > C > ASM


I'm not arguing "concise = best", I am asserting "a really concise language must have some high level feature ot it; otherwise it can't be taht concise"


and though I've used Perl / APL / Haskell / Scheme, I have yet to understand the magic of Forth / Concat languages


or it's just really good at composition


that's what Forth gets you, IMO, it allows for composition on a level few other languages do, but you pay for it in the fact that you have to do mental memory management


here, 'memory management' = keep track of variables on the stack ?


yeah, I meant mental stack management


I thought I had uploaded that code, I can't find it at the moment


Well that sucks, your tutorials are unavailable in my country (South Africa) cos it's a paid channel


paid channel is a nice idea, but sucks that I can't get in on it 😕


@placeboza : are they blocking you on IP addr or credit card nationality ?


I can only guess, but looks like it's IP addr at the moment, but probably due to limitations on payment to this country


just says "This paid chanel is unavailable in your country"


must by by IP


does digital ocean allow foreign countries?


their $5.00 / month 1 TB traffic is probaly enough to setup a vpn


hmm interesting idea


I'll look into it. broke right now, but when I get my salary again


the other catch is that the value of our currency sucks atm, so $5 is more than it sounds, to us


but still affordable


@tbaldridge : regarding stack management : have you ever programmed in a forth with a "instal repl" that showed you the data stack after every word?


Iv'e seen some demoes of them, and yeah, they help, but if I wanted super high level features in a language, I'm going to go the otherway, see Eff (the programming language) and Fexprs.


So for me Forth is interesting because it's so simple, and if I'm going to program that simple of a VM then I can deal with the stack management, otherwise it's too much of a burden to take on


I wouldn't want to write a business app in a language like Forth


Eff was built to test the mathematical ideas of algebraic effects in practice. Thus, every new feature of Eff is backed by peer-reviewed research. <-- this is hte "GHC type extensions are too easy' crowd ?


In his KernelLanguage (of which there is currently no complete implementation) the distinct namespaces of the calling environment and the lexical environment of the FEXPR are clearly separated and explicitly addressable at runtime, which more or less eliminates the need for complicated HygienicMacro mechanisms. Tom Lord (unsuccessfully) pushed for FEXPRs in R6RS Scheme. <-- looks like FExprs have their own interesting istory (from C2 wiki)


@qqq, no, in one of their papers on Eff they said something to the effect "we don't like monads, they're too complicated and they polute the type system...let's find a better way"


But the gist is this: core.async, exceptions, state monads, test.check, iterators (generators), and dynamic vars all try to implement ad-hoc effect handlers. What if we build this construct cleanly into a language, and without monads


getting rid of stacks of monad transformers certainly is nice


@tbaldridge : I see how EFF can be nice; but can you point me to a single concrete example where fexprs would be useful? I see all this abstraction of fexprs, how it's more powerful than macros (and then killed because it eliminated certain forms of static anlaysi); but I still ahve no idea what fexprs buys me


well firstly they get rid of the Clojure error of "can't take the value of a macro"


basically macros become first-class runtime objects instead of something that only exists at compiletime


So there's a theme there: I like Eff because it reifies the stack into a runtime construct that I can programmatically manipulate. I like Fexprs because they reify macros into a runtime construct as well.


yeah, but I really don't need to run (reduce and ...)


fair enough. But funny enough Fexprs are pretty much what [ and ] are in Forth/like languages


they wrap up a bit of code and say " don't execute this yet, i may execute it later, by pasting it into the evaluation"


maybe I am blind, what's drawing me towards forth is a notinon of "functional level programming", where instead of having variable names holding data, we just find new ways of combining functions together; I guess perhaps fexprs may be related to this




Taking my personal site of wordpress and going to use cljs. What do people use as a wysiwyg for blog posts and storage?


@tbaldridge : I thing I do find lacking about macros and where fexprs can be better: error msgs -- when an exception happens iinside a

(match [ ... ]
.... 20-30 lines here
then it gets pointed at the match , rather than the actual line where the exception happens


right, and it works really well with a pure lisp interpreter, in that case everything is always "runtime"


@tbaldridge: scheme is famous for it's 'half page eval/apply"; does fexpr/kernel have a canonical impl? (c2 wiki says there's no complete impl; and I'm not even sure what the semantics are)