This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-03-16
Channels
- # 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)
(Thread/sleep (* 1000 60 60 7))
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.
@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
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'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
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
@tbaldridge : is the code to https://www.youtube.com/watch?v=BCXsxnnXZBo on github?
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
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
@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
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
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"
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
(match [ ... ]
.... 20-30 lines here
)
then it gets pointed at the match
, rather than the actual line where the exception happensright, 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)