Thank you, Alexander! On Fri, Feb 24, 2017 at 9:10 PM, Alexander Ilin <ajs...@yandex.ru> wrote: > Hello! > > I'm not a "goo-roo", I'll just give my opinion on whatever I feel like I > understand. > There are more experienced and competent people on this list, I'm sure > they'll provide more info. > > 24.02.2017, 22:30, "Tuom Larsen" <tuom.lar...@gmail.com>: >> 1. Concatenative languages vs. tacit languages >> >> What is the difference? Is there any at all? > > Here's a good article that sheds some light on the matter: > https://en.wikipedia.org/wiki/Tacit_programming > Tacit style is natural in concatenative languages, but they are not > necessarily limited to it. Also, tacit style is not limited to concatenative > languages. > > For example, in Factor you may implement a function in a point-free (tacit) > style: > > : square ( x -- x^2 ) > dup * ; > > ... or you may have it implemented with named parameters: > > :: square ( x -- x^2 ) > x x * ; > > The latter is achieved using a library, but compiles down to the same > machine code. > >> 2. Composition >> >> I think I read somewhere that "function composition" is just >> "concatenation" of two programs. Does it mean that I can cut any >> portion of some program a paste it anywhere into some other program >> and it will just work? Doesn't it make some assumption about the >> stack's content, for example, which would make the program break? > > Well, if you paste a random chunk of a program into a random place of > another program, it will most likely do something random, like throw an > exception or format your hard drive. > > There will be some checks performed by the compiler. In fact, it'll demand > that declared stack effects would match the actual stack effects of all the > words involved. It will not, however perform any type checking -- that'll > come in at run-time. > > Also, there are limits on exactly where you can cut a program, but that's > details. > >> 3. Instruction set >> >> What is the minimal set of operations for a concatenative languages to >> be Turing complete? I mean, how does the the most minimal >> concatenative language look like? > > This one is not for me to answer, but I found some interesting links in > this article: > http://stackoverflow.com/questions/407987/what-are-the-primitive-forth-operators > >> 4. Quotations >> >> Is it fundamental to be able to pass around unevaluated code? I mean, >> what is the reasoning behind "quotations"? Are they necessary for a >> language to be Turing complete? > > Here's the "if" example: > > 0 1 = [ "0=1, black is white" . ] [ "we're good so far" . ] if > > There are two quotations. The "if" word executes either the left one, or > the right one based on the boolean value preceding them. > >> 5. Types >> >> I read that it is also possible to have "types" concatenative >> language. In broad terms, how does it work? Does the evaluation simply >> skips the types it doesn't recognise? Does it throw an exception if >> attempting to add a number and a string? > > It's the exception thing. A lot of evaluation is done via polymorphism. For > example, the "+" word is defined for integer arguments. If you supply a > string, the run-time type check will throw an exception, which will likely > say that the method "+" is not defined for the class "string". You may then > define such a method if you want. > > If you define a method for the "f" class (the class of the null object, > also the most abstract thing in the class hierarchy) to be a do-nothing, > you'll get no exception. > > ---=====--- > Александр > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk