This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
- # aws-lambda (3)
- # beginners (20)
- # boot (201)
- # cljs-dev (45)
- # cljsrn (9)
- # clojars (19)
- # clojure (141)
- # clojure-china (2)
- # clojure-dev (11)
- # clojure-greece (6)
- # clojure-italy (1)
- # clojure-new-zealand (1)
- # clojure-romania (1)
- # clojure-russia (55)
- # clojure-spec (58)
- # clojure-taiwan (1)
- # clojure-uk (97)
- # clojure-ukraine (40)
- # clojurescript (77)
- # core-async (5)
- # core-typed (1)
- # cursive (35)
- # datomic (9)
- # jobs (2)
- # jobs-rus (25)
- # juxt (8)
- # lein-figwheel (14)
- # luminus (24)
- # mount (16)
- # off-topic (56)
- # om (36)
- # onyx (22)
- # pedestal (3)
- # perun (14)
- # re-frame (111)
- # reagent (5)
- # remote-jobs (6)
- # ring-swagger (3)
- # slack-help (1)
- # specter (17)
- # unrepl (12)
- # untangled (56)
what, if any, are the areas where forth + forth's postfix provides an advantage over lisp ?
qqq: you know about factor? https://factorcode.org if you're not doing firmware, forthish languages are fun but not rilly practical except postscript, it you like typesetting.
In general though Forths are very low level. I've seen some forths written almost entirely in x86 assembly
I recommend JonesForth: https://github.com/AlexandreAbreu/jonesforth/blob/master/jonesforth.S
@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'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
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
Well that sucks, your tutorials are unavailable in my country (South Africa) cos it's a paid channel
I can only guess, but looks like it's IP addr at the moment, but probably due to limitations on payment to this country
the other catch is that the value of our currency sucks atm, so $5 is more than it sounds, to us
@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
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"
a papers we love by bbloom that goes over Eff: https://github.com/papers-we-love/papers-we-love/issues/9
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
@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.
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
then it gets pointed at the
(match [ ... ] .... 20-30 lines here )
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"