From Esolang
Jump to navigation Jump to search

'Borsch' is named after a Ukrainian soup which consists of SMETANA, BEETROOT and others. SMETANA and BEETROOT are in caps as they are programming languages mixed into the tasty mixture called BORSCH. Lovers of acronyms might say that BORSCH stands for Borsch OR Smetana in CHecko-slovakia, even though it does not.


Borsch is based on SMETANA by Chris Pressey(Thanks to him) and my mini-language BEETROOT. BEETROOT is a VERY minimal version of SMETANA:

S(1): G S(2) ; IM(I/O)
S(2): O("Hello world!")

Basically this means:

Step 1: Goto Step 2, but before that import Input/Output library,
Step 2: Output("Hello World!")

Some may call BEETROOT a shortening of SMETANA's keywords, but believe us(singingbanana/dan_zh) that it isn't because of the following:

  • Does SMETANA have libraries?
  • Can SMETANA do arithmetic?
  • Does SMETANA have Input/Output?

Now, how do we combine BEETROOT and SMETANA(and a bit of lambda calculus!) to make the tasty Borsch? Lets combine BEETROOT and Lambda to make Blambda. Squaring n will look like:

S(1): G S(2) ; IM(I/O)
S(2): G S(3) ; ST n = RQ(">", Input)
S(3): lm(n. n*n)

An pseudo-example of running this in an Esoteric OS (Linux):

user/singingbnna> Blambda --run square.bla
> 3

Now, lets expand Blambda, to make it more or less human readable and *Ta-Dah* we made Borsch!


squaring n:

Step 1: Import library(I/O); JMP step 2
Step 2: Output(">",Store(Input)==x); JMP step 3
Step 3: Output(lambda(x. x*x))

As you can see, lambda is the core of Borsch math(s)-orientated programs. But more I/O stuff is based on the BEETROOT side. And the unsung workhorse of all of this is SMETANA! The author would highly appreciate any help with BNF and other formal descriptions of Borsch, and will be amazed if anyone makes an interpreter|compiler for this.


Borsch is evidently Turing-complete, because a) It contains Lambda calculus, which is already proven Turing-complete, and B)It based on SMETANA, which can be Turing-complete on Infinite memory, and as Borsch is conceptual, its allowed infinite memory.