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

Reply via email to